本节主要内容:合并结果集、连接查询;
合并结果集:是指把两个select语句的查询结果合并到一起。
合并结果集的两种方式:UNION (合并时去除重复记录) | UNION ALL(合并时不去除重复记录);
使用格式:
SELECT * FROM 表1 UNION SELECT * FROM 表2;
SELECT * FROM 表1 UNION ALL SELECT * FROM 表2;
合并结果集的注意事项:合并到两个结果的列数、列类型必须相同。
案例示范:
表student1有姓名、语文成绩两个字段,字段值有:'张一,90'、'张二,80'、'张三,65';
表student2有姓名、语文成绩两个字段,字段值有:'张一,90'、'张二,80'、'李四,75';
SELECT * FROM student1 UNION SELECT * FROM student2;
查询结果如下:
name | score |
张一 | 90 |
张二 | 80 |
张三 | 65 |
李四 | 75 |
SELECT * FROM student1 UNION ALL SELECT * FROM student2;
查询结果如下:
name | score |
张一 | 90 |
张二 | 80 |
张三 | 65 |
张一 | 90 |
张二 | 80 |
李四 | 75 |
2、连接查询(也称跨表查询):可以连接多表进行查询;连接查询时会出现笛卡尔积的现象。
保证连接查询数据的正确性:
- 在查询时要把主键和外键保持一致;
例:学生表student
id | name |
1000 | 张一 |
1001 | 张二 |
1002 | 张三 |
成绩表score
id | score | st_id |
1 | 66 | 1000 |
2 | 79 | 1001 |
3 | 80 | 1002 |
查询语句:
SELECT * FROM student st, score sc where st.id=sc.st_id;
- 主表当中的数据参照子表当中的数据;