2023年6月21日发(作者:)

实验报告言SQL

2-关系数据库标准语 实验2:关系数据库标准语言SQL

一.实验目的

通过本实验使学生掌握SQL语言的数据定义功能、数据查询功能和数据操纵功能。

二.实验类型 验证型

三.实验学时 4学时

四.实验原理及知识点

1.SQL语言的数据查询功能

2.SQL语言的数据定义功能

3.SQL语言的数据操纵功能

五.实验环境

1.硬件设备要求:PC及其联网环境;

2.软件设备要求:Windows操作系统;MS SQL

Server数据库管理系统。

六.实验内容及步骤

在STUDENT数据库中,根据要求使用SQL语言完成下列操作,将SQL语句以.sql文件的形式保存在自己的目录下。

1.查询选修了课程的学生的学号。

2.查询学生学号和出生年份。

3.查询计算机系学生的学号、姓名。

4.查询年龄在20岁与22岁之间(包括20和22岁)的学生姓名和年龄。

5.查询学生姓名中含有“波”字的学生情况。

6.查询缺少学习成绩的学生学号和课程号。

7.查询选修C601课程的学生的学号和成绩,并按分数的降序排列。

8.求选修了课程的学生人数。

9.求课程C601的平均成绩。

10.求选修课程超过2门的学生学号。

11.查询参加学习的学生所学的课程号和总分。

12.查询选修高等数学课程且成绩在80分以上的学生的学号、姓名。

13.查询每一课程的间接先行课(即先行课的先行课)。

14.查询年龄低于所有工程系学生的学生姓 名、所在系、年龄。

15.找出刘建平老师所开全部课程的课程号、课程名。

16.找出全部课程的任课教师。

17.求学生1203所学课程的总分。

18.找出所有姓张的学生的姓名和籍贯。

19.找出至少一门课程的成绩在90分以上的女学生的姓名。

20.求每一年龄上人数超过2的男生的具体人数,并按年龄从小到大排序。

21.把学生的学号及他的平均成绩定义为一个视图GRADE_VIEW。

22.创建一个从student、course、study表中查出计算机系的学生及其成绩的视图computer_view,要求显示学生的学号sno、姓名name、课程号cno、课程名称cname、成绩grade。

23.在Student表中依据学生姓名创建索引name_index。

24.在Study表中依据sno和cno创建索引main_index。

25.将课程C603的任课老师改为“赵明”。

26.在Student表中插入两个学生记录:

'1201','吴华', '女',20,'成都','计算机系'

'1102','张军', '男',21,'上海','工程系'

27.删除年龄在21岁以上的学生记录。

--1

SELECT DISTINCT

Sno '学号'

FROM Student_course;

--2

SELECT

Sno '学号',

2015-Sage '出生年份'

FROM Student;

--3

SELECT

Sno '学号',

Sname '姓名'

FROM Student

WHERE Sdept = 'CS';

--4

SELECT

Sname '姓名',

Sage '年龄'

FROM Student

WHERE Sage >=20 and Sage <= 22;

--5

SELECT *

FROM Student

WHERE Sname LIKE '%波%';

--6

SELECT

Sno '学号',

Cno '课程号'

FROM Student_course

WHERE Grade is NULL;

--7

SELECT

Sno '学号',

Grade '成绩'

FROM Student_course

WHERE Cno = 'C601'

ORDER BY Grade DESC;

--8

SELECT

COUNT(DISTINCT Sno)

FROM Student_course;

--9

SELECT

AVG(Grade)

FROM Student_course WHERE Cno = 'C601';

--10

SELECT

Sno '学号'

FROM Student_course

GROUP BY Sno

HAVING COUNT(Cno) > 2;

--11

SELECT

Cno'课程号',

SUM(Grade)'总分'

FROM Student_course

GROUP BY Cno;

--12

SELECT

,

FROM Student,Student_course,Course

WHERE = Student_

and = Student_

and = '高等数学' and Student_ > 80;

--13

SELECT

,

FROM Course FIRST,Course SECOND

WHERE = ;

--14

SELECT

Sname,

Sdept,

Sage

FROM Student

WHERE Sage < ANY(SELECT Sage FROM Student WHERE Sdept = 'EG');

