AI智能
改变未来

MySQL学习笔记——DQL(查询表中数据)

DQL 查询表中数据
1.selete 字段列表 from 表名列表 where 条件 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定;
2.基础查询
①多个字段的查询
select 列名1,列名2… from 表名;
注意:如果查询所有字段,可以用*来代替列表名。
②去除重复
select distinct 列名1,列明2… from 表名;
③计算列
select 列名1,列名2(数字类型),列名3(数字类型),列名2+列名3 from 表名;
如果数字类型中出现null时,只需:
SELECT NAME,math,english,math+ IFNULL(english,0) FROM student3;
④起别名
select 列名1 as 别名 ,列名2 as 别名 … from 表名;

3.条件查询
1.where 字句后跟条件
2.运算符
#<,>,<=,>=,=,<>
示例: SELECT * FROM student3 WHERE age >20;
#between … and
示例: SELECT * FROM student3 WHERE age BETWEEN 20 AND 30;
# in(集合)
示例:SELECT * FROM student3 WHERE age IN (18,22,25);
# like :模糊查询
占位符: ——:单个任意字符
%:多个任意字符
示例: – 查询姓名中包含马的人
SELECT * FROM student3 WHERE NAME LIKE ‘%马%’;
#is null , is not null
示例: SELECT * FROM student3 WHERE english IS NOT NULL;
#and ,&&
示例:SELECT * FROM student3 WHERE age >=20 && age <=30;
SELECT * FROM student3 WHERE age >=20 AND age <=30;
#or ,||
示例: SELECT * FROM student3 WHERE age =18 OR age =22 OR age =25;
# not , !
示例:SELECT * FROM student3 WHERE age !=55;

4.①排序查询
#order by 排序字段1 排序方式1, 排序字段2 排序方式2…;
#排序方式
#ASC:升序,默认的
#DESC:降序
②聚合函数:将一列数据作为一个整体,进行纵向计算。
1.count 计算个数
2.max 计算最大值
3.min 计算最小值
4.sum 计算和
5. avg 计算平均值
注意:聚合函数的计算,会排除null值。
③分组查询
1.order by 分组字段
2.注意
#分组之后查询的字段:分组字段,聚合函数
SELECT sex,AVG(math) FROM student3 GROUP BY sex;
#where 和 having 的区别?
1.where在分组之前进行限定,如果不满足条件,则不参与分组。
having 在分组之后进行限定,如果不满足条件,则不会被查询出来。
2.where 后不可以跟聚合函数,而having可以。

④分页查询
1.limit 开始的索引,每页查询的条数;
2.公式: 开始的索引=(当前页码-1)*每页显示的条数

约束
1.含义:对表中数据进行限定,保证数据的正确性,有效性和完整性。
2.分类:
#主键约束:primary key
#非空约束:not null
#唯一约束:unique
#外键约束:foreign key
3.非空约束
含义:某一列的值不能为null
#创建表时添加约束
CREATE TABLE stu (
id INT,
NAME VARCHAR(20) NOT NULL – name为非空
);
#创建表后添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
#删除非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);

4.唯一约束
含义:某一列的值不能重复
#唯一约束可以有null值,但只能有一个
#创建表时添加唯一约束
CREATE TABLE stu (id INT ,
phone_number VARCHAR(20) UNIQUE – 唯一约束
);
#删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
#创建表后添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

主键约束
含义:非空且唯一,主键就是表中记录的唯一标识(如 id,身份证号)
#一张表中只能有一列为主键
#创建表时添加主键约束
CREATE TABLE stu (id INT PRIMARY KEY, – 主键约束
NAME VARCHAR(20)
);
#删除主键
ALTER TABLE stu DROP PRIMARY KEY;
#创建表后添加主键约束
ALTER TABLE stu MODIFY id INT PRIMARY KEY;

自动增长
1. 概念:如果某一列是数值类型的,使用 auto_increment 关键字 可以使值自动增长。一般配合int 类型的主键约束来使用。
2. 创建表时添加主键约束,并完成主键自动增长
CREATE TABLE stu (id INT PRIMARY KEY auto_increment, – 主键约束
NAME VARCHAR(20)
);
3.删除自动增长
alter table stu modify id int;
4.添加自动增长
alter table stu modify id int auto_increment;

外键约束
1.让两个表产生关系,从而保证数据的正确性。
2.创建表时,添加外键
create table stu (

外键列,
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
3.删除外键
alter table 表名 drop foreign key 外键名称;
4.创建表后,添加外键,并设置级联更新(主表列改变后,外键列随之改变),设置级联删除
alter table 表名 add constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)on update cascade on delete cascade;
5.级联操作
1.设置级联更新
alter table 表名 add constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)on update cascade;
2.设置级联删除
alter table 表名 add constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称) on delete cascade;

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » MySQL学习笔记——DQL(查询表中数据)