黑猴子的家:mysql 连接查询练习二(多表连接 -> 等值连接)

1、表数据查看

SELECT * FROM beauty;
SELECT * FROM boys;
SELECT NAME,boyname FROM beauty,boys
WHERE boyfriend_id=boys.id;

2、连接查询 -> 等值查询 总结

概念:查询的字段来自于多个表
语法:
    select 字段1,字段2
    from 表1,表2
    【where 连接条件】
笛卡尔乘积:
    产生原因:没有加连接条件,导致结果为 表1 的行数*表2 的行数
    解决方法:添加上有效的`myemployees`
分类:
    一、传统模式的多表连接
    等值连接——非等值连接
    二、sql99推出的标准,使用join关键字实现连接
    内连接——外连接
    三、自连接

3、传统模式的多表连接

等值连接
/*
① 表的顺序没有要求
② n表连接,至少需要n-1个连接条件
③ 一般需要为表起别名
④ 可以添加分组、排序、筛选
*/
案例:查询员工名、部门名

SELECT `last_name`,`department_name`
FROM `employees`,`departments`
WHERE `employees`.`department_id`=`departments`.`department_id`;

4、为表起别名

/*
一般需要为表起别名,好处:a、提高语句简洁度 b、防止字段有歧义 c、提高效率
如果已经为表起别名,则使用字段时,只能用别名限定而不能用表名限定
*/

SELECT e.`last_name`,d.`department_name`
FROM `employees`  e,`departments` d
WHERE e.`department_id`=d.`department_id`;

5、添加筛选条件

案例:查询 工资>5000的工种名和员工名、工资

SELECT job_title,last_name,salary
FROM employees e,jobs j
WHERE e.`job_id`=j.`job_id`
AND salary>5000;

6、添加分组和筛选

案例:查询每个部门的员工个数和部门名

SELECT COUNT(*) 个数,department_name
FROM employees e,departments d
WHERE e.`department_id`=d.`department_id`
GROUP BY e.`department_id`
HAVING 个数>5;

7、排序

案例:查询每个部门的员工个数和部门名

SELECT COUNT(*) 个数,department_name
FROM employees e,departments d
WHERE e.`department_id`=d.`department_id`
GROUP BY e.`department_id`
HAVING 个数>5
ORDER BY 个数 DESC;

8、三表连接

案例:查询员工名、部门名和所在城市

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`;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值