一、实验准备

(1)运行SQL-SERVER服务管理器, 启动服务
(2)运行查询分析器,  以DBA身份登录数据库服务器:
     用户名sa,  密码123456
(3)打开CREATE-TABLE.SQL并执行, 建立有关表.

“CREATE-TABLES.SQL”文件 https://www.cnblogs.com/wkfvawl/p/10843788.html

二 实验内容

1. 建立图书管理有关表,要求有完整性约束(实体,参照,用户定义):
注意: 外码与对应主码的类型一致!
出版社( 出版社号, 出版社名) 主码?
   PUBLISHER(PNO,PNAME)
图书(书号,书名,价格,作者,  出版社号) 主码?外码?
   BOOK(BNO,TITLE, PRICE, AUTHOR , PNO)  
读者(读者号,姓名,性别,年龄)主码?
   READER(RNO,NAME, AGE, SEX)
借阅(读者号,书号,借日期,还日期)  日期类型DATETIME,主码?外码?
   LOAN(RNO, BNO, LOANDATE, RETURNDATE)
数据类型:
CHAR(n)   字符型 
INT        整型
NUMERIC ( 精度,小数位数)     实型  精度是总有效位数
DATETIME      日期型

建立PUBLISHER的语句截图:

CREATE TABLE PUBLISHER
(
PNO CHAR() PRIMARY KEY,
PNAME CHAR() NOT NULL
)

建立BOOK的语句截图:

CREATE TABLE BOOK
(
BNO CHAR() PRIMARY KEY,
TITLE CHAR() NOT NULL,
PRICE NUMERIC(,) NOT NULL,
AUTHOR CHAR() NOT NULL,
PNO CHAR() REFERENCES PUBLISHER(PNO)
)

建立READER的语句截图:

CREATE TABLE READER
(
RNO CHAR() PRIMARY KEY,
RNAME CHAR() NOT NULL,
AGE INT NOT NULL,
SEX CHAR() CHECK (SEX IN ('男','女'))
)

