当前位置:文档之家› Sql Server 基础知识总结

Sql Server 基础知识总结

一、语句建库、表1.回顾1)数据库文件主数据文件(.mdf)次数据文件(.ndf)日志文件(.ldf) 2.建库1)语法2)必要属性存储位置初始大小增长速度3)示例4)注意事项单位必须完整(必须具有”B”,eg:KB、MB等) 数据库的逻辑名称不能出现重复5)建议将数据文件和日志文件进行分开存放数据库的初始大小及增长速度计算后在定义3.删除数据库1)语法2)示例3)建议删除数据库之前尽量使用判断语句检查数据库是否存在。

4.建表1)数据类型字符类型✧Char :非unicode的固定长度的字符类型✧Varchar :非unicode的可变长度的字符类型✧Nchar :unicode的固定长度的字符类型✧Nvarchar :unicode的可变长度的字符类型✧Text数值Int、float、decimal、number布尔类型Bit日期类型Datetime二进制Image2)语法注:特征—非空(Not null)、自增(Identity)3)示例4)数据完整性实体完整性✧要求唯一标识每行记录✧实现主键、唯一、自增域完整性✧要求保证列数据的有效性✧实现数据类型、非空、默认值、检查引用完整性✧要求引用完整性约束保证两(多)表之间数据的有效性✧实现引用关系自定义完整性✧要求通过编写自定义的逻辑或规则实现数据的验证。

✧实现存储过程、触发器、规则5)约束(Constraint)主键约束(Primary Key Constraint)作用:数据唯一且不允许出现null值 唯一约束(Unique Key Constraint)作用:数据唯一但允许出现一次null值 检查约束(Check Constraint)作用:数据符合规则引用约束(Foreign Key……References) 作用:保证两表之间数据的有效性 默认值约束(Default Constraint)作用:提供默认的字段值6)命名规则缩写_列名7)分类行内约束定义约束名外部约束用。

8)删除约束语法示例5.删除数据表1)语法2)示例二、Sql编程1.输出语句1)语句SelectPrint2)示例3)区别Select在网格中对数据进行显示;Print在消息窗口中对数据进行显示。

Select 支持列别名;print不支持列别名4)说明输出的内容可以是变量、常数、函数或表达式。

2.变量1)全局变量特点全局变量是由系统定义和维护的,我们无法更改,只能使用。

命名规则@@ + 变量名常用全局变量✧@@error :获取前一条语句执行过程中的错误编号,0表示没有错误✧@@identity :获取前一条语句所产生的自增列的值✧@@version :获取当前数据库版本号✧@@servername :获取当前服务器的名称✧@@rowcount :获取受影响的行数示例2)局部变量特点局部变量是由用户自定义的,局部变量的定义遵循先定义后赋值的原则。

语法命名规则:@+变量名示例赋值语句✧Select✧Set✧示例✧区别【面试题】✓Set语句一次只能对一个变量进行赋值;select语句一次可以对多个变量进行赋值✓Set赋值时查询将做为条件表达式;select语句查询时可以将变量定义在语句内✓Set赋值时查询语句最多只能有一个返回值;select赋值时查询语句可以有多个返回值,但是只有最后一个赋值给变量✓查询赋值时,如果查询语句无返回结果时,set将为变量赋值为null;select将保留原值✧应用多变量赋值时考虑使用select;单一赋值时考虑set。

✧注意Select赋值时,赋值与查询不能同时使用Set赋值效率偏高;select赋值效率偏低3.转换函数1)“+”运算符作用✧执行算术运算(表达式中有一项为数值类型)✧执行连接运算(表达式中运算数都不为数值类型)示例算术运算高于连接运算2)转换函数CastConvert示例Convert与cast【面试题】Convert转换过程中可以设置转换的格式;cast无法设置转换格式4.流程控制语句1)分支语句If…else语句说明:sql中使用begin…end替代{},只有一条语句的代码段可以省略begin…end示例Case语句✧语法✧示例✧适用✓表中数据结果值的转换,如示例✓表结构的转换,如:竖表转横表或横表转竖表2)循环语句While语句✧语法✧示例✧Break与ContinueBreak用于终止当前循环的执行;continue用于终止本次循环,开始下次循环5.go作用将当前go语句以前的所有代码(到上一个go语句止)视为一个代码段进行编译执行。

一般这个代码段称为一个执行计划。

Go语句也被称为批处理语句。

优势批处理语句可以提高代码的执行效率。

使用一般将一组或一个业务定义为一个执行计划三、子查询1.Select语句执行顺序1)示例代码2)执行顺序From :从原始表中抓取所有数据并且存储一个虚拟表中 Where :将虚拟表中所产生数据执行条件处理并且筛选出新数据存储到第二个虚拟表中Group by :将虚拟表2中的数据进行分组且存储到虚拟表3中Having :将虚拟表3中的数据进行筛选并存储到虚拟表4中Select :从虚拟表4中抓取所有数据并且存储到虚拟表5中(控制列的数量、列别名等)Order by :对虚拟表5中的数据进行排序并且存储到新的虚拟表中2.概述所谓子查询是指将一个查询语句作为另一个语句的一部分进行使用。

那么这个查询语句就称为子查询。

子查询可以用在赋值、查询、修改及删等操作语句中。

