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

'.

.

《数据库原理及应用》实验报告

SQL语句部分

总 成 绩 :

.

实验一 熟悉SQL SERVER,数据定义实验

实验一成绩:

一、实验目的

1、 利用查询分析器创建数据库

2、 利用查询分析器用SQL语言定义基本表、索引并进行相关操作

二、实验步骤及内容

在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。

1.创建学生课程数据库

2.创建学生关系表S :

学号 姓名

Sno

课程号

Cno

学号

Sno

6、在表S上增加“出生日期”属性列。

7、删除表S的“年龄” 属性列。

8、删除S姓名列的唯一值约束。

9、修改SC表成绩属性列为精确数字型。

10、在表S上,按“Sno” 属性列的唯一值方式建立索引。

11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。

12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。

三、实验结果:

1.创建学生课程数据库

create database Studend;

性别

Ssex

先行课

Cpno

课程号

Cno

年龄

Sage

学分

ccredit

所在系

sdept Sname

课程名

Cname

3.创建课程关系表C :

4.创建课程关系表SC :

成绩

grade

5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。

2.创建学生关系表S :

学号 姓名

Sno

create table S

(

'.

性别

Ssex

年龄

Sage

所在系

sdept Sname

Sno CHAR(9) PRIMARY KEY,

Sname CHAR(20) UNIQUE,

Ssex CHAR(2),

Sage smallint,

Sdept char(20), .

);

3.创建课程关系表C :

课程号

Cno

create table C

(

Cno char(4) primary key,

Cname CHAR(40),

Cpno char(4),

Ccredit SMALLINT,

);

课程名

Cname

先行课

Cpno

学分

ccredit

4.创建课程关系表SC :

学号

Sno

create table SC

(

Sno char(9),

Cno char(4),

Grade smallint,

);

课程号

Cno

成绩

grade

5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。

6、在表S上增加“出生日期”属性列。

alter table S add Sbirthday datetime;

7、删除表S的“年龄” 属性列。

alter table S drop column Sage;

'. .

8、删除S姓名列的唯一值约束。

alter table S drop UQ__S__7D78A4E7;

9、修改SC表成绩属性列为精确数字型。

alter table SC alter column Grade int;

10、在表S上,按“Sno” 属性列的唯一值方式建立索引。

create unique index Stusno on S(Sno);

11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。

drop table SC;

12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。

'. .

实验二 数据更新实验

实验二成绩:

一、实验目的

1、 熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用

2、 加深理解表的定义对数据更新的作用

二、实验步骤及内容

(一)利用查询分析器在表中插入数据

打开在实验一中建立的“学生课程”数据库;

在“SCDB”数据库中的student、course、sc表中插入数据;

student表的内容:

SNO SNAME SSEX SAGE SDEPT

95001 李勇 男 20 CS

95002 刘晨 女 19 IS

95003 王敏 女 18 MA

course表的内容

CNO CNAME CPNO CREDIT

1 数据库 5 4

2 数学 NULL 2

3 信息系统 1 4

4 操作系统 NULL 3

5 数据处理 NULL 2

sc表的内容

SNO CNO GRADE

95001 1 92

95001 2 65

95001 3 88

95002 2 90

95002 3 80

(二)修改表中的数据

在插入数据后的三张表S、C、SC中进行相关的更新操作:

1、将student表中‘李勇’的名字改为‘李明’;

2、将student表中‘王敏’的年龄改为20岁;

3、将所有学生的年龄增加1岁;

4、修改学生的学号‘95002’为‘95005’,注意表之间的关系,保持一致性;

5、把选修了“2”号课程,且成绩低于70分的成绩提高5%;

6、将“CS”系全体学生的成绩置零;

(三)删除表中的数据

1、把选修了“2”号课程,且成绩低于70分的学生的成绩删除掉;

2、删除学号为“95003”的相关信息;

3、删除"IS"系选修了"2"号课程的选课记录;

'. .

4、删除“CS”系的全体学生的选课记录;

5、删除整张表的数据,注意表之间的关系,保持一致性。

三、实验结果:

(一)利用查询分析器在表中插入数据

打开在实验一中建立的“学生课程”数据库;

