数据库原理实验报告
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数据库原理实验报告,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6635字,纯文字阅读大概需要10分钟。
内容图文
?实验一 熟悉SQL Server 2008环境及SQL 语言
一、实验目的:
1.了解SQL Server 2008配置管理工具、企业管理组件、管理工具等的使用方法。
2.了解SQL SERVER 2008数据库及其对象。
3.熟练掌握SQL语言进行基本表结构的创建。
4.熟练应用SQL语言进行表结构的修改。
5.掌握数据库的备份和删除。
二、实验内容和步骤:
1.手动建库:打开SQL Server 2008企业管理器,建立1个名为StudentDB1,数据文件名为StudentDB1_data、大小为10M,日志文件名为StudentDB1_log、大小为5M的新数据库;
2. 手动建表:为数据库StudentDB1创建四个表,教师T、课程C、学生S、选课SC,其结构为:
- Ø 教师表T(教师号T#,教师名字TNAME,职称TITLE);
- Ø 课程表C(课程号C#,课程名称CNAME,教师号T#);
将 T# 设置为外键
- Ø 学生表S(学号S#,学生姓名SNAME,年龄AGE,性别SEX);
- Ø 选课表SC(学号S#,课程号C#,成绩,GRADE)。
将 S# C# 设置为外键
要求属性选择合适的数据类型,定义每个表的主键,是否允许空值和默认值等列级数据约束。
3.通过SQL语句建库:在企业管理器中,使用SQL语句建立名为StudentDB2,数据文件名为StudentDB2_data、大小为10M,日志文件名为StudentDB2_log、大小为5M的新数据库;(要求每个同学建立的数据库的名称为自己的学号,替换StudentDB2,注意全为数字名称的数据库在SQL语句中的用法)
create database [201811040806]
on primary(
name = '201811040806_data',
filename = 'E:\数据库\数据库实验\201811040806_data.mdf',
size=3,
maxsize=50,
filegrowth=1
)
log on(
name = '201811040806_log',
filename = 'E:\数据库\数据库实验\201811040806_log.ldf',
size=1,
maxsize=12,
filegrowth=10%
)
4.利用SQL语句,按照列表中的字段名(英文)、类型建立如下四个表结构(数据长度参考课本78页):
- Ø 教师表T(教师号T#,教师名字TNAME,职称TITLE);
use [201811040806]
create table T(
T# char(10) NOT NULL,
TNAME nvarchar(5) NOT NULL,
TITLE nvarchar(5),
primary key (T#)
);
- Ø 课程表C(课程号C#,课程名称CNAME,教师号T#);
use [201811040806]
create table C(
C# char(10) NOT NULL,
CNAME nvarchar(10) NOT NULL,
T# char(10) NOT NULL,
primary key(C#),
foreign key(T#) references T(T#)
);
- Ø 学生表S(学号S#,学生姓名SNAME,年龄AGE,性别SEX);
use [201811040806]
create table S(
S# char(10) NOT NULL,
SNAME nvarchar(5) NOT NULL,
AGE int NOT NULL,
SEX bit NOT NULL,
primary key(S#)
);
- Ø 选课表SC(学号S#,课程号C#,成绩,GRADE)。
use [201811040806]
create table SC(
S# char(10) NOT NULL,
C# char(10) NOT NULL,
GRADE [int],
primary key(S#,C#),
foreign key(S#) references S(S#),
foreign key(C#) references C(C#)
);
要求:
- Ø 建表和建立表间联系;
- Ø 选择合适的数据类型;
- Ø 定义必要的索引、列级约束和表级约束。
5.在StudentDB2的各个表中插入数据,用SQL语句实现。数据如下表:
use [201811040806]
insert into T
values ('T1','ZHANG',NULL),
('T2','WU',NULL),
('T3','LIU',NULL),
('T4','ZHOU',NULL);
use [201811040806]
insert into S
values ('S1','TOM',20,1),
('S10','ZHOU',16,0),
('S2','JACK',20,1),
('S3','MARY',21,0),
('S4','WANG',21,0),
('S5','ZHAO',24,1),
('S6','LI',25,1),
('S7','DU',19,0),
('S8','TANG',19,1),
('S9','MAO',17,1);
use [201811040806]
insert into C
values ('C1','MATHS','T1'),
('C2','ENGLISH','T2'),
('C3','CHINESE','T3'),
('C4','PHYSICS','T3'),
('C5','COMPUTER','T4');
use [201811040806]
insert into SC
values ('S1','C1',70),
('S1','C2',80),
('S1','C4',90),
('S10','C1',87),
('S2','C1',70),
('S2','C5',90),
('S3','C1',80),
('S3','C4',90),
('S4','C1',90),
('S4','C2',60),
('S5','C1',60),
('S5','C2',60),
('S5','C3',NULL),
('S5','C4',60),
('S5','C5',78),
('S6','C1',76),
('S7','C1',68),
('S7','C4',70),
('S8','C1',76),
('S9','C1',90);
6.S表中增加“出生日期”属性列;
use [201811040806]
alter table S
add birthday char(10)
7.备份数据库StudentDB2,再还原。
--备份
backup database [201811040806]
to disk='E:/数据库/201811040806.bak'
--还原
use master
restore database [201811040806]
from disk='E:/数据库/201811040806.bak'
实验二 数据操作
一、实验目的
熟练掌握SQL语句对数据库的各种操作。
二、实验内容和步骤
使用SQL语言完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询);完成各类更新操作(插入数据,修改数据,删除数据)。
1. 用SQL语句在StudentDB2(数据库名称为学号)数据库中表达下列查询,写出运行结果。(学号为单数做题号为单的题目,双数学号做题号为双的题目)
查询操作:
①检索年龄小于17岁的女学生的学号和姓名。
②检索男学生所学课程的课程名与课程号。
use [201811040806]
select distinct CNAME,C.C#
from SC,S,C
where SC.C#=C.C# and SC.S#=S.S# and S.SEX=1
③检索男学生所学课程的任课教师的工号和姓名
④检索至少选修两门课程的学生学号。
use [201811040806]
select distinct x.S#
from SC as x,SC as y
where x.S#=y.S# and x.C#<>y.C#
⑤检索至少有学号S2和S4学生选修的课程的课程号。
⑥检索WANG同学不学的课程的课程号。
use [201811040806]
select distinct C#
from C
where C# not in(select C#
from SC
where S#=(select distinct S#
from S
where SNAME ='WANG'))
⑦检索全部学生都选修的课程的课程号与课程名。
⑧检索选修课程包含LIU老师所授课程的学生学号。
use [201811040806]
select distinct S#
from SC
where C# in(select C#
from C
where T#=(select T#
from T
where TNAME ='LIU'))
组合查询:
① 统计有学生选修的课程门数。
② 求选修C4课程的女学生的平均年龄。
use [201811040806]
select AVG(AGE)
from S
where SEX=0 and S# in(select S#
from SC
where C#='C4')
③ 求LIU老师所授课程的每门课程的平均成绩。
④ 统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数。
use [201811040806]
select C#,COUNT(*)
from SC
group by C#
having COUNT(*)>10
⑤ 检索学号比WANG同学大,而年龄比他小的学生姓名。
⑥ 在表SC中检索成绩为空值的学生学号和课程号。
use [201811040806]
select S#,C#
from SC
where GRADE is NULL;
⑦ 检索姓名以L打头的所有学生的姓名和年龄。
⑧ 求年龄大于女同学平均年龄的男学生姓名和年龄。
use [201811040806]
select SNAME,AGE
from S
where SEX=1 and AGE>(select AVG(AGE)
from S
where SEX=0 )
2. 使用SQL进行数据完整性控制。(全部做)
①用户定义完整性:学生年龄<30。
use [201811040806]
alter table S
add constraint u1 check (AGE<30)
用实验验证当操作违反了完整性约束时,系统如何处理?
如:在S中插入一条记录,年龄 > 30
use [201811040806]
insert into S
values ('S11','QI',31,1,NULL)
②修改SC中的约束条件,成绩在0-100之间。
use [201811040806]
alter table SC
add constraint u2 check (GRADE<=100 and GRADE >=0)
用实验验证当操作违反了完整性约束时,系统如何处理?
如:在SC中插入一条记录,成绩不在0-100之间
use [201811040806]
insert into SC
values ('S1','C5',300)
3. 数据更新。(全部做)
①求某门课的平均成绩,并把结果存入数据库;
use [201811040806]
create table average(
C# char(10) NOT NULL,
AVGGRADE [int],
primary key(C#),
foreign key(C#) references C(C#)
);
use [201811040806]
insert into average
select C#,AVG(GRADE)
from SC
group by C#
②将选LIU老师所授课的全体学生的成绩置零。
update SC
set GRADE = 0
where C# in(select C#
from C
where T# in(select T#
from T
where TNAME ='LIU'))
内容总结
以上是互联网集市为您收集整理的数据库原理实验报告全部内容,希望文章能够帮你解决数据库原理实验报告所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。