SQL SERVER上课笔记

发布时间 2023-12-21 14:18:10作者: linyuexiyu

SQL 数据库 笔记

##############

目录

 

SQL 数据库 笔记##############

 

一、初次使用数据库

 

.二、用SSMS工具工具采用图形化的方法创建数据库(第二种方法通过T-SQL语句创建数据库)

 

三、利用T-sql创建数据库

 

四、删除数据库

 

五、数据库的相关操作分离,附加,改变数据库

 

六、创建表

 

一、初次使用数据库

{

1. 连接

}

###############

 

.二、用SSMS工具工具采用图形化的方法创建数据库(第二种方法通过T-SQL语句创建数据库)

eg:

任务:

 

步骤1:

 

步骤2:

 

ps: sqlsrver 排序规则:

 

 

 

步骤3:

 

 

 

步骤4:

 

sql 恢复模式分类:

 

 

 

步骤5:

 

三、利用T-sql创建数据库

重点概念:

 

 

 

数据库分为:数据文件|||||||文件事务日志文件(至少一个)

 

|---------------------------

 

| |

 

主要数据文件(1个) 次要数据(0个多个)

 

现在我来开始用T-sql创建数据库:

 

先理解定义:

 

 

 

步骤1:

 

CREATE DATEBASE shujukumingcheng//创建主要数据文件

ON PRIMARY(

 

name=shujumingcheng_data,

 

filename='D:\db\shujukumingcheng_data.mdf',

 

size=5MB, //MB可以省略

 

maxsize=10,//文件最大容量

 

filegrowth=15%//增长量为文件量的%15

 

)

 

log on( //创建日志文件

 

name=shujumingcheng_data,

 

filename='D:\db\shujukumingcheng_data.ldf',

 

size=5kb,//初始容量 ,这个kb不能省略,我的建议就是都写上就不用记住了

 

maxsize=unlimited,//日志最大容量不受限制

 

filegrowth=500kb//增长量kb不能省略

 

)

 

什么???只有一步好吧,完了!!!!

 

###############################################33

 

四、删除数据库

我们之前先用ssms创建数据库,使用我们还是先ssms再用t-sql语句

 

 

 

很简单!!完了

 

接下来

 

t-sql语句

 

也很简单

 

DROP DATABASE abc(数据库名称)

 

ps:t-sql语句可以删除多个数据库

 

###################################################

 

五、数据库的相关操作分离,附加,改变数据库

 

 

分离数据库的概念

 

 

 

重点:数据文件和对应日志完好无损,相当于搬走东西吧

 

接下来是方法,放张图明明白白

 

 

 

 

 

累了这部分直接搬ppt

 

 

 

 

 

分离和附加应该是相辅相成吧,我理解是这样,没听,自学哈哈哈

 

 

 

改变数据库状态

 

 

 

 

 

 

 

########################################################

 

六、创建表

创建了数据库该表了吗??

 

还是老样子两种工具

 

但是咱们先理解下表的概念

 

表分为三大要素

 

列名

 

数据类型

 

约束条件

 

 

 

接下来,终于到用ssms工具创建表了

 

 

 

 

 

 

 

 

 

 

 

发个表的例题(数据库表的题)

 

 

 

T-sql创建表:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

我找找有没有详细的链接教程

 

:【Microsoft SQL Server 新建数据库|创建基本表|学生表|字符型数据|数值型数据|默认值】 https://www.bilibili.com/video/BV19Y4y1c7ED?share_source=copy_web&vd_source=860bbf14227ff86888ae920ee49ec4f3

 

ok就这个吧,不错,偷懒不用自己录了

 

表的三大完整性:

 

 

 

 

 

 

 

 

 

 

 

alter table

 

-add 定义字段 字段名 数据类型

 

-drop columnn 字段名

 

-alter column 字段名 数据类型

 

-add <constranit约束名>定义约束

 

-drop constraint 约束名

 

修改表名

 

exec sp_rename 旧表名,新表名

 

exec sp_rename 'course','cname','coursename'修改表中的表名字段

 

add constraint 添加表的主键

 

课上的复习内容

 

1

 

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

 

144

 

145

 

146

 

147

 

148

 

149

 

150

 

151

 

152

 

153

 

154

 

155

 

156

 

157

 

158

 

159

 

160

 

161

 

162

 

163

 

164

 

165

 

166

 

167

 

168

 

169

 

170

 

171

 

172

 

173

 

174

 

175

 

176

 

177

 

178

 

179

 

180

 

181

 

182

 

183

 

/**/

 

/*

 

1.回顾:

 

关系是什么的集合?

 

行的集合(记录、元组

 

创建表的命令?

 

create table 表名

 

(字段名称 数据类型 [列级约束])

 

常见数据类型有哪些?

 

int\char varchar\float

 

decimal numeric(6,3)\date\time\datetime\money

 

约束有哪些?

 

primary key 主码 唯一且非空

 

候选码:唯一性和最小性

 

unique 唯一约束

 

not null 非空约束

 

check 检查约束

 

default 默认约束

 

foreign key 外码约束

 

参照关系:

 

有外码的表是子表,参照了父表的主码

 

2.创建表的语法

 

1)练习

 

创建department表

 

字段名称 数据类型 约束 字段说明

 

DepartmentID char(8) 主键 系部编号

 

DepartmentName varchar(20) 非空 系部名称

 

DepartmentHeader char(8) 系部主任

 

TeacherNum int >0 教师人数

 

*/

 

use student --调用数据库 student库

 

drop table department

 

create table department(

 

departmentid char(8) primary key,

 

departmentname varchar(20) not null,

 

departmentheader char(8),

 

teachernum int check(teachernum>0)

 

)

 

