一、实验目的
二、实验内容
数据库的完整性设置。
练习一:请通过数据完整性策略实现数据的完整性。
1.表的建立
1.1XSQK表的建立
CREATE TABLE XSQK
(
学号 CHAR(6) primary key,
姓名 CHAR(8) NOT NULL,
性别 CHAR(2) NOT NULL,
出生日期 SMALLDATETIME NOT NULL,
专业 CHAR(10) NOT NULL,
所在系 CHAR(10) NOT NULL,
联系电话 CHAR(13)
)
1.2KC表的建立
CREATE TABLE KC
(
课程号 CHAR(3) primary key,
课程名 CHAR(20) NOT NULL,
教师 CHAR(10),
开课学期 INT,
学时 INT default 60,
学分 INT NOT NULL)
1.3XS_KC表的建立
CREATE TABLE XS_KC
(
学号 CHAR(6) NOT NULL,
FOREIGN KEY(学号) references XSQK(学号),
课程号 CHAR(3) NOT NULL,
FOREIGN KEY(课程号) references kc(课程号),
成绩 int check(成绩 between 0 and 100)
)
2.完整性验证
2.1实体完整性验证
insert
into XSQK
values ('072037','张三','女','1999-07-08','生工','医工','85315826');
insert
into XSQK
values ('072037','李四','女','1999-07-05','计算机','医工','85327881')
2.2域完整性验证
insert
into XS_KC
values('072037','02','102')
2.3参照完整性验证
insert
into XS_KC
values('072033','01','99')
/*XSQK表中没有学号072033的同学*/
1.创建部门表
create table 部门表
(
部门代码 char(8) primary key,
部门名 char(6) not null,
负责人 char(6) not null,
地点 char(8) not null
)
create table 员工表
(
员工代码 char(12) primary key,
姓名 char(6) not null,
家庭住址 char(4) not null,
联系电话 char(16) not null,
邮政编码 char(12) not null,
部门代码 char(8) not null,
FOREIGN KEY(部门代码) references 部门表(部门代码),
)
问题:
a)
在部门表和员工表的结构中标注主关键字。
b)
确定在部门表和员工表中共有的属性。部门代码。
c)
指出哪个表中的属性是外关键字。员工表中的部门代码是外关键字。
d)
确定哪个表是主表,哪个表是从表。部门表是主表,员工表是从表。
e)部门表和员工表是如何通过关键字实施数据完整性的。not null,primary key,
FOREIGN KEY references
一、实验目的
二、实验内容
1、设置身份验证模式:Windows身份验证模式和混合模验证模式。
2、设置登录账户
3、设置数据库用户
4、设置数据库角色。
5、设置管理对象的权限
练习一:
创建用户(
A.创建一个testlogin数据库
B.新建登录wangming,liyong,liuxing,yanglan,并设定密码,服务器角色设为“系统管理员”数据库访问为testlogin。)
2.服务器角色:右击已建好的登录名——属性——服务器角色——默认public(各种角色的区别
https://blog.csdn.net/liyun211/article/details/74192984?utm_source=app&from=singlemessage&isappinstalled=0
)
3.数据库访问:右击已建好的登录名——属性——用户映射——选择想让他拥有访问权限的数据库——确定
4.打开其他数据库显示‘无法访问’
假如显示无法登录:
右击服务器——属性——安全性——是否开启SQL Server和Windows身份验证模式
右击已建立好的登录名——属性——状态——是否设为‘授予’‘启用’
打开配置管理器——看看Named Pipes是否启用
记得重新启用服务
2.上述步骤都不行,则参考
http://jingyan.baidu.com/article/6c67b1d6ca06f02787bb1ed1.html
3.再再不行,我是删掉重新下载的(因为之前自己稀里糊涂下载了两个实例,不知道和这有没有关系,重新删除后下载就可以了,我之前的问题是新建立的登陆名服务器角色设为public不可以连接,设为sysadmin就可以连接,但是能访问到所有数据库。。。我也不知道是什么个情况)
练习二:数据库用户权限管理
给定两个关系模式
E(职工)(职工号,姓名,年龄,职务,工资,部门号)
P(部门)(部门号,名称,经理名,地址,电话)
用SQL语言中的GRANT和REVOKE语句,完成以下授权定义或存取控制功能:
a)
用户wangming对表E有SELECT权力
b)
用户liyong对P有INSERT和DELETE权力
c)
把对表E的查询权力授予用户liuxing,并给liuxing有再授权的权力
d)
对上述每一种情况,撤销各用户所授予的权力。
1. 建立表
create table P
(
部门号 char(6) primary key,
名称 char(16) not null,
经理名 char(12) not null,
地址 char(20) not null,
电话 char(12) not null
)
create table E
(
职工号 char(6) primary key,
姓名 char(12) not null,
年龄 char(6) not null,
职务 char(12) not null,
工资 char(12) not null,
部门号 char(6) not null,
foreign key(部门号) references P(部门号)
)
2.用户权限管理
2.1
GRANT SELECT
ON E
TO wangming
2.2
GRANT insert,delete
ON P
TO liyong
2.3
GRANT select
ON E
TO liuxing
WITH GRANT OPTION
2.4.1
REVOKE SELECT
ON E
FROM wangming
2.4.2
REVOKE insert,delete
ON P
FROM liyong
2.4.3
REVOKE select
ON E
FROM liuxing CASCADE