《数据库原理与应用》实验题目及答案 下载本文

内容发布更新时间 : 2024/11/16 10:35:25星期一 下面是文章的全部内容请认真阅读。

FILEGROWTH = 1MB, --自动增量

MAXSIZE = UNLIMITED) --最大容量

LOG ON

(NAME=ST_log, --日志文件逻辑文件名 FILENAME = 'F:\\SQL2008DB\\ST_log.ldf', --物理文件名 SIZE = 2MB, --初始大小 FILEGROWTH = 10%, --自动增量 MAXSIZE = UNLIMITED) --最大容量 运行结果如下: 命令已成功完成。

5.使用T-SQL语句建立数据库JXDB,参数如表1.2所示。

表1.2 数据库JXDB属性设置 文件组 文件 类型 主数据 文件 逻辑文件名 JXDB_Data 物理文件名 F:\\SQL2008DB\\ JXDB_Data.mdf 初始 自动 最大 大小 增量 容量 3M 2M 1M 1M 2M 10% 10% 1M 1M 10% 不限制 增长 30M 20M 10M 不限制 增长 主文件组 PRIMARY 次数据 F:\\SQL2008DB\\ JXDB_Data1 文件 JXDB_Data1.ndf 次数据 JXDB_Data2 自定义 文件 文件组 次数据 JX_Group1 JXDB_Data3 文件 日志 文件 JXDB_log F:\\SQL2008DB\\ JXDB_Data2.ndf F:\\SQL2008DB\\ JXDB_Data3.ndf F:\\SQL2008DB\\ JXDB_log.ldf 使用二个文件组:主文件组PRIMARY包含主数据文件 JXDB_Data和次数据文件JXDB_Data1;名为 JX_Group1 的自定义文件组包含次数据文件 JXDB_Data2 和 JXDB_Data3;事务日志文件名为JXDB_log。程序如下: --创建教学管理数据库JXDB.sql

IF EXISTS (SELECT * FROM master..sysdatabases WHERE name = 'JXDB') DROP DATABASE JXDB --若库JXDB已存在,则删除

GO

CREATE DATABASE JXDB --建立数据库JXDB ON PRIMARY --主文件组 (NAME=JXDB_Data, --主数据文件逻辑文件名 FILENAME = ' F:\\SQL2008DB\\JXDB_Data.mdf ', --物理文件名 SIZE = 3MB, --初始大小 FILEGROWTH = 10%), --自动增量 MAXSIZE = UNLIMITED) --最大容量 (NAME = JXGLDB_Data1, --次数据文件 FILENAME = ' F:\\SQL2008DB\\JXDB_Data1.ndf', SIZE = 2MB,

FILEGROWTH = 10%,

46

MAXSIZE = UNLIMITED),

FILEGROUP JX_Group1 --自定义文件组1 (NAME = JXDB_Data2, --次数据文件 FILENAME = ' F:\\SQL2008DB\\JXDB_Data2.ndf', SIZE = 1MB,

MAXSIZE = 20MB, FILEGROWTH = 10%),

(NAME = JXDB_Data3, --次数据文件

FILENAME = ' F:\\SQL2008DB\\JXDB _Data3.ndf', SIZE = 1MB,

MAXSIZE = 20MB, FILEGROWTH = 10%), LOG ON

(NAME = JXDB_log, --日志文件

FILENAME = ' F:\\SQL2008DB\\JXDB_log.ldf', SIZE = 1MB,

MAXSIZE = 20MB, FILEGROWTH = 10%) GO

运行结果如下:

命令已成功完成。

6.使用T-SQL语句为数据库JXDB添加文件组JX_Group2,并为此文件组添加1个数据文件 JXDB_Data4;添加1个日志文件JXDB_log1。参数由用户自己设定。

--添加文件组JX_Group2 ALTER DATABASE JXDB

ADD FILEGROUP JX_Group2 GO

--添加次数据文件JXDB_Data4到文件组JX_Group2 ALTER DATABASE JXDB

ADD FILE (NAME = JXDB_Data4,

FILENAME = 'F:\\SQL2008DB\\JXDB_Data4.ndf', SIZE = 1MB, MAXSIZE = 20MB, FILEGROWTH = 1MB)

TO FILEGROUP JX_Group2 --次数据文件添加到文件组JX_Group2 GO