--15

SELECT

Cno '课程号',

Cname '课程名'

FROM Course

WHERE Cteacher = '刘剑平';

--16

SELECT DISTINCT

Cteacher '教师'

FROM Course

WHERE Cteacher is not NULL;

--17

SELECT

SUM(Grade)'总成绩'

FROM Student_course

GROUP BY Sno

HAVING Sno = '201215122';

--18

SELECT

Sname '姓名',

Snative '籍贯'

FROM Student

WHERE Sname like '张%';

--19

SELECT

Sname '姓名'

FROM Student

WHERE Ssex = '女' and Sno in(

SELECT Sno FROM Student_course

WHERE 90 <= Grade);

--20

SELECT

Sage '年龄',

COUNT(*) '男生人数'

FROM Student

WHERE Ssex = '男' and Sage in

(SELECT

Sage

FROM Student

GROUP BY Sage

HAVING COUNT(*) >= 2)

GROUP BY Sage

ORDER BY Sage;

--21

CREATE VIEW GRADE_VIEW

AS

SELECT

Sno,

AVG(Grade)Savg

FROM Student_course

GROUP BY Sno;

--22

CREATE VIEW COMPUTER_VIEW

AS

SELECT

,

,

,

,

Student_

FROM Student,Student_course,Course

WHERE = Student_

and Student_ = ;

--23

CREATE INDEX NAME_INDEX ON Student(Sname);

--24

CREATE INDEX MAIN_INDEX ON Student_course(Sno,Cno);

--25

UPDATE Course

SET Cteacher = '赵明'

WHERE Cno = 'C603';

--26

INSERT

INTO Student

VALUES

('1201','吴华','女',20,'成都','CS'), ('1102','张军','男',21,'上海','EG');

--27

DELETE

FROM Student

WHERE Sage > 21;

七.实验总结

通过这次实验学会了使用SQL查询语句、使用SQL语句插入元组,使用SQL语句删除元组,使用SQL语句创建索引和删除索引,但任然不是很熟练,有很多地方需要查阅书籍才能完成,还是需要多加练习。

2023年6月21日发(作者:)

实验报告言SQL

2-关系数据库标准语 实验2:关系数据库标准语言SQL

一.实验目的

通过本实验使学生掌握SQL语言的数据定义功能、数据查询功能和数据操纵功能。

二.实验类型 验证型

三.实验学时 4学时

四.实验原理及知识点

1.SQL语言的数据查询功能

2.SQL语言的数据定义功能

3.SQL语言的数据操纵功能

五.实验环境

1.硬件设备要求:PC及其联网环境;

2.软件设备要求:Windows操作系统;MS SQL

Server数据库管理系统。

六.实验内容及步骤

在STUDENT数据库中,根据要求使用SQL语言完成下列操作,将SQL语句以.sql文件的形式保存在自己的目录下。

1.查询选修了课程的学生的学号。

2.查询学生学号和出生年份。

3.查询计算机系学生的学号、姓名。

4.查询年龄在20岁与22岁之间(包括20和22岁)的学生姓名和年龄。

5.查询学生姓名中含有“波”字的学生情况。

6.查询缺少学习成绩的学生学号和课程号。

7.查询选修C601课程的学生的学号和成绩,并按分数的降序排列。

8.求选修了课程的学生人数。

9.求课程C601的平均成绩。

10.求选修课程超过2门的学生学号。

11.查询参加学习的学生所学的课程号和总分。

12.查询选修高等数学课程且成绩在80分以上的学生的学号、姓名。

13.查询每一课程的间接先行课(即先行课的先行课)。

14.查询年龄低于所有工程系学生的学生姓 名、所在系、年龄。

15.找出刘建平老师所开全部课程的课程号、课程名。

16.找出全部课程的任课教师。

17.求学生1203所学课程的总分。

18.找出所有姓张的学生的姓名和籍贯。

19.找出至少一门课程的成绩在90分以上的女学生的姓名。

20.求每一年龄上人数超过2的男生的具体人数,并按年龄从小到大排序。

21.把学生的学号及他的平均成绩定义为一个视图GRADE_VIEW。