在“SCDB”数据库中的student、course、sc表中插入数据;

student表的内容:

SNO SNAME SSEX SAGE SDEPT

95001 李勇 男 20 CS

95002 刘晨 女 19 IS

95003 王敏 女 18 MA

course表的内容

CNO CNAME CPNO CREDIT

1 数据库 5 4

2 数学 NULL 2

3 信息系统 1 4

4 操作系统 NULL 3

5 数据处理 NULL 2

sc表的内容

SNO CNO GRADE

95001 1 92

95001 2 65

95001 3 88

95002 2 90

95002 3 80

insert

into S(Sno,Sname,Ssex,Sage,Sdept)

values('95001','李勇','男',20,'CS');

insert

into S(Sno,Sname,Ssex,Sage,Sdept)

values('95002','刘晨','女',19,'IS');

insert

into S(Sno,Sname,Ssex,Sage,Sdept)

values('95003','王敏','男',20,'CS');

select *

from S;

insert

into C(Cno,Cname,Cpno,Ccredit)

values('1','数据库','5',4);

insert

'. .

into C(Cno,Cname,Cpno,Ccredit)

values('2','数学',NULL,2);

insert

into C(Cno,Cname,Cpno,Ccredit)

values('3','信息系统','1',4);

insert

into C(Cno,Cname,Cpno,Ccredit)

values('4','操作系统',NULL,3);

insert

into C(Cno,Cname,Cpno,Ccredit)

values('5','数据处理',NULL,2);

insert

into SC(Sno,Cno,Grade)

values('95001','1',92);

insert

into SC(Sno,Cno,Grade)

values('95001','2',65);

insert

into SC(Sno,Cno,Grade)

values('95001','3',88);

insert

into SC(Sno,Cno,Grade)

values('95002','2',90);

insert

into SC(Sno,Cno,Grade)

values('95002','3',80);

'. .

(二)修改表中的数据

在插入数据后的三张表S、C、SC中进行相关的更新操作:

1、 将student表中‘李勇’的名字改为‘李明’;

update S

set Sname='李明'

where Sno='95001';

2、 将student表中‘王敏’的年龄改为20岁;

update S

set Sage=20

where Sname='王敏';

3、 将所有学生的年龄增加1岁;

update S

set Sage=Sage+1;

4、 修改学生的学号‘95002’为‘95005’,注意表之间的关系,保持一致性;

update S

set Sno='95005'

where Sno='95002';

'. .

5、 把选修了“2”号课程,且成绩低于70分的成绩提高5%;

update SC

set Grade=Grade*1.05

where Cno='2' and Grade<70;

6、 将“CS”系全体学生的成绩置零;

update SC

set Grade=0

where 'CS'=(select Sdept from S where =);

(三)删除表中的数据

1、把选修了“2”号课程,且成绩低于70分的学生的成绩删除掉;

delete from SC

where Cno='2' and Grade<70;

2、删除学号为“95003”的相关信息;

delete from S

where Sno='95003';

3、删除"IS"系选修了"2"号课程的选课记录;

delete from SC

where Cno='2'and Sno in (select Sno from S where Sdept='IS');

4、删除“CS”系的全体学生的选课记录;

delete from SC

'. .

where 'CS'=(select Sdept from S where =);

5、删除整张表的数据,注意表之间的关系,保持一致性。

delete from SC;

实验三 数据查询实验

实验三成绩:

一、实验目的

熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;

加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算)

二、实验方法及步骤

1.在表student,course,sc上进行简单查询;

2.在表student,course,sc上进行连接查询;

3.在表student,course,sc上进行嵌套查询;

4.使用聚合函数的查询;

5.对数据的分组查询;

6.对数据的排序查询。

三、实验内容

在表student,course,sc上完成以下查询:

1、查询学生的基本信息;

2、查询“CS”系学生的基本信息;

3、查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;

4、找出最大年龄;

5、找出“CS”系年龄最大的学生,显示其学号、姓名;

6、统计“CS”系学生的人数;

7、统计各系学生的人数,结果按升序排列;

8、按系统计各系学生的平均年龄,结果按降序排列;

