1、设学生选课库中有3个数据表:
S(sno,sname,birthday,sdeptartment,tel,sex),
SC(sno,cno,grade), C(cno,cname,teacher,pcno)。
2、利用SQL Server Management Studio在数据库S_C的三个表中分别插入以下数据:学生表S:
sno |
sname |
birthday |
sdeptartment |
tel |
sex |
J0401 |
李军 |
1981-2-12 |
计算机系 |
0576-85123464 |
男 |
J0402 |
刘晨 |
1980-5-22 |
数学系 |
0576-85123466 |
女 |
J0403 |
王敏 |
1980-4-28 |
计算机系 |
0576-85123464 |
女 |
J0404 |
张立 |
1979-9-8 |
计算机系 |
0576-85123464 |
男 |
课程表C:
cno |
cname |
teacher |
pcno |
C01 |
数据库 |
GUO |
C03 |
C02 |
VB |
LIU |
C03 |
C03 |
计算机基础 |
LI |
|
C04 |
数学 |
WANG |
|
C05 |
数据结构 |
ZHANG |
C03 |
C06 |
C语言 |
CHEN |
C03 |
成绩表SC:
sno |
cno |
grade |
J0401 |
C05 |
92 |
J0401 |
C06 |
85 |
J0401 |
C02 |
88 |
J0401 |
C01 |
90 |
J0402 |
C04 |
80 |
J0403 |
C02 |
76 |
J0404 |
C03 |
88 |
3、在查询窗口下用SELECT语句完成下列查询:
1)列出“王敏”信息;
Sql语句:SELECT * FROM S WHERE sname='王敏';
查询结果描述:
2)学生表中显示学生的学号、姓名和年龄;
Sql语句:SELECT sno,sname,DATEDIFF(yy,birthday,getdate()) AS age FROM S;
查询结果描述:
3)显示所有男生信息;
Sql语句:SELECT * FROM S WHERE sex='男';
查询结果描述:
4)显示计算机系的所有学生,按生日降序排列;
Sql语句:SELECT * FROM S ORDER BY birthday DESC;
查询结果描述:
5)显示所有课程名称包含“数”的课程信息;
Sql语句:SELECT * FROM C WHERE cname LIKE'%数%';
查询结果描述:
6)显示pcno为“C03”的课程号和课程名称;
Sql语句:SELECT * FROM C WHERE pcno='C03';
查询结果描述:
7)显示课程号为“C02”这门课程的平均成绩;
Sql语句:SELECT AVG(grade)FROM SC WHERE cno='C02';
查询结果描述:
8)检索每个学生的出生年份;
Sql语句:SELECT * FROM S ;
查询结果描述:
9)在S中检索学生的姓名和出生年份,输出的列名分别为STUDENT_NAME和BIRTH_YEAR;
Sql语句:SELECT sname AS STUDENT_NAME, birthday AS BIRTH_YEAR FROM S ;
查询结果描述:
10)显示课程号为“C02”这门课程的最高成绩;
Sql语句:SELECT MAX(grade) FROM SC WHERE cno='C02';
查询结果描述:
11)求选修了各课程的学生人数;
Sql语句:SELECT cno,COUNT(sno) FROM SC GROUP BY cno ;
查询结果描述:
12)在SC中,求选修课程C01的学生的学号和得分,并将结果按分数降序排序;
Sql语句:SELECT sno,grade FROM SC WHERE cno='C01' ORDER BY grade DESC;
查询结果描述:
13)查找每个同学的学号及选修课程的平均成绩情况;
Sql语句:SELECT sno, AVG(grade) FROM SC GROUP BY sno;
查询结果描述:
14)列出学号为“J0401”学生的所有课程号和成绩,按成绩降序排列;
Sql语句:SELECT cno ,grade FROM SC WHERE sno='J0401'ORDER BY grade DESC;
查询结果描述:
15)列出成绩低于(包含)85分的所有学号和课程号;
Sql语句:SELECT sno,cno FROM SC WHERE grade<=85;
查询结果描述:
16)列出每个同学的最高成绩;
Sql语句:SELECT sno,MAX(grade) FROM SC GROUP BY sno;
查询结果描述:
17)列出每门课程的最低成绩;
Sql语句:SELECT sno,MIN(grade) FROM SC GROUP BY sno;
查询结果描述:
18)检索S中姓“王”同学记录;
Sql语句:SELECT * FROM S WHERE sname LIKE'王%';
查询结果描述:
19)列出5月份出生的所有学生;
Sql语句:SELECT * FROM S WHERE MONTH(birthday)='5';
查询结果描述:
20)统计被学生选修的课程门数;
Sql语句:SELECT COUNT(DISTINCT cno) FROM SC ;
查询结果描述:
21)求选修C04课程的学生的平均年龄;
Sql语句:SELECT AVG(DATEDIFF(yy,birthday,getdate())) AS AVERAGE FROM S,SC WHERE cno='C04' ;
查询结果描述:
22)求LIU老师所授课程的课程信息;
Sql语句:SELECT * FROM C WHERE teacher='LIU' ;
查询结果描述:
23)列出名字包含敏的女生;
Sql语句:SELECT * FROM S WHERE sname LIKE '%敏%' ;
查询结果描述:
24)求年龄最大的男生;
Sql语句:SELECT *
FROM S
WHERE SEX='男'AND DATEDIFF(yy,birthday,getdate()) >= ANY(SELECT MAX(DATEDIFF(yy,birthday,getdate()))
FROM S ) ;
查询结果描述:
获取日期的某个部分:
YEAR('2022-3-11 ') --年
MONTH('2022-3-11 ') --月
DAY('2022-3-11 ') --日
DATEPART ( datepart , date )
DATEPART(MM,'2022-3-11 ')
年份 yy、yyyy
季度 qq、q
月份 mm、m
每年的某一日 dy、y
日期 dd、d
星期 wk、ww
工作日 dw
小时 hh
分钟 mi、n
秒 ss、s
毫秒 ms