概述
六、联合查询(union、union all)
语法:select 字段 from 表a union [选项] select 字段 from 表b;
选项:
all - 显示两个表中所有记录(a表5条,b表10条,其中2条重复=15)
distinct (默认) - 去掉两个表中相同记录(a表5条,b表10条,其中2条重复=13)
注意:
union两边的select语句的字段数必须一致
字段类型可以不一致,但是最终数据一一对应
男生按年龄的降序排列,女生按年龄的升序排列:
#设置编码
set names gbk;
#测试数据
create table u3 (name char(4),age tinyint,sex char(1));
insert into u3 value('tom',79,'男'),('jack',64,'男'),('王五',33,'女'),('赵6',12,'女');
#练习
(select * from u3 where sex = '男' order by age desc limit 999)
union all
(select * from u3 where sex = '女' order by age asc
limit 999);
联合查询排序SQL语句必须用小括号包起来并且加limit限制
七、表与表之间的关系
1、一对一(1:1)
一对一关系中,A 表中的一行只能匹配于 B 表中的一行
2、一对多
A 表中的一行可以匹配 B 表中的多行;
3、多对多
A表的一条记录对应另外一张B表的多条记录;同时B表中的一条记录也对应A表中的多条记录。如:一个老师教过多个学生,一个学生也被多个老师教过。
一般多对多都会有一个中间表,来存放多对多的关系
八、多表查询(连接查询)
将多个表按照一定的规则组合起来.(结果列增多)
1、内连接(inner join)
语法: select * from 表1 inner join 表2 o表1.公共字段 = 表2.公共字段
注意:
[表1.公共字段]用于声明字段属于哪个表
内连接查询两个表字段相同的数据
2、左外连接(left join)
以左边的数据为标准,右边的表如果有没有对应的记录用NULL表示
语法: select * from 表1 left join 表2 on 表1.公共字段 = 表2.公共字段
3、右外连接(right join)
以右边的数据为标准,左边的表如果有没有对应的记录用NULL表示
语法: select * from 表1 right join 表2 on 表1.公共字段 = 表2.公共字段
4、交叉连接 (cross join)
语法: select * from 表1 cross join 表2 on 表1.公共字段 = 表2.公共字段
加条件:结果同内连接
不加条件:笛卡尔乘积
最后
以上就是忧郁小白菜为你收集整理的数据库_MySQL: mysql多表对应关系及多表联查的全部内容,希望文章能够帮你解决数据库_MySQL: mysql多表对应关系及多表联查所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复