sql exsits 用法


--创建学生表
create table student(sno varchar2(20),sname varchar2(20));
--创建课程表
create table course(cno varchar2(20),cname varchar2(20));
--创建学生课程关联表
create table sc(sno varchar2(20),cno varchar2(20));

--初始化学生表数据
insert into student values('200215121','李勇');
insert into student values('200215122','刘晨');
insert into student values('200215123','王敏');
insert into student values('200215124','张立');

--初始化课程表数据
insert into course values('1','数据库');
insert into course values('2','数学');
insert into course values('3','信息系统');
insert into course values('4','操作系统');
insert into course values('5','数据结构');
insert into course values('6','数据处理');
insert into course values('7','PASCAL语言');

--初始化学生,课程表数据
insert into sc values('200215121','1');
insert into sc values('200215121','2');
insert into sc values('200215121','3');
insert into sc values('200215121','4');
insert into sc values('200215121','5');
insert into sc values('200215121','6');
insert into sc values('200215121','7');
insert into sc values('200215121','2');
insert into sc values('200215121','3');
insert into sc values('200215122','4');
insert into sc values('200215122','5');

--查询选修了课程号为1的学生姓名
--方法一:
select sno from student
where
exists
(select * from sc where student.sno = sno and cno = '1')
--方法二:
select student.sno
from student,sc
where student.sno = sc.sno and sc.cno = '1';

--方法三
select student.sname from student
where student.sno in
(select sc.sno from sc where sc.cno = '1');

--查询没有选修课程1的学生姓名
select sname from student
where not exists(select * from sc where student.sno = sc.sno and sc.cno = '1')

--查询选修全部课程的学今生姓名
--方法一:
select Sname
from Student
where not exists
(
select *
from Course
where not exists
(
select *
from SC
where Sno=Student.Sno AND
Cno=Course.Cno
) );
--方法二:
select student.sno
from student where student.sno in
(select sc.sno from sc group by sc.sno having count(*) = (select count(*) from course));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值