SQL查询
执行顺序
where ...
group by ...
select ... 聚合函数 from ...
having ...
order by ...
limit ...
-
order by
- 作用:对查询结果进行排序
- 语法:
order by 字段名 排序方式;
- 排序方式:
-
ASC
:升序(默认) -
DESC
:降序
-
-
limit
- 作用:显示显示查询记录的条数
- 用法:
- 永远放在SQL语句的最后面
-
limit n
显示n条记录 -
limit m,n
m从0开始计数,表示从第几条记录开始显示,n代表显示几条
-
group by
- 作用:给查询的结果进行分组
- 注意:
-
group by
之后的字段必须要为select
之后的字段 - 如果
select
之后的字段和group by
之后的字段不一致,则必须要对select
之后的该字段做聚合处理
-
-
having
- 作用:对查询的结果进行j进一步筛选
- 注意:
-
having
语句通常与group by
语句联合使用,用来过滤由group by
语句返回的记录集 -
having
语句的存在弥补了where
关键字不能与聚合函数联合使用的不足,having
操作的是聚合函数生成的显示列 -
where
只能操作表中实际存在的字段,having
可以操作聚合函数生成的显示列
-
-
distinct
- 作用:不显示字段的重复值
- 注意:
-
distinct
处理的是distinct
和from
之间的所有字段,所有字段值必须全部相同才能去重 -
distinct
不能对任何字段做聚合处理
-
- 查询表记录时可以做数学运算
- 运算:
+ - * / %
- 运算:
聚合函数
-
分类
-
avg(字段名)
求字段的平均值 -
sum
求字段的和 -
max(字段名)
求字段的最大值 -
min(字段名)
求字段的最小值 -
count(字段名)
统计该字段记录的个数,空值null
不会被统计
-
约束
-
默认约束
- 作用:在插入记录时,如果不给该字段赋值,则使用默认值
- 格式:
字段名 数据类型 default 值,
-
非空约束
- 作用:不允许将该字段设置为
NULL
- 格式:
字段名 数据类型 not null
- 作用:不允许将该字段设置为
索引
-
定义
对数据库中表的一列或者多列的值进行排序的一种结构(MySQL中用Btree方式) -
优点
加快数据的检索速度 -
缺点
- 当对表中的数据进行增加、删除或修改的时候,索引也得动态维护,降低了数据的维护速度
- 索引需要占用物理空间
-
索引分类
普通索引(
index
)- 使用规则:
- 一个表中可以有多个
index
字段 - 字段的值可以有重复,且可以为
null
值 - 经常把做查询条件的字段设置为
index
字段 -
index
字段的key
标志是MUL
- 一个表中可以有多个
- 创建
index
:- 创建表时创建:
index(字段名1),index(字段名2)
- 在已有表中创建:
- 语法:
create index 索引名 on 表名(字段名)
- 注意:索引名一般和字段名一样
- 语法:
- 查看普通索引:
-
desc 表名
查看key
标志 show index from 表名
-
- 创建表时创建:
- 删除索引
drop index 索引名 on 表名
唯一索引(
unique key
)- 使用规则:
- 一个表中可以有多个
unique
字段 -
unique
字段的值不允许重复,但可以为null
-
unique
的key
标志是UNI
- 一个表中可以有多个
- 创建唯一索引
unique
- 创建表时创建
unique(字段名1),unique(字段2)
字段名 数据类型 unique
- 在已有表中创建
create unique idnex 索引名 on 表名
- 创建表时创建
- 删除唯一索引
drop index 索引名 on 表名
注意:index
,unique
在删除时只能一个一个删
主键索引(
primary key
)- 使用规则
- 一个表中只能有一个主键(
primary
)字段 - 对应字段的值不允许重复,且不能为空
- 主键字段的
key
标志PRI
- 把表中能够唯一标识一条记录的字段设置为主键,通常把表中记录编号的字段设置为主键
- 一个表中只能有一个主键(
- 创建主键(
primary key
)- 创建表时创建
字段名 数据类型 primary key,
primary key(字段名)
- 在已有表中创建
alter table 表名 add primary key(字段名);
- 创建表时创建
- 删除主键
alter table 表名 drop primary key;
- 自增长属性(
auto_increment
)- 作用:通常和主键字段一起配合使用
- 创建:
- 创建表时创建:
字段名 数据类型 primary key auto_increment
- 在已有表中添加增长属性:
alter table 表名 modify 字段名 数据类型 primary key auto_increment;
- 创建表时创建:
- 删除主键及自增长属性
alter table 表名 modify 字段名 数据类型
alter table 表名 drop primary key
外键索引(
foreign key
)- 定义:让当前表的字段值字在另一个表的范围内选择
- 语法格式
foreign key(参考字段名)
references 被参考表名(被参考字段名)
on delete 级联动作
on update 级联动作
- 删除外键
- 语法格式
alter table 表名 drop foreign key 外键名
- 注意
- 外键名的查看方式
show create table 表名;
- 外键名的查看方式
- 语法格式
- 在已有表中添加外键
- 语法格式:
alter table 表名 add
foreign key(参考字段名) references
被参考表名(被参考字段名)
on delete 级联动作
on undate 级联动作
- 注意
在已有表中添加外键时,会受到表中原有数据的限制
- 语法格式:
- 级联动作
-
cascade
数据级联更新- 当主表删除记录时,如果从表有相关联记录则级联删除
- 当主表更新被参考字段的值时,从表级联更新参考字段的值
-
restrict
(默认)- 当主表删除记录时,如果从表中有相关记录则不允许主表删除
- 当主表更新记录时,如果从表中有相关记录则不允许主表更新
-
set null
- 当主表删除记录时,从表中相关记录外键字段变为
null
- 当主表更新记录时,从表中相关记录外键字段变为
null
- 当主表删除记录时,从表中相关记录外键字段变为
-
no action
- 同
restrict
,都是立即检查外键限制
- 同
-
- 使用规则
- 两张表被参考字段和参考字段的数据类型要一致
- 被参考字段必须是
key
的一种,通常是primary key
- 使用规则:
网友评论