Mysql 基础 查询语句

目录

1. 外键

2. 多表关系

2.1 一对多

2.2 多对多

2.3 一对一

 3 多表查询

3.1消除笛卡尔积

3.2 内连接 -> 两表的交集

3.3 外连接

 3.4 自联接

 3.5 联合查询 -> 把多次查询的结果合并

3.6 子查询


1. 外键

子表 emp

主表(有外键的是主表) dept

 操作:


主表外键改变 从表也变 update cascade

主表外键删除 从表对应数据也删除 delete cascade

设置外键 alter table emp add constraint foreign key(dept_id) references dept(id)  update cascade on delete cascade

2. 多表关系

2.1 一对多

2.2 多对多

2.3 一对一

外键 唯一型 unique -> 做单表拆分 -> 

 3 多表查询

3.1消除笛卡尔积

select * from emp , dept where emp.dept_id = dept.id;

3.2 内连接 -> 两表的交集

-- 查询每一个员工的姓名 及关联的部门名称 
-- 隐使内连接
select emp.name, dept.name from emp , dept where emp.dept_id = dept.id ; 
select e.name, d.name from emp e , dept d where e.dept_id = d.id ; // 字段被as 之后 就只能用as 之后的名称

-- 显示内连接
select e.name, d.name from emp e inner join dept d on emp.dept_id = dept.id ; 
select e.name, d.name from emp e join dept d on emp.dept_id = dept.id ;  // inner  可以省略

3.3 外连接

3.3.1 左外连接 -> 左边表的全部和 两表的交集

-- 查询emp表全部数据 已经dept 部门信息
select e.* , d.name from emp e left outer join dept d on e.dept_id = d.id;
select e.* , d.name from emp e left join dept d on e.dept_id = d.id; // outer可以省略

3.3.2 右外连接-> 右边表的全部信息 以及两表的交集

-- 查询dept表全部数据 和对应员工信息
select d* , e.* from emp e right outer join dept d on e.dept_id = d.id;

 3.4 自联接

-- 查询员工的领导 单表中查询 managerid领导字段
-- 内连接
select a.name , b.name from emp a, emp b where a.managerid = b.id;
-- 外连接
select a.name '员工', b.name '领导'from emp a left jion emp b on a.managerid = b.id;

 3.5 联合查询 -> 把多次查询的结果合并

3.6 子查询

3.6.1 标量子查询

-- 查询 销售部的某个员工
select * from emp where dept_id = (select id from dept where name = '销售部')

3.6.2 列子查询

-- 查询销售部 和 市场部 所有员工

select * from emp where dept_id in (select id from dept where name = '销售部' or nam ='市场部')

3.6.3 行子查询

-- 查询xxx 的薪资 以及领导相同的员工信息
select * from emp where (salary , managerid) = (select salary ,managerid from emp where name = 'xxx');

3.6.4 表子查询

-- 查询 与 xxx yyy 职位薪资 相同的员工信息
select * from emp where(job, salary ) in (select job , salary from emp where name ='xxx' or name='yyy);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值