/*创建class表

 

字段名称 数据类型 约束 字段说明

 

ClassID char(8) 主键 班级编号

 

ClassName varchar(20) 非空 班级名称

 

Monitor char(8) 班导师

 

StudentNum int >0 学生人数

 

DepartmentID char(4) 外键 所属系部

 

*/

 

create table class1

 

(classid char(8) primary key,

 

classname varchar(20) not null,

 

monitor char(8),

 

studentnum int check(studentnum>0),

 

departmentid char(8) references department(departmentid)

 

)

 

/*

 

2)三大完整性

 

实体完整性、参照完整性、用户自定义完整性

 

3)复合主键=>表级约束

 

创建选课表register

 

选课表的关系模式: register(sid,cid,score,rdate)

 

create table register

 

(sid char(8),

 

cid char(10),

 

score decimal(4,1),

 

rdate datetime default getdate(),

 

primary key(sid,cid),

 

check(score between 0 and 100),

 

foreign key (sid)references student(studentid),

 

constraint fk_rc_cid foreign key(cid) references course(courseid)

 

)

 

3.自增字段identity

 

identity(种子,递增量) identity(1001,1)

 

创建getorder表

 

字段名称 数据类型 约束 字段说明

 

orderID int 主键,自动编号 订单编号

 

ordertime datetime 非空,默认为当前时间 订单时间

 

ordermoney money >0 订单金额

 

*/

 

create table order1

 

(orderID int primary key identity,

 

ordertime datetime default getdate() not null,

 

ordermoney money check(ordermoney>0),

 

)

 

create table student

 

(studentid char(8) primary key,

 

studentname char(10) not null)

 

create table course

 

(courseid char(8) primary key,

 

coursename char(10) not null)

 

create table register

 

(sid char(8),

 

cid char(8),

 

score decimal(4,1),

 

rdate datetime default getdate(),

 

primary key(sid,cid),

 

check(score between 0 and 100),

 

foreign key (sid)references student(studentid),

 

constraint fk_rc_cid foreign key(cid) references course(courseid)

 

)

 

/*

 

4.删除表

 

Drop table 表名

 

!先删子表再删父表

 

5.修改表结构 : alter table 表名

 

1)增加字段和删除字段(add / drop)

 

2)修改字段的数据类型(alter column)

 

3)修改字段名称或者表名(exec sp_rename)

 

4)新增约束(add <constraint 约束名>)

 

5)删除约束(drop constraint 约束名)

 

*/

 

/*

 

创建department表

 

字段名称 数据类型 约束 字段说明

 

DepartmentID char(8) 主键 系部编号

 

DepartmentName varchar(20) 非空 系部名称

 

DepartmentHeader char(8) 系部主任

 

TeacherNum int >0 教师人数

 

创建class表

 

字段名称 数据类型 约束 字段说明

 

ClassID char(8) 主键 班级编号

 

ClassName varchar(20) 非空 班级名称

 

Monitor char(8) 班导师

 

StudentNum int >0 学生人数

 

DepartmentID char(4) 外键 所属系部

 

创建getorder表

 

字段名称 数据类型 约束 字段说明

 

orderID int 主键,自动编号 订单编号

 

ordertime datetime 非空,默认为当前时间 订单时间

 

ordermoney money >0 订单金额

 

*/

 

/*

 

create table department

 

(

 

departmentid char(8) primary key,

 

departmentname varchar(20) not null,

 

departmentheader char(8),

 

teachernum int check(teachernum>0)

 

)

 

create table Class(

 

ClassID char(8),

 

ClassName varchar(20) not null,

 

Monitor char(8),

 

StudentNum int check(StudentNum>0),

 

DepartmentID char(8) ,

 

primary key(ClassID),

 

foreign key(DepartmentID) references Department(departmentID)

 

)

 

*/

 

题目:

 

1. 给course表增加新字段

字段名称 数据类型 约束 字段说明

bookname varchar(60) 非空 教材名称

period int 非空 总学时

credit int 非空 学分

 

2. 修改grade表中 字段grade的数据类型为 保留一位小数的百分制数

 

3. 给Teacher表增加新字段

字段名称 数据类型 约束 字段说明

sex char(2) 非空,男或女,默认女 教师性别

profession char(8) 助教、讲师、副教授、教授 教师职称

 

4. 给schedule表增加新字段

字段名称 数据类型 约束 字段说明

teacherid char(8) 联合主键 外键 教师编号

 

5. 给schedule表设置courseid、classid、teacherid的联合主键

 

create table product( pro_name varchar(20), pro_type varchar(20), primary key (pro_name,pro_type) );

第一种方法,新建表时增加联合

 

create table t_students(

 

id int not null,

 

name varchar(10) not null Primary Key (id, name),

 

age int,

 

dept_id int

 

)

 

第二种方法,给已有表增加联合主键:

 

create table t_dept(

id int,

name varchar(20),

stamp varchar(100)

)

--先设置非空约束

Alter table t_dept alter column dept_id int not null

Alter table t_dept alter column dept_name varchar(20) not null

--增加主键

Alter table t_dept add constraint pk_t_dept primary key( id, name)

 

再添加一个check 的用法

 

check (sgnder in('男','女'))检查约束

 

CONSTRAINT 外键名称 FOREIGN KEY (字段2) REFERENCES 外表表名(约束字段),

 

联合主键

 

create table temp3(

id int,

name varchar(10),

sex varchar(10),

primary key (id,name)

);

前面关于一系列的表的代码实在有点混乱我得找时间整理一下