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运算出现错误,是否是支持程度的差别不得而知。