SELECT
字段列表(字段1,字段2,字段3)
FROM
表明列表(表1,表2,表3)
WHERE
条件列表
GROUP BY
分组列表
HAVING
分组之后的条件
ORDER BY
排序
LIMIT
分页限定
运算符
常用于WHERE
子句后面的条件
< , > ,<=,>=,=,<>
BETWEEN...AND...
IN
(集合)
LIKE
_
:单个任意字符%
:多个任意字符IS NULL
AND 或 &&
OR 或 ||
NOT 或 !
语法:ORDER BY
子句
ORDER BY
排序字段1 排序方式1,排序字段2 排序方式2ASC
:升序,默认的DESC
:降序聚合函数
COUNT
COUNT(*)
MAX
、MIN
、SUM
、AVG
IFNULL
函数GROUP BY
分组字段WHERE
和HAVING
的区别WHERE
在分组之前限定,如果不满足条件,则不参与分组及查询;HAVING
在分组之后限定,如果不满足条件,则不查询WHERE
子句不能跟聚合函数,HAVING
可以进行聚合函数的判断语法:LIMIT
开始的索引,每页查询的条数
公式:开始的索引 = (当前页码 - 1) * 每页显示的条数
每页显示3条记录
SELECT * FROM table_name LIMIT 0, 3 -- 第一页
SELECT * FROM table_name LIMIT 3, 3 -- 第二页
SELECT * FROM table_name LIMIT 6, 3 -- 第三页
笛卡尔积
多表查询
目的:消除无用的数据查询
分类:
内连接查询(查询交集部分)
隐式内连接:使用WHEWE
消除无用数据
SELECT
t1.*,
t2.department
FROM
t_user t1, -- 从表
t_department t2 -- 主表
WHERE
t1.dpt_id = t2.id;
-- t1.dpt_id为从表的外键,t2.id为主表的主键
显式内连接
SELECT
t1.*,
t2.department
FROM
t_user t1
INNER JOIN
t_department t2
ON
t1.dpt_id = t2.id
外连接查询(查询交集部分及LEFT左表/RIGHT右表NULL部分)
左连接:LEFT JOIN
查询左表t1所有内容以及t1和t2的交集内容
SELECT
t1.*,
t2.department
FROM
t_user t1
LEFT JOIN
t_department t2
ON
t1.dpt_id = t2.id
右连接:将上面的LEFT JOIN
改为RIGHT JOIN
,查询右表t2所有内容以及t1和t2的交集内容
子查询
概念:查询中嵌套查询,将嵌套的查询结果作为条件或虚拟表。
子查询结果是单行单列:可作为条件,使用<、>、=等运算符判断
SELECT
*
FROM
t_uesr
WHERE
t_uesr.money > ( SELECT AVG( USER.money ) FROM t_uesr );
子查询结果是单行多列:可作为条件,使用IN运算符判断
SELECT
*
FROM
t_uesr
WHERE
t_uesr.dpt_id
IN
(SELECT t_department.id
FROM t_department
WHERE t_department.department
IN ( ‘技术部‘, ‘销售部‘ ));
子查询结果是多行多列:可作为一张虚表参与查询
SELECT
*
FROM
t_uesr t1,
( SELECT * FROM t_department WHERE department.id <= 2 ) t2
WHERE
t1.dpt_id = t2.id;
概念:对表中的数据进行限定,保证数据的正确性、有效性、完整性
分类:
primary key
not null
unique
foreign key
唯一约束
注意:唯一约束可以有null值,但是只能有一条记录为null
在创建表时,添加唯一约束
CREATE TABLE test ( id INT, phone VARCHAR ( 11 ) UNIQUE );
删除唯一约束
ALTER TABLE test DROP INDEX phone;
创建表后,添加唯一约束
ALTER TABLE test MODIFY phone VARCHAR(11) UNIQUE;
主键约束
注意:
建表时,添加主键
CREATE TABLE test ( id INT PRIMARY KEY AUTO_INCREMENT, phone VARCHAR ( 11 );
删除主键
ALTER TABLE test DROP PRIMARY KEY;
建表后,添加主键
ALTER TABLE test MODIFY id INT PRIMARY KEY AUTO_INCREMENT;
外键约束
注意:
建表时,添加外键
CREATE TABLE 表名(...
外键列,
constraint 外键名称 foreign key (外键列名称)references 主表名称(主表列名称));
删除外键
ALTER TABLE 表名 DROP foreign key 外键列名称;
建表后添加外键
ALTER TABLE 表名 ADD constraint 外键名称 foreign key (外键列名称)references 主表名称(主表列名称);
级联操作
主表的更新引起子表的更新
语法
ALTER TABLE
表名 ADDconstraint 外键名称 foreign key (外键列名称)references 主表名称(主表列名称)
ON UPDATE CASCADE ON DELETE CASCADE
分类
ON UPDATE CASCADE
ON DELETE CASCADE
分类
实现关系:
一对一:
一对多(多对一):
多对多:
学生和课程
多对多关系的实现需要借助第三张表,该表至少包含两个字段,这两个字段最为第三张表的外键,分别指向两张表的主键
数据库设计的范式
原文:https://www.cnblogs.com/main404/p/13051647.html