MySQL笔记_MySQL多表查询

1.名词

主键:一张从表中某个字段引用主表中的主键,维护多表之间的关系
从表:使用别人数据的表,被主表约束

2.外键

级联两个表,一个表的关键字段进行修改,另一个表也会随之修改

constraint  [外键约束名]  foreign key(外键字段) references 主表名(字段)
--删除外键
alter table 表名 drop foreign key 外键名;
--外键的级联
--级联更新
on update  cascade
--级联删除
on delete cascade

3.【数据准备】

--创建公司部门表
CREATE TABLE dept(
id INT PRIMARY KEY auto_increment,
name VARCHAR(20)
);
INSERT INTO dept(name) VALUE('开发部'),('市场部'),('财务部'),('营销部');

-- 创建员工表
CREATE TABLE emp(
id INT PRIMARY KEY auto_increment,
name VARCHAR(10),
gender VARCHAR(10),
salary DOUBLE,   
dept_id INT,
join_date VARCHAR(60)   
);

4.多表查询

(1)交叉连接查询
 特点:左表每条数据和右表每条数据一一匹配显示出来,数据是无用的
	格式: select [字段字段][*] from a,b;
	--查询所有字段
	select * from dept,emp ;
	

在这里插入图片描述
(2)内连接
内连接是基于交叉连接的,显示出来的内容为两个表公共部分。内连接分为隐内连接,显内连接

--隐内连接
select [列名,列名][*] from1,表2 where 
--显外连接【有inner关键字】
-- 实例
-- 隐内连接
select * from dept,emp where dept.id=emp.depT_id;
-- 显内连接
select * from dept  INNER JOIN emp on dept.id=emp.depT_id;

在这里插入图片描述
(3)外连接
内连接查询出来的是公共部分,若要保证某张表全部数据情况下进行查询,可以使用外连接。外连接分为左外连接和右外连接,左/右外连接是保证左/右表数据完全显示

-- 左外连接
-- 语法:select [字段] [*] from  a left [outer] join  b on 条件
select * from dept left join emp on dept.id=emp.dept_id;


左外连接
在这里插入图片描述
右外连接
在这右外连接里插入图片描述

(5)子查询
子查询:一个查询至少包含两个select 语句【嵌套】
子查询的三个结果:
(1)一个值;

-- 查询工资最高的惹的信息
SELECT name from emp where salary=(SELECT max(salary) from emp);

在这里插入图片描述
(2)单列多行;

(3)多行多列

-- 查询2016年入职员工信息,包括部门名称
--方式1
SELECT emp.*,dept.name  部门 from emp right join dept on emp.dept_id=dept.id where emp.join_date>'2016-1-1';
--方式2
SELECT * from dept,(select * from emp WHERE join_date>'2016-1-1') e where e.dept_id=dept.id; 

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值