mg娱乐电子4355_mg娱乐电子游戏平台
做最好的网站

《SQL Server 2008从入门到精通》20180627

时间:2019-11-22 09:12来源:计算机数据
数据库范式理论 范式理论是为了建立冗余较小结构合理的数据库所遵循的规则。关系数据库中的关系必须满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(

数据库范式理论

范式理论是为了建立冗余较小结构合理的数据库所遵循的规则。关系数据库中的关系必须满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BCNF、第四范式(4NF)、第五范式(5NF)

1、进入sqlserver management studio

第一范式

对象的任意属性不能被拆分,每个属性有且仅有一个值,即没有重复的行,没有重复的列。

2、选择安全性->登录名->右键新建登录名

第二范式

在第一范式的基础上,要求所有非主属性都与主属性完全相关。假设属性1和属性2为主属性,属性3为非主属性,如果属性1或者属性2能唯一确定属性3,则不符合2NF,只有(属性1+属性2)能唯一确定属性3(有助于数据库基础性操作的实现)才符合2NF

3、在常规里输入用户名和密码

第三范式

在第二范式的基础上,要求除主键外其他字段不相关,不存在依赖性。比如一张表中非主属性1,2,3,属性1=属性2-属性3,则该表不满足第三范式。(不要在数据库中存储可以简单计算得出的数据)

4、在"用户映射"里“映射到此登录名的用户”选择该用户可以操作的数据库

BCNF

在第三范式基础上,要求表中所有字段(包括主键)都互不相关,不存在依赖性。即主属性不依赖于主属性。

5、在“数据库角色成员身份”里选择"db_datareader",

第四范式

表内不存在多对多关系。如果A和B是1:N的关系,A和C是1:N的关系,B和C互相独立,则不满足第四范式。

6、这样一个只读用户就创建完成了。

第五范式

在第四范式的基础上,可以分解成更小的表。从最终结构重新建立原始结构。

 

Transact-SQL行构造器

例:用INSERT语句一次性插入多行数据

CREATE TABLE a(
    Column1 NVARCHAR(max),
    Column2 NVARCHAR(max)
);
Go
INSERT INTO a VALUES(‘1’,’1’),(‘2’,’2’),(‘3’,’3’);

服务器角色参考 (可以对数据库的操作)

用存储过程新建登录名和用户名

创建登录名huyan1,密码111111,默认数据库test,切换到test数据库下,创建登录名huyan1在test数据库中的用户hy1

EXECUTE sp_addlogin ‘huyan1’,’111111’,’test’
USE test
EXEC sp_adduser 'huyan1','hy1'

或使用sp_grantdbaccess创建一个与登录名相同的数据库用户名。

EXEC sp_addlogin 'hy2';
GO
USE test
EXEC sp_grantdbaccess 'hy2'

注:仅创建登录名而没有创建数据库用户名,该登录名无法正常登录数据库。可以使用sql语句创建数据库用户名,或者右键登录名—属性—用户映射中勾选数据库。创建和删除数据库用户名语句必须在该数据库下执行。用户名hy1默认权限public。

删除新建的登录名:

EXECUTE sp_droplogin ‘huyan1’

删除新建的用户名:

USE test;
EXECUTE sp_dropuser ‘hy1’

bulkadmin 可以运行 bulk insert 语句  bulk insert 详细 

用户权限

dbcreator   创建,修改,删除,还原任何数据库

主要语句

USE test;
GRANT SELECT,UPDATE,DELETE
ON Customers
TO huyan1

REVOKE SELECT,UPDATE,DELETE
ON Customers
TO huyan1

注: GRANT语句必须在目标数据库下执行。

diskadmin   管理磁盘文件

授予用户权限的前提

(1)创建登录名huyan1,密码111111,默认数据库test

EXCUTE sp_addlogin ‘huyan1’,’111111’,’test’

(2)在huyan1登录名的目标数据库test下创建用户hy

USE test;
CREATE USER hy FOR LOGIN huyan1 WITH DEFAULT_SCHEMA=test;

或者右键点击huyan1登录名,在属性—用户映射中勾选test数据库,系统会自动在test数据库下添加huyan1的用户

processadmin   可以终止在数据库引擎实例中运行的程序

授予权限

USE test;
GRANT SELECT,UPDATE,DELETE
ON Customers
TO hy

注:这里的hy指的是数据库用户名而非登录名。

securityadmin   可以管理登录名及其属性,具有grant,deny,和revoke服务器和数据库级别权限,还可以重置sql server 登录名的密码

撤销权限

撤销用户hy在Customers表中的SELECT,UPDATE,DELETE权限

USE test;
REVOKE SELECT,UPDATE,DELETE
ON Customers
TO hy

serveradmin     可以更改服务器范围的配置选项和关闭服务器

拒绝权限

拒绝用户hy在Customers表中的DELETE权限

USE test;
DENY DELETE
ON Customers
TO hy

注:REVOKE和DENY的区别在于,用户权限被DENY后无法通过其组或角色成员身份继承该权限,而权限被REVOKE后还可以通过继承和授予得到。

setupadmin     可以添加和删除链接服务器,并对可以执行某些系统执行存储过程(如,sp_serveroption)

创建角色并分配给用户

在test数据库下,用存储过程创建角色p_test,该角色的所有者为hy。为p_test角色授予Customers表的所有权限。用存储过程为角色p_test分配成员用户hy。

USE test
EXEC sp_addrole ‘p_test’,’hy’;
GRANT ALL ON Customers TO p_test;
EXEC sp_addrolemember ‘p_test’,’hy’;

注:角色所有者hy并不是角色成员。用EXEC sp_addrole ‘p_test’,’hy’语句创建角色p_test并设置所有者为hy,并不代表hy是p_test的成员,拥有p_test角色的权限。

为角色p_test移除成员hy

EXEC sp_droprolemember ‘p_test’,’hy’;

sysadmin         在sql server中进行任何活动,该觉得的权限跨越所有其他固定服务器角色,默认情况下,windows builtinadmin组(本地管理员组)的所有成员都是sysadmin固定服务器角色的成员

服务器角色

bulkadmin:允许运行BULK INSERT语句,用于从文本中大量插入数据到数据库中
dbcreator:允许创建,修改,删除和还原任何数据库,适用于助理DBA和开发人员
diskadmin:允许管理磁盘文件,比如镜像数据库和添加备份设备,适用于助理DBA
processadmin:允许多任务化的管理,可以通过多个进程做多件事情,也可以删除进程
securityadmin:安全管理员,管理登录名及其属性
serveradmin:服务管理员,更改服务器的配置选项和关闭服务器
setupadmin:管理链接服务器,控制启动的存储过程
sysadmin:有权执行任何任务,仅适用于数据库管理员

 

数据库角色

用户映射参考  (可以对数据库的数据进行操作)

标准角色

允许用户适用单一的权限来创建角色。如创建一个叫User的角色,允许用户INSERT,SELECT,UPDATE数据库中的指定表,不允许其他任务。

db_owner       可以执行数据库中技术所有动作的用户

应用程序角色

允许用户为特定应用程序创建密码保护

db_accessadmin 可以添加,删除用户的用户

预定义数据库角色

这些角色是内置的,不能被更改权限
(1) db_owner:可以做其他角色能做的所有事情,还可以做一些管理性操作
(2) db_accessadmin:可以通过添加或删除用户指定谁可以访问数据库
(3) db_securityadmin:可以修改角色成员身份和管理权限
(4) db_dlladmin:可以在数据库中运行所有DLL命令,创建修改和删除数据库对象而不必浏览其数据
(5) db_backupoperator:备份数据库
(6) db_datareader:读取所有用户所有表中的数据
(7) db_datawriter:可以添加更改删除所有用户所有表中的数据
(8) db_denydatareader:不能读取任何用户任何表中的数据
(9) db_denydatawriter:不能对任何用户任何表中的数据做添加更改删除的操作
(10) public:每个数据库用户都属于public角色,未对用户授予权限时该用户将继承public权限。该角色不能被删除。

db_datareader 可以查看所有数据库中用户表内数据的用户

系统数据库

db_datawrite 可以添加,修改,删除所有数据库用户表内数据的用户

master数据库

存储了登录名和用户ID所属角色,系统配置,数据库名和初始化信息,是最重要的数据库。

db_ddladmin 可以在数据库中执行ddl操作的用户,DDL(Data Definition Language)数据表的创建以及管理

model数据库

存储了创建数据库时的一些预定义标准如数据库初始大小,特定信息集等,是tempdb数据库的基础。

db_securityadmin 可以管理数据库中与安全权限有关所有动作的用户

tempdb数据库

临时性数据库,在sql server2008启动时新建,在sql server2008关闭时丢失。主要存储用户建立的临时表和临时存储过程。

db_backoperator 可以备份数据库的用户(可以发布dbcc和checkPoint语句,这两个语句一般在备份前使用

编辑:计算机数据 本文来源:《SQL Server 2008从入门到精通》20180627

关键词: