1>SQLite语句的关键字: select insert update delete from create where desc order by group table alter view index...
2>SQLite数据存储的类型integer :整型值real :浮点值text :文本字符串blob :二进制数据 ( 比如文件 )
3>创表(CREAT)
直接创建 CREAT TABLE 表名 (字段名1 字段类型1,字段名2 字段类型2,...);
判断表是否存在,不存在时再创建 CREAT TABLE IF NOT EXISTS 表名(字段1 字段类型1,字段名2 字段类型2...);
示例:CREAT TABLE t_stdent ( id integer,name text,age inetger,score real);
4>删表(DROP)
直接删除 DROP TABLE 表名;
判断是否存在,存在直接删除 DROP TABLE IF EXISTS 表名;
示例:DROP TABLE t_student;
5>插入数据(INSERT INTO)
INSERT INTO 表名(字段1,字段2,...)VALUES (字段1的值,字段2的值,...);
示例:INSERT INTO t_student(name,age)VALUES(‘ZY’,18);
注意:数据库的字符用单引号’ ‘;
6>更新数据(UPDATE)
UPDATE 表名 SET 字段1 = 字段1的值,字段2 = 字段2的值,...;
示例:UPDATE t_student SET name =‘jack’,age = 20;
注意:上行示例代码执行完毕之后,会将表中的name值UPDATE为 jack age 的值 20.
7>删除数据(DELETE)
DELETE FROM 表名;
示例:DELETE FROM t_student;
注意:上行示例代码会将t_student表中所以记录都删掉.
8>条件语句,用于只是要修改或删除某些记录的限制语句
常见格式:
WHERE 字段 = 某个值; //切记不是两个 =
WHERE 字段 IS 某个值; // IS 相当于 =
WHERE 字段 != 某个值;
WHERE 字段 IS NOT 某个值; // IS NOT 相当于 !=
WHERE 字段1 = 某个值;
WHERE 字段1 = 某个值 AND 字段2 > 某个值; // AND相当于C语言中的&&
WHERE 字段1 = 某个值 OR 字段2 = 某个值; // OR相当于C语言中的|
示例:
将t_student表中年龄大于10并且姓名不等于 jack 的记录的年龄都改成 5
UPDATE t_student SET age = 5 WHERE age > 10 AND name != ‘jack’;
删除t_student表中年龄小于等于10或者年龄大于30的记录
DELETE FROM t_student WHERE age <= 10 OR age > 30;
将表中的某个字段的值就行修改(必须在特定的条件上)
UPDATE t_student SET score = age WHERE name = ‘jack'
将t_student表中名字等于jack的记录的score字段在的值都改为age字段的值
9>DQL语句
格式:
SELECT 字段1,字段2,...FROM 表名;
SELECT * FROM 表名; // 查询所以字段
示例:
SELECT name ,age FROM t_student;
SELECT *FROM t_student;
SELECT *FROM t_student WHERE age > 10;
10>起别名
格式:(字段和表都可以起别名)
SELECT 字段1 别名, 字段2 别名,...FROM 表名 别名;
SELECT 字段1 别名, 字段2 AS 别名,..FROM 表名 AS 别名;
SELECT 别名.字段1 ,别名.字段2,...FROM 表名 别名;
示例:
SELECT name myname, age myage FROM t_student;
给name起个叫做 myname 的别名,给age起个叫做myage 的别名;
SELECT s.name , s.age FROM t_student s;
给t_student表起个别名叫做s ,利用s来引用表中的字段
11>计算记录的数量
格式:
SELECT count (字段) FROM 表名;
SELECT count ( * ) FROM 表名;
示例:
SELECT count (age) FROM t_student;
SELECT count ( * ) FROM t_student WHERE score >= 60;
12>排序
查询出来的结果可以使用OEDER 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, height DESC;
13>LIMIT
使用LIMIT可以精确的控制查询结果的数量,比如每次只查询10条数据
格式:SELECT * FROM 表名 LIMIT 数值1,数值2;
示例:SELECT * FROM t_student LIMIT 4,8;
上行代码执行完查询的结果是:跳过最前面的4条记录,然后取8条记录
注意:LIMIT后面的数值1不写的话,默认是第一个记录
LIMIT 常做为分页查询,比如每页固定显示5条数据,那么应该这样取数据
第一页:LIMIT 0 , 5;
第二页:LIMIT 5 , 5;
第三页:LIMIT 10 , 5;
第 n 页:LIMIT: 5* (n - 1) , 5;
SELECT *FROM t_student LIMIT 7; 相当于 SE;ECT * FROM t_student LIMIT 0 , 7;
表示取最前面的7条记录
14>简单的约束
建表时可以指定特定的约束条件,常见的约束:
NOT NULL :规定字段的值不能为NULL
UNIQUE : 指定字段的值必须唯一
DEFAULT : 指定字段的默认值
注意:尽量给字段设定严格的约束,以保证数据的规范性
示例:
CREATE TABLE t_student ( id integer , name text NOT NULL UNUQUE ,age integer NOT NULL DEFAULT 1); name 字段不能为NULL ,并且唯一 age 字段不能为NULL ,并且默认为1
15>主键
主键: Primary Key 简称PK 用来唯一地标示某一条记录
例如t_student可以增加一个id 字段作为主键,相当于人的身份证
主键可以是一个字段或多个字段
主键的设计原则:
1.主键应是对用户没有意义的 2.永远不要更新主键 3.主键不应包含动态变化的数据 4.主键应由计算机自动生成
在创表的时候用PRIMARY KEY 声明一个主键
CREAT TABLE IF NOT EXISTS t_student ( id integer PRIMARY KEY , name text NOT NULL ,age integer NOT NULL DEFAULT 1.0 ); integer 类型作为t_student表的主键
主键字段
只要声明为PRIMARY KEY ,就说明是一个主键字段
主键字段默认就包含了NOT NULL 和 UNIQUE这两个约束
如果想要让主键自动增长 ( 必须是 integer 类型 ) ,增加AUTOINCREMENT 约束
示例: CREATE TABLE IF NOT EXISTS t_student ( id integer PRIMARY KEY AUTOINCREMENT , name text NOT NULL ,age integer NOT NULL DEFAULT 1.0);
16>外键约束
利用外键约束可以用来建立与表之间的联系
外键的一般情况是:一张表的某个字段,引用着另一张表的主键字段
新建一个外键
CREATE TABLE IF NOT EXISTS t_student ( id integer PRIMARY KEY AUTOINCREMENT , name text ,age integer ,class_id integer ,CONSTRAINT fk_student_class FOREIGN KEY ( class_id ) REFERENCES t_class ( id ) );
t_student 表中有一个叫做fk_t_student_class_id_t_class_id的外键
这个外键的作用是用 t_student 表中的 class_id 字段引用t_class表的 id 字段
17>表连接查询
什么是表连接查询
需要联合多张表才能查到想要的数据
表连接的类型
内连接 : INNER JOIN 或者JOIN 显示的是左右表都有完整字段的记录
左外连接: LEFT OUTER JOIN 保证左表数据的完整性
示例:查询20130901班的所有学生
SELECT s.name , s.age FROM t_student s ,t_class c WHERE s.class_id = c.id AND c.name = ‘10230901’;