数据库的实现
---恢复内容开始---
数据库名称:必须唯一,且长度不能超过128个字符
--示例
--启动外围配置项
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'xp_cmdshell',1
reconfigure
go
-- 调用dos命令创建文件夹
exec xp_cmdshell 'md E:\user',no_output go --不输出
--判断是否存在数据库
if DB_ID('UserDB') is not null
drop database UserDB
/*
if exists(select * from sys.sysdatabases where [name]='UserDB')
drop databse UserDB
*/
go
--创建数据库
create database UserDB
on
(
name = userdb,
filename = 'E:\user\userdb.mdf',
size = 10MB, -- KB MB GB TB
maxsize = unlimited, --没有上限
filegrowth = 1MB
)
log on --日志文件
(
name = userdb_log,
filename = 'E:\user\userdb_log.ldf',
size = 3MB,
maxsize = 10MB,
filegrowth = 10%
)
go
常用的约束类型:
主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空
唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。
检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束
默认约束(Default Constraint):某列的默认值
外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的那列
约束名的取名规则推荐采用:约束类型_约束字段
ALTER TABLE 表名
ADD CONTRAINT 约束名称 PRIMARY KEY (字段)
举例: 外键约束
alter table Locations --从表
add constraint FK_Locations_Countries_Country_Id foreign key(Country_Id) references Countries(Country_Id) --主表
添加:
alter table 表
add 字段(如:name varchar(20) not null)
删除列:
alter table 表
drop column 列名
修改列:
alter table 表
alter column 字段 数据类型 [null|not null]
数据完整性: 确保数据完整性和一致性的机制
域完整性:数据类型检查约束,输入格式,默认值,非空约束
实体完整性: 主键 (是唯一标识,不为空),唯一索引,表识字段
参照完整性:引用完整性
用户自定义完整性:规则,触发器,表约束
SQLServer 添加用户 添加角色 分配权限
--创建一个简单的登录,登录名为:newlogin;登录密码:123456;默认数据库:master,默认数据库也可以不指定。
EXEC sp_addlogin 'newlogin','123456','master'
--创建用户
--创建一个简单的用户,如果不指定用户名,则添加到当前数据库登录名中,如果不指定角色,则该用户默认属于public角色。下为添加newlogin登录名。
EXEC sp_adduser 'newlogin'
--创建一个带用户名的用户,用户可以与登录名相同(同上一种类似),也可以不同,但要设定当前登录名,用户角色可选,默认为public。下为将用户newuser添加到newlogin登录名中。
EXEC sp_adduser 'newlogin','newuser'
--创建角色
EXEC sp_addrole 'newrole'
--下为将用户下为将用户newuser添加到newlogin登录名中。并指定newrole角色。
EXEC sp_adduser 'newlogin','newuser','newrole'
--为角色newrole赋予jobs表的所有权限
GRANT ALL ON jobs TO newrole
--为角色newrole赋予sales表的查、改权限
GRANT SELECT,UPDATE ON sales TO newrole
--禁止角色newrole使用employees表的插入权限
DENY INSERT ON employees TO newrole
另一种创建用户和赋予角色的方式
--为登录newlogin在数据库中添加安全账户newuser
EXEC sp_grantdbaccess 'newlogin','newuser'
--添加newuser为角色newrole的成员
EXEC sp_addrolemember 'newrole','newuser'
--数据库用户、角色、登录的删除操作
--删除当前数据库用户
EXEC sp_revokedbaccess 'newuser';
--删除数据库登录
EXEC sp_droplogin 'newlogin'
--删除数据库角色
EXEC sp_droprole 'newrole'
--从数据库角色(newrole)中删除用户(newuser)
EXEC sp_droprolemember 'newrole', 'newuser'
--用SQL代码新建登录、用户
--创建带密码的mylogin登录名,MUST_CHANGE 选项需要用户首次连接服务器时更改此密码。
CREATE LOGIN mylogin WITH PASSWORD = '123456' MUST_CHANGE;
--创建映射到凭据的登录名。
--以下示例将创建mylogin登录名。此登录名将映射到mycredential凭据。
CREATE LOGIN mylogin WITH PASSWORD = '123456',
CREDENTIAL = mycredential;
--从Windows 域帐户创建登录名
--如果从Windows 域帐户映射登录名,则登录名必须用方括号([ ]) 括起来。
CREATE LOGIN [jack\xiangzhao] FROM WINDOWS;
--如果指定用户名,则不使用默认登录名作为该数据库用户
CREATE USER myuser FOR LOGIN mylogin
--以下示例将创建用户myuser拥有的数据库角色myrole
CREATE ROLE myrole AUTHORIZATION myuser;
--以下示例将创建db_role固定数据库角色拥有的数据库角色myrole
CREATE ROLE myrole AUTHORIZATION db_role