数据库

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’;

你可能感兴趣的:(数据库)