查询语法:
select
列名列表
from
表名列表
where.....
笛卡尔积:
*有两个集合A,B.取两个集合的所有组成情况。
*要完成多表查询,必须消除无用的数据。
多表查询的分类:
1.内连接查询
1.隐式内连接:使用where条件消除无效数据
select * from student,score where students.num = score.num;
2.显示内连接:
语法:select 字段列表 from 表名1 [inner] join 表名2 on 条件
select * from students join score on students.num = score.num;
3.内连接查询:
1.从哪些表中查询数据
2.条件是什么
3.查询哪些字段
2.外连接查询
1.左外连接:
语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
查询的是左表所有数据以及其交集部分
2.右外连接:
语法:select 字段列表 from 表1 right [outer] join 表2 on 条件;
查询的是右表所有记录及其交集部分
3.子查询
概念:查询中嵌套查询,称嵌套查询为子查询。
select * from students where students.score =(select MAX(score) from students);
1.子查询不同情况
1.子查询的结果是单行单列的
*子查询可以作为条件,使用运算符去判断。运算符:> >= < <= =
select * from student where student.score <(select avg(score) from student);
2.子查询的结果是多行单列的
*子查询可以作为条件,使用运算符in来判断
select * from student where student.num in (select num from department where name = '学生部' or name = '学习部');
3.子查询的结果是多行多列的
*子查询可以作为一张虚拟表参与查询
select * from department,(select id from students where score > 90) where department.id = student.id;