1
2 --1,创建登录,可以有两种方式:
3 --(1)以SQL验证的方式新建一个新的登录:
4 exec sp_addlogin 'allnen','all123'--创建登录,登录名和密码
5
6 --(2)以windows验证的方式将windows中的某个用户授予登录数据库服务的权限:
7 exec sp_grantlogin 'PC-200901051757\allnen'
8 --或者
9 --create login [PC-200901051757\allnen] from windows
10
11 --如果要删除某个登录,可以用如下方式:
12 --drop login [PC-200901051757\allnen]
13
14 --2,现在就可以用allnen这个帐号登录,但这里先不要登录,我们先给这个帐号授予创建数据库和表的权限
15
16 exec sp_grantdbaccess @loginame='allnen',@name_in_db='allnenDbUser'--将登录名映射到当前数据库
17
18 --exec sp_revokedbaccess 'allnen'--从当前数据库中删除对应的登录用户映射,也就是去除某个用户访问此数据库的权限
19
20 grant create database,create table to allnen--授予当前用户创建数据库的权限
21 --如果要去除某个用户的权限,用revoke,如果要拒绝某个用户的相关权限,用deny,revoke和deny的区别,请查阅其他相关文章
22 --deny create database to allnenDbUser
23
24 --3,现在就可以用allnen这个帐号登录,然后创建数据库和表了
25 --有时候如果要创建的数据库已经存在 ,那创建数据库的时候就会出错,
26 --所以我们一般在创建数据库前都会先判断要创建的数据库是否已经存在,
27 --如果存在,就先将存在的数据库删除
28 IF EXISTS(SELECT * FROM sysdatabases WHERE name='stuDB')
29 drop database stuDB
30 GO
31 --当然,也可以用db_id(数据库名)这个函数来判断
32
33 --创建数据库的时候,有可能数据库文件已经存在,或者文件目录不存在等,所以,我们还要先在硬盘中创建对应的文件夹
34
35 exec sp_configure 'show advanced options', 1--显示高级选项,然后才可以配置xp_cmdshell
36 reconfigure--从新应用配置,让配置生效
37 exec sp_configure 'xp_cmdshell',1--启用xp_cmdshell功能
38 reconfigure
39 exec xp_cmdshell 'mkdir D:\project\'--用xp_cmdshell创建目录
40 GO
41 --开始创建数据库
42 CREATE DATABASE stuDB
43 ON PRIMARY --默认就属于PRIMARY主文件组,可省略
44 (
45 NAME='stuDB_data', --主数据文件的逻辑名
46 FILENAME='D:\project\stuDB_data.mdf', --主数据文件的物理名
47 SIZE=5mb, --主数据文件初始大小
48 MAXSIZE=100mb, --主数据文件增长的最大值
49 FILEGROWTH=15% --主数据文件的增长率
50 )
51 LOG ON
52 (
53 NAME='stuDB_log',
54 FILENAME='D:\project\stuDB_log.ldf',
55 SIZE=2mb,
56 FILEGROWTH=1MB
57 )
58 GO
59 --如果要创建多个数据库文件或者多个日志文件,则可以用这样的方式
60 CREATE DATABASE employees
61 ON
62 (
63 /*-主数据文件的具体描述-*/
64 NAME = 'employee1',
65 FILENAME = 'D:\project\employee1_Data.mdf' ,
66 SIZE = 10,
67 FILEGROWTH = 10%
68 ),
69 (
70 /*-次要数据文件的具体描述-*/
71 NAME = 'employee2',
72 FILENAME = 'D:\project\employee2_Data.ndf' ,
73 SIZE = 20,
74 MAXSIZE = 100,
75 FILEGROWTH = 1
76 )
77 LOG ON
78 (
79 /*-日志文件1的具体描述-*/
80 NAME = 'employeelog1',
81 FILENAME = 'D:\project\employeelog1_Log.ldf' ,
82 SIZE = 10,
83 FILEGROWTH = 1
84 ),
85 (
86 /*-日志文件2的具体描述-*/
87 NAME = 'employeelog2',
88 FILENAME = 'D:\project\employeelog2_Log.ldf' ,
89 SIZE = 10,
90 MAXSIZE = 50,
91 FILEGROWTH = 1
92 )
93 GO
94
95
96 --
97
98 --4,创建完数据库后,我们就可以开始创建表了
99 USE stuDB --将当前数据库设置为stuDB
100 GO
101 --同样,在创建表的时候,表也有可能已经存在,所以我们要先将已存在的表删除
102 IF EXISTS(SELECT * FROM sysobjects WHERE name='stuInfo')
103 drop table stuInfo
104 GO
105 CREATE TABLE stuInfo /*-创建学员信息表-*/
106 (
107 stuName VARCHAR(20) NOT NULL , --姓名,非空(必填)
108 stuNo CHAR(6) NOT NULL, --学号,非空(必填)
109 stuAge INT NOT NULL, --年龄,INT类型默认为4个字节
110 stuID NUMERIC(18,0), --身份证号
111 stuSeat SMALLINT IDENTITY (1,1), --座位号,自动编号
112 stuAddress TEXT --住址,允许为空,即可选输入
113 )
114 GO
115
116 IF EXISTS(SELECT * FROM sysobjects WHERE name='scoreInfo')
117 DROP TABLE scoreInfo
118 GO
119 CREATE TABLE scoreInfo
120 (
121 scoreInfoId int identity(1,1) primary key,
122 score int,
123 stuNo CHAR(6)
124 )
125 GO
126
127 --5,创建完表之后,要做的事情就算给表建立约束
128 alter table stuInfo
129 add constraint PK_stuNo primary key(stuNo)--主键约束
130 go
131 alter table stuInfo
132 add constraint UQ_stuID unique(stuID)--唯一约束
133 go
134 alter table stuInfo
135 add constraint DF_stuAddress default('地址不详') for stuAddress--默认约束
136 go
137 alter table stuInfo
138 add constraint CK_stuAge check(stuAge >20 and stuAge<40)--检查约束
139 go
140 alter table scoreInfo
141 add constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo) --外键约束
142 go
1 --1,用管理员登录
2 --2,用管理员创建新数据库
3 --3,用管理员创建新登录
4 --4,授权新登录名访问新数据库的权限
5 use master
6 go
7 exec sp_configure 'show advanced options',1
8 reconfigure
9 exec sp_configure 'xp_cmdshell',1
10 reconfigure
11 exec xp_cmdshell 'mkdir d:\Data\'
12
13
14 if exists(select * from sysdatabases where name='StuDb')
15 drop database StuDb
16 create database StuDb on primary
17 (
18 name='StuDb',
19 filename='D:\Data\StuDb.mdf',
20 size=5MB,
21 filegrowth=15%
22 )
23 log on
24 (
25 name='StuDb_log',
26 filename='D:\Data\StuDb.ldf',
27 size=3MB,
28 maxsize=10MB,
29 filegrowth=10%
30 )
31 go
32 use StuDb
33 go
34 if exists(select *from sysobjects where name='StuInfo')
35 drop table StuInfo
36 go
37 create table StuInfo(
38 StuNo int identity(1,1),
39 StuName nvarchar(10)
40 )
41 go
42 if exists(select *from sysobjects where name='ScoreInfo')
43 drop table ScoreInfo
44 go
45 create table ScoreInfo(
46 ScoreInfoId int identity(1,1),
47 ExamScore float,
48 LabScore float,
49 StuNo int
50 )
51 --删除约束
52 alter table ScoreInfo
53 drop constraint CK_ExamScore,CK_LabScore
54 go
55 alter table ScoreInfo
56 alter column ExamScore numeric(5,2)
57 alter table ScoreInfo
58 alter column LabScore numeric(5,2)
59 go
60 --约束
61 alter table StuInfo
62 add constraint PK_StuNo primary key(StuNo)
63 alter table ScoreInfo
64 add constraint CK_ExamScore check(ExamScore>0 and ExamScore<100)
65 alter table ScoreInfo
66 add constraint CK_LabScore check(LabScore>0 and LabScore<100)
67 alter table ScoreInfo
68 add constraint FK_StuNo foreign key(StuNo) references StuInfo(StuNo)
69 go
70
71 --授权windows用户访问数据库
72
73 exec sp_grantlogin 'lab-04\administrator'--即将过期的方式
74 create login [lab-04\administrator] from windows----推荐方式
75
76 drop login [lab-04\administrator]--删除登录
77
78 create login t0811 with password='t0811'--创建新sql登录
79
80 --创建新数据库用户,以前用sp_grantdbaccess,以后用
81 use StuDb
82 go
83 create user t0811InStuDb for login t0811
84 --授权访问表
85 grant select,delete,update,insert on StuInfo to t0811InStuDb
86 --取消权限
87 revoke delete on StuInfo to t0811InStuDb
88 --将t0811这个登录加入到sysadmin这个服务器级别角色中
89 --exec sp_addsrvrolemember 't0811','sysadmin'
90
91 --将t0811InStuDb这个数据库用户加入到db_owner这个数据库级别角色中
92 exec sp_addrolemember 't0811InStuDb','db_owner'
93 --拒绝某个用户的某个权限
94 deny delete on StuInfo to t0811InStuDb
95