福建工程学院计算机与信息科学系
实验 报告
2010
–
2011
学年第
2
学期
任课老师:
XX 老师
课程名称 数据库系统概论 班级 软件工程0901 座号 24 姓名 XX 实验题目 0 MS SQL Server 2000 数据定义语言 实验时间 实验开始日期:2011.3.21
报告提交日期:
2011.3.28
实验目的、要求 一、 实验题目:
MS SQL Server 2000 数据定义语言 二、实验目的:
1.熟悉 SQL Server2000 查询分析器。
2.掌握 SQL 语言的 DDL 子语言,在 SQL Server2000 环境下采用 Transact-SQL 实现表的定义、删除与修改,掌握索引的建立与删除方法。
三、实验要求:
1.学会使用 SQL Server2000 的查询分析器,企业管理器和联机丛书。
2.根据实验内容认真写好实验报告,记录的实验用例及相关信息。
3.报告内容:实验内容 1,2(1)~(9),其中(9)中输入的数据不需记录
实验设计内容 1.创建数据库: 1)在 SQL Server2000 中建立一个 StuDB 数据库:
有一个数据文件:逻辑名为 StuData,文件名为“d:\db\StuDat.mdf”,文件初始大小为 2MB,文件的最大大小不受限制,文件的增长率为 2MB; 有一个日志文件,逻辑名为 StuLog,文件名为“d:\db \StuLog.ldf”,文件初始大小为 1MB,文件的最大大小为 10MB,文件的增长率为 10% 2.设置 StuDB 为当前数据库,在 StuDB 数据库中作如下操作:
设有如下关系表 S:
S(CLASS,SNO, NAME, SEX, AGE,),主关键字是 NO。
其中:CLASS 为班号,char(5) ;SNO 为座号,char(2),座号不能为空;NAME 为姓名,char(10),假设姓名的取值唯一;SEX 为性别,char(2);AGE 为年龄,int,表中主码为班号+座号。写出实现下列功能的 SQL 语句。
(1) 创建表 S; (2) 插入一个记录(“95031” ,25,“李明”,“男”,21); 再插入一个记录(“95101” ,10,“王丽”,“女”,20); (3) 插入“95031”班学号为 30,姓名为“郑和”的学生记录; (4) 对表 S,按学号升序建唯一索引(索引名为 sno); 对表 S,按年龄降序建索引(索引名为 sage); (5) 向 S 表添加“入学时间(comedate)”列,其数据类型为日期型(datetime); (6) 删除 S 表的 sage 索引; (7) 将年龄的数据类型改为 smallint;
(8) 删除 S 表; (9) 按照《数据库系统概论》(第四版)P56 页的学生-课程数据库创建 STUDENT、COURSE
和 SC 三张表,每一张表都必须有主键约束,合理使用列级完整性约束和表级完整性。并输入相关数据。
3 按照《数据库系统概论》(第四版)P74 页习题 5 的 SPJ 数据库。创建 SPJ 数据库,并在其中创建 S、P、J 和 SPJ 四张表。每一张表都必须有主键约束,合理使用列级完整性约束和表级完整性。
L SQL 语句实现要求:
-- 创建数据库的语句
use master
go
if exists(select * from sysdatabases where name="StuDB")
drop database StuDB
go
create database StuDB
on primary
( (
name=StuData,
filename="c c: :\ \ db\ \ StuDat.mdf",
注: : 我 电脑 没有 D D 盘
size=2 2 MB,
filegrowth=2MB
) )
log on
(name=StuLog,
filename="c c: :\ \ db\ \ StuLog.ldf",
size=1MB,
maxsize=10MB,
filegrowth=10%
) )
-- 创建表 S S 并且插入数据
use StuDB
go
create table S
( (
CLASS char(5),
SNO char(2),
NAME char(10),
SEX char(10) unique,
AGE int,
primary key (CLASS,SNO)
) )
go
insert i nto S
select "95031","25"," 李明 "," 男 ",21 union
select "95101","10"," 王丽 "," 女 ",20
go
insert
into S(CLASS,SNO,NAME)
values("95031",30," 郑和 ");
-- 创建索引
create unique index sno on s(sno asc)
create index sage on s(age desc)
go
-- 增加列 comdate
alter table S
add
comda te datetime
go
drop index s.sage
alter table s
alter column age smallint
-- 删除表
drop table S
-- 创建表 t Student 并且插入数据
create table Student
( (
Sno char(9) primary key,
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
) )
go
insert into db o.Student
select "95001"," 李勇 "," 男 ",20,"CS" union
select "95002"," 刘晨 "," 女 ",19,"IS" union
select "95003"," 王敏 "," 女 ",18,"MA" union
select "95004"," 张立 "," 男 ",19,"IS"
go
-- 创建表 e Course 并且插入数据
create table Course
( (
Cno char(4) primary key,
Cname char(40),
Cpno char( 4),
Ceredit smallint,
foreign key (Cpno) references Course(Cno)
) )
Go
insert into dbo.Course values("1"," 数据库 ",null,4)
insert into dbo.Course values("2"," 数学 ",null,2)
insert into dbo.Course values("3"," 信息系统 ",null,4)
insert into dbo.Course values("4"," 操作系统" " ,null,3)
insert into dbo.Course values("5"," 数据结构 ",null,4)
insert into dbo.Course values("6"," 数据处理 ",null,2)
L insert into dbo.Course values("7","PASCAL 语言 ",null,4)
update dbo.Course
set cpno="5" where Cno="1"
update dbo.Course
set cpno="1" where Cno="3"
updat e dbo.Course
set cpno="6" where Cno="4"
update dbo.Course
set cpno="7" where Cno="5"
update dbo.Course
set cpno="6" where Cno="7"
-- 创建表 C SC 并且插入数据
create table SC
( (
Sno char(9),
Cno char(4),
Grade smallint,
primary key (Sno,Cno),
foreign key (Sno) refer ences Student(Sno),
foreign key (Cno) references Course(Cno)
) )
Go
insert into dbo.SC
select "95001","1",92 union
select "95001","2",85 union
select "95001","3",88 union
select "95002","2",90 union
select "95002","3",80
go
-- 在数据库 J SPJ 中创建表 S,P,J,SPJ
USE SPJ
go
create table S
( (
SNO char(10) primary key,
SNAME nvarchar(20) not null,
STATUS char(10),
CITY nvarchar(20)
) )
go
create table P
( (
PNO char(10) primary key,
PNAME nvarchar(20) not null,
COLOR nvarchar(10),
WEIGHT int
) )
go
create table J
( (
JNO char(10) primary key,
JNAME nvarchar(20) not null,
CITY nvarchar(20)
) )
go
create table SPJ
( (
SNO char(10),
PNO char(10),
JNO char(10),
QTY int ,
foreign key (SNO) references S(SNO),
foreign key (PNO) references P(PNO),
foreign key (JNO) reference s J(JNO)
) )
go 调试过程记录
出错地方:
1、 在创建数据库 StuDB 时。路径出错。
修改方案:
:
1、需要先把文件夹建立好才能创建好。
实验结果记录以及与预期结果比较以及分析
利用部分执行,观察每个部分实现情况:
1.创建数据库,数据文件及日志文件
1. 建立S表,对表进行操作(插入数据、建立索引等)
2. 创建Student、Course、SC表
程序正确。
总结以及心得体会 这次实验,加深了我对各个命令代码的记忆,上课时候虽然都听懂了,但是到上机的时候,很多代码都写不出来,还好可以上网搜索或者查阅书本,可见对各个指令还不熟悉,所以以后要多实践,才能熟练的的操作数据库。
指导老师评阅意见
指导老师:
年
月
日 填写内容时,可把表格扩大。实验的源程序代码(要有注释)附在表后。