数据库day01

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 * FROMORDER 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_NAMEBIRTH_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 * FROMWHERE 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

猜你喜欢

转载自blog.csdn.net/m0_62321937/article/details/123452213