sql练习

表(一)Student (学生use)                         

属性名

数据类型

可否为空

含 义

Sno

varchar (20)

否

学号(主码)

Sname

varchar (20)

否

学生姓名

Ssex

varchar (20)

否

学生性别

Sbirthday

Datetime

可

学生出生年月

 Class

varchar (20)

可

学生所在班级

 

表(二)Course(课程表)

属性名

数据类型

可否为空

含 义

Cno

varchar (20)

否

课程号(主码)

Cname

varchar (20)

否

课程名称

Tno

varchar (20)

否

教工编号

表(三)Score(成绩表)

属性名

数据类型

可否为空

含 义

Id

Int

 

主键 自增

Sno

varchar (20)

否

学号

Cno

varchar (20)

否

课程号

Degree

Decimal(4,1)

 

可

成绩

//主码:Sno+ Cno

表(四)Teacher(教师表)

属性名

数据类型

可否为空

含 义

Tno

varchar (20)

否

教工编号(主码)

Tname

varchar (20)

否

教工姓名

Tsex

varchar (20)

否

教工性别

Tbirthday

datetime

可

教工出生年月

Prof

varchar (20)

可

职称

Depart

varchar (20)

否

教工所在部门

表1-2数据库中的数据

表(一)Student

Sno

Sname

Ssex

Sbirthday

class

108

曾华

男

1977-09-01

95033

105

匡明

男

1975-10-02

95031

107

王丽

女

1976-01-23

95033

101

李军

男

1976-02-20

95033

109

王芳

女

1975-02-10

95031

103

陆君

男

1974-06-03

95031

 

表(二)Course

Cno

Cname

Tno

3-105

计算机导论

825

3-245

操作系统

804

6-166

数字电路

856

9-888

高等数学

831

表(三)Score

Sno

Cno

Degree

103

3-245

86

105

3-245

75

109

3-245

68

103

3-105

92

105

3-105

88

109

3-105

76

101

3-105

64

107

3-105

91

108

3-105

78

101

6-166

85

107

6-166

79

108

6-166

81

表(四)Teacher

 

Tno

Tname

Tsex

Tbirthday

Prof

Depart

804

李诚

男

1958-12-02

副教授

计算机系

856

张旭

男

1969-03-12

讲师

电子工程系

825

王萍

女

1972-05-05

助教

计算机系

831

刘冰

女

1977-08-14

助教

电子工程系

1、查询Student表中的所有记录的Sname、Ssex和Class列

select sname,ssex,class from xuesheng;

2、查询教师所有的单位即不重复的Depart列

select distinct depart from xuesheng;

3、查询Student表的所有记录

select * from xuesheng;

4、查询Score表中成绩在60到80之间的所有记录

select * from score where degree between '60' and '80';

5、查询Score表中成绩为85,86或88的记录

select * from score where degree in ('85','86','88');

6、查询Student表中“95031”班或性别为“女”的同学记录

select * from xuesheng where class='95031' or ssex='女';

 7、以Class降序查询Student表的所有记录

 select * from xuesheng order by class desc;

 8、以Cno升序、Degree降序查询Score表的所有记录

 select * from score order by cno,degree desc;

 9、查询“95031”班的学生人数

select count(*) from xuesheng group by class having class='95031';

10、查询Score表中的最高分的学生学号和课程号

select sno,cno from score where degree in (select max(degree) from score);

11、查询每门课平均成绩

select  avg(degree) from (select * from score where cno='3-105');

12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数

 

13、查询分数大于70,小于90的Sno列

select sno from score where degree between 70 and 90;

14、查询所有学生的Sname、Cno和Degree列

select xuesheng.sname,score.cno,score.degree from xuesheng join score;

15、查询所有学生的Sno、Cname和Degree列

select score.sno,course.cname,score.degree from score join course;

16、查询所有学生的Sname、Cname和Degree列

select xuesheng.sname,course.cname,score.degree from xuesheng,course,score where score.cno=course.cno and xuesheng.sno=score.sno;

17、 查询“95033”班学生的平均分

select avg(degree) from score where sno in (select sno from xuesheng where class='95033');

20、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。