9、查询每门课程的课程名;

10、统计无先修课的课程的学分总数;

11、查询选修了“1”或“2”号课程的学生学号和姓名;

12、查询选修了“1”和“2”号课程的学生学号和姓名;

13、查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;

14、查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);

15、查询没有选修课程的学生的基本信息;

16、查询选修了3门以上课程的学生学号;

17、查询选修课程成绩至少有一门在80分以上的学生学号;

18、查询选修课程平均成绩在80分以上的学生学号;

19、(选做)统计每位学生选修课程的门数、学分及其平均成绩;

20、(选做)找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列。

四、实验结果:

'. .

1、查询学生的基本信息;

select *from S;

2、查询“CS”系学生的基本信息;

select *

from S

where Sdept='CS';

3、查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;

select Sno,Sname

from S

where sdept='CS' AND Sage not between 19 and 21;

4、找出最大年龄;

select max(Sage)

from S;

5、找出“CS”系年龄最大的学生,显示其学号、姓名;

select Sno,Sname

from S

where Sage=

(select max(Sage)

from S

where Sdept='CS');

7、 统计“CS”系学生的人数;

SELECT Sdept,count(*)

from S

where Sdept='CS'

GROUP BY Sdept;

8、 统计各系学生的人数,结果按升序排列;

SELECT Sdept,COUNT(*)

FROM S

group by sdept;

9、 按系统计各系学生的平均年龄,结果按降序排列;

select Sdept,avg(Sage)

from S

group by Sdept

order by avg(Sage) desc;

'. .

10、

from C

查询每门课程的课程名;

select Cname

group by Cname;

10、统计无先修课的课程的学分总数;

select sum(Ccredit)

from C

where Cpno is null;

11、查询选修了“1”或“2”号课程的学生学号和姓名;

select ,Sname

from S,SC

WHERE = AND (Cno='1' or Cno='2');

12、查询选修了“1”和“2”号课程的学生学号和姓名;

select ,Sname

from SC,S

where Cno='1' AND = and IN

(select Sno

from SC

where Cno='2');

13、查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;

select ,Sname,Grade

from S,SC,C

where = and = and Cname='数据库' and Grade<60;

14、查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);

select ,Sname,,Cname,Grade

from SC,C,S

WHERE = and =;

15、查询没有选修课程的学生的基本信息;

select *

'. .

from S

WHERE not exists

(select *

from SC

WHERE =Sno);

16、查询选修了3门以上课程的学生学号;

select Sno

from SC

group by Sno

having count(*)>3;

17、查询选修课程成绩至少有一门在80分以上的学生学号;

select distinct

from S,SC

WHERE = and Grade>80;

18、查询选修课程平均成绩在80分以上的学生学号;

select distinct

from S,SC

where = and in

(select Sno

from SC

GROUP BY Sno

having avg(Grade)>80);

19、(选做)SC

20、(选做)找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列。

实验四 视图的定义、使用实验

实验四成绩:

一、实验目的

熟悉和掌握对数据表中视图的定义操作和SQL命令的使用;

熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;

熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系;

学习灵活熟练的进行视图的操作,认识视图的作用;

'. .

二、实验方法及步骤

1.视图的定义

2.视图的查询

3.视图的修改

三、实验内容:

以students,courses,sc表为基础完成以下视图定义(使用SQL和企业管理器两种方法)及使用

1.定义“IS”系学生基本情况视图V_IS 并查询结果;

2.将students,courses,sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果;

3.将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果;

4.定义一个反映学生出生年份的视图V_YEAR并查询结果;

5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果;

6.建立视图V_AVG平均成绩为90分以上的学生学号;

7.通过视图V_IS,分别将学号为“95001”和“95004”的学生姓名更改为“S0001”,”S0004”并查询结果;

8.通过视图V_IS,新增加一个学生记录 (’S0012’,’YAN XI’,19,’IS’),并查询结果;

9.通过视图V_IS,新增加一个学生记录 (’S0013’,’YAN XI’,19,’MA’),并查询结果;

10.通过视图V_IS,删除学号为“S0012”和“95003”的学生信息,并查询结果;

四、实验结果

