首页 > 数据库 >SQL SERVER上课笔记

SQL SERVER上课笔记

时间:2023-12-21 14:25:27浏览次数:42  
标签:varchar int 数据库 笔记 SERVER char key SQL table

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)

);

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

标签:varchar,int,数据库,笔记,SERVER,char,key,SQL,table
From: https://www.cnblogs.com/linyuexiyu/p/17918901.html

相关文章

  • Mysql报错:too many connections原因及解决方法
    原因是mysql连接数过多解决方案一:1、linux登录mysql:mysql-uroot-p;2、查看mysql允许的最大连接数showvariableslike'%max_connections%';3、查看这次mysql服务启动到现在,同一时刻最多mysql有多少连接showstatuslike'Max_used_connections';4、修改mysql最大连......
  • helm upgrade rancher server from v2.7.5 to v2.7.8 in kubernetes【helm 升级 ranch
    文章目录1.预备条件2.目标3.下载介质4.镜像入库5.升级rancher6.检查测试1.预备条件KubernetesClusterHelm&KubernetesOfflineDeployRancherv2.7.5Demo注意:如果你是在vcenter的虚拟机测试该应用,记得给当前版本做好快照,便于反复练习。2.目标rancherv2.7.5升级......
  • libevent http-server示例
    wgethttps://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gztarxvzflibevent-2.1.12-stable.tar.gz-C.cdlibevent-2.1.12-stablemkdircmake-build-debugcdcmake-build-debugcmake../-DCMAKE_BUILD_TYPE......
  • 转:mysql查看表大小
    原文:mysql查看表大小useinformation_schema;--查看各库占用大小selectTABLE_SCHEMA,concat(truncate(sum(data_length)/1024/1024,2),'MB')asdata_size,concat(truncate(sum(index_length)/1024/1024,2),'MB')asindex_sizefrominformation_schema.tables......
  • 数据库编程大赛:一条SQL计算扑克牌24点
    你是否在寻找一个平台,能让你展示你的SQL技能,与同行们一较高下?你是否渴望在实战中提升你的SQL水平,开阔你的技术视野?如果你对这些都感兴趣,那么本次由NineData主办的《数据库编程大赛》,将是你的最佳选择!大赛奖品本次数据库编程大赛的奖项安排:一等奖(1人)、二等奖(2人)、三等奖(3人)、......
  • MySQL 对 bit 类型与字符判断结果不一致现象
     结论涉及bit类型的比较时,最好给常量的比较对象都加上b前缀,比如a='1'变成a=b'1',来避免结果的非预期不一致现象。复现SQLCREATETABLEt1(`id`varchar(36),`status`bit(1),`open`bit(1),`store_id`varchar(20),PRIMARYKEY(`id`),KEY`inde......
  • MySQL 8.0.12 深入理解bit类型
     背景:在阿里巴巴推荐的MySQL建表规范里要求如下:表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsignedtinyint(1表示是,0表示否)。解释:在MySQL里表示是和否的概念可以使用如下三种方案:1.使用bit(1)类型,此时bit允许存储的是ASCII中的0和1.0表示否1表示是的概念......
  • 最新Docker搭建DVWA和SQLi-LABS漏洞练习平台
    搭建DVWADVWA是一款开源的渗透测试漏洞练习平台,内含XSS、SQL注入、文件上传、文件包含、CSRF和暴力破解等漏洞的测试环境。可以在Docker Hub上搜索DVWA,有多个用户共享了搭建好的DVWA镜像(注意,有些镜像可能存在后门),此处选择镜像——sagikazarmark/dvwa,安装命令如下:docker pull......
  • SQLSERVER导入EXCEL数据
    1、整理好对应的EXCEL表格数据,要有标题行。否则无法映射。 2、登录进入SQLSERVER数据库管理软件,选中要导入的数据库,右键-->点击任务-->选择导入数据  3、点击下一步,直到这个页面,数据源下拉选择EXCEL,选择文件路径,勾选首行包含列名称3、(1)如果点击下一步报错The'Microsof......
  • MySQL 获取日期、时间、时间戳
    MySQL获取当前日期、时间、时间戳函数_mysqldate_sub时间戳-CSDN博客#获取当前时间curtime()mysql>selectcurtime();+-----------+|curtime()|+-----------+|10:39:25|+-----------+#获取当前日期curdate()mysql>selectcurdate();+------------+|cur......