子查询
MySQL 子查询版本要求:MySQL4.1引入了对子查询的支持。
子查询:嵌套在其他查询语句中的查询。
示例: 利用子查询进行过滤
假如需要查询出成绩表分数最高的学生的姓名及编号
select st.s_no,st.s_name from student st where st.s_no in (select s1.s_no from score s1 where s1.sc_degree in (select max(sc.sc_degree)from score sc));
从上述查询语句可以看出,
子查询总是从内向外处理。为了执行上述子查询,MySQL实际上必须执行3条select语句,最里面的两个子查询返回学生编号和最高成绩,最外层查询返回学生信息。
子查询的查询过程一般是通过where中的in操作符来完成,in后面子查询语句查询的列即为in之前的列名。
所以在中的子句中使用子查询,应该保证select语句具有中的子句中相同数目的列。通常,子查询将返回单个列并且与单个列匹配。
使用子查询,一般与IN操作符结合使用,但可以用于测试相等(=)、不相等(<>)等。
内连接,外连接实际上都是在笛卡尔积(join)的基础上对记录进行筛选。
内联结inner join
外键:外键为某个表中的一列,它包含另一个表中的主键值,定义了两个表之间的关系。
内联结语法为:
select 查询列表
from 表1
inner join 表2
on 连接条件
sql99