实验目的

  • 熟练掌握基本表的各种完整性定义的方法。
  • 掌握用户的创建以及使用方法。
  • 掌握SQL语句对数据库和表进行安全控制的方法。

实验内容

  • 利用图形用户界面对Student库中,增加以下的约束和索引,并验证违反相关完整性时的数据库系统的违约处理。
    (1) S表的非空约束:为出生日期添加非空约束。

    (2) S表的主键约束:将学号(sno)设置为主键。

    (3) S表的唯一约束:为姓名(sname)添加唯一约束(唯一键)。

    (4) S表的缺省约束:为性别(sgender)添加默认值,其值为“男”。
  • 利用图形用户界面针对Student库,给SC表添加外键约束,将sno,cno设置为外键,其引用表分别是S表和C表,外键名分别为:sc_fk_sno和sc_fk_cno。尝试不同的违反外键约束的策略并进行验证NO action/ restrict/ cascade/ set null。(10分)
    NO ACTION

    CASCADE

    SET NULL
  • 删除student库中的三张表,用SQL语言重新创建有以下约束的表。(10分)
    • S表:基本约束要求同第1小题。
    • C表:cpno是c表的外键,引用自C表的cno。
    • SC表:外键约束如第2小题,同时要求成绩grade的有效值为[0,100]。另外,SC表增加新列id:将id设为主键,且自增字段,每次插入一条选课记录自动+1。

S表的创建

CREATE TABLE student.s (
SNO VARCHAR(45) NOT NULL,
SNAME VARCHAR(45) NULL,
SGENDER VARCHAR(45) NULL DEFAULT '男',
SBIRTH VARCHAR(45) NOT NULL,
SDEPT VARCHAR(45) NULL,
PRIMARY KEY (`SNO`),
UNIQUE INDEX `SNAME_UNIQUE` (`SNAME` ASC) VISIBLE);

C表的创建

CREATE TABLE student.c (
CNO VARCHAR(45) NOT NULL,
CNAME VARCHAR(45) NULL,
CPNO VARCHAR(45) NULL,
CREDIT INT NULL,
PRIMARY KEY (CNO),
FOREIGN KEY (CPNO) REFERENCES student.c (CNO)
);  

SC表的创建

CREATE TABLE SC (ID INT NOT NULL AUTO_INCREMENT,SNO VARCHAR(45) NULL,CNO VARCHAR(45) NULL,GRADE INT NULL CHECK(GRADE >= 0 AND GRADE <= 100),PRIMARY KEY (ID),CONSTRAINT sc_fk_cno  FOREIGN KEY (CNO)  REFERENCES c (CNO),  CONSTRAINT sc_fk_sno  FOREIGN KEY (SNO)  REFERENCES s (SNO)
);
  • 用SQL语言针对student库添加或者删除以下的完整性约束。(10分)

(1) 增加sgender的取值约束:S表中的sgender取值只能是“男”或“女”。

 ALTER TABLE SADD CHECK(SGENDER IN ('男','女'));

(2) 删除第(1)小题所创建的sgender取值约束。

 ALTER TABLE SDROP CONSTRAINT S_CHK_1;

(3) 删除SC表的外键约束。

ALTER TABLE SC
DROP CONSTRAINT sc_fk_cno,
DROP CONSTRAINT sc_fk_sno;

(4) 学生表S中增加新列tname(表示该学生的导师姓名),且要求导师名必须全部是字母(大写小写均可以)、且长度不能低于8个字符。

ALTER TABLE S
ADD COLUMN TNAME VARCHAR(45) NULL
CONSTRAINT C CHECK(char_length(TNAME) >= 8 AND TNAME like '^[A-Za-z]+$');
  • 在图形用户界面中创建新用户并针对student数据库进行赋权。(20分)

(1) 创建两个可以登录的本地用户: 王明,李勇。
(2) 完成以下的权限赋予:
① 用户王明对所有表均有select和insert的权力。
② 用户李勇对该数据库select,insert,delete, update和create权限。

进入后选择Add Account创建好本地用户后,进入Schema Privileges选择Add Entry授予权限。

  • 用SQL语句授权和收回权限并对权限加以验证。(40分)

