0
点赞
收藏
分享

微信扫一扫

MySQL基础5

愚鱼看书说故事 2022-04-16 阅读 56
sql

连接查询

又称为多表查询,当查询的字段来自于多个表时就会用到连接查询

笛卡尔乘积现象:表1有m行,表二有n行,结果=m*n行;

错误原因:没有有效的连接条件

按年代分类:sql92标准,sql99标准:支持内连接+外连接+交叉连接

按功能连接分为:内连接:等值连接、非等值连接、自连接

外连接:左外连接、右外连接、全连接

交叉连接:

#等值连接
#查询女生名对应的男朋友
SELECT *FROM beauty;
selse*FROM boys;
SELECT NAME,boyName FROM boys,beauty
WHERE beauty.boyfriend_id=boys.`id`;
;
#查询员工名和对应的部门名
SELECT last_name,department_name
FROM employees,departments
WHERE employees.`department_id`=departments.`department_id`;

#为表起别名
/*
如果为表起了别名,则查询的字段就不能使用原来的表名去限定
*/
#查询员工名、工种号、工种名
SELECT a.last_name,a.job_id,b.job_title
FROM employees  a,jobs b #两个表的顺序可以调换
WHERE a.`job_id`=b.`job_id`;

#可以加筛选
#查询有奖金的员工名、部门名
SELECT last_name,department_name,commission_pct
FROM employees e,departments d
WHERE e.`department_id`=d.`department_id`
AND e.`commission_pct` IS NOT NULL;
#查询城市名中第二个字符为o的按部门名和城市名
SELECT department_name,city
FROM departments d,locations l
WHERE d.`location_id`=l.`location_id`
AND city LIKE '_o%';

#可以加分组
#查询每个城市的部门个数
SELECT COUNT(*) 个数,city,d.`department_name`,d.`location_id` m,l.`location_id` n
FROM departments d,locations l
WHERE d.`location_id`=l.`location_id`
GROUP BY city;
#查询有奖金的部门名和部门的领导编号和该部门的最低工资
SELECT d.`department_name`,d.`manager_id`,MIN(e.`salary`)
FROM departments d,employees e
WHERE d.`department_id`=e.`department_id`
AND NOT ISNULL(e.`commission_pct`)
GROUP BY d.`department_name`,d.`manager_id`;

#可以加排序
#查询每个工种的工种名和员工的个数,并且按员工个数降序
SELECT job_title 工种,COUNT(*) 员工个数
FROM employees e,jobs j
WHERE e.`job_id`=j.`job_id`
GROUP BY 工种
ORDER BY 员工个数 DESC;

#可以实现三表连接
#查询员工名、部门名和所在的城市
SELECT last_name 员工名,department_name 部门名,city
FROM employees e,departments d,locations l
WHERE e.`department_id`=d.`department_id`
AND d.`location_id`=l.`location_id`;

#非等值连接
#查询员工的工资和工资级别
SELECT	salary,grade_level
FROM employees e,job_grades j
WHERE salary BETWEEN j.`lowest_sal` AND j.`highest_sal`
ORDER BY salary DESC;

#自连接
#查询 员工名和上级的名字
SELECT e.employee_id,e.last_name,m.manager_id,m.`last_name`
FROM employees e,employees m
WHERE e.`manager_id`=m.`employee_id`;
举报

相关推荐

5.mysql 基础之排序和分页

MySQL(5)

【MySQL】MySQL基础

基础会计【5】

5:网络基础

mysql DELAY(5)

MySQL5

0 条评论