22.创建一个从student、course、study表中查出计算机系的学生及其成绩的视图computer_view,要求显示学生的学号sno、姓名name、课程号cno、课程名称cname、成绩grade。

23.在Student表中依据学生姓名创建索引name_index。

24.在Study表中依据sno和cno创建索引main_index。

25.将课程C603的任课老师改为“赵明”。

26.在Student表中插入两个学生记录:

'1201','吴华', '女',20,'成都','计算机系'

'1102','张军', '男',21,'上海','工程系'

27.删除年龄在21岁以上的学生记录。

--1

SELECT DISTINCT

Sno '学号'

FROM Student_course;

--2

SELECT

Sno '学号',

2015-Sage '出生年份'

FROM Student;

--3

SELECT

Sno '学号',

Sname '姓名'

FROM Student

WHERE Sdept = 'CS';

--4

SELECT

Sname '姓名',

Sage '年龄'

FROM Student

WHERE Sage >=20 and Sage <= 22;

--5

SELECT *

FROM Student

WHERE Sname LIKE '%波%';

--6

SELECT

Sno '学号',

Cno '课程号'

FROM Student_course

WHERE Grade is NULL;

--7

SELECT

Sno '学号',

Grade '成绩'

FROM Student_course

WHERE Cno = 'C601'

ORDER BY Grade DESC;

--8

SELECT

COUNT(DISTINCT Sno)

FROM Student_course;

--9

SELECT

AVG(Grade)

FROM Student_course WHERE Cno = 'C601';

--10

SELECT

Sno '学号'

FROM Student_course

GROUP BY Sno

HAVING COUNT(Cno) > 2;

--11

SELECT

Cno'课程号',

SUM(Grade)'总分'

FROM Student_course

GROUP BY Cno;

--12

SELECT

,

FROM Student,Student_course,Course

WHERE = Student_

and = Student_

and = '高等数学' and Student_ > 80;

--13

SELECT

,

FROM Course FIRST,Course SECOND

WHERE = ;

--14

SELECT

Sname,

Sdept,

Sage

FROM Student

WHERE Sage < ANY(SELECT Sage FROM Student WHERE Sdept = 'EG');

--15

SELECT

Cno '课程号',

Cname '课程名'

FROM Course

WHERE Cteacher = '刘剑平';

--16

SELECT DISTINCT

Cteacher '教师'

FROM Course

WHERE Cteacher is not NULL;

--17

SELECT

SUM(Grade)'总成绩'

FROM Student_course

GROUP BY Sno

HAVING Sno = '201215122';

--18

SELECT

Sname '姓名',

Snative '籍贯'

FROM Student

WHERE Sname like '张%';

--19

SELECT

Sname '姓名'

FROM Student

WHERE Ssex = '女' and Sno in(

SELECT Sno FROM Student_course

WHERE 90 <= Grade);

--20

SELECT

Sage '年龄',

COUNT(*) '男生人数'

FROM Student

WHERE Ssex = '男' and Sage in

(SELECT

Sage

FROM Student

GROUP BY Sage

HAVING COUNT(*) >= 2)

GROUP BY Sage

ORDER BY Sage;

--21

CREATE VIEW GRADE_VIEW

AS

SELECT

Sno,

AVG(Grade)Savg

FROM Student_course

GROUP BY Sno;

--22

CREATE VIEW COMPUTER_VIEW

AS

SELECT

,

,

,

,

Student_

FROM Student,Student_course,Course

WHERE = Student_

and Student_ = ;

--23

CREATE INDEX NAME_INDEX ON Student(Sname);

--24

CREATE INDEX MAIN_INDEX ON Student_course(Sno,Cno);

--25

UPDATE Course

SET Cteacher = '赵明'

WHERE Cno = 'C603';

--26

INSERT

INTO Student

VALUES

('1201','吴华','女',20,'成都','CS'), ('1102','张军','男',21,'上海','EG');

--27

DELETE

FROM Student

WHERE Sage > 21;

七.实验总结

通过这次实验学会了使用SQL查询语句、使用SQL语句插入元组,使用SQL语句删除元组,使用SQL语句创建索引和删除索引,但任然不是很熟练,有很多地方需要查阅书籍才能完成,还是需要多加练习。