MYSQL基础5

#--------------------多表查询-------------------

SELECT * FROM users;

SELECT * FROM users WHERE id IN(1,3,4,5);

#等价于

SELECT * FROM users WHERE id=1 OR id=3 OR id=4 OR id=5;

#聚合函数:max()、min()、avg()、sum()、count

#最高分

SELECT MAX(javaScore) AS topScore FROM users;

SELECT username FROM users WHERE javaScore=129;

 

#同时查询多张表

SELECT * FROM 表1,表2....表n WHERE 条件

#给表取别名直接空格,给字段别名AS

SELECT * FROM users u,(SELECT MAX(javaScore) AS topScore FROM users) temp WHERE u.javaScore=temp.topScore;

 

SELECT u.`username` ,temp.topScore

FROM users u,(SELECT MAX(javaScore) AS topScore FROM users) temp

WHERE u.javaScore=temp.topScore;

 

#部门表(dept)

CREATE TABLE dept

(

id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '部门编号',

deptName VARCHAR(20) COMMENT '部门名称'

)

#员工表(emp)

CREATE TABLE emp(

id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '员工编号',

empName VARCHAR(20) COMMENT '人员名称',

salary FLOAT COMMENT '薪水',

deptId BIGINT(20) COMMENT '部门编号'

)

SELECT * FROM dept;

SELECT * FROM emp;

#(1)查询部门编号=1的部门下的所有员工

SELECT * FROM emp WHERE deptId=1;

 

#(2)查询所有部门中的所有员工

SELECT * FROM dept d,emp p WHERE d.`id`=p.`deptId`

SELECT p.`id`,p.`empName` FROM dept d,emp p WHERE d.`id`=p.`deptId`

SELECT p.* FROM dept d,emp p WHERE d.`id`=p.`deptId`

SELECT d.`deptName`,p.`empName` FROM dept d,emp p WHERE d.`id`=p.`deptId`

 

#(3)找出开发部中的所有员工的员工名,薪水,部门名

SELECT * FROM dept d,emp e WHERE d.`id`=e.deptId AND d.`deptName`='开发部'

SELECT d.`deptName`,e.empName FROM dept d,emp e WHERE d.`id`=e.deptId AND d.`deptName`='开发部'

 

#(4)找出开发部和测试部中的所有员工的员工名,薪水,部门名

SELECT d.`deptName`, e.empName,e.salary

FROM dept d, emp e

WHERE d.`id`=e.deptId AND d.`deptName`='开发部'

 

SELECT d.`deptName`, e.empName,e.salary

FROM dept d, emp e

WHERE d.`id`=e.deptId AND d.`deptName`='测试部'

#第一种方式

SELECT d.`deptName`, e.empName,e.salary

FROM dept d, emp e

WHERE d.`id`=e.deptId AND d.`deptName`IN ('开发部','测试部')

#第二种方式

SELECT d.`deptName`, e.empName,e.salary

FROM dept d, emp e

WHERE d.`id`=e.deptId AND (d.`deptName`='开发部' OR d.`deptName`='测试部')

#第三种方式

#union,union all:可以将两个查询的结构合并,合并的前提是两个查询的数据结构相同

#union:可以自动去重

#union all:不能够去重

SELECT d.`deptName`, e.empName,e.salary

FROM dept d, emp e

WHERE d.`id`=e.deptId AND d.`deptName`= '开发部

 

UNION

 

SELECT d.`deptName`, e.empName,e.salary

FROM dept d, emp e

WHERE d.`id`=e.deptId AND d.`deptName`= '测试部'

#------------------------------------------------------------------------------

#多表查询语法1:select * from 表1,表2.。。表n where 条件

#多表查询方式2:通过连接关键字

#     内链接

#     外连接

#          左外连接

#          右外连接

#内连接:表1 inner join 表2 on 条件(多表之间有关联的条件)

#(1)查询所有部门中的所有员工

SELECT * FROM dept d,emp p WHERE d.`id`=p.`deptId`

SELECT * FROM dept d INNER JOIN emp e ON d.`id`=e.deptId;

 

SELECT d.`deptName`,e.`empName`,e.`salary`

FROM dept d INNER JOIN emp e

ON d.`id`=e.deptId;

 

#(2)找出开发部中的所有员工的员工名,薪水,部门名

SELECT d.`deptName`,e.`empName`,e.`salary`

FROM dept d INNER JOIN emp e

ON d.`id`=e.deptId AND d.`deptName`='开发部';

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值