SQLSERVER培训材料
- 格式:doc
- 大小:1.49 MB
- 文档页数: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并发问题如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。
sqlserver服务账户和权限管理配置培训资料SQL Server是一款常用的关系型数据库管理系统,用于存储、管理和操纵数据。
在企业中使用SQL Server时,确保服务账户和权限的正确配置非常重要。
本篇培训资料将介绍SQL Server服务账户和权限管理的基本概念以及具体配置方法。
一、SQL Server服务账户1. 什么是SQL Server服务账户SQL Server服务账户是SQL Server实例运行所需的Windows 账户,用于执行数据库引擎服务、代理服务和数据库服务,并提供运行时环境。
每个服务都需要独立的服务账户。
2. 服务账户的类型SQL Server服务账户分为本地账户和域账户两种类型:- 本地账户:仅限于本地服务器上使用,适用于独立服务器或测试环境。
- 域账户:存储在Windows域中的账户,可以跨多个服务器使用,适用于大规模企业环境。
3. 选择适当的服务账户在选择服务账户时应考虑以下几个因素:- 安全性:为了最大程度地保护数据库的安全,建议使用域账户,并遵循最少特权原则。
- 管理:使用域账户可以集中管理,并为不同的服务分配不同的账户,便于维护和审计。
- 高可用性:确保服务账户拥有适当的权限,以便支持SQLServer集群、镜像和Always On可用性组等功能。
二、SQL Server权限管理1. 什么是权限权限是指用户或用户组对数据库对象执行特定操作的能力。
SQL Server使用细粒度权限模型来管理数据库访问,确保只有经授权的用户可以执行特定操作。
2. 常见的权限类型- 基本权限:包括SELECT、INSERT、UPDATE、DELETE等,用于控制对表或视图的读写操作。
- DDL权限:用于控制对数据库结构的更改,如CREATE、ALTER和DROP等。
- 系统权限:用于控制对服务器级别的操作,如CREATE LOGIN、CREATE DATABASE和SHUTDOWN等。
数据库培训资料目录数据库培训资料 (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带条件查询 (9)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)一、数据库简介数据库1、数据库分类根据存储模型划分,数据库类型主要可分为:网状数据库(Network Database)、关系数据库(Relational Database)、树状数据库(Hierarchical Database)、面向对象数据库(Object-oriented Database)等(有兴趣的同学可以自己了解一下不同类型数据库的区别),商业应用中主要是关系数据库,比如Oracle、DB2、Sybase、MS SQL Server、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、数据类型是用了描述我们字段可以存储的数据类型,数据库支持的数据类型有整数型、小数型、字符型、日期型,详情见下表• • • • • •CREATE TABLE staff (name varchar(20),age int,hubby varchar(300),post varchar(50))注:1、表名命名不要出现汉字、特殊符号,命名规则可以遵循中文表名首字母大写例如商品档案(SPDA)或者英文名商品档案(GOODS)2、字段名命名与表名遵循同一规则参照上面的表格我们可以使用语句建立一张数据表2.4删除表有时候我们会删除一部分不需要的表,这个时候就需要用到表的删除。
语法:drop table+表名例如:drop table staff2.5创建视图视图是指数据库中的视图,是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
语法:create view + 视图名+ (列名) + as +子查询例:create view VIEW_STAFF(name,age,hubby,post) as select name,age,hubby,post from staff 注:我们公司的视图统一命名规则为VIEW_+相关表名2.6删除视图语法:drop view+视图名例:drop view VIEW_STAFF2.7建立索引索引是对数据库表中一个或多个列(例如,staff表的姓名(name) 列)的值进行排序的结构。
如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
索引类似于我们图书的目录,对表的某一列做一个目录可以实现快速检索的目的。
语法:CREATE INDEX+索引名+ON STAFF+(字段名)例:CREATE INDEX INDEX_NAME ON STAFF(NAME)注:索引名不允许出现中文、特殊符号,命名规则遵循:INDEX_+字段名。
2.8删除索引语法:DROP INDEX+索引名 + ON +表名例: DROP INDEX INDEX_NAME ON STAFF三、数据库数据操控语句1、查询语句数据库的作用是用来进行数据的存储,所以使用存储的数据的过程就叫做数据库的查询操作,通过不同的查询语句和限制条件的限制我们可以使用数据库语句获得我们预期想获取的数据排列展示结果。
1.1一般查询语法:SELECT 字段名+ 表名例如: 1、SELECT*FROM staff2、SELECT NAME FROM staff注:* 表示查询表中的全部字段所有数据1.2带条件查询在查询数据的时候我们有时候只需要查看一部分数据,这部分数据通常会带有一定的条件,例如只看员工王一的个人信息、或者只看年龄大于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 AGE2、SELECT*FROM STAFF ORDER BY AGE DESC注:其中在字段后面加了DESC关键字可以让结果以倒序的方式展现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 WHERE =TIPS:以上的语句可以做简化,简化后的语句如下SELECT , A.AGE, B.KQSJ, B.SFCD FROM STAFF A,KQB B WHERE =可以看到其中,STAFF与KQB被分别替换成了A 和B,这种技巧和字段别名类似,是表的别名,这样可以让SQL语句看起来结构更清晰,可读性更强。
1.9 JOIN用法SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的JOIN 类型:INNER JOIN(简单的JOIN)、LEFT JOIN(左关联)、RIGHT JOIN(右关联)。
使用JOIN 从多个表中返回满足JOIN 条件的所有行。
INNER JOIN用法:SELECT字段+FROM表一INNER JOIN表二ON关联条件例:SELECT ,A.AGE,B.KQSJ,B.SFCD FROM STAFF A INNER JOIN KQB B ON =LEFT JOIN用法:LEFT JOIN用法:SELECT字段+FROM表一LEFT JOIN表二ON关联条件例:SELECT ,A.AGE,B.KQSJ,B.SFCD FROM STAFF A LEFT JOIN KQB B ON =左关联的特点以左边表条数为数量,关联的时候,如果右边的表和左边表的数据关联不到(KQB表里面没有李四),那么查询的右边表的字段值为NULL值。