0
点赞
收藏
分享

微信扫一扫

MySQL ----->约束&聚合查询&联合查询

SDKB英文 2022-01-08 阅读 116

目录

一,约束

约束类型

二,新增(insert)

基本语法

用法

三,聚合查询

1.常见的聚合函数

2.聚合函数的使用

3.group by(分组语句)

 4.having语句

四,联合查询

1.笛卡尔积

2.内连接

3.外连接

4.自连接

5.子查询

6.合并查询


一,约束

约束类型

注释:

  • 对于primary key 常和auto_increment搭配使用,作用就是此主键会参照此时最大的数值进行自增加一的操作(此主键一般为id)
  • 对于foreign key(外键来说),一般关联的是主键,因为主键具有唯一性
约束类型说明示例
NULL约束使用NOT NULL指定列不为
name varchar(20) not null,
UNIQUE唯一约束指定列为唯一的、不重复的name varchar(20) unique,
DEFAULT默认值约
指定列为空时的默认值age int default 20,
主键约束NOT NULL 和 UNIQUE 的
结合
id int primary key,
外键约束关联其他表的主键或唯一键foreign key (字段名) references 主
表(列)
CHECK约束(了
解)
保证列中的值符合指定的条
check (sex ='男' or sex='女')

二,新增(insert)

基本语法

INSERT INTO table_name [(column [, column ...])] SELECT ...

用法

相当于是对于另一个表的内容进行复制/提取(内容不一定是全部字段,即想要插入的字段)

三,聚合查询

1.常见的聚合函数

函数说明
COUNT([DISTINCT] expr)返回查询到的数据的 数量
SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的 最小值,不是数字没有意义

2.聚合函数的使用

  • count(统计班级里有多少学生)
  •  sum(求班级同学chinese成绩的总成绩)
  • AVG(求班级同学Chinese成绩的平均成绩)
  • max(求班级同学Chinese成绩的最大值)
  • min(求班级同学Chinese成绩的最小值)

3.group by(分组语句)

基本语法:

select column1, sum(column2), .. from table group by column1,column3;

解释 :

 4.having语句

四,联合查询

1.笛卡尔积

 

2.内连接

基本语法:

select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;
select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

案例:查询许仙同学的成绩 

3.外连接

基本语法:

-- 左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;
-- 右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件;

解释:

案例:

首先观察有哪些学生

再观察内连接中得到学生的成绩(发现只有七位同学的成绩)

分析:出现这种情路此时就需要外连接了(外连接的作用就是显示内连接中没有显示出来的内容)

4.自连接

解释:顾名思义就是自己和自己形成内连接

案例:

5.子查询

子查询分为两种:

  • 单行子查询:返回一行记录的子查询
  • 多行子查询:返回多行记录的子查询

 1)单行子查询

基本语法:

-- 单行子查询
select ... from 表1 where 字段1 = (select ... from ...);

案例:查询与“不想毕业” 同学的同班同学:

2)多行子查询

基本语法:

-- [NOT] IN
select ... from 表1 where 字段1 in (select ... from ...);
-- [NOT] EXISTS
select ... from 表1 where exists (select ... from ... where 条件);

案例:(a)使用in(not in)查询“语文”或“英文”课程的成绩信息

(b)使用exist(not exists)

6.合并查询

基本语法:

-- UNION:去除重复数据
select ... from ... where 条件
union
select ... from ... where 条件
-- UNION ALL:不去重
select ... from ... where 条件
union all
select ... from ... where 条件
-- 使用UNION和UNION ALL时,前后查询的结果集中,字段需要一致
  •  union使用(该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中                       的重复行)
  • 案例:查询id小于3,或者名字为“Java”的课程
  • 案例:该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行
  • union all使用(该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集                          中的重复行) 
举报

相关推荐

0 条评论