讯享网
(2)条件查询
(1)比较大小
讯享网
(2)确定范围
例:查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄
例:查询计算机科学系(CS)、数学系(MA)、信息系(IS)学生的姓名和性别。
讯享网
(4)字符匹配
在字符匹配中,%代表任意长度(可以为0)的字符串,下划线代表任意单个字符。如果要查询的字符串中含有%。当匹配串中不含通配符时,可以用等于运算符代替like。
例:查询以“DB_”开头,且倒数第三个字符为i的课程的详细情况。
(5)涉及空值的查询
讯享网
(6)多重条件查询
(3)连接查询
[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>
例:查询选修2号课程且成绩在90分以上的所有学生的学号和姓名。
select Student.Sno,Sname
from Student,Sc
where Student.Sno = Sc.Sno and Sc.Cno = ‘2’ and Sc.Grade > 90;
自身连接一个表自己与自己连接叫做自身连接。
例:查询每一门课的间接先修课(即先修课的先修课)。
select first.Cno,second.Cpno
from Course first,Course second
where first.Cpno = second.Cno;
外连接
普通连接操作只输出满足连接条件的元组,外连接操作以指定表为主体,将主体表中不满足连接条件的元组一并输出。外连接分为左外连接和右外连接,如果列出左表中的所有元组,则称为左外连接;列出右表的所有元组,则成为右外连接。
例:查询每个学生及其选修课程的情况,未选课的学生的选课情况以空值输出。
select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student left outer join Sc on (Student.Sno = Sc.Sno);
或
select Student.,Sc.
from Student left outer join Sc using(Sno);
多表连接
两个表以上的连接称为多表连接
例:查询每个学生的学号、姓名、选修的课程名及成绩。
select Student.Sno,Sname,Cname,Grade
from Student,Sc,Course
where Student.Sno = Sc.Sno and Sc.Cno = Course.Cno;
(4)嵌套查询
如果子查询的条件不依赖于父查询,则称为不相关子查询。如果子查询的条件依赖于父查询,则称为相关子查询。
带有in谓词的子查询
例:查询选修了课程名为“信息系统”的学生的学号和姓名。
select Sno,Sname
from Student
where Sno in
(select Sno
from Sc
where Cno in
(select Cno
from Course
where Cname = ‘信息系统’
)
);
带有比较运算符的子查询
父查询与子查询之间用比较运算符进行连接,这时内层查询返回的是单个值。
例:找出每个学生超过他自己选修课程平均成绩的课程号。
select Sno,Cno
from Sc x
where Grade >= (
select avg(Grade)
from Sc y
where x.Sno = y.Sno);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/191511.html