select * from xuesheng,score where xuesheng.sno=score.sno and score.degree>(select degree from score where cno='3-105' and sno='109');

31、 查询所有教师和同学的name、sex和birthday.

Select sname as name,ssex as sex,sbirthday as birthday from xuesheng union

Select tname as name,tsex as sex,tbirthday as birthday from teacher;

32、查询所有“女”教师和“女”同学的name、sex和birthday.

select sname as name,ssex as sex,sbirthday as birthday from xuesheng where ssex='女’'union

 

select tname as name,tsex as sex,tbirthday as birthday from teacher where tsex='女';

36、查询至少有2名男生的班号。

select class from xuesheng where ssex='男' group by class having coint(*)>1;

37、查询Student表中不姓“王”的同学记录。

select * from xuesheng where sname not like'王%';

38、查询Student表中每个学生的姓名和年龄。

Select sname,year(getdate()-year(birthday)) from xuesheng;

39、查询Student表中最大和最小的Sbirthday日期值。

Select max(sbirthday) as max,min(sbirthday) as min from xuesheng;

40、以班号和年龄从大到小的顺序查询Student表中的全部记录。

Select * , year(getdate())-year(sbirthday) as age from xuesheng order by class desc,age desc;

41、查询“男”教师及其所上的课程。

select Tname,Cname from Teacher,Course where Tsex='男' and Teacher.Tno=Course.Tno;

 

42、查询最高分同学的Sno、Cno和Degree列。

Select * from score where degree=(select max(degree) from score);

43、查询和“李军”同性别的所有同学的Sname.

Select ssex from xuesheng where sname=’李军’;

 

Select sname from xuesheng where ssex=();

 

 

 

 

 

 

 

 

 

 

 

表(一)Student (学生use)                         

属性名

数据类型

可否为空

含 义

Sno

varchar (20)

否

学号(主码)

Sname

varchar (20)

否

学生姓名

Ssex

varchar (20)

否

学生性别

Sbirthday

Datetime

可

学生出生年月

 Class

varchar (20)

可

学生所在班级

 

表(二)Course(课程表)

属性名

数据类型

可否为空

含 义

Cno

varchar (20)

否

课程号(主码)

Cname

varchar (20)

否

课程名称

Tno

varchar (20)

否

教工编号

表(三)Score(成绩表)

属性名

数据类型

可否为空

含 义

Id

Int

 

主键 自增

Sno

varchar (20)

否

学号

Cno

varchar (20)

否

课程号

Degree

Decimal(4,1)

 

可

成绩

//主码:Sno+ Cno

表(四)Teacher(教师表)

属性名

数据类型

可否为空

含 义

Tno

varchar (20)

否

教工编号(主码)

Tname

varchar (20)

否

教工姓名

Tsex

varchar (20)

否

教工性别

Tbirthday

datetime

可

教工出生年月

Prof

varchar (20)

可

职称

Depart

varchar (20)

否

教工所在部门

表1-2数据库中的数据

表(一)Student

Sno

Sname

Ssex

Sbirthday

class

108

曾华

男

1977-09-01

95033

105

匡明

男

1975-10-02

95031

107

王丽

女

1976-01-23

95033

101

李军

男

1976-02-20

95033

109

王芳

女

1975-02-10

95031

103

陆君

男

1974-06-03

95031

 

表(二)Course

Cno

Cname

Tno

3-105

计算机导论

825

3-245

操作系统

804

6-166

数字电路

856

9-888

高等数学

831

表(三)Score

Sno

Cno

Degree

103

3-245

86

105

3-245

75

109

3-245

68

103

3-105

92

105

3-105

88

109

3-105

76

101

3-105

64

107

3-105

91

108

3-105

78

101

6-166

85

107

6-166

79

108

6-166

81

表(四)Teacher

Tno

Tname

Tsex

Tbirthday

Prof

Depart

804

李诚

男

1958-12-02

副教授

计算机系

856

张旭

男

1969-03-12

讲师

电子工程系

825

王萍

女

1972-05-05

助教

计算机系

831

刘冰

女

1977-08-14

助教

电子工程系

posted @ 2018-04-25 09:40  volition丶L  阅读(248)  评论(0)    收藏  举报