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`='开发部';

猜你喜欢

转载自blog.csdn.net/qq_41579634/article/details/86628661