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这样写的意义

解决方案 »

  1.   

    (select count(*) from sc where sno=stu.sno and cno =
    (select cno from Course where cname='计算机原理')) !=0
      

  2.   

    --貌似应该这样.
    select m.学号,m.姓名
    from Student m, Sc n, Course t
    where m.学号 = n.学号 and n.课程编号 = t.编号 and t.课程名称 = '计算机原理'
      

  3.   

    (select count(*) from sc where sno=stu.sno and cno =
    (select cno from Course where cname='计算机原理')) 
    这个语句是找出某一个学号的学生选修了 ‘计算机原理’ 这门课程的记录数,如果记录数为1,也就是!=0,则将这条记录输出。
      

  4.   


    楼主不要把oracle语句跟java或者其语言那样理解,
    “= ”理解为 符合条件或者匹配
    “<>” or “!=” 直接理解为 不符合条件或者不匹配不要非得拘泥于数据类型转换等
      

  5.   

    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 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='计算机原理'))
      

  6.   

    select sno ,sname
    from   student
    where sno=(select sno from sc where  cno ='计算机原理')
      

  7.   

    不时cno = ‘计算机原理’  而是
        cname = ‘计算机原理’