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