以students,courses,sc表为基础完成以下视图定义(使用SQL和企业管理器两种方法)及使用

1.定义“IS”系学生基本情况视图V_IS 并查询结果;

create view V_IS

as

select *

from S

where Sdept='IS';

2.将students,courses,sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果;

create view V_S_C_G

as

select ,Sname,,Cname,Grade

from S,SC,C

where = and =;

3.将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果;

create view V_NUM_AVG(Sdept,Sdept_count,Sage_avg)

as

select Sdept,count(Sdept),avg(Sage)

from S

group by Sdept;

4.定义一个反映学生出生年份的视图V_YEAR并查询结果;

create view V_YEAR(Sname,Sbirthday)

as

select Sname,2013-Sage

from S;

'. .

5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果;

create view V_AVG_S_G(Sno,Cno_count,Grade_avg)

as

select Sno,count(Cno),avg(Grade)

from SC

group by Sno;

6.建立视图V_AVG平均成绩为90分以上的学生学号;

create view V_AVG(Grade_over90_Sno)

as

select

from S,SC

where = and in

(select Sno

from SC

group by Sno

having avg(Grade)>90);

7.通过视图V_IS,分别将学号为“95001”和“95004”的学生姓名更改为“S0001”,”S0004”并查询结果;

update V_IS

set Sname='王明'

where Sno='95001';

update V_IS

set Sname='王强'

where Sno='95002';

8.通过视图V_IS,新增加一个学生记录 (’S0012’,’YAN XI’,19,’IS’),并查询结果;

insert

into V_IS(Sno,Sname,Sage,Sdept)

VALUES ('95005','宋明','19','IS');

9.通过视图V_IS,新增加一个学生记录 (’S0013’,’YAN XI’,19,’MA’),并查询结果;

insert

into V_IS(Sno,Sname,Sage,Sdept)

VALUES ('95006','王芳','19','MA');

'. .

10.通过视图V_IS,删除学号为“S0012”和“95003”的学生信息,并查询结果;

delete

from V_IS

where Sno='95005' or Sno='95006';

'.

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

'.

.

《数据库原理及应用》实验报告

SQL语句部分

总 成 绩 :

.

实验一 熟悉SQL SERVER,数据定义实验

实验一成绩:

一、实验目的

1、 利用查询分析器创建数据库

2、 利用查询分析器用SQL语言定义基本表、索引并进行相关操作

二、实验步骤及内容

在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。

1.创建学生课程数据库

2.创建学生关系表S :

学号 姓名

Sno

课程号

Cno

学号

Sno

6、在表S上增加“出生日期”属性列。

7、删除表S的“年龄” 属性列。

8、删除S姓名列的唯一值约束。

9、修改SC表成绩属性列为精确数字型。

10、在表S上,按“Sno” 属性列的唯一值方式建立索引。

11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。

12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。

三、实验结果:

1.创建学生课程数据库

create database Studend;

性别

Ssex

先行课

Cpno

课程号

Cno

年龄

Sage

学分

ccredit

所在系

sdept Sname

课程名

Cname

3.创建课程关系表C :

4.创建课程关系表SC :

成绩

grade

5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。

2.创建学生关系表S :

学号 姓名

Sno

create table S

(

'.

性别

Ssex

年龄

Sage

所在系

sdept Sname

Sno CHAR(9) PRIMARY KEY,

Sname CHAR(20) UNIQUE,

Ssex CHAR(2),

Sage smallint,

Sdept char(20), .

);

3.创建课程关系表C :

课程号

Cno

create table C

(

Cno char(4) primary key,

Cname CHAR(40),

Cpno char(4),

Ccredit SMALLINT,

);

课程名

Cname

先行课

Cpno

学分

ccredit

4.创建课程关系表SC :

学号

Sno

create table SC

(

Sno char(9),

Cno char(4),

Grade smallint,

);

课程号

Cno

成绩

grade

5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。

6、在表S上增加“出生日期”属性列。

alter table S add Sbirthday datetime;

7、删除表S的“年龄” 属性列。

alter table S drop column Sage;

'. .

8、删除S姓名列的唯一值约束。

