建表:
USE dt4;
CREATE TABLE dept(
id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT'部门编号',
deptName VARCHAR(20) COMMENT'部门表'
)
CREATE TABLE emp(
id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT'员工编号',
empName VARCHAR(30) COMMENT'员工名',
salary FLOAT(20) COMMENT'薪资',
deptid INT(10) COMMENT'部门编号'
)
INSERT INTO dept(id,deptName)
VALUES(1,'开发部'),(2,'测试部'),(3,'UI/前端'),(4,'销售部');
同时查询多张表
方式一:
select * from 表1,表2…表n where 条件
#查找所有部门的所有员工
SELECT * FROM emp a,dept b WHERE b.id=a.deptid;
#找出开发部所有员工名、薪水、部门名
SELECT * FROM emp a,dept b WHERE a.deptid=b.id AND b.deptName='开发部';
#找出“开发部”和“测试部”中所有的员工名、薪水、部门名
#方法一
SELECT * FROM emp a,dept b WHERE a.deptid=b.id AND (b.deptName='开发部' OR b.`deptName`='测试部');
#方法二
SELECT * FROM emp a,dept b WHERE a.deptid=b.id AND b.deptName IN('开发部','测试部');
#方法三(*) union、union all:可以将两个查询结果进行合并,合并的前提是两个查询语句的数据结构是一样的
#union:可以自动去重
#union all:不能自动去重
SELECT * FROM emp a,dept b WHERE a.deptid=b.id AND b.deptName='开发部'
UNION
SELECT * FROM emp a,dept b WHERE a.deptid=b.id AND b.deptName='测试部'
方式二:
通过连接关键字:
内连接: 表一 inner join 表二 on 条件(多个表之间有关联的条件)
语法:select 字段名1,字段名2…字段n from 表一 别名一 inner join 表二 别名二 on 条件 where 条件
#查询所有部门中的所有员工
SELECT a.`empName`,a.`salary`,b.`deptName`
FROM dept b INNER JOIN emp a
ON b.`id`=a.`deptid`;
#找出“开发部”中所有的员工名、薪水、部门名
SELECT a.`empName`,a.`salary`,b.`deptName`
FROM dept b INNER JOIN emp a
ON b.`id`=a.`deptid` AND b.deptName='开发部';
#找出“开发部”和“测试部”中所有的员工名、薪水、部门名
SELECT a.`empName`,a.`salary`,b.`deptName`
FROM dept b INNER JOIN emp a
ON b.`id`=a.`deptid` AND b.deptName IN('开发部','测试部');
外连接:
左外连接:left join
#左外连接当条件不满足时,以左边的表为主
SELECT a.`empName`,a.`salary`,b.`deptName`
FROM dept b LEFT JOIN emp a
ON b.`id`=a.`deptid`;
右外连接:right join
#右外连接当条件不满足时,以右边的表为主
SELECT a.`empName`,a.`salary`,b.`deptName`
FROM dept b RIGHT JOIN emp a
ON b.`id`=a.`deptid`;
模糊查询:
select 字段列表 from 表名 where 字段 like ‘Ne%’;
#查询以Ne开头的数据
select 字段列表 from 表名 where 字段 like ‘%Ne%’;
#查询含有Ne的数据
select 字段列表 from 表名 where 字段 like ‘L_ve’;
#查询含有 L+某一个字符+ve的数据
select 字段列表 from 表名 where 字段 like ’[abc]%’;
#查询a/b/c开头的数据