
数据库原理实验一-数据库和表的创建与管理.doc
13页《数据库原理》实验报告题目:实验一 数据库和表的创建与管理学号姓名班级日期2016.10.15一. 实验内容、步骤以及结果1. 利用图形用户界面创建,备份,删除和还原数据库和数据表(1) 创建SPJ数据库,初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长数据库的逻辑文件名和物理文件名均采用默认值2) 在SPJ数据库中创建如图2.1-图2.4的四张表(3) 备份数据库SPJ(第一种方法):备份成一个扩展名为bak的文件提示:最好先删除系统默认的备份文件名,然后添加自己指定的备份文件名)(4) 备份数据库SPJ(第二种方法):将SPJ数据库定义时使用的文件(扩展名为mdf,ldf的数据文件、日志文件等)复制到其他文件夹进行备份5) 删除已经创建的工程项目表(J表)6) 删除SPJ数据库可以在系统默认的数据存储文件夹下查看此时SPJ数据库对应的mdf,ldf文件是否存在)(7) 利用备份过的bak备份文件还原刚才删除的SPJ数据库还原数据库)(8) 利用备份过的mdf,ldf的备份文件还原刚才删除的SPJ数据库。
附加)(9) 将SPJ数据库的文件大小修改为100MB10) 修改S表,增加一个联系的字段sPhoneNo,数据类型为字符串类型2. 利用SQL语言创建和删除数据库和数据表(1) 用SQL语句创建如图2.5-图2.7要求的数据库Student, 初始大小为20MB,最大为100MB,数据库自动增长,增长方式是按10M兆字节增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长数据库的逻辑文件名和物理文件名,日志文件名请自定义2) 用SQL语句创建上述的三张表,各个字段的数据类型请自己确定,每张表只要有主键约束即可,不要其他约束不用输入数据3) 用SQL中的backup 语句将数据库Student备份到一个bak文件提示:backup database student to disk)--备份:BACKUP DATABASE "student" TO DISK ='C:\lzcDB1\mybak1015.bak'(4) 用SQL语句删除创建的表drop table Sdrop table Cdrop table SC(5) 将Student数据库定义时使用的文件(扩展名为mdf,ldf的数据文件、日志文件等)复制到其他文件夹进行备份(复制)后,用SQL语句删除创建的数据库。
6) 用SQL中的sp_attache_db语句完成对数据库Student的附加通过该方式完成数据库的恢复时,使用的备份文件是第5)小题中备份好的数据文件、日志文件等 ,具体用法:exec sp_attache_db )--将 student 中的两个文件附加到当前服务器EXEC sp_attach_db @dbname = N'student', @filename1 = N'C:\lzcDB1\student.mdf', @filename2 = N'C:\lzcDB1\student_log.ldf'(7) 先删除Student库,再用SQL中的restore 语句还原刚才备份的数据库Student (提示:restore database student from disk)(8) 用SQL语言修改数据库Student,给Student数据库添加一个文件组 TestFG1,然后将两个 5 MB 的文件添加到该文件组提示:alter database)(9) 修改S表,增加一个表示联系的字段sPhoneNo,数据类型为字符串类型ALTER TABLE SADD sPhoneNo char(10)(10) 利用SQL Server Management Studio的生成脚本功能(选中Student库->右键菜单“任务”-> “生成脚本”),自动生成S表的创建脚本,分析自动生成的脚本和自己写的SQL语句的异同点。
生成代码:USE [student]GO/****** Object: Table [dbo].[SC] Script Date: 10/15/2016 17:17:34 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[SC]( [sno] [char](10) NOT NULL, [cno] [char](10) NOT NULL, [cgrade] [smallint] NULL,PRIMARY KEY CLUSTERED ( [sno] ASC, [cno] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGO/****** Object: Table [dbo].[S] Script Date: 10/15/2016 17:17:34 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[S]( [sno] [char](10) NOT NULL, [sname] [nvarchar](20) NULL, [ssex] [nchar](2) NULL, [sbirth] [date] NULL, [sdept] [nvarchar](20) NULL, [sPhoneNo] [char](10) NULL,PRIMARY KEY CLUSTERED ( [sno] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGO/****** Object: Table [dbo].[C] Script Date: 10/15/2016 17:17:33 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[C]( [cno] [char](10) NOT NULL, [cname] [nvarchar](20) NULL, [cpno] [char](10) NULL, [ccredit] [int] NULL,PRIMARY KEY CLUSTERED ( [cno] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGO相同点:语法基本上是相同的,属性的命名和功能也是一样的。
不同点:生成的代码中包含一些对字体的设置和一些环境的设置,自己写的语句里没有生成的代码有日期等信息自己写的语句是分开执行的,生成的脚本是按GO语句分段执行的生成的脚本很多名称都用方括号括起来了二. 实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)除了标题内容以外,该部分内容中还可以写对于实验的一些感受,建议,意见等问题1. 在备份数据库文件的时候会提示文件正在被使用,无法复制解决方案:复制前将相应数据库分离或选择停止MSSQLSEVERCE,见下图问题2:将数据库文件从一台电脑复制到另一台电脑上,想要附加数据库时出错:解决方案:打开数据库文件的属性选项卡,将Authentical Users的权限修改成完全控制感受:刚开始做实验时遇到全新的平台时一筹莫展,助教也对平台不熟悉,经过网上查询了相关操作,逐渐摸索才渐渐入门课本上只介绍了SQL语言的很小一部分,之前听课时一直对SQL语言掌握的不明不白的,经过此次实验,终于算是掌握了建数据库和修改数据的全部操作,对SQL语言的理解也更深入了批阅者: 批阅日期:实验成绩: 批注:1。