alter table S drop UQ__S__7D78A4E7;

9、修改SC表成绩属性列为精确数字型。

alter table SC alter column Grade int;

10、在表S上,按“Sno” 属性列的唯一值方式建立索引。

create unique index Stusno on S(Sno);

11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。

drop table SC;

12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。

'. .

实验二 数据更新实验

实验二成绩:

一、实验目的

1、 熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用

2、 加深理解表的定义对数据更新的作用

二、实验步骤及内容

(一)利用查询分析器在表中插入数据

打开在实验一中建立的“学生课程”数据库;

在“SCDB”数据库中的student、course、sc表中插入数据;

student表的内容:

SNO SNAME SSEX SAGE SDEPT

95001 李勇 男 20 CS

95002 刘晨 女 19 IS

95003 王敏 女 18 MA

course表的内容

CNO CNAME CPNO CREDIT

1 数据库 5 4

2 数学 NULL 2

3 信息系统 1 4

4 操作系统 NULL 3

5 数据处理 NULL 2

sc表的内容

SNO CNO GRADE

95001 1 92

95001 2 65

95001 3 88

95002 2 90

95002 3 80

(二)修改表中的数据

在插入数据后的三张表S、C、SC中进行相关的更新操作:

1、将student表中‘李勇’的名字改为‘李明’;

2、将student表中‘王敏’的年龄改为20岁;

3、将所有学生的年龄增加1岁;

4、修改学生的学号‘95002’为‘95005’,注意表之间的关系,保持一致性;

5、把选修了“2”号课程,且成绩低于70分的成绩提高5%;

6、将“CS”系全体学生的成绩置零;

(三)删除表中的数据

1、把选修了“2”号课程,且成绩低于70分的学生的成绩删除掉;

2、删除学号为“95003”的相关信息;

3、删除"IS"系选修了"2"号课程的选课记录;

'. .

4、删除“CS”系的全体学生的选课记录;

5、删除整张表的数据,注意表之间的关系,保持一致性。

三、实验结果:

(一)利用查询分析器在表中插入数据

打开在实验一中建立的“学生课程”数据库;

在“SCDB”数据库中的student、course、sc表中插入数据;

student表的内容:

SNO SNAME SSEX SAGE SDEPT

95001 李勇 男 20 CS

95002 刘晨 女 19 IS

95003 王敏 女 18 MA

course表的内容

CNO CNAME CPNO CREDIT

1 数据库 5 4

2 数学 NULL 2

3 信息系统 1 4

4 操作系统 NULL 3

5 数据处理 NULL 2

sc表的内容

SNO CNO GRADE

95001 1 92

95001 2 65

95001 3 88

95002 2 90

95002 3 80

insert

into S(Sno,Sname,Ssex,Sage,Sdept)

values('95001','李勇','男',20,'CS');

insert

into S(Sno,Sname,Ssex,Sage,Sdept)

values('95002','刘晨','女',19,'IS');

insert

into S(Sno,Sname,Ssex,Sage,Sdept)

values('95003','王敏','男',20,'CS');

select *

from S;

insert

into C(Cno,Cname,Cpno,Ccredit)

values('1','数据库','5',4);

insert

'. .

into C(Cno,Cname,Cpno,Ccredit)

values('2','数学',NULL,2);

insert

into C(Cno,Cname,Cpno,Ccredit)

values('3','信息系统','1',4);

insert

into C(Cno,Cname,Cpno,Ccredit)

values('4','操作系统',NULL,3);

insert

into C(Cno,Cname,Cpno,Ccredit)

values('5','数据处理',NULL,2);

insert

into SC(Sno,Cno,Grade)

values('95001','1',92);

insert

into SC(Sno,Cno,Grade)

values('95001','2',65);

insert

into SC(Sno,Cno,Grade)

values('95001','3',88);

insert

into SC(Sno,Cno,Grade)

values('95002','2',90);

insert

into SC(Sno,Cno,Grade)

values('95002','3',80);

'. .

(二)修改表中的数据

在插入数据后的三张表S、C、SC中进行相关的更新操作:

1、 将student表中‘李勇’的名字改为‘李明’;

update S

