ios-数据库基础

来源:互联网 发布:深圳正规软件培训 编辑:程序博客网 时间:2024/06/01 08:10

在数据库中,表当中据可能会出现某些数据雷同导致无法分清楚那一条是那一条,所以这个时候我们就需要有主键来帮我们进行区分。

主键就像人的身份证一样是唯一标识的。就好比一个学生表当中,

学生名字是有可能会重名的,所以我们不能用名字来充当唯一标识符。

而应该用学号。学生信息表当中主键一般来说绝大多数都是整数,

然后是自动增加的。这样可以用来区分数据的标识。

这就好比我们提交数据给服务器,服务器会自动的可能帮我们提交的数据编号,然后在存到数据库中。

SQL语句

创建表,其中CREATE TABLE表示的是创表,IF NOT EXISTS 表示的是判断数据表存不存在,如果存在,就不再去创建表SQL

T_table表示的是表名 (      )括号之间是字段的描述就比如说

(

 字段 INTEGER(整数) / REAL(小数) / TEXT(字符串) / BLOB(二进制数据)

)

NOT NULL 表示的是不允许为空,因为主键必须要有内容

PRIMARY KEY 表示的就是主键的意思

AUTOINCREMENT 表示的是自动增长的意思

每个字段之间用逗号来分隔,最后一个字段不需要逗号

这里创建表的方式名字也可以用单引号

CREATE TABLE IF NOT EXISTS "T_table" (     "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,     "name" TEXT,)
最好在每一条SQL语句的末尾,加一个; 表示语句结束


插入语句,字段对应相应的值

INSERT INTO T_Person(name,age,height)VALUES('西米',18,1.85)
具体形式其实就是

INSERT INTO 表名

(字段1,字段2)

VALUES

(值1,值2);

SQLite本质上不区分数据类型,怎么样存都可以,在定义表结构的时候写的数据类型其实并没有起到约束作用,只是给我们个提醒

删除语句,删除年龄为10的的记录

DELETE FROM T_PersonWHERE age = 10;

具体形式,删除语句一定要去写 WHERE,否则就会删除所有的数据

DELETE FROM '表名'

WHERE 列名称 = 值

更新语句,更新记录

UPDATE T_Person set name = '王哥',age = 76, height = 1.6WHERE id = 2;
具体形式

UPDATE 表名称

SET  列名称 = 新值

WHERE 列名称 = 值

条件一定要写,不然会修改所有的记录

如果条件不满足的话,SQL会执行,但是不会去影响结果

注意: SQL 语句对大小写不敏感


查询语句

能查询所有的记录,从 "Persons" 表中选取所有的列,* 取代列的名称

SELECT * FROM T_Person;

还有种方式是写出所有的属性,SELECT id,name,height,age FROM T_Person;

用于统计查询使用的语句

SELECT count(*) FROM T_Person;
指定某些条件进行统计查询
SELECT count(*) FROM T_Person WHERE height > 1.7;

这里是返回身高最高的那条数据,其中身高是我定义的表当中的一个列的名称,应用场景在于最近加入的人

SELECT max(height) FROM T_Person;
查询从第几条数据开始,返回数据的条数

SELECT id,name,height FROM T_PersonLIMIT 0,2
在查询第几条数据开始,到返回数据的条数的基础上我们去添加条件来进行查询,比如说限制id的条件,这样的话我们就可以很好的作出了分页的功能

SELECT id,name,height FROM T_PersonWHERE id>=2LIMIT 1;
也可以先去排序,然后再获得数据,其中ASC是升序,DESC是降序

SELECT id,name,height,age FROM T_PersonORDER BY name DESC;
也可以添加两个排序条件,其实名字以降序排序,年龄以升序排序,排序是从左到右进行的。

SELECT id,name,height,age FROM T_PersonORDER BY name DESC,age ASC;
模糊查询,%a%表示只要出现了a都会被搜索出来

SELECT id,name,height,age FROM T_Person WHERE name LIKE '%a%'

还有就是以什么为开头,内容是什么想要搜索也可以这么写

SELECT id,name,height,age FROM T_Person WHERE name LIKE 'a%b'

下面是多了个判断年龄的条件,逻辑判断用AND OR NOT来表示

SELECT id,name,height,age FROM T_Person WHERE (name LIKE '%a%' AND age > 15)
试例 搜索到a为内容的,以及年龄大于15的,或者name为b的

SELECT id,name,height,age FROM T_Person WHERE (name LIKE '%a%' AND age > 15) OR name = 'b'
搜索到名字不是为b的

SELECT id,name,height,age FROM T_Person WHERE NOT name  = 'b' 

表格如下

Sqlite中如果我们设置了某个字段为PRIMARY KEY的话其实也就相当于设置了UNIQUE NOT NULL这两个。