SqlServer基础知识总结Word下载.docx
- 文档编号:17469389
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:37
- 大小:31.34KB
SqlServer基础知识总结Word下载.docx
《SqlServer基础知识总结Word下载.docx》由会员分享,可在线阅读,更多相关《SqlServer基础知识总结Word下载.docx(37页珍藏版)》请在冰豆网上搜索。
单位必须完整(必须具有”B”,eg:
KB、MB等)
数据库的逻辑名称不能出现重复
5)建议
将数据文件和日志文件进行分开存放
数据库的初始大小及增长速度计算后在定义
3.删除数据库
Dropdatabase数据库名
2)示例
--2、删除数据库
--练习:
删除名为Xoa的数据库
--检查数据库是否存在
--databases:
视图,存在与Master数据库中
ifexists(select*fromsys.databaseswherename='
xoa'
dropdatabaseXoa
3)建议
删除数据库之前尽量使用判断语句检查数据库是否存在。
4.建表
1)数据类型
字符类型
✧Char:
非unicode的固定长度的字符类型
✧Varchar:
非unicode的可变长度的字符类型
✧Nchar:
unicode的固定长度的字符类型
✧Nvarchar:
unicode的可变长度的字符类型
✧Text
数值
Int、float、decimal、number
布尔类型
Bit
日期类型
Datetime
二进制
Image
2)语法
Createtable表名
字段名类型[(长度)][特征]
注:
特征—非空(Notnull)、自增(Identity)
创建部门表(Department)
--记录Id(deptId,int,自增)、部门名称(deptName,varchar(50),非空)
createtableDepartment
deptIdintidentity(1,1),
deptNamevarchar(50)notnull
4)数据完整性
实体完整性
✧要求
唯一标识每行记录
✧实现
主键、唯一、自增
域完整性
保证列数据的有效性
数据类型、非空、默认值、检查
引用完整性
引用完整性约束保证两(多)表之间数据的有效性
引用关系
自定义完整性
通过编写自定义的逻辑或规则实现数据的验证。
存储过程、触发器、规则
5)约束(Constraint)
主键约束(PrimaryKeyConstraint)
作用:
数据唯一且不允许出现null值
唯一约束(UniqueKeyConstraint)
数据唯一但允许出现一次null值
检查约束(CheckConstraint)
数据符合规则
引用约束(ForeignKey……References)
保证两表之间数据的有效性
默认值约束(DefaultConstraint)
提供默认的字段值
6)命名规则
缩写_列名
7)分类
行内约束
--行内约束
createtableUsers
--主键约束
--主键可以由多个字段组成(复合主键),主键列字段不能为空
UserIdintidentity(1,1)primarykey,
UserNamevarchar(20)notnull,
--唯一约束
Accountvarchar(20)notnullunique,
--检查约束
Pwdvarchar(20)notnullcheck(len(pwd)>
=6andlen(pwd)<
=20),
Ageintnotnullcheck(age>
=18andage<
=60),
--引用约束
DeptIdintreferencesDepartment(deptId),
--默认值约束
Memovarchar(200)default('
这个家伙很懒,什么都没留'
--方式
UserIdintidentity(1,1),
Accountvarchar(20)notnull,
Pwdvarchar(20)notnull,
Ageintnotnull,
DeptIdint,
Memovarchar(200),
--约束
--primarykey(UserId),
constraintpk_UserIdprimarykey(UserId),
--unique(Account),
constraintuq_Accountunique(Account),
--ck_Pwdcheck(len(pwd)>
constraintck_Pwdcheck(len(pwd)>
constraintck_Agecheck(age>
--foreignkey(deptId)referencesDepartment(deptId)
constraintfk_DeptIdforeignkey(deptId)referencesDepartment(deptId)
省略constraint时会自动生成约束名,而带有constraint时可以自定义约束名
外部约束
Memovarchar(200)
go
--约束
altertableUsers
addconstraintpk_UserIdprimarykey(UserId)
addconstraintuq_Accountunique(Account)
addconstraintck_Pwdcheck(len(pwd)>
=20)
addconstraintck_Agecheck(age>
=60)
addconstraintfk_DeptIdforeignkey(deptId)referencesDepartment(deptId)
addconstraintpk_UserIdprimarykey(UserId),
constraintuq_Accountunique(Account),
constraintck_Pwdcheck(len(pwd)>
constraintck_Agecheck(age>
constraintfk_DeptIdforeignkey(deptId)referencesDepartment(deptId)
方式1、2适用于建表时已经设计好约束时使用;
方式3、4适用于在表建立后追加约束时使用。
8)删除约束
语法
Dropconstraint约束名
示例
--修改表结构
--删除约束
dropconstraintck_age
5.删除数据表
Droptable表名称
--objects:
系统视图,存在于所属的数据库
--判断表是否存在
ifexists(select*fromsys.objectswherename='
Users'
droptableUsers
go
二、Sql编程
1.输出语句
1)语句
Select
Select输出内容
Print输出内容
--1、输出语句
--格式:
select输出内容
--select后可以输出任何有效内容,如:
常数、变量及函数
select'
abc'
中国'
selectGETDATE()
print输出内容
--print后可以输出任何有效内容,如:
print'
printgetDate()
3)区别
Select在网格中对数据进行显示;
Print在消息窗口中对数据进行显示。
Select支持列别名;
print不支持列别名
4)说明
输出的内容可以是变量、常数、函数或表达式。
2.变量
1)全局变量
特点
全局变量是由系统定义和维护的,我们无法更改,只能使用。
命名规则
@@+变量名
常用全局变量
✧@@error:
获取前一条语句执行过程中的错误编号,0表示没有错误
✧@@identity:
获取前一条语句所产生的自增列的值
✧@@version:
获取当前数据库版本号
✧@@servername:
获取当前服务器的名称
✧@@rowcount:
获取受影响的行数
--2、变量
--向User表中插入数据
insertintousersvalues('
Mike'
'
123456'
20,1,DEFAULT)
--输出前一条语句所产生的自增序列值
print@@identity
--输出前一条语句所产生的错误号
print@@error
--错误编号
select*fromusers
--获取受影响的行数
print@@rowcount
--获取当前数据库版本号
print@@version
--获取当前服务器的名称
print@@servername
2)局部变量
局部变量是由用户自定义的,局部变量的定义遵循先定义后赋值的原则。
Declare变量名变量类型[(长度)]
命名规则:
@+变量名
--声明局部变量
--一次定义一个变量
declare@i1int
--一次性定义多个变量
declare@i1int,@i2int
赋值语句
✧Select
Select@变量名=值[from表名]
✧Set
Set@变量名=值/表达式/子查询
✧示例
--a、set语句赋值
set@i1=20
print@i1
set@i1=77
--b、select语句赋值
select@i1=-60
select@i1=90
--c、查询并赋值
--set语句
declare@idint
--查询语句将被视为表达式进行使用
--注:
使用过程中必须使用()括起来
--一次只能对一个变量进行赋值
set@id=(selectdeptIdfromDepartmentwheredeptName='
市场部'
print@id
--select语句
--一次可以对多个变量进行赋值
declare@idint,@namevarchar(20)
--效果等同于set语句
--select@id=(selectdeptIdfromDepartmentwheredeptName='
select@id=deptId,@name=deptNamefromDepartmentwheredeptName='
print@name
--返回多个结果值
selectdeptIdfromDepartment
declare@Idint
--set赋值时查询语句最多只能返回一个值
set@Id=(selectdeptIdfromDepartment)
select@Id=deptIdfromDepartment
--无返回值
selectdeptIdfromDepartmentwheredeptName='
教质部'
set@Id=-100
--查询语句无返回值变量将赋值为空
set@id=(selectdeptIdfromDepartmentwheredeptName='
--查询语句无返回值时将保留变量的原值
select@id=deptIdfromDepartmentwheredeptName='
✧区别【面试题】
✓Set语句一次只能对一个变量进行赋值;
select语句一次可以对多个变量进行赋值
✓Set赋值时查询将做为条件表达式;
select语句查询时可以将变量定义在语句内
✓Set赋值时查询语句最多只能有一个返回值;
select赋值时查询语句可以有多个返回值,但是只有最后一个赋值给变量
✓查询赋值时,如果查询语句无返回结果时,set将为变量赋值为null;
select将保留原值
✧应用
多变量赋值时考虑使用select;
单一赋值时考虑set。
✧注意
Select赋值时,赋值与查询不能同时使用
Set赋值效率偏高;
select赋值效率偏低
3.转换函数
1)“+”运算符
作用
✧执行算术运算(表达式中有一项为数值类型)
✧执行连接运算(表达式中运算数都不为数值类型)
--算术运算符
print2+3
--连接运算符
a'
+'
c'
--表达式执行按照从左向右的顺序进行执行
--当表达式遇到数值类型时将执行算术"
+"
法运算
1'
7'
+3
--表达式包含无法转换的数据
--执行过程中遇到数值类型则首先对参与运算的运算数进行转换
--如果转换成功则执行算术运算,否则将抛出异常
8'
+1+'
算术运算高于连接运算
2)转换函数
Cast
Cast(表达式as目标类型[(长度)])
Convert
Convert(目标类型[(长度)],表达式[,格式])
--定义变量
declare@idint,@namevarchar(50)
--查询并赋值
select@id=deptId,@name=deptNamefromDepartment
--异常:
类型转换失败
--print@id+@name
--将@id(int)转为varchar
--cast()函数
printcast(@idaschar(4))+@name
--convert()函数
printconvert(char(4),@id)+@name
Convert与cast【面试题】
Convert转换过程中可以设置转换的格式;
cast无法设置转换格式
4.流程控制语句
1)分支语句
If…else语句
If(条件表达式)
Begin
代码段1
End
Else
代码段2
说明:
sql中使用begin…end替代{},只有一条语句的代码段可以省略begin…end
--6、if分支语句
--a、if分支语句
declare@iint
set@i=20
if(@i>
100)
print'
yes'
--b、if...else分支语句
else
no'
--c、嵌套if...else语句
declare@iint,@jint
set@j=80
begin
if(@j>
150)
print'
if--->
else
end
50)
else--->
Case语句
✧语法
Case
When条件1then值表达式1,
[,else值表达式n]
--按照国际评分标准输出学生成绩信息
--包含:
学号、课程编号、成绩等级
--优:
-100
--良:
-90
--中:
-80
--差:
低于分
between...and相当于>
=且<
=
selectStudentNo,SubjectId,level=
case
when(studentresultbetween90and100)then'
优'
when(studentresultbetween80and89)then'
良'
when(studentresultbetween60and79)then'
中'
when(studentresultbetween0and59)then'
差'
else'
缺考'
end
fromResult
✧适用
✓表中数据结果值的转换,如示例
✓表结构的转换,如:
竖表转横表或横表转竖表
2)循环语句
While语句
While条件表达式
循环体;
[break/continue]
--8、while循环
--通过循环语句输出~5等个数
--声明变量并赋值
set@i=1
--循环输出@i的值
while@i<
=5
print@i
set@i=@i+1
--横向输出个数
declare@iint,@rvarchar(100)
set@r='
'
--拼接字符串
set@r=@r+CAST(@iasCHAR(5))
set@i=@i+1
--输出拼接后的字符串
print@r
--为所有学生的科目Id为的课程成绩提分
--每次提分,且最高成绩不能高于分
--如果所有学生均已及格则结束
select*fromResultwhereSubjectId=1
--定义变量存储不及格学生的人数
declare@countint
--获取不及格学生的人数
set@count=(selectCOUNT(Id)fromResultwhereSubjectId=1andStudentResult<
60)
--通过循环来更新不及格学生成绩
while(@count>
0)
--更新所有学生成绩
--条件:
科目编号为且小于
updateResultsetStudentResult=StudentResult+5
whereSubjectId=1andStudentResult<
95
--重新获取不及格学生的人数
set@count=(selectCOUNT(Id)fromResultwhereSubjectId=1andStudentResult<
修改完成'
✧Break与Continue
Br
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SqlServer 基础知识 总结