set Sname='李明'

where Sno='95001';

2、 将student表中‘王敏’的年龄改为20岁;

update S

set Sage=20

where Sname='王敏';

3、 将所有学生的年龄增加1岁;

update S

set Sage=Sage+1;

4、 修改学生的学号‘95002’为‘95005’,注意表之间的关系,保持一致性;

update S

set Sno='95005'

where Sno='95002';

'. .

5、 把选修了“2”号课程,且成绩低于70分的成绩提高5%;

update SC

set Grade=Grade*1.05

where Cno='2' and Grade<70;

6、 将“CS”系全体学生的成绩置零;

update SC

set Grade=0

where 'CS'=(select Sdept from S where =);

(三)删除表中的数据

1、把选修了“2”号课程,且成绩低于70分的学生的成绩删除掉;

delete from SC

where Cno='2' and Grade<70;

2、删除学号为“95003”的相关信息;

delete from S

where Sno='95003';

3、删除"IS"系选修了"2"号课程的选课记录;

delete from SC

where Cno='2'and Sno in (select Sno from S where Sdept='IS');

4、删除“CS”系的全体学生的选课记录;

delete from SC

'. .

where 'CS'=(select Sdept from S where =);

5、删除整张表的数据,注意表之间的关系,保持一致性。

delete from SC;

实验三 数据查询实验

实验三成绩:

一、实验目的

熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;

加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算)

二、实验方法及步骤

1.在表student,course,sc上进行简单查询;

2.在表student,course,sc上进行连接查询;

3.在表student,course,sc上进行嵌套查询;

4.使用聚合函数的查询;

5.对数据的分组查询;

6.对数据的排序查询。

三、实验内容

在表student,course,sc上完成以下查询:

1、查询学生的基本信息;

2、查询“CS”系学生的基本信息;

3、查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;

4、找出最大年龄;

5、找出“CS”系年龄最大的学生,显示其学号、姓名;

6、统计“CS”系学生的人数;

7、统计各系学生的人数,结果按升序排列;

8、按系统计各系学生的平均年龄,结果按降序排列;

9、查询每门课程的课程名;

10、统计无先修课的课程的学分总数;

11、查询选修了“1”或“2”号课程的学生学号和姓名;

12、查询选修了“1”和“2”号课程的学生学号和姓名;

13、查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;

14、查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);

15、查询没有选修课程的学生的基本信息;

16、查询选修了3门以上课程的学生学号;

17、查询选修课程成绩至少有一门在80分以上的学生学号;

18、查询选修课程平均成绩在80分以上的学生学号;

19、(选做)统计每位学生选修课程的门数、学分及其平均成绩;

20、(选做)找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列。

四、实验结果:

'. .

1、查询学生的基本信息;

select *from S;

2、查询“CS”系学生的基本信息;

select *

from S

where Sdept='CS';

3、查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;

select Sno,Sname

from S

where sdept='CS' AND Sage not between 19 and 21;

4、找出最大年龄;

select max(Sage)

from S;

5、找出“CS”系年龄最大的学生,显示其学号、姓名;

select Sno,Sname

from S

where Sage=

(select max(Sage)

from S

where Sdept='CS');

7、 统计“CS”系学生的人数;

SELECT Sdept,count(*)

from S

where Sdept='CS'

GROUP BY Sdept;

8、 统计各系学生的人数,结果按升序排列;

SELECT Sdept,COUNT(*)

FROM S

group by sdept;

9、 按系统计各系学生的平均年龄,结果按降序排列;

select Sdept,avg(Sage)

from S

group by Sdept

order by avg(Sage) desc;

'. .

10、

from C

查询每门课程的课程名;

select Cname

group by Cname;

10、统计无先修课的课程的学分总数;

select sum(Ccredit)

from C

where Cpno is null;

11、查询选修了“1”或“2”号课程的学生学号和姓名;

select ,Sname

from S,SC

WHERE = AND (Cno='1' or Cno='2');

12、查询选修了“1”和“2”号课程的学生学号和姓名;

select ,Sname

from SC,S

where Cno='1' AND = and IN

(select Sno

from SC

where Cno='2');

13、查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;

