MySQL学习要点(3/10)
第二节.使用SQL查询(Part 2)
6)多表查询
1.等值连接
i).笛卡尔集会在下面条件下产生:
– 省略连接条件
– 连接条件无效
– 所有表中的所有行互相连接
ii).为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。
#使用连接在多个表中查询数据
SELECT table1.column, table2.column FROM table1, table2
WHERE table1.column1 = table2.column2;
注解:
• 在 WHERE 子句中写入连接条件。
• 在表中有相同列时,在列名之前加上表名前缀加以区分
• 如果使用了表别名,则在select语句中需要使用表别名代替表名
• 使用表名前缀可以使用别名可以简化查询,提高执行效率
beauty表:
boys表:
SELECT beauty.id,name,boyName FROM beauty ,boys
WHERE beauty.`boyfriend_id`=boys.id;
iii).连接 n个表,至少需要 n-1个连接条件
2.Join连接
● Joins子句用于组合数据库中两个或多个表的记录。JOIN是一种通过使用每个表共有的值来组合两个表中的字段的方法
● Join要使用ON 子句创建连接
—自然连接中是以具有相同名字的列为连接条件的
—可以使用 ON 子句指定额外的连接条件
—这个连接条件是与其它条件分开的
—ON 子句使语句具有更高的易读性
—使用 ON 子句创建多表连接
● 此外,添加显示条件还可以使用WHERE, USING 子句。其中USING子句,如果连接的两个表连接条件的两个列具有相同的名字的话可以使用USING
SELECT .... FROM .... LEFT JOIN ... USING ()
SELECT employee_id, city, department_name FROM employees e
JOIN departments d ON d.department_id = e.department_id
JOIN locations l ON d.location_id = l.location