建立LOAN的语句截图(约束还书日期>=借书日期,
    (CHECK约束涉及多个列, 用元组级CHECK实现)

CREATE TABLE LOAN
(
RNO CHAR(),
BNO CHAR(),
LOANDATE DATETIME,
RETURNDATE DATETIME,
PRIMARY KEY(RNO,BNO),
FOREIGN KEY (RNO) REFERENCES READER(RNO),
FOREIGN KEY (BNO) REFERENCES BOOK (BNO),
CHECK (RETURNDATE>=LOANDATE)
)

2. 为用户 'ZhangPing' 创建了一个密码为'Rose'的 SQL Server 登录
语法格式:  EXEC sp_addlogin  '用户名', '密码'

EXEC sp_addlogin  'ZhangPing', 'Rose'  

3. 将用户 ZhangPing 添加到当前数据库
语法格式:   EXEC sp_adduser '用户名'

 EXEC sp_adduser 'ZhangPing'

4. 将PUBLISHER表的查询权,插入权授予PUBLIC
(注意SQL SERVER与教材不同:授权语句中要去掉关键字TABLE 一次只能对一个表授权)

GRANT SELECT , INSERT
ON PUBLISHER
TO PUBLIC

5. 将BOOK所有权授予ZhangPing

GRANT ALL
ON BOOK
TO ZhangPing

6. 将READER的查询权授予ZhangPing

GRANT SELECT
ON READER
TO ZhangPing

7. 将LOAN的插入权删除权授予ZhangPing

GRANT SELECT,DELETE
ON LOAN
TO ZhangPing

8. 将READER的查询权修改权授予ZhangPing

GRANT SELECT,UPDATE
ON READER
TO ZhangPing

9. 将LOAN的删除权从ZhangPing收回

REVOKE DELETE
ON LOAN
TO ZhangPing

10重新以ZhangPing登录 ( 查询分析器选择文件菜单的”连接”, 输入用户名ZhangPing,  密码Rose)
登录后, 注意将当前数据库选择为”STUDB”。
登录后更改密码, 将密码'Rose'改为 'coffee'
格式:   EXEC sp_password '旧密码', '新密码'

EXEC sp_password 'Rose', 'coffee'

11.  对PUBLISHER插入1行数据。
对BOOK插入1行数据
SQL语句执行截图:

INSERT
INTO PUBLISHER(PNO,PNAME)
VALUES('','清华大学出版社')

INSERT
INTO BOOK
VALUES('','数据库系统概论',42.00,'王珊,萨师煊','');

12. 查询BOOK所有数据 。

SELECT *
FROM BOOK

13. 查询LOAN所有数据,  报错(未被授权查询)

拒绝了对对象 'LOAN'(数据库 'STUDB',所有者 'dbo')的 SELECT 权限。

14. 插入一行READER数据,  报错(未被授权查询)

拒绝了对对象 'READER'(数据库 'STUDB',所有者 'dbo')的 INSERT 权限。

15. 建立一个班级表CLASS, 有班号,班名列,  报错(无权建表)

服务器: 消息 262,级别 14,状态 1,行 1
在数据库 'STUDB' 中拒绝了 CREATE TABLE 权限。

16、重新以DBA登录 (注意当前数据库是STUDB)
对STUDENT表的Sdept建立普通索引

CREATE INDEX STUDEPT ON STUDENT(SDEPT)

17、对COURSE表的CNAME建立唯一索引
SQL语句执行截图:

CREATE UNIQUE INDEX COURSENAME ON COURSE(CNAME)

数据库——SQL-SERVER练习(6) 数据库安全性的更多相关文章

  1. SQL Server 进阶 01 数据库的设计

    SQL Server 进阶 01 数据库的设计 本篇目录 课程内容回顾及介绍 为什么需要规范的数据库设计 设计数据库的步骤 绘制E-R(实体-关系)图 实体-关系模型 如何将E-R图转换为表 数据规范 ...

  2. SQL Server 2008 R2数据库镜像部署

    概述 “数据库镜像”是一种针对数据库高可用性的基于软件的解决方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中.建议使用不同位置的两台服务器来承载.在 ...

  3. SQL Server 维护计划实现数据库备份(Step by Step)(转)

    SQL Server 维护计划实现数据库备份(Step by Step) 一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server  ...

  4. SQL Server 维护计划实现数据库备份(Step by Step)

    转自:http://www.cnblogs.com/gaizai/archive/2011/11/18/2254445.html 一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSM ...

  5. 第七篇 SQL Server安全跨数据库所有权链接

    本篇文章是SQL Server安全系列的第七篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...

  6. SQL Server 2005恢复数据库详细图文教程

    不少需要用到sql2005的程序,有很多新手还是会操作,这里写个详细的图文教程送个菜鸟们,高手请飘过.适用于独立主机的朋友使用,如果你还没安装,请按照这个教程来安装 SQL Server 2005图文 ...

  7. 【译】第七篇 SQL Server安全跨数据库所有权链接

    本篇文章是SQL Server安全系列的第七篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...

  8. SQL Server 2008 R2数据库镜像部署图文教程

    数据库镜像是一种针对数据库高可用性的基于软件的解决方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中 概述 “数据库镜像”是一种针对数据库高可用性的基 ...

  9. SQL Server中通用数据库角色权限的处理详解

    SQL Server中通用数据库角色权限的处理详解 前言 安全性是所有数据库管理系统的一个重要特征.理解安全性问题是理解数据库管理系统安全性机制的前提. 最近和同事在做数据库权限清理的事情,主要是删除 ...

  10. 如何修改SQL Server 2008 R2数据库的内存

    本篇经验将和大家介绍如何修改SQL Server 2008 R2数据库的内存,希望对大家的工作和学习有所帮助! 工具/原料   SQL Sever 2008 R2数据库已安装 方法/步骤   1 打开 ...

随机推荐

  1. Redis学习笔记(九、Redis总结)

    1.Redis五大对象: 在Redis中有五大对象,分别是String.List.Hash.Set.Sorted Set. 这五大对象都有自己独特的编码方式,每个编码的实现都不一样,有自己独特的使用场 ...

  2. JavaScript-----14.内置对象 Array()和String()

    5. 数组对象 5.1数组的创建 之前提到过数组的创建方式 字面量 new Array() //创建数组的两种方式 //1.利用数组字面量 var arr = [1, 2, 3]; console.l ...

  3. R学习

    R内容: R-1 基础 R-2 基础绘图 R-3 t分布--t置信区间--t检验 R-4 方差分析 R-5 相关分析-卡方分析 R-6 线性回归模型分析流程 R实战第7章 线性回归 逻辑回归 主成分分 ...

  4. BZOJ3894/LG4313 文理分科 新建点最小割

    问题描述 BZOJ3894 LG4313 题解 显然一个人只能选文/理 -> 一个人只能属于文(S).理(T)集合中的一个 可以把选择文得到 \(art\) 的收益看做选择文失去 \(scien ...

  5. 1、web爬虫,requests请求

    requests请求,就是用python的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请求,一种是需要用户登录或者验证的请求 一.不需要用 ...

  6. Linux下dos2unix命令将windows文件编码格式dos转换成Unix格式

    问题描述: 在Windows系统下面使用文本编辑器notepad后传到Linux系统下的话 Linux下处理和执行一般都存在一些问题,我们可以通过命令查看文件是否是dos格式的, 如果有如图所示的M标 ...

  7. Java描述设计模式(07):适配器模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.适配器模式简介 1.基础概念 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在 ...

  8. JPA入门简介与搭建HelloWorld(附代码下载)

    场景 在学习JPA之前先来了解下JDBC与各大数据库的关系. 很久之前出现了很多数据库比如Mysql.Oracle.SqlServer.DB2等.这就导致了应用程序要连哪个数据库就要使用哪个数据库的A ...

  9. 松软科技前端课堂:JavaScript 日期

    JavaScript 日期输出 默认情况下,JavaScript 将使用浏览器的时区并将日期显示为全文本字符串: Tue Apr 02 2019 09:01:19 GMT+0800 (中国标准时间) ...

  10. 搭建 Telegraf + InfluxDB + Grafana 监控遇到几个小问题

    1:如果同一台服务器上安装有多个MongoDB实例,telegraf.conf 中关于 MongoDB 如何配置?配置数据在[INPUT PLUGINS的[[inputs.mongodb]]]部分. ...