数据库实验报道

 福建工程学院计算机与信息科学系

 实验 报告

  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表

 程序正确。

  总结以及心得体会 这次实验,加深了我对各个命令代码的记忆,上课时候虽然都听懂了,但是到上机的时候,很多代码都写不出来,还好可以上网搜索或者查阅书本,可见对各个指令还不熟悉,所以以后要多实践,才能熟练的的操作数据库。

 指导老师评阅意见

 指导老师:

  年

  月

 日 填写内容时,可把表格扩大。实验的源程序代码(要有注释)附在表后。