1 数据库范式理论
范式理论是为了建立冗余较小结构合理的数据库所遵循的规则。关系数据库中的关系必须满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BCNF、第四范式(4NF)、第五范式(5NF)
1.1 第一范式
对象的任意属性不能被拆分,每个属性有且仅有一个值,即没有重复的行,没有重复的列。
1.2 第二范式
在第一范式的基础上,要求所有非主属性都与主属性完全相关。假设属性1和属性2为主属性,属性3为非主属性,如果属性1或者属性2能唯一确定属性3,则不符合2NF,只有(属性1+属性2)能唯一确定属性3(有助于数据库基础性操作的实现)才符合2NF
1.3 第三范式
在第二范式的基础上,要求除主键外其他字段不相关,不存在依赖性。比如一张表中非主属性1,2,3,属性1=属性2-属性3,则该表不满足第三范式。(不要在数据库中存储可以简单计算得出的数据)
1.4 BCNF
在第三范式基础上,要求表中所有字段(包括主键)都互不相关,不存在依赖性。即主属性不依赖于主属性。
1.5 第四范式
表内不存在多对多关系。如果A和B是1:N的关系,A和C是1:N的关系,B和C互相独立,则不满足第四范式。
1.6 第五范式
在第四范式的基础上,可以分解成更小的表。从最终结构重新建立原始结构。
2 Transact-SQL行构造器
例:用INSERT语句一次性插入多行数据
CREATE TABLE a(
Column1 NVARCHAR(max),
Column2 NVARCHAR(max)
);
Go
INSERT INTO a VALUES(‘1’,’1’),(‘2’,’2’),(‘3’,’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’
4 用户权限
4.1 主要语句
USE test;
GRANT SELECT,UPDATE,DELETE
ON Customers
TO huyan1
REVOKE SELECT,UPDATE,DELETE
ON Customers
TO huyan1
注: GRANT语句必须在目标数据库下执行。
4.2 授予用户权限的前提
(1)创建登录名huyan1,密码111111,默认数据库test
EXCUTE sp_addlogin ‘huyan1’,’111111’,’test’
(2)在huyan1登录名的目标数据库test下创建用户hy
USE test;
CREATE USER hy FOR LOGIN huyan1 WITH