后三项一般作为条件进行使用。

3.等值子查询1)概述在条件语句中是通过等值判断(=)使用子查询的语句就成等值子查询。

2)示例3)注意事项等值子查询中,子查询只能返回单一的结果值。

4.非等值子查询1)概述所谓非等值子查询是指不是使用“=”运算符进行连接的查询语句。

2)示例5.[not] in1)使用当子查询中返回一组(多个)值时可以使用[not] in运算符进行连接。

2)示例3)注意事项In后的子查询只能有一个返回值列(可以有多行)6.[not] exists1)概述Exists的返回值为布尔值,可以理解为是否有数据行存在。

一般可以用来作为判断使用。

2)示例7.注意事项子查询中的列如果没有在父查询中出现是不会被显示的子查询无法在Text、NText和Image类型上使用子查询中可以使用where、group by及having子句8.对比In子查询返回的是一个查询结果集;exists子查询返回的是布尔值9.应用(什么场合使用连接查询;什么时候使用子查询)需要返回多表字段时使用连接查询只返回一个表中数据时使用子查询四、事务、视图和索引1.事务1)概述事务是一个逻辑工作单元,事务中的多个操作视为一个整体,操作之间要么同时成功,要么同时失败。

事务可以保证数据的有效性和一致行。

原子性事务中的所有操作是整体,要么同时成功,要么同时失败 一致性事务所有操作具有一致状态隔离性事务和事务之间是隔离的,不可相互操作的永久性事务成功执行后数据将被永久存储到数据库系统中3)分类自动提交事务Server中将insert、delete及Update操作语句就是按照自动方式进行提交的。

隐式事务通过set IMPLICIT_TRANSACTIONS on启动事务,开启后其后的语句自动以事务的方式进行执行。

当遇到提交语句后后面默认开启了一个新的事务(隐式事务实际中基本不被使用)。

显式事务显式事务是通过特定的语句进行开启。

显式事务是实际应用中应用较多的方式。

Begin tran[saction]开启事务Commit transaction提交事务Rollback transaction回滚事务(取消前面的操作) 5)示例一些大型项目中基本都会应用,如:银行、电商、电信等业务中。

事务一定涉及到多个表。

7)缺点事务会降低语句的执行效率。

2.视图1)概述视图是一个虚拟表,视图中存储的是查询语句.使用视图时其实实在使用他的查询语句.2)创建方式视图方式语句方式3)语法4)示例5)特点简单视图(涉及一个表或不存在引用关系的)可以像表一样进行CRUD操作如果视图中查询语句涉及多个表且存在引用关系时一般无法执行删除操作6)注意事项视图可以嵌套使用,嵌套层次一般不要超过3层(效率下降) 视图的查询语句不能使用虚拟表或表变量视图中不能使用order by子句,除非使用了top视图中不能使用into子句7)视图的优点将复杂的查询语句简单化将多表查询变为简化为单表查询有效保护隐私数据1)概述索引就是对数据进行重排的一种方式,通过所有可以有效的提高数据的检索(查询)速度.索引中存储了数据或数据的位置。

2)语法3)说明索引分类✧唯一索引:创建唯一约束将自动创建唯一索引,唯一索引要求数据唯一✧主键索引:主键索引是唯一索引的一种特例✧聚集索引:对表数据的物理顺序进行重排,一个数据表只能创建一个聚集索引✧非聚集索引:对表中数据建立索引页。

一个表可以创建多个非聚集索引Fillfactor(填充因子):设置索引页填充的百分比。

取值为0~100.填充因子建议设置在50~80左右5)优点索引可以保证数据的唯一行索引可以提高检索效率6)缺点索引会增加额外的存储空间索引会降低CUD的效率7)建议8)查询的列创建原则✧建议在较为短小的列上创建索引✧经常被上创建索引✧经常进行表连接的列上创建索引不建议创建原则✧列相同值较多的不建议创建索引✧数据较少的列不建议创建索引维护原则✧定期进行重建索引9)查看索引视图方式存储过程10)删除索引语法示例五、存储过程1.概述存储过程就是一个有名称的Sql代码。

在存储过程中封装了一定的业务规则。

存储过程可以有参数和返回值。

2.分类1)系统存储过程概述系统由数据库系统进行管理和维护,通常完成特定的操作。

系统存储过程是使用sql语句进行编写的。

命名Sp_存储过程名称示例2)扩展存储过程概述扩展存储过程是使用其他编程语句进行编写的,扩展存储过程一般一Dll的形式存在。

命名Xp_存储过程名称示例Xp_cmdshell3)自定义存储过程概述自定义存储过程是使用Sql语句进行编写的存储过程,由用户进行创建和维护。

3.语法4.说明参数:存储过程的参数可以包含输入、输出参数。

同时可以对参数设置默认值语句段:存储过程内的语句段可以包含:变量定义、事务、判断及循环语句5.示例6.执行存储过程名[参数列表]或Exec[ute] 存储过程名[参数列表]注:省略exec每次只能执行一个存储过程;带有exec一次可以执行多个存储过程7.优点代码集成化执行效率高(一般语句执行过程中需要执行语法检查、编译优化、执行。

而存储过程在创建过程中已经完成了语法检查和编译优化。

相关主题