2023年6月21日发(作者:)
计算机科学与技术学院实验报告
实验题目:交互模式下的DML
日期:2010-11-6 班级: 08计算机3班
Email:lou_yong_fu@
实验目的:
学号: 2
姓名: 娄勇福
熟练掌握查询分析器的使用方法,在交互模式下,反复练习各种DML语句,进行各种增删改和查询,进一步加深对 SQL语言的理解。
硬件环境:
联想昭阳E43笔记本一台
软件环境:
Microsoft SQL server 2000,查询分析器,企业管理器,QQ(截图工具)
实验步骤:
1、建立关系、表并填充数据:启动Microsoft SQL server 2000服务管理器,打开企业管理器,新建数据库students,切换到查询分析器,在工具栏中间位置选择students数据库,使用SQL语句进行编辑,创建表与写入数据的语句如下:
create table depart
(number char(20),
dname char(20),
primary key(number)
)
create table student
(number char(20),
sname char(20),
sex char(20),
age int,
departname char(20),
departno char(20),
primary key(number),
foreign key(departno) references depart(number)
)
create table course
(cno char(20),
cname char(20), xianxing int,
value int,
primary key(cno)
)
create table teacher
(number char(20),
tname char(20),
cname char(20),
cno char(20),
primary key(number),
foreign key(cno) references course(cno)
)
create table xuanke
(sno char(20),
cno char(20),
score int,
primary key(sno,cno),
foreign key(cno) references course(cno)
)
create table shouke
(tno char(20),
tname char(20),
cname char(20),
cno char(20),
primary key(tno),
foreign key(tno) references teacher(number),
foreign key(cno) references course(cno)
)
以上代码创建了六个表,depart,student,teacher,shouke,xuanke,course,并利用主键和外键设置了各个表的约束关系。
insert into teacher
values('20090123','孟庆娟','大学英语','329')
insert into teacher
values('20098922','孙宇清','数据结构','328')
insert into teacher
values('20080145','王维华','电工','223')
insert into teacher
values('21458883','李新','数字逻辑','258')
insert into teacher
values('25896144','杨静','汇编语言','365') insert into teacher
values('20014785','栾俊峰','离散数学','352')
insert into teacher
values('20585213','叶宏','离散数学','324')
insert into teacher
values('21458888','殷晓峰','计算机组成','333')
insert into course
values('223','电工','5',4)
insert into course
values('329','大学英语','5',4)
insert into course
values('328','数据结构','4',5)
insert into course
values('258','数字逻辑','3',3)
insert into course
values('365','汇编语言','4',4)
insert into course
values('352','离散数学','2',4)
insert into course
values('324','概率统计','5',3)
insert into course
values('333','计算机组成','8',2)
insert into course
values('224','数据库','5',1)
insert into xuanke
values('2','223',98)
insert into xuanke
values('2','329',99)
insert into xuanke
values('2','324',97)
insert into xuanke
values('2','365',60)
insert into xuanke
values('2','333',59)
insert into xuanke
values('2','224',10)
insert into xuanke
values('2','328',89)
insert into xuanke
values('2','352',69)
insert into xuanke
values('2','258',93) insert into xuanke
values('2','324',77)
insert into xuanke
values('2','224',99)
insert into xuanke
values('2','224',50)
insert into xuanke
values('2','224',69)
insert into xuanke
values('2','324',58)
insert into xuanke
values('2','258',90)
insert into xuanke
values('2','328',96)
insert into xuanke
values('2','258',95)
insert into xuanke
values('2','365',99)
insert into xuanke
values('2','352',100)
insert into xuanke
values('2','324',100)
insert into xuanke
values('2','333',100)
insert into xuanke
values('2','223',85)
insert into xuanke
values('2','329',78)
insert into xuanke
values('2','328',47)
insert into xuanke
values('2','365',88)
insert into xuanke
values('2','352',84)
insert into xuanke
values('2','333',87)
insert into xuanke
values('98001','324',95)
insert into xuanke
values('98002','328',88)
insert into xuanke
values('98002','365',68)
insert into xuanke
values('98002','224',97) insert into xuanke
values('98003','224',55)
insert into xuanke
values('2','223',77)
insert into depart
values('24','计算机')
insert into depart
values('1','经济')
insert into depart
values('2','数学')
insert into depart
values('5','管理')
insert into depart
values('27','社会学')
insert into depart
values('4','历史')
insert into depart
values('9','软件')
insert into depart
values('18','电子商务')
insert into depart
values('14','临床')
insert into depart
values('16','外语')
insert into student
values('2','娄勇福','男',19,'计算机','24')
insert into student
values('2','王静文','女',20,'计算机','24')
insert into student
values('2','刘文','女',20,'计算机','24')
insert into student
values('2','韩善文','女',20,'计算机','24')
insert into student
values('2','老韩','女',30,'软件','9')
insert into student
values('2','阿文','男',25,'经济','1')
insert into student
values('2','小静','男',15,'管理','5')
insert into student
values('2','南瓜粥','女',19,'数学','2')
insert into student
values('2','小斯斯','男',18,'社会学','27') insert into student
values('2','小怡宁','女',22,'外语','16')
insert into student
values('98001','小越越','女',21,'临床','14')
insert into student
values('98002','小祥子','男',20,'计算机','24')
insert into student
values('98003','王欣','男',19,'计算机','24')
insert into student
values('98004','赵岩','男',19,'外语','16')
insert into student
values('2','张平','男',21,'计算机','24')
insert into shouke
values('20090123','孟庆娟','大学英语','329')
insert into shouke
values('20098922','孙宇清','数据结构','328')
insert into shouke
values('20080145','王维华','电工','223')
insert into shouke
values('20585213','叶宏','概率统计','324')
insert into shouke
values('25896144','杨静','汇编语言','365')
insert into shouke
values('21458883','李新','数字逻辑','258')
以上语言向每一个表写入了数据。
生成的六个表截图如下:
2、根据实验要求,编写SQL查询语句进行查询:
(1)、找出年龄小于20岁的所有学生
SQl语句:select sname from student A1 where age<20
结果截图:
(2)、找出年龄小于20岁且是外语系的学生
SQL语句:select sname from student where (age<20) and (departname in ('外语')) 结果截图
(3)、找出学生关系中的所有学生
SQL语句:select distinct sname from student
结果截图:
(4)、求所有学生的姓名、年龄
SQL语句:select sname,age from student
结果截图
(5)、在学生关系中找出年龄小于20岁的学生的姓名、性别
SQL语句:select sname,age from student where age<20
结果截图 (6)、找出已选课的学生的学号
SQL语句:select distinct studentNumber from student A1,xuanke A2
where =
结果截图:
(7)、检索所有课程情况(题目表述不清)
SQL语句:select cno 课程号,cname 课程名,xianxing 先行课,value 学分 from course
结果截图
(8)、检索先行课号为“5”的课程名
SQL语句:select cname from course where xianxing in ('5')
结果截图:
(9)、找出选修“数据库”课程,且成绩大于90的学生姓名(不确定)
SQL语句:select sname
from student,xuanke,course
where (=) and (=) and
(score>90)and cname in ('数据库')
结果截图:
(10)、找出张平所选修全部课程的课程名和成绩
SQL语句:select ,
from student,xuanke,course
where in ('张平') and
= and =
结果截图:
(11)、找出选修了所有课程的学生的学号(掌握不熟练)
SQL语句:
select number from student
where not exists
(select* from course
where not exists
(select* from xuanke where
sno= and =))
结果截图: (12)找出选修了学号为“98001”的学生所选修所有课程的学生姓名(掌握不熟练)
SQL语句:select sname
from student
where not exists
(select cno
from xuanke
where sno='98001' and cno not in
(select cno
from xuanke
where sno= and sno<>'98001'))
结果截图:
(13)找出不选修任何课程的学生
SQL语句:select number,sname
from student
where number not in
(select distinct sno from xuanke)
结果截图:
(14)找出至少选修了学号为“98002”的学生所选修的一门课的学生姓名(掌握不熟练)
SQL语句:
select distinct sname
from student,xuanke
where = and <>'98002'
and in (select cno from xuanke where sno='98002')
结果截图
(15)找出至少选修了一门其先行课号为“5”号课程的学生姓名
SQL语言:select distinct sname
from student,xuanke,course where = and ng='5'
and =
结果截图:
(16)求至少选修了“数据库”和“数据结构”课程的学生学号(掌握不熟练)
SQL语句:select
from xuanke A1,xuanke A2,course B1,course B2
where = and = and =
and ='数据库' and ='数据结构'
结果截图:
(17)在课程关系中增加计算机原理课程,其课程号为8,先行课号为5,学分为4
SQL语言:insert into course
values('8','计算机组成原理','5',4)结果截图:
(18)将学生关系中所有学生的年龄增加1岁
SQL语言:select number,sname,sex,age+1 newage,departname,departno from student
结果截图: 写法二:update student set age=age+1
select * from student
(19)将王欣从学生关系及选课关系中删掉
SQL语句:delete from xuanke where sno in
(select number from student where sname='王欣')
delete from student where sname='王欣'
结果截图:
(20)将学生关系中赵岩的年龄改为20岁
SQL语言:update student
set age=20
where sname='赵岩'
结果截图:
(21)计算224号课程的学生平均成绩
SQL语言:select avg(score) 平均成绩
from xuanke
where cno in ('224')
结果截图:
(22)查询学习224号课程的学生的最高分数
SQL语言:select max(score) 最高成绩
from xuanke where cno in ('224')
结果截图:
(23) 查询所有不姓刘的学生姓名
SQL语言:select sname from student
where sname not like('刘%')
结果截图:
(24) 查询选修了324号课程的学生的学号及成绩,查询结果按分数降序排列
SQL语言:select sno,score from xuanke
where cno in ('324')
order by score desc
结果截图:
(25) 查所有有成绩的记录的学生学号和课程号
SQL语言:select sno,cno from xuanke
where score is not null
结果截图:
结论分析与体会:
利用所学SQl语句,并经过与同学讨论,最终运行结果全部正确,但是还有很多语句掌握不熟练,尤其涉及多个关系进行联合查询时,另外,根据元组关系演算转化而来的SQL语句,经常被提示有语法错误,例如第十一题找出选修了所有课程的学生的学号,利用except运算出现错误,是否是支持程度的差别不得而知。
2023年6月21日发(作者:)
计算机科学与技术学院实验报告
实验题目:交互模式下的DML
日期:2010-11-6 班级: 08计算机3班
Email:lou_yong_fu@
实验目的:
学号: 2
姓名: 娄勇福
熟练掌握查询分析器的使用方法,在交互模式下,反复练习各种DML语句,进行各种增删改和查询,进一步加深对 SQL语言的理解。
硬件环境:
联想昭阳E43笔记本一台
软件环境:
Microsoft SQL server 2000,查询分析器,企业管理器,QQ(截图工具)
实验步骤:
1、建立关系、表并填充数据:启动Microsoft SQL server 2000服务管理器,打开企业管理器,新建数据库students,切换到查询分析器,在工具栏中间位置选择students数据库,使用SQL语句进行编辑,创建表与写入数据的语句如下:
create table depart
(number char(20),
dname char(20),
primary key(number)
)
create table student
(number char(20),
sname char(20),
sex char(20),
age int,
departname char(20),
departno char(20),
primary key(number),
foreign key(departno) references depart(number)
)
create table course
(cno char(20),
cname char(20), xianxing int,
value int,
primary key(cno)
)
create table teacher
(number char(20),
tname char(20),
cname char(20),
cno char(20),
primary key(number),
foreign key(cno) references course(cno)
)
create table xuanke
(sno char(20),
cno char(20),
score int,
primary key(sno,cno),
foreign key(cno) references course(cno)
)
create table shouke
(tno char(20),
tname char(20),
cname char(20),
cno char(20),
primary key(tno),
foreign key(tno) references teacher(number),
foreign key(cno) references course(cno)
)
以上代码创建了六个表,depart,student,teacher,shouke,xuanke,course,并利用主键和外键设置了各个表的约束关系。
insert into teacher
values('20090123','孟庆娟','大学英语','329')
insert into teacher
values('20098922','孙宇清','数据结构','328')
insert into teacher
values('20080145','王维华','电工','223')
insert into teacher
values('21458883','李新','数字逻辑','258')
insert into teacher
values('25896144','杨静','汇编语言','365') insert into teacher
values('20014785','栾俊峰','离散数学','352')
insert into teacher
values('20585213','叶宏','离散数学','324')
insert into teacher
values('21458888','殷晓峰','计算机组成','333')
insert into course
values('223','电工','5',4)
insert into course
values('329','大学英语','5',4)
insert into course
values('328','数据结构','4',5)
insert into course
values('258','数字逻辑','3',3)
insert into course
values('365','汇编语言','4',4)
insert into course
values('352','离散数学','2',4)
insert into course
values('324','概率统计','5',3)
insert into course
values('333','计算机组成','8',2)
insert into course
values('224','数据库','5',1)
insert into xuanke
values('2','223',98)
insert into xuanke
values('2','329',99)
insert into xuanke
values('2','324',97)
insert into xuanke
values('2','365',60)
insert into xuanke
values('2','333',59)
insert into xuanke
values('2','224',10)
insert into xuanke
values('2','328',89)
insert into xuanke
values('2','352',69)
insert into xuanke
values('2','258',93) insert into xuanke
values('2','324',77)
insert into xuanke
values('2','224',99)
insert into xuanke
values('2','224',50)
insert into xuanke
values('2','224',69)
insert into xuanke
values('2','324',58)
insert into xuanke
values('2','258',90)
insert into xuanke
values('2','328',96)
insert into xuanke
values('2','258',95)
insert into xuanke
values('2','365',99)
insert into xuanke
values('2','352',100)
insert into xuanke
values('2','324',100)
insert into xuanke
values('2','333',100)
insert into xuanke
values('2','223',85)
insert into xuanke
values('2','329',78)
insert into xuanke
values('2','328',47)
insert into xuanke
values('2','365',88)
insert into xuanke
values('2','352',84)
insert into xuanke
values('2','333',87)
insert into xuanke
values('98001','324',95)
insert into xuanke
values('98002','328',88)
insert into xuanke
values('98002','365',68)
insert into xuanke
values('98002','224',97) insert into xuanke
values('98003','224',55)
insert into xuanke
values('2','223',77)
insert into depart
values('24','计算机')
insert into depart
values('1','经济')
insert into depart
values('2','数学')
insert into depart
values('5','管理')
insert into depart
values('27','社会学')
insert into depart
values('4','历史')
insert into depart
values('9','软件')
insert into depart
values('18','电子商务')
insert into depart
values('14','临床')
insert into depart
values('16','外语')
insert into student
values('2','娄勇福','男',19,'计算机','24')
insert into student
values('2','王静文','女',20,'计算机','24')
insert into student
values('2','刘文','女',20,'计算机','24')
insert into student
values('2','韩善文','女',20,'计算机','24')
insert into student
values('2','老韩','女',30,'软件','9')
insert into student
values('2','阿文','男',25,'经济','1')
insert into student
values('2','小静','男',15,'管理','5')
insert into student
values('2','南瓜粥','女',19,'数学','2')
insert into student
values('2','小斯斯','男',18,'社会学','27') insert into student
values('2','小怡宁','女',22,'外语','16')
insert into student
values('98001','小越越','女',21,'临床','14')
insert into student
values('98002','小祥子','男',20,'计算机','24')
insert into student
values('98003','王欣','男',19,'计算机','24')
insert into student
values('98004','赵岩','男',19,'外语','16')
insert into student
values('2','张平','男',21,'计算机','24')
insert into shouke
values('20090123','孟庆娟','大学英语','329')
insert into shouke
values('20098922','孙宇清','数据结构','328')
insert into shouke
values('20080145','王维华','电工','223')
insert into shouke
values('20585213','叶宏','概率统计','324')
insert into shouke
values('25896144','杨静','汇编语言','365')
insert into shouke
values('21458883','李新','数字逻辑','258')
以上语言向每一个表写入了数据。
生成的六个表截图如下:
2、根据实验要求,编写SQL查询语句进行查询:
(1)、找出年龄小于20岁的所有学生
SQl语句:select sname from student A1 where age<20
结果截图:
(2)、找出年龄小于20岁且是外语系的学生
SQL语句:select sname from student where (age<20) and (departname in ('外语')) 结果截图
(3)、找出学生关系中的所有学生
SQL语句:select distinct sname from student
结果截图:
(4)、求所有学生的姓名、年龄
SQL语句:select sname,age from student
结果截图
(5)、在学生关系中找出年龄小于20岁的学生的姓名、性别
SQL语句:select sname,age from student where age<20
结果截图 (6)、找出已选课的学生的学号
SQL语句:select distinct studentNumber from student A1,xuanke A2
where =
结果截图:
(7)、检索所有课程情况(题目表述不清)
SQL语句:select cno 课程号,cname 课程名,xianxing 先行课,value 学分 from course
结果截图
(8)、检索先行课号为“5”的课程名
SQL语句:select cname from course where xianxing in ('5')
结果截图:
(9)、找出选修“数据库”课程,且成绩大于90的学生姓名(不确定)
SQL语句:select sname
from student,xuanke,course
where (=) and (=) and
(score>90)and cname in ('数据库')
结果截图:
(10)、找出张平所选修全部课程的课程名和成绩
SQL语句:select ,
from student,xuanke,course
where in ('张平') and
= and =
结果截图:
(11)、找出选修了所有课程的学生的学号(掌握不熟练)
SQL语句:
select number from student
where not exists
(select* from course
where not exists
(select* from xuanke where
sno= and =))
结果截图: (12)找出选修了学号为“98001”的学生所选修所有课程的学生姓名(掌握不熟练)
SQL语句:select sname
from student
where not exists
(select cno
from xuanke
where sno='98001' and cno not in
(select cno
from xuanke
where sno= and sno<>'98001'))
结果截图:
(13)找出不选修任何课程的学生
SQL语句:select number,sname
from student
where number not in
(select distinct sno from xuanke)
结果截图:
(14)找出至少选修了学号为“98002”的学生所选修的一门课的学生姓名(掌握不熟练)
SQL语句:
select distinct sname
from student,xuanke
where = and <>'98002'
and in (select cno from xuanke where sno='98002')
结果截图
(15)找出至少选修了一门其先行课号为“5”号课程的学生姓名
SQL语言:select distinct sname
from student,xuanke,course where = and ng='5'
and =
结果截图:
(16)求至少选修了“数据库”和“数据结构”课程的学生学号(掌握不熟练)
SQL语句:select
from xuanke A1,xuanke A2,course B1,course B2
where = and = and =
and ='数据库' and ='数据结构'
结果截图:
(17)在课程关系中增加计算机原理课程,其课程号为8,先行课号为5,学分为4
SQL语言:insert into course
values('8','计算机组成原理','5',4)结果截图:
(18)将学生关系中所有学生的年龄增加1岁
SQL语言:select number,sname,sex,age+1 newage,departname,departno from student
结果截图: 写法二:update student set age=age+1
select * from student
(19)将王欣从学生关系及选课关系中删掉
SQL语句:delete from xuanke where sno in
(select number from student where sname='王欣')
delete from student where sname='王欣'
结果截图:
(20)将学生关系中赵岩的年龄改为20岁
SQL语言:update student
set age=20
where sname='赵岩'
结果截图:
(21)计算224号课程的学生平均成绩
SQL语言:select avg(score) 平均成绩
from xuanke
where cno in ('224')
结果截图:
(22)查询学习224号课程的学生的最高分数
SQL语言:select max(score) 最高成绩
from xuanke where cno in ('224')
结果截图:
(23) 查询所有不姓刘的学生姓名
SQL语言:select sname from student
where sname not like('刘%')
结果截图:
(24) 查询选修了324号课程的学生的学号及成绩,查询结果按分数降序排列
SQL语言:select sno,score from xuanke
where cno in ('324')
order by score desc
结果截图:
(25) 查所有有成绩的记录的学生学号和课程号
SQL语言:select sno,cno from xuanke
where score is not null
结果截图:
结论分析与体会:
利用所学SQl语句,并经过与同学讨论,最终运行结果全部正确,但是还有很多语句掌握不熟练,尤其涉及多个关系进行联合查询时,另外,根据元组关系演算转化而来的SQL语句,经常被提示有语法错误,例如第十一题找出选修了所有课程的学生的学号,利用except运算出现错误,是否是支持程度的差别不得而知。
发布评论