数据库的查询

来源:互联网 发布:淘宝阿尔法软件 编辑:程序博客网 时间:2024/06/16 03:31


 

    数据库的查询

 

 

S

snum

sname

sex

age

dept

S01

张三

M

18

通工

S02

王敏

F

19

英语

S03

李华

M

18

英语

S04

杨雪

F

19

会计

 

 

C

 

 

cnum

cname

teacher

C01

c

ma

C02

C++

zha

C03

java

sun

 

Sc

 

 

snum

cnum

grade

S01

C01

90

S02

C02

72

S01

C02

59

S02

C03

75

S01

C03

91

S03

C01

80

S03

C02

76

 

1.单表查询


(1)查询ma老师所教的课程号和课程名。

Select cnumcname

From c

Where teacher=ma


(2)查询学号s01的学生所选课程和成绩。

Select cnumgrage

From sc

Where  snum=s01‘


(3)查询年龄介于18-20之间的学生信息。

Select  snumsnamesexagedept

From s

Where age>=18 and age<=20


(1)2)(3)为单表查询,比较简单,只需要找到要查询的内容在哪个表以及它的约束条件即可。

2.多表查询


1)查询年龄介于18-20之间的学生学号,姓名,课程号和成绩。

Select  s.snumsnamecnumgrade

Form  ssc

Where  s.snum=sc.snum and  age  between 18 and 20


(2)查询选修c01c02课程的学生学号,姓名,课程号和成绩。

Select  s.snum,  sname,  cnum,  grade 

From  s,  sc

Where  s.snum=sc.snum  and cnum=c01   or  cnum =c02



(3)查询同时选c01c02的学生的课程号,姓名,学号,成绩

Select cnumsnameS.snumgrade

From  ssc

Where  s.snum=sc.snum  and 

(selsect  s.snum ,  sname ,  x.cnum,  x.grade

From s,  sc.x,  sc.y

Where  s.snum=x.snum and x.num =y.num and x.cnum =c01 and  y.cnum=c02 )



 ****多表查询是要查询的内容在两个或两个以上的表里,这时要找出两个表之间的联系,比如s表和sc表里都有snum,查询条件要加一条s.snum=sc.snum.

注意:当同时查询c01c02要同时访问表两次,即相当于再复制一张表,sc.x,和sc.y,而且x.cnum='c01'且y.cnum='c02'

3.嵌套查询

(1)查询选修c++的学生信息。

Select  snumsnamesexagedept

From  s

Where   snum   in

select   snum   from  sc  where cnum  in

select  cnum   from  c    where cname=c++’))

 

 

 



0 0
原创粉丝点击