Student 学生表(学号,姓名,性别,年龄,组织部门)
Course 课程表(编号,课程名称)
Sc 选课表(学号,课程编号,成绩)1).首先写出建表语句
2).写一个SQL 语句,查询选修了’计算机原理’的学生学号和姓名答:1)SQL 语句如下:
select stu.sno, stu.sname from Student stu
where (select count(*) from sc where sno=stu.sno and cno =
(select cno from Course where cname='计算机原理')) != 0;执行select count(*) from sc where sno=stu.sno and cno =
(select cno from Course where cname='计算机原理')) 得到的肯定是一个数,然后 一个数!=0 那不是要么是FALSE 要么是TRUE吗,那能得到什么啊? 很不理解!=0这样写的意义
Course 课程表(编号,课程名称)
Sc 选课表(学号,课程编号,成绩)1).首先写出建表语句
2).写一个SQL 语句,查询选修了’计算机原理’的学生学号和姓名答:1)SQL 语句如下:
select stu.sno, stu.sname from Student stu
where (select count(*) from sc where sno=stu.sno and cno =
(select cno from Course where cname='计算机原理')) != 0;执行select count(*) from sc where sno=stu.sno and cno =
(select cno from Course where cname='计算机原理')) 得到的肯定是一个数,然后 一个数!=0 那不是要么是FALSE 要么是TRUE吗,那能得到什么啊? 很不理解!=0这样写的意义
(select cno from Course where cname='计算机原理')) !=0
select m.学号,m.姓名
from Student m, Sc n, Course t
where m.学号 = n.学号 and n.课程编号 = t.编号 and t.课程名称 = '计算机原理'
(select cno from Course where cname='计算机原理'))
这个语句是找出某一个学号的学生选修了 ‘计算机原理’ 这门课程的记录数,如果记录数为1,也就是!=0,则将这条记录输出。
楼主不要把oracle语句跟java或者其语言那样理解,
“= ”理解为 符合条件或者匹配
“<>” or “!=” 直接理解为 不符合条件或者不匹配不要非得拘泥于数据类型转换等
where (select count(*) from sc where sno=stu.sno and cno =
(select cno from Course where cname='计算机原理')) != 0相当于
select stu.sno, stu.sname from Student stu
where exists (select 1 from sc where sno=stu.sno and cno =
(select cno from Course where cname='计算机原理'))
from student
where sno=(select sno from sc where cno ='计算机原理')
cname = ‘计算机原理’