数据库实验

文章介绍了如何在SQL查询中使用NOTIN和NOTEXISTS操作符,分别针对排除特定姓氏的学生和查找选修所有课程的学生的示例。强调了这两个逻辑运算符在处理集合和空查询结果的应用。
摘要由CSDN通过智能技术生成

2-7 查询所有不姓张、不姓李、也不姓王的学生的学号sid、姓名name

create or replace view test2_07 as
select sid, name
from pub.student
where name not like '张%' and name not like '李%' and name not like '王%'

create or replace view test2_07 as
select sid,name
from pub.student
where name not in(select name 
                  from pub.student
                  where name like '张%' or name like '李%' or name like'王%');

2-9 查询选修了300003号课程的学生的sid、name、score

create or replace view test2_09 as
select s.sid, s.name, sc.score
from pub.student s, pub.student_course sc
where cid = '300003' and s.sid = sc.sid

或使用 natural join语句

create or replace view test2_09 as 
select sid,name,score
from pub.student natural join pub.student_course
where cid='300003';

2-10 找出选修了所有课程的学生的学号、姓名

create or replace view test6_06 as
select s.sid,s.name
from pub.student s
where not exists(
select *
from pub.course c
where not exists(
select * from pub.student_course sc
where sc.sid = s.sid and sc.cid = c.cid
))

关于NOT IN 和 NOT EXISTS

"NOT IN": "NOT IN"操作符用于在一个查询中判断某个值是否不在另一个查询结果的集合中。它通常用于子查询中,将子查询的结果作为集合,然后检查某个值是否不在该集合中。例如:

SELECT column_name
FROM table_name
WHERE column_name NOT IN (SELECT column_name FROM another_table)

注意,"NOT IN"操作符在使用时需要确保子查询的结果集不包含NULL值,否则可能导致不符合预期的结果。

"NOT EXISTS": "NOT EXISTS"操作符用于判断子查询的结果集是否为空,如果为空,则返回真(True)。它通常用于条件判断中,检查子查询是否返回任何行。例如:

SELECT column_name
FROM table_name t
WHERE NOT EXISTS (SELECT 1 FROM another_table WHERE another_table.column_name = t.column_name)

"NOT EXISTS"操作符在使用时不受NULL值的影响,它会根据子查询是否返回行来进行判断。如果子查询返回了至少一行,则条件判断为假(False),否则为真(True)。

总结:

  • "NOT IN"用于检查某个值是否不在另一个查询结果的集合中。
  • "NOT EXISTS"用于检查子查询是否为空,即子查询是否返回任何行。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值