连接查询
1.等值连接 连接符号为= 出现的列成为连接字段
2.非等值连接 非=
3.交叉连接 (非限制连接) 不带连接谓词的连接。是两个表中元组的交叉乘积。一般用来测试数据。select sno,cno from student,course;
4.自身连接 起别名,可以给同一个表起不同的名字,将一个表看作两个表
select a.*,b.* from student a,sc b where a.sno=b.sno;
5.外连接 包括左外连接 left outer join、右外连接 right outer join、全外连接full outer join
左外连接 左边为主表 该表中的记录全部会显示,即使右边没有相关记录
select student.*,sc.* from student left join sc on student.sno=sc.sno;
6.复合条件连接 在where子句中有多个条件的查询方式。
7.字符串条件查询 把列用字符连起来并进行运算。
子查询
由内到外查询,其中不包含order by子句(order by只对查询的最终结果排序)
分类
相关子查询 子查询的查询条件依赖外层父查询的某个属性值,反之为不相关子查询。
单一行子查询 子查询返回的结果值的数目为一个值,否者为多行子查询。p80--84
量词 exists not exists
exists 内层查询结果非空,where子句返回真值(前面没有列名、常量或其他表达式,只是为了测试是否存在符合子查询中指定条件的行,不必列出列名)
select sname from stuednt where exists(select * from sc where sno=student.sno and cno='001');
not exists 内层查询结果非空,where子句返回假值
网友评论