sql数据库系统原理上机实验(综合版)
更新时间:2024-05-31 09:48:01 阅读量: 综合文库 文档下载
- Sql数据库推荐度:
- 相关推荐
《数据库原理》实验指导书
《数据库原理》上机实验
上机学时:8学时
1
一、 上机性质、目的及任务:
通过上机实践,配合课堂教学内容加深对数据库的基本概念和基本技术的理解,掌握数据库系统设计的基本思想和基本步骤,熟悉关系数据库的标准语言SQL,并对典型的关系数据库管理系统有较深入的了解,使学生的动手能力有较大的提高。
二、 面向专业:
计算机类各专业
三、 实验指导书:
见下页
四、 实验内容:
实验一SQL数据定义....................................................................................................... 3 实验二 SQL简单查询................................................................................................. 6 实验三 SQL 复杂查询 ................................................................................................ 7 实验四 SQL 数据更新 ................................................................................................... 8
2
实验一SQL数据定义
一、实验目的
(1)认识几种常见的数据库管理系统,熟悉它们的使用界面;
(2)熟练掌握建立数据库和表,向数据库输入数据、修改数据和删除数据的操作。 (3) 熟悉SQL数据定义语言(DDL)
二、实验内容
(1)分别在Access 和SQL SERVER2005 中建立数据库并设计各表,输入多条实际数据,并实现数据的增、删、改操作。
(2)用SQL语言进行基本表结构的定义、修改、删除,索引的建立和删除
三、实验步骤:
分别在ACCESS数据库管理系统和SQL SERVR 2005环境下利用图形操作界面(非SQL语句)实现以下操作:
1、创建用于学生管理的数据库,数据库名为XSGL,包含学生信息,课程信息和选课信息。 数据库XSGL包含下列3 个表: (l) student:学生基本信息。 (2)course:课程信息表。
(3)sc:学生选课表。
各表的结构分别如表1、表2和表3 所示。 表1 学生信息表:student 列名 sno sname ssex 数据类型 长度 完整性约束 主键 不为空 完整性约束 主键 完整性约束 主属性,外键 主属性,外键 字符(文本)型 8 字符(文本)型 4 字符(文本)型 1 整数(数值)型 sage 字符型 sdept 10 表2 课程信息表:course 列名 cno cname credit 数据类型 长度 字符(文本)型 2 字符(文本)型 30 整数(数值)型 字符(文本)型 3 cpno 表3 学生选课表:sc 列名 sno cno 数据类型 长度 字符(文本)型 8 字符(文本)型 2 整数(数值)型 是 grade 提示:在不使用SQL语句创建表的情况下,可通过ACCESS中的关系(菜单—工具—关系)
3
和SQL SERVER 2005中的数据库关系图(数据库节点展开—数据库关系图)实现外键的创建。外键字段和参照字段之间的数据类型以及长度要保持一致。 2、输入表中的记录
分别在student表、course表和sc表中输入如下表中的记录:
sno 95001 95002 95003 95004 95005 sname 李勇 刘晨 王敏 张立 刘云 ssex 男 女 女 男 女 sage 20 19 18 19 18 sdept CS IS MA IS CS cno 1 2 3 4 5 6 7 sno 95001 95001 95001 95002 95002 95003 95004 95004 cname 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言 cno 1 2 3 2 3 2 1 2 credit 4 6 3 4 4 3 4 grade 92 85 88 90 80 85 58 85 pcno 5 1 6 7 6 观察输入时有无提示错误,如果有如何修改,体会参照完整性的作用,弄清楚先输入那些表中记录,为什么?
3、对表中的记录进行浏览、修改、删除操作。
4、利用“分离数据库”和 “附加数据库”操作对SQL Server中创建的数据库做备份和还原操作。
4
5、 在SQL SERVER 2005中新建查询,建立到服务器的连接
6、 用SQL语言CREATE TABLE语句创建实验一中学生表student、课程表
course和选课表sc及其相应约束,
具体约束如下:
表1 学生信息表:student 列名 sno sname ssex sage sdept 数据类型 长度 完整性约束 主键 不为空 默认值为’男’ 取值为’男’或’女’ 是 否 完整性约束 主键 完整性约束 主属性,外键 主属性,外键 取值在0-100之间 字符(文本)型 8 字符(文本)型 4 字符(文本)型 2 整数(数值)型 字符型 10 长度 表2 课程信息表:course 列名 数据类型 cno cname credit cpno 列名 sno cno grade 字符(文本)型 2 字符(文本)型 30 整数(数值)型 字符(文本)型 3 数据类型 长度 表3 学生选课表:sc 字符(文本)型 10 字符(文本)型 30 整数(数值)型 是 7、向创建的表中输入数据,测试所创建的完整性约束是否起作用 8、用SQL语言ALTER语句修改表结构;
1)STUDENT表中增加一个字段入学时间scome, 2)删除STUDENT表中sdept字段;
3)删除创建的SC表中CNO字段和COURSE表CNO字段之间的外键约束; 4)重建3)中删除的约束
9、重新定义一个简单表,然后用SQL语言DROP语句删除该表结构; 10、用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序唯一索引;
11、用SQL语言DROP语句删除索引;
5
实验二 SQL简单查询
目的:
掌握简单数据查询操作。
内容:
使用各种查询条件完成指定的查询操作 步骤:
1)创建学生表student、课程表course和选课表SC,并输入数据(注意数据的完整性。);(可以使用实验一中已经建立的表和数据) 2) 对各表中的数据进行不同条件的查询;
包括的运算:投影、选择、比较运算符、逻辑运算符、字符匹配运算符、匹配列
表范围、算术运算符、内部函数、排序、分组、分组函数使用
(1) 查询全体学生的学号和姓名 (2) 查询全体学生的详细记录
(3) 查询软件学院的学生姓名、年龄、系别
(4) 查询所有选修过课程的学生学号(不重复) (5) 查询考试不及格的学生学号(不重复)
(6) 查询不是软件学院的学生性别、年龄、系别
(7) 查询年龄18-20岁的学生学号、姓名、系别、年龄; (8) 查询姓刘的学生情况
(9) 查询姓刘或姓李的学生情况
(10) 查询姓刘且名字为两个字的学生情况 (11) 查询1983年以后出生的学生姓名。
(12) 利用内部函数 year()查找软件学院学生的出生年份 (13) 利用字符转换函数实现字符联接。
Select sname + ‘年龄为’+cast(sage as char(2))+’岁’ From student
(14) 查询全体学生情况,查询结果按所在系升序排列,对同一系中的学
生按年龄降序排列。 (15) 查询学生总人数。
(16) 查询选修了课程的学生人数。
(17) 查询选修了7号课程的学生总人数和平均成绩 (18) 查询选修6号课程学生的最好成绩 (19) 查询每个系的系名及学生人数。 (20) 查找每门课的选修人数及平均成绩 (21) 查找没有先修课的课程情况
要求:
1、将上述任务中完整的SQL语句调试并使之运行正确; 2、写出实验报告;
6
实验三 SQL 复杂查询
目的:
掌握复杂数据查询操作。
内容:
掌握各种连接查询、嵌套查询的使用
步骤:
1)实验一中的数据为基础
2) 对各表中的数据进行不同条件的连接查询和嵌套查询; ? 查询每个学生及其选课情况; ? 查询每门课的间接先修课 ? 将STUDENT,SC进行右连接
? 查询既选修了2号课程又选修了3号课程的学生姓名、学号; ? 查询和刘晨同一年龄的学生
? 选修了课程名为“数据库”的学生姓名和年龄 ? 查询其他系比IS系任一学生年龄小的学生名单
? 查询其他系中比IS系所有学生年龄都小的学生名单 ? 查询选修了全部课程的学生姓名
? 查询计算机系学生及其性别是男的学生
? 查询选修课程1的学生集合和选修2号课程学生集合的差集 ? 查询李丽同学不学的课程的课程号 ? 查询选修了3号课程的学生平均年龄 ? 求每门课程学生的平均成绩
? 统计每门课程的学生选修人数(超过3人的才统计)。要求输出课程号和
选修人数,结果按人数降序排列,若人数相同,按课程号升序排列 ? 查询学号比刘晨大,而年龄比他小的学生姓名。 ? 求年龄大于所有女同学年龄的男同学姓名和年龄
要求:
1、将上述任务中完整的SQL语句调试并使之运行正确; 2、写出实验报告;
7
实验四 SQL 数据更新
目的:
掌握SQL的常用数据更新操作,熟练应用INSERT,UPDATE,DELETE语句。
内容:
1)应用INSERT,UPDATE,DELETE语句进行更新操作;
a) 插入如下学生记录(学号:95030,姓名:李莉,年龄:18) b) 插入如下选课记录(95030,1) c) 计算机系学生年龄改成20 d) 把数学系所有学生成绩改成0
e) 把低于总平均成绩的女同学成绩提高5分
f) 修改2号课程的成绩,若成绩小于75分提高5%,成绩大于75时提高
4%(两个语句实现,注意顺序) g) 删除95030学生信息
h) 删除SC表中无成绩的记录 i) 删除张娜的选课记录
j) 删除不及格的学生选课记录 k) 删除数学系所有学生选课记录 l) 删除所有未被选修的课程
m) 查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,把值送
往另一个已经存在的基本表STU(SNO,SNAME,SSEX)中
n) 建立一个sdeptgrade 表,包含(sdept,avggrade)字段,对每一个系,求
学生的成绩,并把结果存入sdeptgrade
2)熟练掌握INSERT,UPDATE,DELETE语句并能综合应用;
要求:
1、将上述任务中完整的SQL语句调试并使之运行正确; 2、写出实验报告;
8
附录(总版): 语句清单
--sql 查询实验一代码
create table student1 (sno char(8) primary key,
sname char(4) not null, ssex char(2) default'男', check(ssex in('男','女')), sage int default('是'), sdept char(10) default('否'), )
create table course1 (cno char(2) primary key,
cname char(30), credit int, cpno char(3), )
-------创建表student1 ------创建表course1 9
create table sc1
(sno char(8) foreign key references student1(sno), 创建表sc1 cno char(2) foreign key references course1(cno), grade int default('是') check(grade between 0 and 100), )
----------------------第题
alter table student1 add scome int alter table student1 drop column sdept
select name
from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id
where f.parent_object_id=object_id('sc1') --------查找出约束名,然后再用drop语句删除约束
alter table sc1 drop constraint FK__sc1__cno__740F363E --------在括号中补充用上面语句查找出的约束名
alter table sc1 add constraint [pk_sc1] primary key (cno)
alter table sc1 add constraint [fk_sc1_course1] foreign key (cno) references course1(cno)
alter table sc1 drop constraint [fk_sc1_course1]
10
create unique index student1_index on student1(sname desc) drop index student1_index on student1
create table teacher (tno char(4) primary key, tname char(8) not null, title char(5) , )
drop table teacher
--sql查询实验二的代码
SELECT sno,sname from student
select * ------------2 from student
select sname,sage,sdept -----3
--1 11
from student
where student.sdept='IS'
select distinct student.sno -----4 from student,sc
where sc.sno=student.sno
select distinct student.sno ----5 from student,sc
where sc.sno=student.sno and grade<60
select ssex,sage,sdept -----------6 from student where sno not in (select sno from student where sdept='IS')
/* 这是exists的用法 select ssex,sage,sdept from student as y where not exists(select *
12
from student where Y.sdept='CS') */
select sno,sname,sage,sdept -------7 from student
where sage between 18 and 20;
select * ---------------8 from student
where sname like'刘%'
select * -----------------9 from student
where sname like'[刘李]%'
select sname ----------------10 from student
where sname like'刘_ _'--中文占用两个字符,所以这里用两个
select sname -------------------11 from student
_ 13
where 2013-sage>1983
-- select year(sage) 这是取单个人的出生年份的用法,调用year函数
select year(getdate())-s.sage+1
from student as s -------12 where sdept='CS'
Select sname + '年龄为'+cast(sage as char(2))+'岁' From student ---------13 select *
from student ---------------------14 order by sdept,sage desc
select COUNT(sno)----------------15 from student
select COUNT(distinct sno) from sc --------------16 /*
14
SELECT COUNT(*)
FROM student ----------16题解法二
WHERE EXISTS( SELECT * FROM SC WHERE sc.sno = student.sno ) */
select COUNT(student.sno),avg(sc.grade) from student,sc ------------17 where student.sno=sc.sno and cno='7'
select max(grade)
from sc -------------------18 where cno='6'
select sdept,COUNT(sno) from student -------------------19 group by sdept
select COUNT(student.sno),AVG(grade) from student,sc ----------20 where student.sno=sc.sno group by cno
15
/* -----------------20第二种解法 select cname,COUNT(student.sno),AVG(grade) from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno group by sc.cno,cname */
select * ------为什么这里查询不到结果 from course -------------21 where cpno is null
--sql 查询实验三代码
--------1
select student.*,sc.cno,sc.grade ----左外连接(显性连接) from student left join sc on student.sno=sc.sno /*
select student.*,sc.cno,sc.grade
16
from student inner join sc ----内连接法(显性连接) on student.sno=sc.sno */ /*
select student.*,sc.cno,sc.grade ----------隐性连接 from student,sc
where student.sno=sc.sno */
select first.cname,first.cpno,second.cno from course first,course second ----------2 where first.cpno=second.cno
select student.*,sc.* ---------------3 from student right join sc on student.sno=sc.sno
select student.sno,sname from student,sc,(select student.sno
from student,sc -----4 导出表的使用 where sc.sno=student.sno and cno='2' group by student.sno)as result(sno)
17
where student.sno=sc.sno and cno='3' group by student.sno,student.sname
select student.sno,sname
from student,sc as x --------4法二
where student.sno=x.sno and cno='2' and exists(select student.sno from student,sc as y
where cno='3' and exists(select * from student,sc as z
where z.sno=y.sno and z.sno=x.sno))
select student.sno,sname
from student,sc as x,sc as y ------4法三
where student.sno=x.sno and x.sno=y.sno and x.cno='2' and y.cno='3' select *
from student as x,student y --------5 where x.sname='刘晨' and x.sage=y.sage
select sname,sage
18
from student,sc,course -----------6 where
student.sno=sc.sno
and
sc.cno=course.cno
course.cname='数据库'
select sname from student
where sage
from student ----------7 where sdept='is' ) and sdept< >'is' select sname from student
where sage'is'
select sname
from student ------------9 where sno in(select sno from sc
and
19
group by sno
having COUNT(*)=7)
select * --------------10 from student
where sdept='is' and ssex='男'
select distinct student.sname -------------11 from student,sc
where sc.cno='1' except(select student.sname from student,sc where sc.cno='2') select cno
from sc ---------------------12 where sc.sno not in(select sno from student
where student.sname='李丽')
select AVG(sage) --------------------------13 from student,sc
where student.sno=sc.sno and cno='3'
20
select cno,AVG(grade)
from sc -------------------14 group by cno
select cno,COUNT(sno)
from sc ------------------------15 group by cno
order by cno,COUNT(sno) desc
select sname
from student -------------------16 where sno>(select sno from student
where sname='刘晨')and sage<(select sage from student where sname='刘晨')
select x.sname ----------------16法二 from student x,student y
where x.sno>y.sno and x.sage 21 select distinct x.sname,x.sage from student x,student y ------17 where x.ssex='男' and x.sage>y.sage and y.ssex='女' -----实验四sql 的数据更新 insert into student(sno,sname,sage)values('95030','李莉','18') -----1 insert into sc(sno,cno)values('95030','1') --------2 update student1 ---------------3 set sage='20' where sdept='IS' update sc1 --------------------4 set grade='0' where sno in(select sno from student1 where sdept='MA') update sc -----------------5 22 set grade=grade+5 where sno in(select student.sno from student,sc where ssex='女' group by student.sno,grade having grade update sc set grade=grade*1.05 where cno='2' and grade<75 ----------------6 update sc set grade=grade*1.04 where cno='2' and grade>75 delete from student1 -----------7 where sno='95030' delete from sc1 where grade is null--------------8 delete from sc1 where sno in(select sno 23 from student1 -------------------9 where sname='张娜') delete from sc1 ----------10 where grade<60 delete from sc1 where sno in(select sno from student1 where sdept='MA') delete from course1 where cno not in(select cno from sc1,course1 where sc1.cno=course1.cno) create table stu(sno char(8),sname char(8),ssex char(4)) insert into stu(sno,sname,ssex) select sno,sname,ssex from student where sno in(select sno from sc 24 where sno not in(select sno from sc where grade is null) group by sno having min(grade)>=80) create table sdeptgrade(sdept char(4),avggrade char(2)) insert into sdeptgrade(sdept,avggrade) select sdept,AVG(grade) from sc,student group by sdept 25
正在阅读:
sql数据库系统原理上机实验(综合版)05-31
给兄弟留言重情义的话大全02-21
英语阅读练习题及答案04-20
解放军陆军兵种师旅编制汇总04-06
力的图示作图题01-24
华南农业大学期末考试试卷参考答案05-20
青海华电诺木洪风电场一期49.5MW工程可研概算--编制说明-精品09-25
自然地理学名词解释105-19
数据库第一、二、三章课后习题答案05-31
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 综合版
- 上机
- 原理
- 实验
- 数据库
- 系统
- sql
- 多重共线性的解决方法之——岭回归与LASSO
- 数据库第一、二、三章课后习题答案
- 西山煤电专用线施组
- 管理信息系统-考试重点整理
- 组织二
- 塑料果冻盒课程设计
- 最新(苏教版)江苏省泰州市白马中学七年级下册 17《国宝 - 大熊
- 我国烟草物流发展现状与问题
- 世贸东方商住楼施工组织设计
- 16秋北理工《大学英语2》在线作业
- 南方电网设备标准技术标书-110kV - 氧化锌避雷器 - 图文
- 北京师大附中2011-2012学年高一上学期期中考试物理试题(ap班)
- 2016最新冀教版小学数学六年级上册期末复习套题
- 商学院2014届毕业生论文答辩工作安排
- 江苏省扣件式钢管脚手架搭设、拆除工程监理细则标准格式(标准化
- 浙江省住宅工程质量通病防治措施
- 宿迁市司法局机关车辆使用及驾驶员管理规定68
- 2010湖南省教师资格证(中学综合素质)最新考试试题库(完整版)
- 侵权法上的原因力理论研究
- 全面规范化生产维护管理体系—标准(WD稿)