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`;