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';
'.
发布评论