我是靠谱客的博主 忧郁小白菜,最近开发中收集的这篇文章主要介绍数据库_MySQL: mysql多表对应关系及多表联查,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

六、联合查询(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多表对应关系及多表联查所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部