iOS数据存储之SQL语句的基本使用

5.0 DQL条件查询

    5.1. where子句后跟条件
    5.2. 运算符
        * > 、< 、<= 、>= 、= 、<>
        * BETWEEN...AND  
        * IN( 集合) 
        * LIKE:模糊查询
            * 占位符:
                * _:单个任意字符
                * %:多个任意字符
        * IS NULL  
        * and  或 &&
        * or  或 || 
        * not  或 !

DML语句的基本使用

  • 插入数据

INSERT INTO 't_student' (name, age, height) VALUES ('why', 18, 1.88);
  • 语句说明
    • INSERT INTO: 插入数据
    • ‘t_student’: 在哪一个表中插入数据
    • (数据的字段): 给哪些字段插入数据
    • VALUES (‘why’, 18, 1.88): 插入的具体值
  • 更新数据

UPDATE 't_student' SET 字段 = '值' WHERE 条件判断;
  • 语句说明
    • UPDATE: 跟新数据
    • ‘t_student’: 在哪一个表中更新数据
    • SET 字段 = ‘值’: 更新怎样的数据
    • WHERE 条件判断: 更新哪些数据
  • 具体使用

UPDATE t_student SET name = 'me' WHERE age = 14;
UPDATE t_student SET name = 'liu' WHERE age is 20;
UPDATE t_student SET name = 'yy' WHERE age < 20;
UPDATE t_student SET name = 'A' WHERE age < 100 and score > 60;
UPDATE t_student SET name = 'ly';
  • 删除数据

DELETE FROM t_student;
DELETE FROM t_student WHERE age < 30;
  • 语法说明
    • DELETE FROM: 从表中删除数据
    • t_student : 表名
    • 可以跟条件也可以不跟:不跟表示删除所有的数据

外键约束

  • 利用外键约束可以用来建立表与表之间的联系
  • 外键的一般情况是:一张表的某个字段,引用着另一张表的主键字段

新建一个外键
create table t_student (id integer primary keyautoincrement,name text,age integer,class_idinteger,constraintfk_t_student_class_id_t_class_idforeignkey(class_id) (id));references t_class
t_student表中有一个叫做fk_t_student_class_id_t_class_id的外键
这个外键的作用是用t_student表中的class_id字段引用t_class表的id字段

sql分类

SQL语句的种类

  • 数据定义语句(DDL:Data Definition Language)

    • 包括create和drop等操作;
    • 在数据库中创建新表或删除表(create table或 drop table);
  • 数据操作语句(DML:Data Manipulation Language)

    • 包括insert、update、delete等操作
  • 数据查询语句(DQL:Data Query Language)

    • 可以用于查询获得表中的数据
    • 关键字select是DQL(也是所有SQL)用得最多的操作
    • 其他DQL常用的关键字有where,order by,group by和having

SQLite语句

  • 首先来说下这种语言书写规范的总体特性

    • 不用区分大小写
    • 每条语句用;为结尾,跟我们oc一样
  • 其实SQLite种类就三种 说的高大上写就是DDL 、DML、 DQL
    说白了分别对应就是数据定义语句数据操作数据查询

  • DDL(DDL:Data Definition Language) 一般就是创表删表操作

  • DML(DML:DataManipulation Language) 添加修改
    删除表中的数据

  • DQL(DQL:Data QueryLanguage) 一般是可以用于查询获得表中的数据

4.0 DQL基础查询

    4.1. 多个字段的查询
        select 字段名1,字段名2... from 表名;
        * 注意:
            * 如果查询所有字段,则可以使用*来替代字段列表。
    4.2. 去除重复:
        * distinct
    4.3. 计算列
        * 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
        * ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
            * 表达式1:哪个字段需要判断是否为null
            * 如果该字段为null后的替换值。
    4.4. 起别名:
        * as:as也可以省略

DDL语句的基本使用

  • 删除表

DROP TABLE IF EXISTS '表名';
  • 创建表

CREATE TABLE IF NOT EXISTS '表名' 
( '字段名' 类型(INTEGER, REAL, TEXT, BLOB) 
NOT NULL 不允许为空 PRIMARY KEY 主键 AUTOINCREMENT 自增长, 
'字段名2' 类型, ... )
  • 具体使用:

CREATE TABLE IF NOT EXISTS 't_student' 
( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
"name" TEXT, "age" INTEGER, "height" REAL
)

 - 语句说明
- CREATE TABLE:创建一张表
- IF NOT EXISTS:不存在则创建
- 't_student':表的名称
- NOT NULL:不允许为空
- PRIMARY KEY:主键
- AUTOINCREMENT:自动增加
- 'id' INTEGER:有一个ID字段,类型是INTEGER

DQL

  • 就是我们从数据库中读取数据

SELECT * FROM 表名;  //  查询所有的字段
/**查询指定字段*/
SELECT 字段1, 字段2, … from表名 ;
eg. SELECT name, age FROM t_person;
/**查询指定条件*/
SELECT name, age FROM t_person WHERE age > 18;
  • 计算记录的数量

SELECT count (字段) FROM表名 ;
SELECT count ( * ) FROM 表名 ;
  • 排序

查询出来的结果可以用order by进行排序
select * from t_student order by 字段 ;
select * from t_student order by age ;

默认是按照升序排序(由小到大),也可以变为降序(由大到小)
select * from t_student order by age desc;  //降序
select * from t_student order by age asc;   // 升序(默认)

也可以用多个字段进行排序
select * from t_student order by age asc, height desc ;
先按照年龄排序(升序),年龄相等就按照身高排序(降序)
  • limit
  • 使用limit可以精确地控制查询结果的数量,比如每次只查询10条数据
    可以作为分页

/**跳过数值1条,去数值2条*/
pselect * from 表名 limit数值1, 数值2; 

如果我们想做分页的话,如果控制每一页为10条的数据的话
当我们请求第n页数句的时候 关系为 第n页:limit 5*(n-1), 5

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website