--添加日志文件JXDB_log1 ALTER DATABASE JXDB

ADD LOG FILE

(NAME = JXDB_log1, --日志文件 FILENAME = 'F:\\SQL2008DB\\JXDB_log1.ldf', SIZE = 2MB, MAXSIZE = 20MB,

47

FILEGROWTH = 10%) GO

7.使用T-SQL语句修改数据库JXDB中次数据文件JXDB_Data4的属性:文件初始大小改为5M,增长方式改为每次按20%增长。删除日志文件JXDB_log1。 ALTER DATABASE JXDB

MODIFY FILE

(NAME = JXDB_Data4, SIZE = 5MB) GO

ALTER DATABASE JXDB

MODIFY FILE (NAME = JXDB_Data4, FILEGROWTH = 20%) GO

ALTER DATABASE JXDB REMOVE FILE JXDB_log1

8.使用T-SQL语句删除数据库JXDB。 DROP DATABASE JXDB 五、出现的问题及解决方法

附录6 建立学生-课程数据库ST及表

--[例] 建立学生-课程数据库“ST”,将数据文件和日志文件均存入文件夹:F:\\SQL2008DB。

--建立学生-课程数据库ST.sql use master

IF DB_ID(N'ST') IS NOT NULL --若数据库ST已存在, DROP DATABASE ST --则删除。 GO

CREATE DATABASE ST ON

(NAME=ST_Data, --主数据文件逻辑文件名 FILENAME = 'F:\\SQL2008DB\\ST_Data.mdf', --物理文件名 SIZE = 3MB, --初始大小 FILEGROWTH = 1MB, --自动增量 MAXSIZE = UNLIMITED) --最大容量 LOG ON

(NAME=ST_log, --日志文件逻辑文件名 FILENAME = 'F:\\SQL2008DB\\ST_log.ldf', --物理文件名 SIZE = 2MB, --初始大小 FILEGROWTH = 10%, --自动增量 MAXSIZE = UNLIMITED) --最大容量 GO use ST

48

if exists (select name from sysobjects where name='sc') drop table sc

if exists (select name from sysobjects where name='course') drop table course

if exists (select name from sysobjects where name='student') drop table student --建立学生表结构 create table student

(sno char(9) primary key, --学号 sname char(8) not null, --姓名 ssex char(2) check(ssex in('男','女')) default '男', --性别 sage smallint, --年龄 sdept char(20) --所在系 )

--建立带自定义约束名的学生表结构

if exists (select name from sysobjects where name='student') drop table student create table student

(sno char(9) constraint PK_student primary key, --学号 sname char(8) constraint NN_student_sname not null, --姓名 ssex char(2) constraint CK_student_ssex check(ssex in('男','女'))

constraint DF_student_ssex default '男', --性别 sage smallint, --年龄 sdept char(20) --所在系 )

--建立课程表结构 create table course

(cno char(4) primary key, --课号 cname char(16) unique, --课名 cpno char(4) references course(cno), --先行课号 ccredit smallint, --学分 );

--建立选修表结构 create table sc

(sno char(9), --学号 cno char(4), --课号 grade decimal(5,1) check(grade between 0 and 100), --成绩 primary key(sno,cno),

foreign key(sno) references student(sno) on delete cascade on update cascade, foreign key(cno) references course(cno)

on update cascade --省略on delete短语为no action方式 );

--向学生表插入数据

49

insert into student values('201313101','李勇','男',20,'CS'); insert into student values('201313102','刘晨','女',19,'CS'); insert into student values('201313103','王敏','女',18,'MA'); insert into student values('201313104','张立','男',19,'IS'); --向课程表插入数据

insert into course values('1','数据库',null,4); insert into course values('2','数学', null,2); insert into course values('3','信息系统','1',4); insert into course values('4','操作系统',null,3); insert into course values('5','数据结构',null,4); insert into course values('6','数据处理', null,2); insert into course values('7','C语言','6',4); update course set cpno='5' where cno='1' update course set cpno='6' where cno='4' update course set cpno='7' where cno='5'

/*编一“级联插入”触发器可解决先修课程cpno后录入问题*/ --向选修表插入数据

insert into sc values('201313101','1',92); insert into sc values('201313101','2',35); insert into sc values('201313101','3',88); insert into sc values('201313102','2',90); insert into sc values('201313102','3',50);

50