首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL复习资料(六)——MySQL-多表联合查询

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

作者头像
红目香薰
发布2022-11-29 20:36:56
发布2022-11-29 20:36:56
9070
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode

📋导读📋

💝博客主页:红目香薰_CSDN博客-大数据,MySQL,Java领域博主💝 ✍本文由在下【红目香薰】原创,首发于CSDN✍ 🤗2022年最大愿望:【服务百万技术人】🤗

📋前言📋

本文属于系列文章,分别为: MySQL复习资料(一)——MySQL环境安装 MySQL复习资料(二)——MySQL-DDL语句 MySQL复习资料(三)——MySQL-DML语句 MySQL复习资料(四)——MySQL-聚合函数 MySQL复习资料(五)——MySQL-索引 MySQL复习资料(六)——MySQL-多表联合查询 MySQL复习资料(七)——MySQL-存储过程 MySQL复习资料(八)——MySQL-事务 MySQL复习资料(九)——MySQL-图形化工具使用

📋正文📋

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

目录

创建从表

两表联合查询

笛卡尔积查询

去笛卡尔积查询

查询结果筛选

主表

代码语言:javascript
复制
CREATE TABLE users (
  id int(8) NOT NULL AUTO_INCREMENT,
  createDate datetime NOT NULL,
  userName varchar(32) NOT NULL,
  passWord varchar(36) NOT NULL,
  age int(3) NOT NULL,
  phone varchar(11) NOT NULL,
  introduce varchar(20) NOT NULL,
  PRIMARY KEY (id)
) DEFAULT CHARSET=utf8;
insert into users values(0,now(),'admin','123456',22,'15912345678','喜欢学习.');
insert into users values(0,now(),'zhangsan','123456',32,'15912345678','喜欢做饭.');
insert into users values(0,now(),'lisi','123456',42,'15912345678','喜欢化妆.');
insert into users values(0,now(),'wangwu','123456',52,'15912345678','喜欢武术.');
insert into users values(0,now(),'zhaoliu','123456',16,'15912345678','喜欢舞蹈.');
insert into users values(0,now(),'ruanxiaoqi','123456',27,'15912345678','喜欢泡妞.');

创建从表

代码语言:javascript
复制
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】。

代码语言:javascript
复制
show create table users;

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

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

两表联合查询

笛卡尔积查询

代码语言:javascript
复制
select * from users,user_address;

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

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

去笛卡尔积查询

代码语言:javascript
复制
select * from users,user_address where users.id=user_address.uid;

查询结果筛选

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

代码语言:javascript
复制
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;

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 📋导读📋
  • 📋前言📋
  • 📋正文📋
    • MySQL复习资料(六)——MySQL-多表联合查询
    • 主表
    • 创建从表
    • 两表联合查询
      • 笛卡尔积查询
      • 去笛卡尔积查询
      • 查询结果筛选
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档