数据库上机实验报告
更新时间:2024-03-15 14:51:01 阅读量: 综合文库 文档下载
实验一:建立数据库及基本表
一、实验目的
1、了解SQL Server数据库的逻辑结构和物理结构; 2、了解SQL Server的基本数据类型; 3、学会在企业管理器中创建数据库和表; 4、使用SQL查询分析器用CREATE、DROP、ALTER语句创建和删除数据库,创建、删除、更新基本表。
二、实验内容
1、创建数据库和查看数据库属性。2、创建表。3、查看和修改表结构。4、熟悉企业管理器和查询分析器工具的使用方法
三、实验步骤
1、在企业管理器中创建数据库和数据表。
(1) 使用企业管理器建立图书管理数据库,数据库名为BM,初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。数据库的逻辑文件名和物理文件名均采用默认值。
详细步骤:
(2) 在企业管理器中查看图书管理数据库的属性,并进行修改,使之符合要求。
(3) 通过企业管理器,在建好了图书管理数据库BM中建立图书(book)、读者(reader)和借阅(borrow)3个表,其结构为:
图书(书号,类别,出版社,作者,书名,定价);读者(编号,姓名,单位,性别,电话); 借阅(书号,读者编号,借阅日期)。 三个表各个字段的数据类型:
Book表 字段名 数据类型 说明 字段名 Reader表 数据类型 说明 字段名 Borrow 表 数据类型 说明 书号 类别 出版社 作者 书名 定价
编号 姓名 单位 性别 电话 书号 读者编号 借阅日期 (4) 利用企业管理器向表中输入数据。
2、在查询分析器中创建数据库和数据表 (1) 创建数据库S-C 的sql语句: create database s_c
(2) 在数据库S-C下,创建基本表 学生表student(sno,sname,ssex,sage,sdept)的sql语句: create table student( sno c(8),sname c(10),ssex c(2),sage(4),sdept c(8) ) 创建基本表 课程表course(cno,cname, ccredit)的sql语句: create table course( cno c(4),cname c(10),ccredit c(2) ) 创建基本表 成绩表sc(sno,cno,grade)的sql语句: create table sc( sno c(8),cno c(4),grade n(4) )
1
(3) 在窗口下分别键入DROP TABLE Student及DROP TABLE SC命令,运行后观察结果。 再重新运行student.sql和sc.sql,并观察结果。 (4) 利用查询分析器编写SQL语句修改表。
①在student表中增加一个新的字段“smerit”(特长),数据类型为char(30);该sql语句: alter table student add smerit c(30)
②修改student表中sdept字段的数据类型为varchar(20),其sql语句 alter table student alter sdept varchar(20)
2
实验二:数据查询
一、实验目的
1、掌握查询分析器的使用方法,加深对SQL的语句的理解; 2、使用查询分析器用SELECT语句进行数据查询;
3、熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
二、实验内容
1、完成简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。 2、完成连接查询、嵌套查询、组合查询和统计查询等操作。
三、实验步骤
1、熟悉pubs数据库中的三个用户表:
employee(emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date),
job(job_id,job_desc,min_lvl,max_lvl), publishers(pub_id,pub_name,city,state,country)。 他们分别是关于雇员、职务和出版社的基本表。
2、在查询分析器在窗口下用SELECT语句完成单表查询: ①查询全体出版社的详细记录; Sql语句:
select * from publishers
②查询所有工作的job_id为7的职工的职工编号; Sql语句:
select emp_id from employee where job_id = 7 ③查询工作的job_id小于7的职工的职工编号; Sql语句:
select emp_id from employee where job_id < 7 ④查询在Germany和France的出版社的名字和所在城市; Sql语句:
select pub_name,city from publishers where country in (Germany ,France) ⑤查询lname为Jablonski的雇员的fname、job_id和hire_date; Sql语句:
select fname ,job_id ,hire_date from employee where lname = “Jablonski” ⑥查询lname的前两个字符为cr的职员的编号和fname; Sql语句:
3
select emp_id ,fname from employee where lname like “cr %” 3、在查询分析器在窗口下用SELECT语句完成连接(嵌套)查询: ①查询各个工作号与相应的工作人数; Sql语句:
select job .job_id ,count(*) as 人数 from employee ,job
where employee.job_id=job.job_id group by job.job_id
②查询每个职工及其工作的描述(job_desc)的情况; Sql语句:
select employee .emp_id ,job_desc from employee ,job
where employee.job_id=job.job_id
4、在查询分析器在窗口下用SELECT语句完成集合查询:
查询job_id为5和job_id为6的职工的姓名和职工所在出版社的名字 Sql语句:
(select fname ,pub_name from employee ,publishers where employee.pub_id=publishers.pub_id and job_id=5) union
(select fname ,pub_name from employee ,publishers where employee.pub_id=publishers.pub_id and job_id=6)
4
实验三:数据更新、视图的创建与修改
一、实验目的
1、学会使用INSERT、UPDATE、DELETE等SQL语句进行数据更新; 2、学会使用CREATE、DROP等SQL语句创建和删除视图。
二、实验内容
1、在查询分析器中使用INSERT、UPDATE、DELETE语句进行数据更新。 2、在查询分析器中使用CREATE、DROP语句创建和删除视图。
三、实验步骤
1、利用企业管理器在数据库S-C的三个表中分别插入以下数据:学生表student:
sno sname ssex sage sdept 95001 李勇 男 20 CS 95002 刘晨 女 19 IS 95003 王敏 女 18 MA 95004 张立 男 19 IS 课程表course:
cno cname cpno ccredit 1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 操作系统 6 3 5 数据结构 7 4 6 PASCAL语言 6 4 成绩表sc:
sno cno grade 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80 5
2、在查询分析器中:
(1)选择数据库S-C,用INSERT语句向学生表student中插入一个新生记录(学号:95020;姓名:陈东;性别:男;所在系:IS;年龄:18)。
Sql语句: insert into student
values (“9520”,”陈东”,”男”,18,“IS”)
(2)在数据库S-C中建立一个新表deptage,其中一个字段存放系名,另一个字段存放相应的学生平均年龄;然后对学生表student按系分组求平均年龄,再把系名和平均年龄存入新表中。
Sql语句:
create table deptage(sdept c(4) ,avga n(4))
select sdept , avg(sage) from student group by sdept 3、在查询分析器中用UPDATE语句更改表中数据。 (1)将所有学生的年龄都增加1岁。 update student set sage=sage+1 (2)将IS系全体学生的成绩置零。 update sc set grade=0
where sno in ( select sno from student where sdept=”IS”) (3) 分别运行SQL语句,观察运行结果。
4、在查询分析器中用DELETE语句删除表中数据。 (1)删除学号为“95020”的学生记录。 delete from student where sno=”95020” (2)删除IS系所有学生的成绩记录。 delete from student where sdept=”IS” (3) 分别运行SQL语句,观察运行结果。 5、在查询分析器中用CREATE语句建立视图。 建立IS系学生的视图IS_student。 create view IS_student
as select * from student where sdept=”IS”
6
实验四:数据完整性
一、实验目的
在课程结束时,使用SQL查询分析器用PRIMARY KEY、CHECK、FOREIGN KEY……REFERENCES、NOT NULL、UNIQUE等关键字验证SQL2000的实体完整性、参照完整性及用户定义完整性。
二、实验内容
1、在查询分析器中用PRIMARY KEY子句保证实体完整性;
2、在查询分析器中用FOREIGN KEY……REFERENCES子句保证参照完整性;
3、在查询分析器中用短语NOT NULL、UNIQUE、CHECK、DEFAULT保证用户定义完整性。
三、实验步骤
1、 在企业管理器中为图书管理数据库BM各表加完整性约束:
(1) 定义每个表的主键; 详细步骤:
ALTER TABLE book
ADD CONSTRAINT bk PRIMARY KEY(书号)
ALTER TABLE reader
ADD CONSTRAINT rk PRIMARY KEY(编号) ALTER TABLE borrow
ADD CONSTRAINT bk PRIMARY KEY(书号,读者编号)
(2) 借阅表与图书表间、借阅表与读者表之间的ForeignKey(外码)约束; 详细步骤:
ALTER TABLE borrow
ADD CONSTRAINT bK_ow FOREIGN KEY(书号) REFERENCES book(书号)
ALTER TABLE borrow
ADD CONSTRAINT rK_ow FOREIGN KEY(读者编号) REFERENCES reader(编号)
(3) 实现借阅表的书号和读者编号的UNIQUE(惟一性)约束; 详细步骤:
ALTER TABLE borrow
ADD CONSTRAINT U_bh UNIQUE NONCLUSTERED(书号) ALTER TABLE borrow
ADD CONSTRAINT U_dh UNIQUE NONCLUSTERED(读者编号)
(4) 实现读者性别只能是“男”或“女”的check(检查)约束; 详细步骤:
ALTER TABLE reader
7
ADD CONSTRAINT br CHECK(性别 IN(’男’,’女’))
(5) 图书表的定价字段的缺省值为0 详细步骤:
ALTER TABLE reader
ALTER SET DEFAULT d1 0 FOR book(定价)
8
实验五:数据库应用系统的设计
一、实验目的
1、通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握本书中所讲解的内容;
2、提高学生分析能力和抽象能力的目的。
二、实验内容
1、设计一个简单的图书管理系统的数据库。
2、用SQL实现数据库的设计,并在 SQLServer上调试通过。
三、实验步骤
三个表各个字段的数据类型:
Book表 Reader表 Borrow 表 字段名 数据类型 说明 字段名 数据类型 说明 字段名 数据类型 说明 书号 编号 书号 类别 姓名 读者编号 出版社 单位 借阅日期 作者 性别 书名 电话 定价 1、图书管理系统的E—R图: book m 借阅日期 n reader
2、 图书管理系统的关系模式:
book(书号,类别,出版社,作者,书名,定价) reader(编号,姓名,单位,性别,电话) borrow(书号,读者编号,借阅日期) 各关系模式之间的相互关系:
9
book与borrow之间是一对多关系 reader与borrow之间是一对多关系 3、 图书管理系统的视图及其作用:
read_book(读者姓名,书名,借阅日期) 4、 数据库的定义sql语句:
create database rb
基本表定义的sql语句(包含约束):
create table book(书号 c(5), 类别 c(2), 出版社 c(20), 作者 c(10), 书名 c(10), PRIMARY KEY(书号)
)
create table reader(编号 c(4), 姓名 c(10), 单位 c(20), 性别 c(2), 电话 c(10), PRIMARY KEY(编号)
)
Create table borrow(书号 c(5), 读者编号 c(4), 借阅日期 d(8), PRIMARY KEY(书号,读者编号),
书号) REFERENCES book(书号),
读者编号) REFERENCES reader(编号)
)
视图定义的sql语句:
create view read_book(读者姓名,书名,借阅日期) as select 姓名,书名,借阅日期
from book,reader,borrow
where book.书号=borrow.书号 and borrow.读者编号=reader.编号
5、 在SQLServer上进行调试。 定价 n(6), 10
FOREIGN KEY( FOREIGN KEY(
正在阅读:
数据库上机实验报告03-15
黄鹤楼游记作文300字06-23
中考物理复习策略及知识归纳05-02
大理市卫生局卫生监督所2012年度下半年宣传信息工作计划07-23
电教论文09-04
第12章 运动和力 易错题03-13
固体物理习题201204-17
骑龙学区五年级下册数学期中试题07-19
火烧云作文600字07-07
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 上机
- 实验
- 数据库
- 报告