1. 数据库操作-DQL
- 数据查询语言(Data Query Language,DQL):用来查询数据库表中的记录。
1.1 语法结构
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
1.2 查询
- 基本查询(不带任何条件)
- 条件查询(where)
- 分组查询(group by)
- 排序查询(order by)
- 分页查询(limit)
1.3 基本查询
语法:
-
查询多个字段
select 字段1, 字段2, 字段3 from 表名;
-
查询所有字段(通配符)
select * from 表名;
-
设置别名
select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] from 表名;
-
去除重复记录
select distinct 字段列表 from 表名;
1.4 条件查询
语法:
select 字段列表 from 表名 where 条件列表 ; -- 条件列表:意味着可以有多个条件
常用的比较运算符如下:
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
between … and … | 在某个范围之内(含最小、最大值) |
in(…) | 在in之后的列表中的值,多选一 |
like 占位符 | 模糊匹配(_匹配单个字符, %匹配任意个字符) |
is null | 是null |
常用的逻辑运算符如下:
逻辑运算符 | 功能 |
---|---|
and 或 && | 并且 (多个条件同时成立) |
or 或 || | 或者 (多个条件任意一个成立) |
not 或 ! | 非 , 不是 |
1.5 聚合函数
- 调用函数对一列的值进行计算并返回结果
语法:
select 聚合函数(字段列表) from 表名 ;
注意 : 聚合函数会忽略空值,对NULL值不作为统计。
常用聚合函数:
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
count :按照列去统计有多少行数据。
- 在根据指定的列统计的时候,如果这一列中有null的行,该行不会被统计在其中。
sum :计算指定列的数值和,如果不是数值类型,那么计算结果为0
max :计算指定列的最大值
min :计算指定列的最小值
avg :计算指定列的平均值
1.6 分组查询
- 按列分类,把相同数据归为一类,统计相同数据数量
语法:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
1.7 排序查询
- 对查询的结果按需求排序
语法:
select 字段列表
from 表名
[where 条件列表]
[group by 分组字段 ]
order by 字段1 排序方式1 , 字段2 排序方式2 … ;
- 排序方式:
- ASC :升序(默认值)
- DESC:降序
1.8 分页查询
- 将查询到的数据按需求分成页显示
语法:
select 字段列表 from 表名 limit 起始索引, 查询记录数 ;
起始索引计算:(页码-1) X 查询记录数
如果查询页码为第一页,起始索引可省略不写: limit 查询记录数
2. 多表设计
-
表结构基本上分为三种:
-
一对多(多对一)
-
多对多
-
一对一
-
2.1 一对多
- 一个表中的一条数据对应另一个表的多条数据,通过外键进行绑定(主表的主键设置为子表的外键)
- 一条数据的表为主表,被映射多条数据的表为子表
- 比如一个班级拥有多个学生
外键约束的语法:
-- 创建表时指定
create table 表名(
字段名 数据类型,
...
[constraint] [外键名称] foreign key (外键字段名) references 主表 (主表列名)
);
-- 建完表后,添加外键
alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表(主表列名);
2.2 一对一
- 一个表中的一条数据对应另一个表的一条数据,通过外键进行绑定(部分主表子表)
- 比如一个人只有一个身份证号
2.3 多对多
- 一个表中的多条数据对应另一个表的一条数据,需新建一包含两个主表主键的联系表
- 比如:一个学生学了多门课程,一门课程被多个学生选择