实验一 创建数据库及数据库对象管理.docx
- 文档编号:10601097
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:16
- 大小:1.09MB
实验一 创建数据库及数据库对象管理.docx
《实验一 创建数据库及数据库对象管理.docx》由会员分享,可在线阅读,更多相关《实验一 创建数据库及数据库对象管理.docx(16页珍藏版)》请在冰豆网上搜索。
实验一创建数据库及数据库对象管理
实验一创建数据库及数据库对象管理
一、实验目的:
(1)了解并掌握创建数据库的方法。
(2)了解并掌握创建数据表,索引的方法。
(3)掌握定义数据库完整性的方法。
(4)掌握对数据库对象进行安全性控制的方法。
二、实验步骤:
1、创建数据库方法:
(1)使用SQL语句创建数据库:
创建数据库包括:
定义数据库名;确定数据库文件机器大小;确定事务日值文件的位置和大小。
CREATEDATABASE〈数据库名〉
[ON[PRIMARY][(NAME=〈逻辑数据文件名〉,]
FILENAME='〈操作数据文件路径和文件名〉'
[,SIZE=〈文件长度〉]
[,MAXSIZE=〈最大长度〉]
[,FILERGROWTH=〈文件增长率〉])[,…n]]
[LOGON([NAME=〈逻辑日志文件名〉,]
FILENAME='〈操作日志文件路径和文件名〉'
[,SIZE=〈文件长度〉])[,…n]]
[FORRESTORE]
子句中:
PRIMARY指明主文件名;SIZE说明文件的大小,数据库文件最小为1MB,默认值为3MB;FILEROWTH说明文件的增长率,默认值为10%。
FORRESTORE子句说明重建一个数据库,该重建的数据库用于数据恢复操作。
例如:
CREATEDATABASEtest1
ONPRIMARY
(NAME='test1',
FILENAME='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\test1.mdf',
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
LOGON
(NAME='test1Log',
FILENAME='c:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\test1Log.ldf',
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5MB)
(2)使用对象资源管理器创建数据库
2、创建基本表的方法:
(1)使用SQL语句创建基本表
CREATETABLE<表名>
(<列名><数据类型>[<列级完整性约束条件>]
[,<列名><数据类型>[<列级完整性约束条件>]]…
[,<表级完整性约束条件>]);
例如:
CREATETABLE学生(
学号intPRIMARYKEYCLUSTERED,
姓名CHAR(8)NOTNULL,
性别CHAR
(2)CHECK(性别IN('男','女')))
(2)使用对象资源管理器创建基本表
3、定义索引方法
CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);
4、定义数据库完整性
(1)定义表的完整性及约束
1.唯一性约束:
UNIQUE
2.非空值约束:
NOTNULL
3.检查约束(check):
当对表进行插入或更新操作时,检查其中的列值必须满足的约束条件。
4.主键约束(primarykey):
限制表中指定列的取值,以保证任何两列在指定列上不存在相同的值,同时主键约束列上的值不得为Null。
5.参照约束(foreignkey):
如果两个表之间由主键和外键相联系,那么在对表中的数据执行插入、删除和更新操作时,必须遵循它们之间的参照性规则和各自的数据完整性规则。
6.缺省约束(default):
向表插入新行时为没有给值的列指定一缺省值,用以增强数据的完整性。
(2)创建和管理存储过程
CREATEPROCEDURE〈过程名〉[;〈版本号〉][@〈参数名〉〈参数类型〉[=〈缺省值〉][OUTPUT]…]
[WITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]
AS〈SQL语句组〉
1)版本号是可选的整数,它用于将有相同名字的存储过程编为不同的组。
2)OUTPUT选项用于给调用者返回值。
3)RECOMPILE为重编译选项。
它要求每次执行都要对过程重编译和优化,并创建新的查询计划。
4)ENCYPTION为加密选项。
5)参数前加“@”为局部变量,参数前加“@@”则说明为全局变量。
过程的调用语句为:
EXE[UTE]〈过程名〉[[@〈参数名〉=]〈参数〉…[〈版本号〉]
(3)创建和管理触发器
CREATETRIGGER〈触发器名〉ON〈表名〉
[WITHENCRYPTION]
FOR{[DELETE][,][INSERT][,][UPDATE]}[WITHAPPEND][NOTFORREPLICATION]
ASBEGIN〈SQL语句组〉
END
1)WITHENCRYPTION为加密选项。
2)DELETE触发器是当对表执行DELETE操作时删除元组,将删除的元组放入deleted表中。
检查delete表中的数据,确定该如何处理。
3)INSERT触发器在对执行插入数据操作时,将插入表中的数据拷贝并送入inserted表中,根据inserted表中的值决定如何处理。
4)UPDATE触发器仅在更新数据操作时将要被更新的原数据移入deleted表中,将更新后的数据备份送入inserted表中,对deleted和inserted表进行检查,并决定如何处理。
5)NOTFORREPLICATION项说明当一个复制过程在修改一个触发器表时,与该表相关联的触发器不能被执行。
例如:
createtriggertrig1
onsforupdate
asdeclare@bageint,@aageint
select@bage=sagefromdeleted
select@aage=sagefrominserted
if(@aage<@bage)
begin
print'年龄只能增长,更改失败'
rollback
end
触发器执行:
5、定义数据库安全性
(1)SQLserver安全认证模式:
windows安全验证和混合安全验证
(2)登录管理
登录(SQL服务器用户)通过账号和口令访问SQLserver数据库
(3)用户管理
登录用户只有成为数据库用户(databaseuser)后,才能访问数据库
(4)角色管理
(5)授权管理
1)通过对象资源管理器授权
2)通过DCL语言授权
GRANT语句的一般格式:
GRANT<权限>[,<权限>]...
[ON<对象类型><对象名>]
TO<用户>[,<用户>]...
[WITHGRANTOPTION];
(6)受限访问
三、实验内容
1、使用SQL语句建立如下数据库及基本表
建库名称为“姓名1”,要求:
将主数据库文件“姓名1.MDF”放置在C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data文件夹中,其文件大小自动增长为按5MB增长;
将事务日志文件“学号姓名1.LDF”放置在C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data文件夹中,其文件大小自动增长为按1MB增长。
建表如下:
1.建立学生表Students,其结构为:
学号,姓名,性别,年龄,籍贯,民族,email,党员否,所在年级。
其中“学号”为主键,唯一标识。
姓名不允许为空。
性别只能为‘男’或‘女’;15〈年龄〈100;民族默认为“汉族”,籍贯默认为“天津”。
在年龄上建立降序索引。
2.建立教师表Teachers,其结构为:
教师号,姓名,性别,年龄,职称,email,工资。
其中“教师号”为主键,唯一标识。
姓名不允许为空。
职称只能为‘教授’或‘副教授’,‘讲师’,‘助教’;
3.建立课程表Courses,其结构为:
课程号,课程名,学分,学时数。
其中“课程号”为主键,唯一标识。
课程名不允许为空。
1〈学分〈5;15〈学时数〈120
4.建立选课表Choices,其结构为:
学号,课程号,成绩。
其中“学号,课程号”为主键。
0〈=成绩〈=100
5.建立任课表Teaching,其结构为:
教师号,课程号,班级,学生数。
其中“教师号,课程号”为主键。
根据如上语义建立表及表见的关联(外键)。
2、在对象资源管理器中建库,名称为“姓名2”,使用管理器建立表,将建好的数据库和表转化为SQL语句,和手写的SQL比较。
3、建立如下触发器
1.在学生表上建立触发器trgs1:
当有学生记录被修改时给出提示“学生记录被修改”
2.在教师表上建立触发器trgt1:
修改教师的薪水只能增长,不能减少。
3.在教师表上建立触发器trgt2:
对教师表记录进行修改或插入操作时,如果教师的年龄到达60岁时给出提示“到达退休年龄”,并将此教师记录于离退休教师表中。
(离退休教师表需要建立)
4.在任课表上建立触发器trgtc1:
插入选课记录时,如果人数小于15人时,给出提示“选课人数不足15人”
4、完成如下
1.建立学籍管理用户U1,拥有对学生表及选课表的查询,修改和删除的权限。
2.建立U2,U3,具有对教师表和任课表的查询权限。
3.建立角色role1,具有对学生表的查询权限及对选课表的插入和对成绩的修改权限。
4.将角色role1的权限授予用户U2及U3。
5、在查询分析器中插入一些基本的数据,为后续练习SQL语句做准备。
插入一些数据:
学生表Students
学号
姓名
性别
年龄
籍贯
民族
党员否
所在年级
20070201
张三
男
19
天津
汉
是
2
20070302
李四
男
20
北京
满族
否
3
20070203
李楠
女
20
天津
汉
否
2
20070204
王彤
女
21
天津
否
2
20070205
刘璋
男
21
河北
汉
否
2
教师表Teachers
教师号
姓名
性别
年龄
职称
工资
19970001
孙凯
男
35
副教授
2300
19980002
刘坤
男
46
教授
2500
20040003
张悦
女
28
讲师
2000
课程表Courses,
课程号
课程名
学分
学时数
01
数据库
2
45
02
操作系统
3
60
03
网络
2
45
04
数据结构
3
60
05
算法设计
2
45
06
软件工程
2
30
选课表Choices,
学号
课程号
成绩
20070201
01
85
20070201
02
76
20070201
03
20070302
01
45
20070302
02
90
20070302
04
95
20070203
01
67
20070203
04
50
任课表Teaching,
教师号
课程号
班级
学生数
19970001
01
051
25
19980002
02
052
35
20040003
03
043
27
20040003
04
043
27
19970001
05
055
40
备份次数据库:
右键任务——备份
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验一 创建数据库及数据库对象管理 实验 创建 数据库 对象 管理