0
点赞
收藏
分享

微信扫一扫

MySQL复习资料(六)——MySQL-多表联合查询



????导读????

✍本文由在下【红目香薰】原创

????2022年最大愿望:【服务百万技术人】????

​????正文????

MySQL复习资料(六)——MySQL-多表联合查询

​目录​

创建从表

两表联合查询

笛卡尔积查询

去笛卡尔积查询

查询结果筛选

创建从表

CREATE TABLE user_address (
id int(8) NOT NULL AUTO_INCREMENT,
uid int(8) NOT NULL,
inName varchar(32) NOT NULL,
inPhone varchar(11) NOT NULL,
address varchar(200) NOT NULL,
PRIMARY KEY (id)
) DEFAULT CHARSET=utf8;
insert into user_address values
(0,1,'superadmin','18112345671','hebei shijiazhuang'),
(0,1,'admin','18112345672','guangxi nanning'),
(0,2,'zhangsan','18112345673','heilongjiang haerbin'),
(0,2,'zhangsan','18112345674','hubei wuhan'),
(0,3,'lisi','18112345675','hebei zhangjiakou'),
(0,4,'wangwu','18112345676','hebeisheng xingtai'),
(0,5,'zhaoliu','18112345677','jiangwusheng hangzhoushi'),
(0,9,'shigandang','18112345678','shanghaishi');

不必要加外键,如果需要添加,需要将MySQL的引擎改为【InnoDB】。

show create table users;

MySQL复习资料(六)——MySQL-多表联合查询_java

只有在【InnoDB】下才可以添加外键。

原因:禁止使用外键,如果要保证完整性,应由应用程式实现——参考《阿里内部mysql规范》

MySQL复习资料(六)——MySQL-多表联合查询_数据库_02

两表联合查询

笛卡尔积查询

select * from users,user_address;

共计查询64条,计算方式:A表users 8条数据,B表user_address 8条数据,8*8=64条。

交叉相乘,相当于计算了两个表的笛卡尔积。

MySQL复习资料(六)——MySQL-多表联合查询_联合查询_03

去笛卡尔积查询

select * from users,user_address where users.id=user_address.uid;

MySQL复习资料(六)——MySQL-多表联合查询_联合查询_04

查询结果筛选

由于有两个id,需要说明都是谁的ID,故而需要进行单独修改名称,如果只有一个列名可以直接使用。

select u.id '用户id',createDate,userName,passWord,age,phone '手机',introduce,a.id '地址id',inName '收获人',inPhone '收货人手机号',address '收货人地址' from users u,user_address a where u.id=a.uid;

MySQL复习资料(六)——MySQL-多表联合查询_java_05

在常规的数据基础上做筛查即可。


举报

相关推荐

0 条评论