MySQL中的连接查询实例分析

网友投稿 607 2023-07-07

MySQL中的连接查询实例分析

MySQL中的连接查询实例分析

1. 笛卡尔乘积

表1有m行数据,表2有n行数据,查询结果有m*n行数据。

2. 分类

(1)按年代分类

sql92标准:仅支持内连接

sql99标准(推荐):支持内连接、外连接(左外连接和右外连接)、交叉连接

(2)按功能分类

内连接:等值连接、非等值连接、自连接

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

交叉连接

3. 等值连接

(1)查询女生名及其对应的男朋友名

SELECT girlname, boynameFROM boys, girlsWHERE girls.boyfriend_id=boys.girlfriend_id;登录后复制

(2)查询员工名(last_name)和对应的部门名(department_name)-------------(根据关联的id查询)

SELECT last_name, department_nameFROM JDSC, SNSCWHERE JDSC.`id`=SNSC.`id`;登录后复制

(3)查询员工名(last_name)、工种号(job_id)、工种名(job_title) (员工表:JDSC 工作表:JOBSC)------为表起别名,提升简洁度,避免歧义

#"e.job_id"是为了避免歧义SELECT last_name, e.job_id, job_titleFROM ESC e, JOBSC jWHERE e.`job_id`=j.`job_id`;登录后复制

注意:

如果为表起了别名,则查询的字段不能使用原来的表名去限定。

上述两个表的顺序可互换

(4)查询有奖金的员工名、部门名

#员工名:last_name#部门名:department_name#奖金率:commissiom_pctSELECT last_name, department_name, commissiom_pctFROM employees e, department dWHERE e.`department_id`=d.`department_id`AND e.`commissiom_pct` IS NOT NULL;登录后复制

(5)分组查询——查询每个城市的部门个数

#城市分组表名:city#部门分组表名:departments SELECT COUNT(*) 个数, cityFROM departments d, locations lWHERE d.`location_id`=l.`location_id`GROUP BY city;登录后复制

(6)排序——查询每个工种的工种名和员工个数,并按员工个数降序

SELECT job_title, COUNT(*)FROM emloyees e, jobs jWHERE e.`job_id`=j.`job_id`GROUP BY job_titleORDER BY COUNT(*) DESC;登录后复制

(7)三表连接——查询员工名、部门名和所在的城市

SELECT last_name, department_name, cityFROM employees e, departments d, locations lWHERE e.`department_id`=d.`department_id`AND d.`location_id`=l.`location_id`AND city LIKE 's%';登录后复制

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mysql中limit查询方法怎么使用
下一篇:mysql大型网站技术架构核案例分析
相关文章