您的位置:首页 > 数据库

简单的SQL语句学习资料 经典SQL语句(下)

2007-12-19 15:14 435 查看
相当于做笛卡儿积 

8.嵌套查询

  a.用关键字IN,如查询李山的同乡:

  select * from students

  where native in (select native from students where name=’ 李山’)

  b.使用关键字EXIST,比如,下面两句是等价的:

  select * from students

  where sno in (select sno from grades where cno=’B2’)

  select * from students where exists

  (select * from grades where

  grades.sno=students.sno AND cno=’B2’)

  9.关于排序order

  a.对于排序order,有两种方法:asc升序和desc降序

  b.对于排序order,可以按照查询条件中的某项排列,而且这项可用数字表示,如:

  select sno,count(*) ,avg(mark) from grades

  group by sno

  having avg(mark)>85

  order by 3

  10.其他

  a.对于有空格的识别名称,应该用"[]"括住。

  b.对于某列中没有数据的特定查询可以用null判断,如select sno,courseno from grades where mark IS NULL

  c.注意区分在嵌套查询中使用的any与all的区别,any相当于逻辑运算“||”而all则相当于逻辑运算“&&”

  d.注意在做否定意义的查询是小心进入陷阱:

  如,没有选修‘B2’课程的学生 :

  select students.*

  from students, grades

  where students.sno=grades.sno

  AND grades.cno <> ’B2’

  上面的查询方式是错误的,正确方式见下方:

  select * from students

  where not exists (select * from grades

  where grades.sno=students.sno AND cno='B2')

  11.关于有难度多重嵌套查询的解决思想:

  如,选修了全部课程的学生:

  select *

  from students

  where not exists ( select *

  from courses 

  where NOT EXISTS

  (select *

  from grades

  where sno=students.sno

  AND cno=courses.cno))

http://news.newhua.com/html/Deve_data/2007-3/9/073910391283149_62_2.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql null