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

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143
