SQLSERVER培训学习资料.docx
- 格式:docx
- 大小:834.67 KB
- 文档页数:17
提纲:1、SQLServer锁的概念2、SQLServer事物概念3、解决数据库异常膨胀的技术思路4、操作系统崩溃后数据库重新安装的流程5、数据库性能优化6、常见的SQL Server连接失败错误及解决方法7、无法合理使用已建立的索引的错误写法8、常见系统函数9、编写可读性强的代码1. SQLServer锁的概念 (2)1.2并发问题 (2)1.3隔离级别 (3)1.4 SQL Server 中的锁定介绍 (4)1.5阻塞 (6)1.6死锁 (7)将死锁减至最少 (8)2.SQLServer事物概念 (11)2.1事务 (11)2.2显式事务 (11)2.3嵌套事务 (12)2.4事务保存点 (13)2.5调整事务隔离级别 (14)2.6存储过程和触发器中回滚 (14)2.7事务中允许的Transact-SQL 语句 (16)2.8编写有效的事务 (16)3.解决数据库异常膨胀的技术思路 (18)4.操作系统崩溃后数据库重新安装的流程 (19)5. 数据库性能优化体现在哪些方面 (20)5.1数据库性能优化概述 (20)5.2设计联合数据库服务器 (21)5.3数据库设计 (21)5.4查询优化 (22)5.5应用程序设计 (23)5.6优化服务器性能 (25)6.数据库连接失败的情况分析 (27)7.无法合理使用已建立的索引的错误写法有哪些 (29)8.常用系统函数 (31)9. 编写可读性强的代码 (32)1. SQLServer锁的概念1.1锁定Microsoft SQL Server 使用锁定确保事务完整性和数据库一致性。
锁定可以防止用户读取正在由其他用户更改的数据,并可以防止多个用户同时更改相同数据。
如果不使用锁定,则数据库中的数据可能在逻辑上不正确,并且对数据的查询可能会产生意想不到的结果。
虽然SQL Server 自动强制锁定,但可以通过了解锁定并在应用程序中自定义锁定来设计更有效的应用程序1.2并发问题如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。
第一章:概述SQL Server体系结构:1、主要的服务及其作用四部分组成:数据库引擎(SSDE):是核心服务,负责完成业务数据的存储、处理、查询和安全管理等操作。
分析服务(SSAS):提供多为分析过和数据挖掘功能,可以支持用户建立数据仓库和进行商业智能分析。
报表服务(SSRS):为用户提供了支持Web的企业级的报表功能。
集成服务(SSIS):是一个数据集成平台,可以完成有关数据的提取、转换、加载等。
服务以windows服务程序的形式后台运行。
服务与前台管理工具(management studio)之间的关系:MS是Sql Server提供的一种集成环境,将各种图形化工具和多功能的脚本编辑器组合在一起,完成访问、配置、控制、管理和开发SQL Server 的所有工作,大大方便了技术人员和数据库管理员对SQL Server的各种访问。
2、数据库对象系统数据库有:master、model、msdb,Resource、tempdb。
Master:是最重要的系统数据库。
它记录了SQL Server系统级的所有信息,这些系统级的信息包括服务器配置信息、登录账户信息、数据库文件信息、SQL Server初始化信息等,这些信息影响整个SQL Server系统的运行。
Model:是一个模板数据库。
该系统存储了可以作为模板的数据库对象和数据。
当创建用户数据库时,系统自动把该数据库中的所有信息复制到用户新建的数据库中,使得新建的用户数据库初始状态下具有了与model数据库一致的对象和相关数据,从而简化数据库的初始创建和管理操作。
Msdb:是与SQL ServerAgent服务有关的数据库。
该数据库记录有关作业、警报、操作员、调度等信息,这些信息可以用于自动化系统的操作。
Tempdb:是一个临时数据库,用于存储查询过程中所使用的中间数据或结果。
Resource:是一个很特殊的系统数据库,是一个被隐藏的只读的物理系统数据库,只保存用户实例所需的架构和存储过程。
SQL SERVER培训1、如何使用Select、Insert、Delete和Update。
(1)SELECT从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列。
虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:SELECT select_list[ INTO new_table ]FROM table_source[ WHERE search_condition ][ GROUP BY group_by_expression ][ HAVING search_condition ][ ORDER BY order_expression [ ASC | DESC ] ]可以在查询之间使用 UNION 运算符,以将查询的结果组合成单个结果集。
语法SELECT statement ::=< query_expression >[ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }[ ,...n ]][ COMPUTE{ { AVG | COUNT | MAX | MIN | SUM } ( expression ) } [ ,...n ][ BY expression [ ,...n ]]][ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }[ , XMLDATA ][ , ELEMENTS ][ , BINARY base64 ]}][ OPTION ( < query_hint > [ ,...n ]) ]< query expression > ::={ < query specification > | ( < query expression > ) }[ UNION [ ALL ] < query specification | ( < query expression > ) [...n ] ]< query specification > ::=SELECT [ ALL | DISTINCT ][ { TOP integer | TOP integer PERCENT } [ WITH TIES ] ]< select_list >[ INTO new_table ][ FROM { < table_source > } [ ,...n ] ][ WHERE < search_condition > ][ GROUP BY [ ALL ] group_by_expression [ ,...n ][ WITH { CUBE | ROLLUP } ]][HAVING <search_condition>]由于 SELECT 语句的复杂性,下面按子句说明详细的语法元素和参数:SELECT 子句INTO 子句FROM 子句WHERE 子句GROUP BY 子句HAVING 子句UNION 运算符ORDER BY 子句COMPUTE 子句FOR 子句OPTION 子句SELECT 子句指定由查询返回的列。
.数据库培训资料目录数据库培训资料 (1)一、数据库简介 (2)1、数据库分类 (2)2、数据库界面 (3)二、 T-SQL数据库基础操作语句 (3)1、 SQL语言的构成 (3)2、数据库语句操作 (4)2.1 创建数据库 (4)2.2 删除数据库 (4)2.3 创建数据表 (4)2.5 创建视图 (6)2.6 删除视图 (7)三、数据库数据操控语句 (8)1、查询语句 (8)1.1 一般查询 (8)1.2 带条件查询 (8)1.3 模糊查询 (9)1.4 ORDER BY用法 (9)1.5 TOP 用法 (10)1.6 IN 用法 (10)1.7 别名的用法 (11)1.8 多表查询 (11)1.9 JOIN 用法 (13)1.10 UNION 用法 (14)1.11UNION ALL 用法 (14)1.12 临时表 (15)2、插入语句 (15)3、更新语句 (16)4、删除语句 (16).一、数据库简介数据库 (Database) 顾名思义就是用来存储数据的仓库,它是按照数据结构来组织、存储和管理数据的仓库。
例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。
这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。
此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种 "数据库 ",使其可以利用计算机实现财务、仓库、生产的自动化管理。
数据库1、数据库分类根据存储模型划分,数据库类型主要可分为: 网状数据库 (Network Database)、关系数据库 (Relational Database)、树状数据库(Hierarchical Database)、面向对象数据库(Object-oriented Database)等(有兴趣的同学可以自己了解一下不同类型数据库的区别),商业应用中主要是关系数据库,比如Oracle 、DB2、Sybase、MSSQLServer 、Informax 、MySQL 等我们公司目前使用的是市面上主流的关系数据库MS SQL Server 数据库。
2、数据库界面二、 T-SQL数据库基础操作语句1、 SQL 语言的构成DDL语言:数据定义,定义基本表、视图、索引;DML语言:数据操纵,查询、增加、修改、删除DCL语言:权限这里我们只讨论学习DDL、 DML 两种,其他类型的有兴趣的同学可以自己研究一下。
2、数据库语句操作2.1 创建数据库语法: create database+表名例如: create database learntest在数据库执行后就可以产生一个名为learntest的数据库注:数据库名不要出现中文、特殊符号,遵循原则:数据库中文名称首字母大写例如:建材管理系统(JCGLXT)或者英文单词缩写建材管理系统(MMO )2.2 删除数据库语法: drop database+表名例如: drop database learntest2.3 创建数据表之前我们创建好了数据库,数据库是由很多数据表组成的,接下来就要为数据库添加数据表。
语法: CREATE TABLE表名称(列名称 1 数据类型 ,列名称 2 数据类型 ,列名称 3 数据类型 ,....)说明: 1、一张数据表由数据表名、数据列名(也叫字段名)组成,就像我们平时的EXCEL表格做出来的表格一样,如下图,其中员工表就是我们所说的表名,里面的姓名、年龄、爱好、岗位就是其中列名,列名下面的内容对应的就是表所存储的数据。
2、数据类型是用了描述我们字段可以存储的数据类型,数据库支持的数据类型有整数型、小数型、字符型、日期型,详情见下表数据类型描述integer(size)仅容纳整数。
在括号内规定数字的最大位数。
int(size)smallint(size)tinyint(size)decimal(size,d)容纳带有小数的数字。
numeric(size,d)"size" 规定数字的最大位数。
"d" 规定小数点右侧的最大位数。
char(size)容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。
在括号中规定字符串的长度。
varchar(size)容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。
在括号中规定字符串的最大长度。
date(yyyymmdd)容纳日期。
3、实例age int,hubby varchar(300),post varchar(50))注 :1、表名命名不要出现汉字、特殊符号,命名规则可以遵循中文表名首字母大写例如商品档案(SPDA )或者英文名商品档案(GOODS )2、字段名命名与表名遵循同一规则参照上面的表格我们可以使用语句建立一张数据表2.4删除表有时候我们会删除一部分不需要的表,这个时候就需要用到表的删除。
语法: drop table+表名例如: drop table staff2.5 创建视图视图是指数据库中的视图,是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
.注:我们公司的视图统一命名规则为VIEW_+ 相关表名2.6 删除视图语法: drop view +视图名例: drop view VIEW_STAFF2.7建立索引索引是对数据库表中一个或多个列(例如,staff表的姓名(name)列)的值进行排序的结构。
如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
索引类似于我们图书的目录,对表的某一列做一个目录可以实现快速检索的目的。
语法: CREATE INDEX + 索引名 + ON STAFF +( 字段名 ) 例: CREATE INDEX INDEX_NAME ON STAFF (NAME )注:索引名不允许出现中文、特殊符号,命名规则遵循:INDEX_+ 字段名。
例: DROP INDEX INDEX_NAME ON STAFF三、数据库数据操控语句1、查询语句数据库的作用是用来进行数据的存储,所以使用存储的数据的过程就叫做数据库的查询操作,通过不同的查询语句和限制条件的限制我们可以使用数据库语句获得我们预期想获取的数据排列展示结果。
1.1 一般查询语法: SELECT字段名+ 表名例如 : 1、 SELECT * FROM staff2、SELECT NAME FROM staff注: *表示查询表中的全部字段所有数据在查询数据的时候我们有时候只需要查看一部分数据,这部分数据通常会带有一定的条件,例如只看员工王一的个人信息、或者只看年龄大于22 的员工信息等等。
语法: SELECT + 字段名+FROM +表名+WHERE条件例:SELECT * FROM staff where name=' 王一 '1.3 模糊查询注:其中如果字段名为数字型的,字段后面的条件不用加单引号,如果条件是其他类型的,字段值必须加双引号。
当我们对查询的内容只知道一部分不知道全部或者我们查询的内容需要包含某些共性条件的时候,这个时候可以进行模糊查询。
例如查询公司姓王的人的信息、查询公司销售类岗位的人的信息等等。
使用like 关键字加上固定格式'%查询内容 %'语法: SELECT * FROM STAFF WHERE字段名LIKE '%查询内容 %'例:SELECT * FROM STAFF WHERE NAME LIKE'%王 %'注: 1、 %的用法,如果我们需要查的内容是以左边开头的,就可以去掉左边的% ,LIKE 王'%'。
同样当我们需要查询的内容是右边结尾的就可以去掉右边的%,LIKE'%一 ',当我们查询的内容在中间的位置就需要两边都加 %才可以查到数据。
2 、切记:如果可以明确要查询的内容时,能不用%就不要用 %,因为使用了 %后会使我们建立好的索引失效导致查询大量数据的情况是查询速度变慢很多。
1.4 ORDER BY用法查询数据的时候有的情况会需要对查询的数据做一个排序,这个时候就会用到ORDER BY关键字。
通过order 关键字可以对数据根据某些字段进行排序达到我们预期的效果。
例如按照年龄大小排序。
语法: SELECT *FROM STAFF +ORDER BY字+段例:1、 SELECT * FROM STAFF ORDER BY AGE.1.5 TOP 用法在查询数据的时候我们需要查询前面固定数量的数据的时候就可以使用TOP 关键字进行处理,例如查询数据第一条记录等。
语法 :SELECT TOP +数字+ 字段+表名例 : SELECT TOP 1 * FROM STAFF1.6 IN 用法如果需要查找表里的数据包含在某一个范围的时候就会用到IN 关键字。
例如查询表里面是否存在叫王一、刘二、孙三这几个人,如果有就返回结果。
语法:SELECT字段FROM表名WHERE + 字段名IN ('内容一 ','内容二 ','内容三 ',........)例:SELECT * FROM STAFF WHERE NAME IN( '王一 ','刘二 ','孙三 ')注: IN 后面的括号里面可以写子查询1.7 别名的用法通过使用SQL ,可以为表名称或列名称指定别名。
基本上,创建别名是为了让列名称的可读性更强。
关键字 AS 。
语法: SELECT字段名AS 别名FROM表名例:1、 SELECT NAME AS XM FROM STAFF2、 SELECT NAME FROM STAFF1.8 多表查询在实际业务中我们经常会遇到需要查询多张表,这个时候就会进行多个表联合起来查询数据,一般这种场景下,需要查询的几张表之间会有一些相同的内容作为关联的条件。
现在需要对上图的两张表进行关联查询,仔细观察可以发现两张表有一个公共的字段就是名字(name),所以我们可以根据名字来进行表的关联。
语法 : SELECT表字段+ FROM +表一 ,表二 ,.... + where +关联条件例: SELECT STAFF . NAME , STAFF .AGE , KQB .KQSJ, KQB .SFCD FROM STAFF ,KQB WHERESTAFF .NAME =KQB .NAMETIPS:以上的语句可以做简化,简化后的语句如下SELECT , A.AGE , B.KQSJ , B.SFCD FROM STAFF A ,KQB B WHERE A .NAME =B .NAME可以看到其中, STAFF与 KQB 被分别替换成了 A 和 B,这种技巧和字段别名类似,是表的别名,这样可以让SQL语句看起来结构更清晰,可读性更强。