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
143
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 windows10

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 allnenDbUser23

24
--3,现在就可以用allnen这个帐号登录,然后创建数据库和表了25
--有时候如果要创建的数据库已经存在 ,那创建数据库的时候就会出错,26
--所以我们一般在创建数据库前都会先判断要创建的数据库是否已经存在,27
--如果存在,就先将存在的数据库删除28
IF EXISTS(SELECT * FROM sysdatabases WHERE name='stuDB')29
drop database stuDB30
GO31
--当然,也可以用db_id(数据库名)这个函数来判断32

33
--创建数据库的时候,有可能数据库文件已经存在,或者文件目录不存在等,所以,我们还要先在硬盘中创建对应的文件夹34

35
exec sp_configure 'show advanced options', 1--显示高级选项,然后才可以配置xp_cmdshell36
reconfigure--从新应用配置,让配置生效37
exec sp_configure 'xp_cmdshell',1--启用xp_cmdshell功能38
reconfigure39
exec xp_cmdshell 'mkdir D:\project\'--用xp_cmdshell创建目录40
GO41
--开始创建数据库42
CREATE DATABASE stuDB43
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 ON52
(53
NAME='stuDB_log',54
FILENAME='D:\project\stuDB_log.ldf',55
SIZE=2mb,56
FILEGROWTH=1MB57
)58
GO 59
--如果要创建多个数据库文件或者多个日志文件,则可以用这样的方式60
CREATE DATABASE employees61
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 = 176
) 77
LOG ON 78
(79
/*-日志文件1的具体描述-*/80
NAME = 'employeelog1', 81
FILENAME = 'D:\project\employeelog1_Log.ldf' , 82
SIZE = 10, 83
FILEGROWTH = 184
), 85
(86
/*-日志文件2的具体描述-*/87
NAME = 'employeelog2', 88
FILENAME = 'D:\project\employeelog2_Log.ldf' , 89
SIZE = 10, 90
MAXSIZE = 50, 91
FILEGROWTH = 192
)93
GO 94

95

96
--97

98
--4,创建完数据库后,我们就可以开始创建表了99
USE stuDB --将当前数据库设置为stuDB 100
GO101
--同样,在创建表的时候,表也有可能已经存在,所以我们要先将已存在的表删除102
IF EXISTS(SELECT * FROM sysobjects WHERE name='stuInfo')103
drop table stuInfo104
GO105
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
GO115

116
IF EXISTS(SELECT * FROM sysobjects WHERE name='scoreInfo')117
DROP TABLE scoreInfo118
GO119
CREATE TABLE scoreInfo120
(121
scoreInfoId int identity(1,1) primary key,122
score int,123
stuNo CHAR(6)124
)125
GO126

127
--5,创建完表之后,要做的事情就算给表建立约束128
alter table stuInfo129
add constraint PK_stuNo primary key(stuNo)--主键约束130
go131
alter table stuInfo132
add constraint UQ_stuID unique(stuID)--唯一约束133
go134
alter table stuInfo135
add constraint DF_stuAddress default('地址不详') for stuAddress--默认约束136
go137
alter table stuInfo138
add constraint CK_stuAge check(stuAge >20 and stuAge<40)--检查约束139
go140
alter table scoreInfo141
add constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo) --外键约束142
go143
浙公网安备 33010602011771号