要求:首先创建职工表e和部门表d,表结构如下:
职工表e(职工号,姓名,年龄,职务,工资,部门号)
部门表d(部门号,名称,经理名,地址,电话号)
然后创建每道题中涉及的用户,针对每个小题先完成授权并进行权限验证,然后再收回权限并进行权限验证。
(1) 用户王明对两个表有查询权限。

CREATE USER 'wangming'@'localhost';GRANT SELECT
ON TABLE e
TO 'wangming'@'localhost';GRANT SELECT
ON TABLE d
TO 'wangming'@'localhost';REVOKE SELECT
ON TABLE e
FROM 'wangming'@'localhost';REVOKE SELECT
ON TABLE d
FROM 'wangming'@'localhost';

(2) 用户李勇对两个表有insert和delete权限。

CREATE USER 'liyong'@'localhost';
GRANT INSERT,DELETE
ON TABLE e
TO 'liyong'@'localhost';GRANT INSERT,DELETE
ON TABLE d
TO 'liyong'@'localhost';
SHOW GRANTS FOR 'liyong'@'localhost';REVOKE INSERT,DELETE
ON TABLE e
FROM 'liyong'@'localhost';REVOKE INSERT,DELETE
ON TABLE d
FROM 'liyong'@'localhost';

(3) 每个职工只对自己的记录有查询权限。

CREATE VIEW view_employee
AS SELECT * FROM e
WHERE CONCAT(ENAME,'@localhost') = user();GRANT SELECT ON view_employee TO 'wangming'@'localhost' , 'liyong'@'localhost' , 'liuxing'@'localhost' , 'zhangxin'@'localhost' , 'zhouping'@'localhost' , 'yanglan'@'localhost';

(4) 用户刘星对职工表有查询权限,对工资字段具有更新权限。

CREATE USER 'liuxing'@'localhost';
GRANT SELECT
ON TABLE e
TO 'liuxing'@'localhost';GRANT UPDATE(salary)
ON TABLE d
TO 'liuxing'@'localhost';REVOKE SELECT
ON TABLE e
FROM 'liuxing'@'localhost';REVOKE UPDATE(salary)
ON TABLE d
FROM 'liuxing'@'localhost';

(5) 用户张新具有修改这两个表的结构的权限。

CREATE USER 'zhangxin'@'localhost';
GRANT ALTER
ON TABLE e
TO 'zhangxin'@'localhost';  GRANT ALTER
ON TABLE d
TO 'zhangxin'@'localhost';  REVOKE ALTER
ON TABLE e
FROM 'zhangxin'@'localhost';  REVOKE ALTER
ON TABLE d
FROM 'zhangxin'@'localhost';

(6) 用户周平具有对两个表的所有权限,并具有给其他用户授权的权限。

CREATE USER 'zhouping'@'localhost';GRANT ALL
ON TABLE e
TO 'zhouping'@'localhost'
WITH GRANT OPTION;GRANT ALL
ON TABLE d
TO 'zhouping'@'localhost'
WITH GRANT OPTION;REVOKE ALL PRIVILEGES
ON TABLE e
FROM 'zhouping'@'localhost';REVOKE ALL PRIVILEGES
ON TABLE d
FROM 'zhouping'@'localhost';REVOKE GRANT OPTION
ON TABLE e
FROM 'zhouping'@'localhost';REVOKE GRANT OPTION
ON TABLE d
FROM 'zhouping'@'localhost';

(7) 用户杨兰具有从每个部门职工中查询最高工资,最低工资,平均工资的权限,他不能查看每个人的工资。

CREATE VIEW view_yanglan
AS SELECT max(salary),min(salary),avg(salary)
FROM e;CREATE USER 'yanglan'@'localhost';GRANT SELECT
ON view_yanglan
TO 'yanglan'@'localhost';REVOKE SELECT
ON view_yanglan
FROM 'yanglan'@'localhost';

