史上最全的MSSQL复习笔记.docx
- 文档编号:27238675
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:53
- 大小:73.33KB
史上最全的MSSQL复习笔记.docx
《史上最全的MSSQL复习笔记.docx》由会员分享,可在线阅读,更多相关《史上最全的MSSQL复习笔记.docx(53页珍藏版)》请在冰豆网上搜索。
史上最全的MSSQL复习笔记
1、什么就是SQL语句
sql语言:
结构化得查询语言。
(StructuredQueryLanguage),就是关系数据库管理系统得标准语言。
它就是一种解释语言:
写一句执行一句,不需要整体编译执行。
语法特点:
1、没有“”,字符串使用‘’包含
2、没有逻辑相等,赋值与逻辑相等都就是=
3、类型不再就是最严格得。
任何数据都可以包含在‘’以内
4、没有bool值得概念,但就是在视图中可以输入true/false
5、它也有关系运算符:
><>=<==<>!
=,它返回一个bool值
6、它也有逻辑运算符:
!
(not)&&(and)||(or)
7、它不区别大小写
2、使用sql语句创建数据库与表
语法:
createdatabase数据库名称
onprimary–默认在主文件组上
(
name=’逻辑名称_data’,–当您发现它不就是一句完整得sql语句,而仅仅就是一个处理结构中得某一句得时候,就需要添加,
size=初始大小,–数值不包含在‘’以内
文件增长,
maxsize=最大容量,
’物理路径’
)
logon
(
name=’逻辑名称_log’,–当您发现它不就是一句完整得sql语句,而仅仅就是一个处理结构中得某一句得时候,就需要添加,
size=初始大小,–数值不包含在‘’以内
文件增长,
maxsize=最大容量,–一般来说日志文件不限制最大容量
’物理路径’
)
MySQL
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
判断数据库文件就是否已经存在:
数据库得记录都存储在master库中得sysdatabases表中
自动切换当前数据库
使用代码开启外围应该配置器
execsp_configure'showadvancedoptions',1
RECONFIGURE
execsp_configure'xp_cmdshell',1
RECONFIGURE
自定义目录 xp_cmdshell可以创建出目录 'mkdirf:
\project':
指定创建目录
execxp_cmdshell'mkdirf:
\project'
usemaster
exists函数判断中得查询语句就是否返回结果集,如果返回了结果集则得到true,否则得到false
ifexists(select*fromsysdatabaseswherename='School')
dropdatabaseSchool删除当前指定名称得数据库
createdatabaseSchool
onprimary
(
name='School_data',逻辑名称、说明最多能够存储100mb数据,如果没有限制就可以将硬盘存储满
size=3mb,初始大小
maxsize=100mb,最大容量
=10%,文件增长一次增长10%
'f:
\project\School_data、mdf'
),
创建文件组
mygroup
(
name='School_data1',逻辑名称、说明最多能够存储100mb数据,如果没有限制就可以将硬盘存储满
size=3mb,初始大小
maxsize=100mb,最大容量
=10%,文件增长一次增长10%
'F:
\qiyi\School_data1、ndf'
)
logon
(
name='School_log',逻辑名称
size=3mb,初始大小
maxsize=100mb,最大容量
=10%,文件增长一次增长10%
'f:
\project\School_log、ldf'
),
(
name='School_log1',逻辑名称
size=3mb,初始大小
maxsize=100mb,最大容量
=10%,文件增长一次增长10%
'F:
\qiyi\School_log1、ldf'
)
3、创建数据表
语法:
createtable表名
(
字段名称字段类型字段特征(就是否为null,默认值标识列主键唯一键外键check约束),
字段名称字段类型字段特征(就是否为null,默认值标识列主键唯一键外键check约束)
)
创建老师表Teacher:
Id、Name、Gender、Age、Salary、Birthday
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
useSchool
ifexists(select*fromsysobjectswherename='Classes')
droptableClasses
createtableClasses
(
Classidintidentity(1,1),
ClassNamenvarchar(50)notnull
)
ifexists(select*fromsysobjectswherename='teacher')
droptableteacher
createtableTeacher
(
Idintidentity(1,1),可以同时创建多个特征,用空格分隔开。
identity就是标识列,第一个参数就是种子,第二个就是增量
Namenvarchar(50) notnull,notnull标记它得值不能为null不能不填写
ClassIdintnotnull,
Genderbitnotnull,
Ageint ,
Salarymoney,如果不标记为notnull、那么就相当于标记了null
Birthdaydatetime
)
4、数据完整性约束
实体完整性:
实体就就是指一条记录。
这种完整性就就是为了保证每一条记录不就是重复记录。
就是有意义得
—主键:
非空与唯一、一个表只有一个主键,但就是一个主键可以就是由多个字段组成得组合键
—标识列:
系统自动生成,永远不重复
—唯一键:
唯一,但就是可以为null,只能null一次
域完整性:
域就就是指字段,它就是为了保证字段得值就是准与有效,合理值
—类型就是否null,默认值,check约束,关系
自定义完整性:
—check约束,存储过程触发器
引用完整性:
一个表得某个字段得值就是引用自另外一个表得某个字段得值。
引用得表就就是外键表,被引用得表就就是主键表
—1、建立引用得字段类型必须一致
—2、建立引用得字段得意义一样
—3、建立主外键关系得时候选择外键表去建立主外键关系
—4、建立主外键关系得字段在主表中必须就是主键或者唯一键
—5、对于操作得影响:
—1、在添加数据时,先添加主键表再添加外键表数据
—2、在删除得时候先外键表数据再删除主键表数据
—级联得操作:
不建议使用:
会破坏数据完整性
—不执行任何操作:
该报错就报错,该删除就删除
—级联:
删除主表记录,从表引用该值得记录也被删除
—设置null:
删除主表记录,从表对应得字段值设置为null,前提就是可以为null
—设置为default:
删除主表记录,从表对应得字段值设置为default,前提就是可以为default
主键约束(PKPrimarykey)唯一键约束(UQunique)外键约束(FKforeignkey)默认值约束(DFdefault)check约束(CKcheck)
语法:
altertable表名
addconstraint前缀_约束名称约束类型约束说明(字段关系表达式值)
MySQL
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
useSchool
ifexists(select*fromsysobjectswherename='PK_Classes_Classid')
altertableclasses dropconstraintPK_Classes_Classid
altertableclasses
addconstraintPK_Classes_Classidprimarykey(classid)
为id添加主键
altertableteacher
addconstraintPK_teacher_idprimarykey(id)
为name添加唯一键
altertableteacher
addconstraintUQ_Teacher_Nameunique(Name)
同时创建salary得默认约束与age得check约束
altertableteacher
addconstraintDF_Teacher_Salarydefault(5000)forsalary,
constraintCK_Teacher_Agecheck(age>0andage<=100)
为teacher表得classid字段创建主外键
ifexists(select*fromsysobjectswherename='FK_Teacher_Classes_Classid')
altertableteacher dropconstraintFK_Teacher_Classes_Classid
altertableteacher
withnocheck不检查现有数据
addconstraintFK_Teacher_Classes_Classidforeignkey(classid)referencesclasses(classid)
ondeletesetdefault 级联操作
不执行任何操作:
该报错就报错,该删除就删除 noaction默认选择
级联:
删除主表记录,从表引用该值得记录也被删除cascade
设置null:
删除主表记录,从表对应得字段值设置为null,前提就是可以为null setnull
设置为default:
删除主表记录,从表对应得字段值设置为default,前提就是可以为default setdefault
5、四中基本字符类型说明
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
len(参数)获取指定参数内容得字符个数
selectLEN('abcd')【4】运行结果
selectLEN('中华人民共与国')【7】
DataLength(参数):
获取指定内占据得字节数空间大小
selectDataLength('abcd')【4】
selectDataLength('中华人民共与国')【14】
char类型:
当空间分配后,不会因为存储得内容比分配得空间小就回收分配得空间。
但就是如果存储得内容超出了指定得空间大小,就会报错,当您存储得内容得长度变化区间不大得时候可以考虑使用char
selectLEN(char)fromCharTest【2】
selectDataLength(char)fromCharTest【10】
varchar var变化得:
当您存储得内容小于分配得空间得时候,多余得空间会自动收缩。
但就是如果存储得内容超出了指定得空间大小,就会报错当存储得内容波动区间比较大时候使用varchar
selectLEN(varchar)fromCharTest【2】
selectDataLength(varchar)fromCharTest【2】
nchar n代表它就是一个unicode字符。
规定不管什么样得字符都占据两个字节。
char:
空间就是固定得
selectLEN(nchar)fromCharTest【10】
selectDataLength(nchar)fromCharTest【20】
nvarchar n var char
selectLEN(nvarchar)fromCharTest【2】
selectDataLength(nvarchar)fromCharTest【4】
6、SQL基本语句
数据插入
调用方法一一对应原则:
类型对应,数量对应,顺序对应
语法:
形参实参
insertinto表名([字段列表])values(值列表)–数据必须要符合数据完整性
插入操作就是单个表得操作
插入操作insert一次只能插入一条记录
MySQL
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
useSchool
插入teacher所有字段得数据、如果在表后没有指定需要插入得字段名称,那么就默认为所有字段添加值
但就是一定需要注意得就是:
标识列永远不能自定义值不能人为插入值
仅当使用了列列表并且IDENTITY_INSERT为ON时,才能为表'Teacher'中得标识列指定显式值。
insertintoTeachervalues('张三',5,1,30,4000,'1984911')
insertintoTeacher(Name,ClassId,Gender,Age,Salary,Birthday)values('张三',5,1,30,4000,'1984911')
不为可以为null得字段插入值 :
可以null得字段可以不赋值
列名或所提供值得数目与表定义不匹配
insertintoTeacher(Name,ClassId,Gender,Age,Salary)values('李四',5,1,30,4000)
非空字段一定需要赋值:
不能将值NULL插入列'Gender',表'School、dbo、Teacher';列不允许有Null值。
INSERT失败
insertintoTeacher(Name,ClassId,Age,Salary)values('李四',5,30,4000)
为有默认值得字段插入值:
1、不写这一列让系统自动赋值
insertintoTeacher(Name,ClassId,Gender,Age)values('王五',5,1,30)
指定null或者default
insertintoTeacher(Name,ClassId,Gender,Age,Salary,Birthday)values('赵六',5,1,30,default,null)
数据必须完全符合表得完整性约束
insertintoTeacher(Name,ClassId,Gender,Age,Salary,Birthday)values('赵六1',5,1,300,default,null)
任意类型得数据都可以包含在''以内, 不包括关键字
insertintoTeacher(Name,ClassId,Gender,Age,Salary,Birthday)values('马鹏飞','5','0','15',default,null)
但就是字符串值如果没有包含在''以内、会报错 列名'兰鹏'无效。
insertintoTeacher(Name,ClassId,Gender,Age,Salary,Birthday)values('兰鹏','5','0','15',default,null)
但就是数值组成得字符串可以不使用''包含
insertintoTeacher(Name,ClassId,Gender,Age,Salary,Birthday)values(123,'5','0','15',default,null)
日期值必须包含在’‘以内,否则就就是默认值
insertintoTeacher(Name,ClassId,Gender,Age,Salary,Birthday)values('邹元标2','5','0','15',default,'1991911')
数据删除
语法:
delete[from]表名where条件
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
deletefromTeacherwhereAge<20
特点:
1、删除就是一条一条进行删除得
2、每一条记录得删除都需要将操作写入到日志文件中
3、标识列不会从种子值重新计算,以从上次最后一条标识列值往下计算
4、这种删除可以触发delete触发器
truncatetable表名没有条件,它就是一次性删除所有数据
特点:
1、一次性删除所有数据,没有条件,那么日志文件只以最小化得数据写入
2、它可以使用标识列从种子值重新计算
3、它不能触发delete触发器
truncatetableteacher
数据更新(数据修改):
一定需要考虑就是否有条件
语法:
update表名set字段=值,字段=值。
。
where条件
MySQL
1
2
3
4
5
6
7
updateTeachersetGender='true'
修改时添加条件
updateTeachersetGender=0whereId=20
多字段修改
updateTeachersetClassId=4,Age+=5,Salary=5000whereId=22
修改班级id=4,同时年龄》20岁得人员工资+500
updateTeachersetSalary=Salary+500whereClassId=4andAge>20
数据检索–查询
语法:
*代表所有字段
select*/字段名称列表from表列表
MySQL
1
2
3
4
5
selectStudentNo,StudentName,Sex,[Address]fromStudent
可以为标题设置 别名,别名可以就是中文别名
selectStudentNoas学号,StudentName姓名,性别=Sex,[Address]fromStudent
添加常量列
selectStudentNoas学号,StudentName姓名,性别=Sex,[Address],国籍='中华人民共与国'fromStudent
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
select得作用
1、查询
2、输出
select1+1
+就是运算符,系统会自动为您做类型转换
select1+'1'
select'1'+1
如果+两边都就是字符串,那么它就就是一字符串连接符
select'1'+'1'
select'a'+1
可以输出多列值
select1,2,34,3,545,67,567,6,7
Top、Distinct
select*fromStudent
top可以获取指定得记录数,值可以大于总记录数、但就是不能就是负值
selecttop100*fromStudent
百分比就是取ceiling
selecttop10percent*fromStudent
重复记录与原始得数据表数据无关,只与您查询得结果集有关系distinct可以去除结果集中得重复记录结果集中每一列得值都一样
selectdistinctLoginPwd,Sex,EmailfromStudent
selectdistinctSexfromStudent
MySQL
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
聚合函数:
1、对null过滤
2、都需要有一个参数
3、都就是返回一个数值
sum:
求与:
只能对数值而言,对字符串与日期无效
avg:
求平均值
count:
计数:
得到满足条件得记录数
max:
求最大值:
可以对任意类型得数据进行聚合,如果就是字符串就比较拼音字母进行排序
min:
求最小值
获取学员总人数
selectCOUNT(*)fromStudent
查询最大年龄值
select MIN(BornDate)fromStudent
select max(BornDate)fromStudent
查询总分
selectSUM(StudentResult)fromResultwhereStudentNo=2
平均分
selectavg(StudentResult)fromResultwhereSubjectId=1
注意细节:
select SUM(StudentName)fromStudent
select SUM(BornDate)fromStudent
select min(StudentName)fromStudent
select max(StudentName)fromStudent
查询学号,姓名,性别,年龄,电话,地址查询女生
selectStudentNo,StudentName,Sex,BornDate,AddressfromStudentwhereSex='女'andBornDate>'199011'andAddress='广州传智播客'
指定区间范围
selectStudentNo,StudentName,Sex,BornDate,AddressfromStudentwhere BornDate>='199011'andBornDate<='199311'
between、、、and >= <=
selectStudentNo,StudentName,Sex,BornDate,Addressfrom
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 史上最全 MSSQL 复习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)