select ,Sname,Grade

from S,SC,C

where = and = and Cname='数据库' and Grade<60;

14、查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);

select ,Sname,,Cname,Grade

from SC,C,S

WHERE = and =;

15、查询没有选修课程的学生的基本信息;

select *

'. .

from S

WHERE not exists

(select *

from SC

WHERE =Sno);

16、查询选修了3门以上课程的学生学号;

select Sno

from SC

group by Sno

having count(*)>3;

17、查询选修课程成绩至少有一门在80分以上的学生学号;

select distinct

from S,SC

WHERE = and Grade>80;

18、查询选修课程平均成绩在80分以上的学生学号;

select distinct

from S,SC

where = and in

(select Sno

from SC

GROUP BY Sno

having avg(Grade)>80);

19、(选做)SC

20、(选做)找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列。

实验四 视图的定义、使用实验

实验四成绩:

一、实验目的

熟悉和掌握对数据表中视图的定义操作和SQL命令的使用;

熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;

熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系;

学习灵活熟练的进行视图的操作,认识视图的作用;

'. .

二、实验方法及步骤

1.视图的定义

2.视图的查询

3.视图的修改

三、实验内容:

以students,courses,sc表为基础完成以下视图定义(使用SQL和企业管理器两种方法)及使用

1.定义“IS”系学生基本情况视图V_IS 并查询结果;

2.将students,courses,sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果;

3.将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果;

4.定义一个反映学生出生年份的视图V_YEAR并查询结果;

5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果;

6.建立视图V_AVG平均成绩为90分以上的学生学号;

7.通过视图V_IS,分别将学号为“95001”和“95004”的学生姓名更改为“S0001”,”S0004”并查询结果;

8.通过视图V_IS,新增加一个学生记录 (’S0012’,’YAN XI’,19,’IS’),并查询结果;

9.通过视图V_IS,新增加一个学生记录 (’S0013’,’YAN XI’,19,’MA’),并查询结果;

10.通过视图V_IS,删除学号为“S0012”和“95003”的学生信息,并查询结果;

四、实验结果

以students,courses,sc表为基础完成以下视图定义(使用SQL和企业管理器两种方法)及使用

1.定义“IS”系学生基本情况视图V_IS 并查询结果;

create view V_IS

as

select *

from S

where Sdept='IS';

2.将students,courses,sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果;

create view V_S_C_G

as

select ,Sname,,Cname,Grade

from S,SC,C

where = and =;

3.将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果;

create view V_NUM_AVG(Sdept,Sdept_count,Sage_avg)

as

select Sdept,count(Sdept),avg(Sage)

from S

group by Sdept;

4.定义一个反映学生出生年份的视图V_YEAR并查询结果;

create view V_YEAR(Sname,Sbirthday)

as

select Sname,2013-Sage

from S;

'. .

5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果;

create view V_AVG_S_G(Sno,Cno_count,Grade_avg)

as

select Sno,count(Cno),avg(Grade)

from SC

group by Sno;

6.建立视图V_AVG平均成绩为90分以上的学生学号;

create view V_AVG(Grade_over90_Sno)

as

select

from S,SC

where = and in

(select Sno

from SC

group by Sno

having avg(Grade)>90);

7.通过视图V_IS,分别将学号为“95001”和“95004”的学生姓名更改为“S0001”,”S0004”并查询结果;

update V_IS

set Sname='王明'

where Sno='95001';

update V_IS

set Sname='王强'

where Sno='95002';

8.通过视图V_IS,新增加一个学生记录 (’S0012’,’YAN XI’,19,’IS’),并查询结果;

insert

into V_IS(Sno,Sname,Sage,Sdept)

VALUES ('95005','宋明','19','IS');

9.通过视图V_IS,新增加一个学生记录 (’S0013’,’YAN XI’,19,’MA’),并查询结果;

insert

into V_IS(Sno,Sname,Sage,Sdept)

VALUES ('95006','王芳','19','MA');

'. .

10.通过视图V_IS,删除学号为“S0012”和“95003”的学生信息,并查询结果;

delete

from V_IS

where Sno='95005' or Sno='95006';

'.