数据库原理实验三——数据完整性与安全性控制相关推荐

  1. 数据库原理实验三 数据库综合设计实验 实验报告

    实验三 数据库系统设计综合实验 1.实验目的通过实验,使学生掌握数据库系统设计和开发的一般方法,能够设计并实现简单的数据库系统. 2.实验要求熟悉实验室实验环境,掌握实验预备知识,了解实验中故障排除的 ...

  2. 数据库原理实验 三个关系表 学生表students 课程表course 学生选课表sc

    实验数据如下: 在数据库中建立三个关系表Students,Course,SC. 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname, ...

  3. 求数学系或计算机系姓张的学生的信息,数据库原理实验三 - 图文

    实验三.数据库的简单查询和连接查询实验 班级: 学号: 姓名: 日期:12月18日 1. 实验目的 了解SQL Server 查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句 ...

  4. 【数据库原理实验(openGauss)】实验报告

    <数据库系统原理实验>报告 文章目录 <数据库系统原理实验>报告 一.实验课程性质和教学目标 二.实验课程教学基本要求 三.实验教学内容 实验一 认识DBMS系统 (一)实验目 ...

  5. 数据库原理实验二 数据库管理 实验报告

    广州大学学生实验报告实验二:数据库管理 此篇分享仅供参考学习,图文禁复制,勿作他用!谢谢配合! 数据库原理实验之实验二:数据库管理 软件:Oracle SQL Developer 今天实验才刚开始,花 ...

  6. 《数据库原理实验指导书》

    <数据库原理实验指导书> 河南科技大学软件学院 目录 实验规则 基本实验方法 实验环境 实验一 数据定义 实验二 数据更新 实验三 数据查询-简单查询和连接查询 实验四 数据查询-分组查询 ...

  7. 【数据库原理实验(openGauss)】金融场景化实验

    金融场景化实验 文章目录 金融场景化实验 一.金融数据模型 1.E-R图 2.关系模式 3.物理模型 Client(客户)表 bank_card(银行卡)表 finances_product(理财产品 ...

  8. mysql的触发器实验报告_数据库原理实验报告s11-数据库触发器的创建.doc

    数据库原理实验报告s11-数据库触发器的创建.doc 数据库管理系统SQLSERVER实验报告第1页2011年5月4日实验11数据库触发器的建立实验日期和时间20141128实验室软件工程室班级12计 ...

  9. mysql数据库原理实验报告_数据库原理实验报告(Mysql).doc

    数据库原理实验报告(Mysql).doc 实验项目列表 序号实验项目名称指导教师1实验一 数据库的定义实验(验证性)2实验二 数据库的建立和维护实验(验证性)3实验三 数据库的查询实验(验证性)4实验 ...

最新文章

  1. 程序员不要去这样的公司
  2. Centos7-安装mysql5-7
  3. chrome jsp 显示不正常_JSP程序在chrome下不兼容的问题!
  4. CVPR 2021 | 姿态可控的语音驱动
  5. 7-14 修建道路 (10 分)
  6. Atitit.http httpclient实践java c# .net php attilax总结
  7. ffmpeg播放器 android,Android 调用ffmpeg 播放器开发(一)
  8. 轻松学习理解ACL访问控制列表(转)
  9. “超详细” 山特UPS C3KR 的驱动安装教程
  10. MDIO接口FPGA代码
  11. Anciety 0CTF/TCTF 2018 总结
  12. iOS 分享 第三方登录 Twitter 注册应用以及读写权限
  13. 大数据BI工具Tableau学习【第一期】:Tableau简介和安装
  14. VirtualBox 安装虚拟机步骤
  15. instrument之Time Profiler总结
  16. 由观影引发的几点人生思考
  17. 【论文解读】Cross-domain Correspondence Learning for Exemplar-based Image Translation
  18. 计算机大赛响亮口号,登山比赛团队名称和团队口号
  19. Android样式之view animation
  20. 计算机科学之父(人工智能之父)-艾伦·麦席森·图灵

热门文章

  1. 【c语言】warning C4566
  2. TextBox限制只能输入字母或数字
  3. 【stata】处理重复值之duplicates drop_all和duplicates drop_all, force区别(整行数据重复和单元格数据重复)
  4. thinking in system
  5. 努力工作的价值,以及为什么自己总是逃避努力工作
  6. little kernel分析
  7. MongoDB副本集搭建、连接php
  8. 基于物理的渲染学习心得——面向使用的PBR理论
  9. JDK1.7 ImageIO的一个梗
  10. Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException