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 主表名称(主表列名称)
 );

mysql 查一个表 带出另一个表的一列 mysql查询表中某个数据_表名

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;