SQL SERVER数据库设计期末知识点总结(自用)


最近刚刚考完SQL期末 把自己总结的知识点分享给大家

本人期末90+ 放心用~~


1.SQL Server主要管理工具、主要服务

·主要管理工具:

SQL Server Management Studio、SQL Server 配置管理器、SQL Server Profiler(跟踪和记录系统事件)、数据库引擎优化顾问(承受的工作负荷进行分析,提出优化方案)

·主要服务:

数据库引擎服务(最基本也是最核心的服务)、Analysis Services(实现数据仓库构建、数据集获取)、报表服务、机器学习服务器、Master Data Services、数据整合服务

2.服务器组、服务器注册、本地服务器组、中央管理服务器和被管理的服务器

·服务器组:服务器分组实际上只是一个为了管理方便而引进的逻辑概念,无论对服务器如何进行分组,都不会改变服务器所处的物理位置和在系统中的业务层次关系;服务器组的名称可以修改,不需要的服务器也能简单地进行删除。

·服务器注册:指在SSMS中添加服务器的连接信息,如服务器的名称(或IP地址)、身份验证信息、连接属性设置等;注册可以将服务器实例的信息添加并保存到SSMS中,今后需要对该服务器进行操作时,可以通过SSMS完成

·本地服务器组:在本地服务器组和中央管理服务器管理中,可以对服务器组执行操作,则对应服务器组下的服务器都会执行相同的操作,并能自动汇总执行的结果

·中央管理服务器:处于核心的是中央管理服务器,通过中央管理服务器可以对下属被管理的服务器进行管理;将被管理服务器注册到中央管理服务器下时,必须采用Windows 验证,因此各被管理服务器的Windows操作系统中必须添加与中央管理服务器相同帐户的管理员用户

3.SQL Server数据库分类(系统用户数据库、SQL Server系统数据库的组成及作用。

·系统数据库:master、model、msdb、tempdb和Resource 

  a.master:最重要的系统数据库,记录了SQL Server系统运行所需的系统信息(所有登录名和用户ID及所属角色、系统配置信息、服务器中其他系统数据和用户数据等信息、SQL Server的初始化信息、各种特殊的系统表)

  b.model:模板数据库。在 SQL Server中创建用户数据库时,都会以model为模板,创建拥有相同对象和结构的数据库;如果修改 model,之后创建的所有数据库都将继承这些修改创建数据库时,含有系统表的MODEL数据库的一个副本被复制到该数据库中,一个数据库的最小尺寸必须等于或大于MODEL数据库的大小

  c.msdb:存储代理服务信息的数据库。代理服务运行所需的作业信息都保存在msdb。

  d.tempdb:临时数据库。当每次SQL Server服务启动时,会创建一个空的tempdb;在SQL Server服务停止或关闭时,tempdb数据库会丢失。tempdb用于保存SQL Server运行过程中产生的需要临时存储的数据;用户创建的临时表,也会存放在tempdb

  e.Resource:存储可执行系统对象(即不存储数据的系统对象,如存储过程、触发器、视图)

4.数据库文件类型及用途和文件扩展名;SQL Server文件组分类;数据文件和日志文件分开存放在不同的磁盘上有什么好处;数据库的状态、数据库文件的状态。

·页是SQL Server数据文件存储的最小单位,页的大小为8KB,但96Byte用于保存头部信息,用于记录此页的相关信息,36Byte在页尾存储用于记录数据行位置的行偏移和其他一些信息,一页实际可保存的数据量为8060Byte盘区是连续8个页的集合,盘区根据保存数据的不同,可以分为:单一盘区(也称统一盘区)和混合盘区(也称混合区)

·数据库文件:数据文件(存储数据)、日志文件(.ldf)(记录各种对数据库的操作,有多个但至少有一个一个数据库文件不能存在于多个不同的文件组里)

·数据文件:主数据文件(.mdf)、辅助/次数据文件(.ndf)

a.主数据文件:每个SQL Server数据库仅有一个主数据文件。可以保存SQL Server数据库中的所有数据,包括用户对象和系统对象(如系统表)

b.次数据文件:保存用户数据,比如用户数据表、用户视图等;但是不能保存系统数据一个数据库中可以有多个次数据文件,且不是必须创建的

·文件组:文件的逻辑分组。包括:主文件组、次文件组、默认文件组(一个文件组可以存放在不同存储设备中日志文件不属于任何文件组)

  a.主文件组:数据库默认提供的文件组,不能被删除主数据文件只能置于主文件组中

  b.次文件组:也叫用户定义文件组,即用户创建的文件组,可以创建多个

  c.默认文件组:新增数据库文件时,如未指定所属文件组,那么就会被放在默认文件组

·将日志文件与主数据文件分别存放在不同分区好处:提高系统安全性和可靠性

·数据库的状态(ONLINE、OFFLINE 、SUSPECT)、数据库文件的状态(ONLINE、OFFLINE)

·数据库中使用的是数据库逻辑名,操作系统支持的是物理名

·配置服务器:采用系统存储过程sp_configure和SSMS来进行配置

5.创建数据库的T-SQL命令、删除、修改、扩展、收缩、分离、附加、移动、重命名数据库。

·创建、删除、修改数据库:CREATE/DROP/ALTER DATABASE

·查看数据库信息:sys.databases视图(查看数据库的基本信息)、sys.database_files视图(查看数据库文件信息)、sys.filegroups视图(查看文件组信息)、系统存储过程sp_spaceused(查看数据库空间的使用情况)、系统存储过程Sp_helpdb(查看数据库的信息)

· 扩展数据库:ALTER DATABASE语句通过Modify File修改MAXSIZE参数,或者使用SSMS中的“属性”对话框来指定“将文件增长限制为(MB)”选项。

·收缩数据库:

a.自动数据库收缩ALTER DATABASE  SET AUTO_SHRINK ON  WITH NO_WAIT

b.手动数据库收缩DBCC SHRINKDATABASE;手动文件收缩: DBCC SHRINKFILE

·分离数据库:sp_detach_db

·附加数据库:CREATE DATABASE database_name ON [,...n] FOR { ATTACH [ WITH ] | ATTACH_REBUILD_LOG } [;]

·移动数据库:

1)运行ALTER DATABASE database_name SET OFFLINE  -- 使某数据库脱机

2)将该文件移至新位置。

3)运行 ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = ‘new_path/os_file_name’。        --  修改数据库指定文件到新的位置

4)运行 ALTER DATABASE database_name SET ONLINE。 --  使某数据库联机

·部分包含数据库:数据库所包含的往往只是用户的数据,而很多与数据库相关的登录名、元数据等内容一般保存在系统数据库中,这些数据无法通过用户数据库的分离附加或备份还原直接迁移过去,就可以通过它来完成。

·重命名数据库:Alter database 数据库原名 MODIFY NAME=数据库新名

·数据库快照:在某一时刻对数据库所做的数据拷贝。数据库快照只有数据文件,没有日志文件,原因是快照是只读的,不需要记录写入操作;快照文件必须建在NTFS盘区;数据库快照与源数据库相关,必须与源数据库在同一服务器实例上不能对master、tempdb、model数据库等创建数据库快照

6.SQL Server表的分类(系统表、普通表、临时表、分区表、FileTable、时态表、内存优化表、外部表和图形表)及各类表的特点、架构、自动编号列(标识列)identity、表的列数据类型,创建表CREATE TABLE语句、修改表ALTER TABLE、删除表DROP TABLE语句。

·SQL Server表:

  a.系统表:SSMS内部自动生成并用于存储数据库元数据的表。元数据是指描述数据的数据,它记录了数据库结构、配置、用户权限等信息。系统表并不包含用户的数据。

  b.普通表:由用户创建并用于存储实际应用数据的表。普通表用于保存具体的业务数据,用户可以对其进行插入、更新、删除和查询操作。

  c.临时表只能临时存在,在断开连接或者SQL Server服务停止、重启后就会丢失;统一存放在系统数据库tempdb;一般用于存放一些临时性的数据。

→临时表创建:只能通过TSQL语句来创建,语句与常规的一致(添加#、##前缀)

  d.分区表:按照数据行划分数据,实现分区存放的表。一方面可以将数据分为更小、更易管理的部分,可提高性能;另一方面对于多核CPU系统,可使对表的操作以并行方式进行

→创建步骤:a.创建分区函数(CREATE PARTITION FUNCTION) b.创建分区方案(CREATE PARTITION SCHEME)  c.创建分区表

  e.FileTable:对于非结构性数据的管理,如文档、音视频文件等。FileTable既允许直接的、事务性的存取FILESTREAM列的大容量数据;也可以配置为允许非事务性访问的文件,由Windows文件系统直接访问;必须先启用和配置FILESTREAM,才能使用FileTable

  f.时态表:管理和控制数据变更的历史记录、数据行的操作历史。需采用T-SQL语句创建。普通数据表可以转为时态数据表,同样时态数据表也可转为普通表。

  g.内存优化表:指存放在内存中的数据表。内存读写的速度高于磁盘读写的速度,故可以显著提高数据读写的性能支持使用文件数据流(FILESTREAM),将表的基于磁盘的版本以非结构化格式存储在磁盘文件中;每一个数据库只能创建一个内存优化的文件组,在内存优化文件组中的文件,可以保存多个内存优化表中的数据。

  →创建内存优化表:创建时必须指定一个WITH子句,指定该表将进行内存优化;WITH还可指定耐久性:SCHEMA _AND_DATA或SCHEMA_ONLY(SCHEMA_AND_DATA表示内存优化表的所有数据都将保留在磁盘上,并记录事务;SCHEMA_ONLY则不会保留数据,也不会记录事务,还意味着在重新启动服务之后,表的结构将保持不变,但是将不包含任何数据)

  h.图形表:管理实体或事务间对象关系的数据表。由节点表和边界表组成。创建时在语句末尾加上AS NODE 或者AS EDGE 表示创建两种表。

  i.外部表:是指存储在数据库系统外部的数据文件、通过数据库系统提供的机制进行访问的特殊类型的表。实现数据虚拟化的重要工具。外部表并不直接存储数据,而是为用户提供了一个访问外部数据的接口

·数据库语言:DCL(数据控制)、DDL(数据定义)、DML(数据操纵)、附加语言

a.DCL:安全性管理(权限、角色等),包含GRANT、DENY、REVOKE等;

b.DDL:对数据库、表的操作,包含CREATE、ALTER、DROP;

c.DML:对对象、数据操作,包含SELECT、INSERT、UPDATE、DELETE等;

d.附加语言:包含变量、运算符、函数、流程控制语言和注释等。

·创建表:Create Table;删除表:Drop Table

·修改表:Alter Table

  a.添加列:Add column_name type(不需要写“column”)

  b.修改列:ALTER Column column_name new_type(修改数据类型)

  c.删除列:Drop Column column_name

·数据操纵:

  1)Insert:Insert Table Values;可插入单、多行数据,且属性列个数、形式必须一致

  2)Update:Update Table  Set;数据类型转化:Cast(式子AS type)/Convert(type,式子)

  3)Delete:Delete Table From;可指定Where删除部分数据,否则全删;Truncate Table通过释放数据页删除数据,但并不会将删除的数据记录日志文件,因此效率更高。由于不是逐行删除,所以Truncate不会触发delete触发器

·计算列:一种特殊列,它不需要指定数据类型,其值来源于其他列的表达式计算,这些表达式可以是函数、常量或表中的其它列。默认情况下,计算列并不会将数据值实际存储在数据表中,可算一种虚拟列。定义:(Add) column_name AS ....

·标志列(identity):用于唯一标志一个元组。标志列一般可当作主键,也可以是其他表的外键,且主键和标志列可同时存在标志列要求非空且唯一性一个表只能有一个标志列

·数据类型:数值型数据类型、字符型数据类型、日期型数据类型、货币型数据类型、二进制型数据类型、程序用数据类型和其他数据类型。

  a.字符型:char:定长字符(若超出实际字符长度,多余空间被空格填满);nchar:与char基本相同,但能识别Unicode类型;varchar:可变长字符(会自适应实际字符长度);nvarchar:与前面类似,能识别Unicode类型

  b.浮点型:Real:可以存储正的或者负的十进制数值;Decimal、numeric:数据类型完全相同,如numeric(a,b):a位数字,精确到b位小数

  c.时间类型:存储日期,格式为YYYY-MM-DD,范围0001.1.1~9999.12.31;Datetime:存储日期和时间的结合体

  d.位型:Bit:位数据类型,其数据有两种取值:0和1。

  e.文本图形:Text:用于存储大量文本数据;Image:用于存储照片、图画

  f.用户自定义:SSMS、语句均可定义,语句定义时需调用系统存储过程sp_addtype

7.临时表的分类及特点:本地临时表和全局临时表

·本地临时表(#前缀):只能供创建者使用

·全局临时表(##前缀):可在生命周期内供所有连接使用

8.数据完整性与约束:实体完整性、参照完整性、域完整性、用户定义完整性

·实体完整性:要求数据库中存放的每个实体必须能够被唯一地标识;可以使用主键、标识和Unique约束实现。

·参照完整性:要求表主外键必须对应。可用外键约束、check、触发器、存储过程实现。

·域完整性:一组用于约束列数据特性的规则,同时要求表中的部分列是必须输入的。可通过数据类型、是否允许NULL、check约束(rule约束)实现。(rule约束和check类似,只是必须和属性列绑定使用,而且不能引入属性列名和其他数据库对象,表中的每列只能和一个规则绑定,将一个新的规则绑定,旧的规则将自动被解除但每列可应用多个CHECK约束。如果要删除规则,应确定规则已经解除绑定)

·用户定义完整性:具体业务时需要保证表之间的数据遵守一定规则。可通过存储过程、触发器、应用程序模块实现。

·约束:

  1)创建约束:可直接写具体约束,也可用 Add Constraint name

     a.主外键约束:主键:Primary Key(单属性:列级;多属性:表级);外键:Foreign Key Preferences table(.....) 只能表级(创建主键会自动创建一个聚集索引)

     b.NOT NULL、默认值约束:Not Null不能为空,若未在NotNULL输入,可设置默认值

     c.UNIQUE约束:要求列值必须唯一(会自动创建一个非聚集索引),允许null

     d.check约束:对列设置指定的取值,如check(Sex In(‘男’,‘女’))

  2)修改、删除约束:修改一般通过SSMS修改,若用语句修改一般先删除再添加;删除约束:Drop Constraint

  3)禁用约束:可用SSMS修改约束属性,也可在新加约束时指定With Nocheck,但这种指定只能在新加约束时,且仅对外键、check约束有效。Nocheck禁用,check开启。

    

9.标识符定义规则;数据库对象命名规则;注释;全局变量局部变量。

·标识符:首字符可以是Unicode中的一个字母、汉字,还可以是下划线但不能是数字标识符不能是保留关键字,也不能嵌入空格。

·对象命名规则:server.database.schema.object可以简写object

·注释:单行注释符: --注释内容,多行注释符:/* 注释内容 */

·变量:全局变量、系统内置函数(@@前缀),局部变量(@前缀)

  →定义变量:用Declare定义,变量首字符必须是@,且必须指定数据类型和长度;默认值为NULL,可用Set、Select对其赋值(Set不能同时给多个变量赋值,需要写多个Set)

·临时对象:全局临时对象(##前缀),局部临时对象、过程(#前缀)

·保留关键字:系统定义的操作、语言词汇。可用[]、 引用作为标识符

·常量:数值常量直接写,但字符、日期常量必须加一对单引号

·聚集函数:不能在where里使用,可在group by-having、select中使用;而且非聚集列只能在聚集函数、group by包含的情况下引用

10.视图的分类(标准视图、索引视图和分区视图)、作用、创建、修改和删除

·视图概念:来源于基本表或视图的一种虚拟表本身并不保存数据,数据还存储在表中

·视图作用:a.提供定制数据(经过筛选、提炼的) b.简化数据查询操作 c.简化应用程序开发 d.减少网络传输数据量 e.强化对数据表管理的规范化

·视图分类:

  1)标准视图:可以透过视图对数据表查询,并不保存数据

2)索引视图:加了索引后的视图。第一个索引必是唯一性聚集索引。相当于包含数据的视图,但本质上还是聚集索引带的,并不是视图本身存储的。索引视图要求必须绑定到架构,用Schemabinding可实现绑定。

▲注意:索引视图会增加系统开支;其他索引受制于第一个唯一性聚集索引,删除这个其他索引也会被删除;索引视图只能基于数据表创建;如使用了group by分组,分组列必须是第一个创建的唯一性聚集索引列索引视图不能包含text、image列(这些列不能建索引)

3)分区视图:可以连接多个服务器上的分区数据表,Union all连接后,整合为单一表;使用分区视图,要求成员基表具有相同结构,对成员基表使用check约束进行数据分拆;分区视图在进行数据查询时,可以根据查询条件,只查询其中部分数据表

            ·创建视图:Create View  view_name() As Select From基本表/视图

      可以在view_name属性列中起新名字,或者在Select中用AS起别名;视图一旦创建,其定义就被存储在DD中,删除基本表不会删除视图定义,除非Drop View删除视图;定义视图时可设置With Check Option,表示在对视图数据修改时必须满足视图定义

            ▲注意:视图定义中,不允许使用Compute、Compute by子句;不能使用Order by子句,除非与Top连用,但并不能排序,只能获取top的数据;不能使用临时表和变量,也不能用INTO子句视图不能创建后触发器,但能创建Instead Of触发器只能在当前数据库中创建视图;视图最多可包含1024列。

            · 查看视图定义:可采用系统存储过程sp_helptext查看视图定义:EXEC sp_helptext View;还可以用sys.syscoments查看系统视图。设置With Encryption加密定义文本

            ·修改视图:修改视图本质上是对基本表的修改。修改基本表数据,视图也会动态随之改变,但若修改基本表结构(改列名、增加删除列),必须也要修改视图才能反映这种变化;如不想基本表被修改,可以在视图定义时加上Schemabinding,修改基表必须删视图

            ·视图应用:视图可以建立在多个基表之上,但一次只能修改一个基表的数据(比如视图来自于多个基表,视图数据不可以删除,因为无法确定删除哪个表的数据);更改数据需要受到基表定义的约束要求;不能通过派生列(计算列、聚集函数生成列)更新数据;删除视图只能通过Drop View操作

11.索引的分类(聚集索引和非聚集索引;唯一性索引、索引视图、全文索引、XML索引等)、作用、创建、修改和删除;行存储与列存储;内存优化索引:哈希索引(Hash Index)和内 存优化非聚集(NONCLUSTERED)索引;填充因子FILLFACTOR与索引分页,PD_INDEX选项。

            ·原始表:。数据是杂乱无章的,因此查找需要表扫描

            ·索引表:某个表中一列或者若干列值的集合指向这些值所在数据页的物理位置的逻辑指针清单;索引表中索引列的值是经过排序的;索引检索然后根据对应的地址指针查找数据的方式,被称为索引扫描。索引采用B-tree平衡树的结构(一个根节点、若干中间层节点和叶节点)。

            ·索引分类:聚集索引(Clustered)、非聚集索引(NonClustered)

              1)聚集索引:将数据表中数据的排列顺序与索引的顺序一致的索引。聚集索引页和数据页是结合的,系统会根据聚集索引的关键列取值的顺序重排表中数据,故一个表只能创建一个聚集索引;聚集索引也采用B树结构组织索引,但聚集索引的叶节点包含的是实际数据

              →聚集索引适合建在:主键或外键列、小数目不同值列、常需检索排序列、范围查询列;既可以是单一的列,也可以是多个列的组合。

              2)非聚集索引:非聚集索引的叶节点包含的还是索引行,而不是实际数据行;叶节点索引行包含了指向数据页地址的指针。索引页与数据页是相互独立的,不会对表中的数据进行重新排列,因此还是以堆的方式存储。非聚集索引在一个数据表中可以有多个非聚集索引可以定义包含性列(非关键列),仅存储在叶节点,而聚集索引不能定义。

              →非聚集索引适合建在:频繁修改更新列、数据长度大的列、大数目列

              ▲注意:同一个数据列只能创建一种索引索引默认是非聚集的,而text、image属性列不能创建传统索引,可以考虑全文索引、xml索引

            ·创建索引:CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON

            ·列存储索引:传统的索引是基于行数据存储方式的,而列存储索引是在数据列上加的索引,索引页只是若干列的值,不是完整一行数据。

             →优点:提高查询性能、便于数据压缩、缓存命中率大大提高

            ▲注意:一个表只能创建一个非聚集列索引或聚集列索引非聚集列存储索引中,不能使用索引筛选器、包含性列、填充因子,计算列不能作为索引列有触发器的表不能创建聚集列索引

            ·聚集列存储索引:不会对数据按顺序重排列,只会将他们按列的方式排列;而非聚集列存储索引既不会改变表的排列顺序,也不会按列排序,二者独立。创建了聚集列存储索引后,不能创建任何聚集类型的索引、非聚集列存储索引,只能创建非聚集索引。列存储索引在创建时要在Index后增加一个ColumnStore关键词

              →聚集列存储索引对INSERT、DELETE和UPDATE操作会产生影响:对于insert操作,新增加的数据会被暂时存放在增量存储中;对于delete操作,系统不会从聚集列存储索引中马上删除指定的数据,而会给数据添加删除标记,被标记的数据在后续操作中会被略过;对于update

操作,先在聚集列存储索引标记指定更新的旧数据,并将更新的数据添加到增量存储中。

            ·内存优化索引:建构在内存优化表上的索引。包括:哈希索引、内存优化非聚集索引。索引结构存储在内存中,没有索引碎片和填充因子对索引所作的更新不会写入日志文件服务停止会导致内存优化索引丢失,重启会使内存优化索引重新生成

            ·哈希索引和内存优化非聚集索引:哈希索引只能点查阅,要求在WHERE子句中采用“=”,而内存非聚集则可以范围查阅;哈希索引适用于取值相异度高,几乎不重复的列上建构。

            ·索引管理:REBUILD重新生成,REORGANIZE重新组织,DISABLE禁用

            ·填充因子(fillfactor):为索引页预留空间。可在创建索引时设定,默认值是0,与100%相同,表示尽可能填满,设置范围1%-100%。填充因子值越大,每个数据页空余空间就越少填充因子修改后,必须重新生成、组织索引后才能使用

            ·PD_index:填充因子针对的是叶节点的数据填充程度,pd_index可以为索引中间层节点设置填充因子;pd_index必须和fillfactor连用,使用后中间节点和叶节点填充度相同

12.存储过程分类、作用和特点,存储过程和触发器的区别与联系

·具体见存储过程代码

·存储过程:用户定义存储过程、系统存储过程、扩展存储过程

·系统存储过程和扩展存储过程是SQL Serve两类特殊的存储过程,以sp开头系统存储过程可用于系统管理,扩展存储过程可以使用其他程序设计语言,扩展SQL Server的功能

·扩展存储过程是指使用其他程序设计语言(如C语言)编写的用于扩展SQL Server系统功能的存储过程;在SQL Server中通常以xp作为前缀来命名,保存在master系统数据库中

·用户定义存储过程只能在当前数据库中创建(临时过程除外,临时过程总在tempdb中创建)

·存储过程和触发器区别:触发器是一种特殊类型的存储过程存储过程是必须指定执行的,而触发器是自动执行的。存储过程在创建时编译、可重用、安全性高。

13.触发器分类、作用和特点INSERTED和DELETED表的作用。

            · 触发器:DML触发器、DDL触发器,DML触发器包括Insert触发器、Update触发器和Delete触发器;主要作用是实现由主键和外键等约束所不能保证的复杂的参照完整性和数据一致性;还可以实现:可以对数据库进行级联修改、实现比CHECK约束更为复杂的限制、比较数据修改前后的差别、强制表的修改要合乎业务规则。

            ·DML触发器创建时,都会创建两个专用临时表:Inserted表和Deleted表这两个表的结构与触发器所作用的表结构相同;Inserted表存放由于执行INSERT或UPDATE语句而要向表中插入的所有行,而Deleted表存放由于执行DELETE或UPDATE语句而要从表中删除的所有行

            ·DML触发器按照触发时机分为:后触发器、Instead Of触发器;后触发器:当引起触发的语句执行完毕后,再执行触发器;Instead Of触发器:指用用户定义在触发器内的语句代替引起触发器的操作;DML触发器的触发事件不包含Select查询操作后触发器不能用于视图,但是代替触发器可以用于视图

            ·创建触发器:

              CREATE TRIGGER [ schema_name . ]trigger_name  ON { table | view }

[ WITH ENCRYPTION ]  --对CREATE TRIGGER语句的文本进行加密

{AFTER | INSTEAD OF}{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }

--三种操作必须至少指定一个,可以任意组合

[ NOT FOR REPLICATION ] --保持对用户动作激活有效,对事务复制来的动作,触发失效

AS { sql_statement  [ ; ] }

            ·INSTEAD OF触发器:替代系统的INSERT、UPDATE和DELETE等默认操作。Instead Of触发器针对一种操作只能定义一种

            ·DDL触发器:在对数据库、服务器操作时被触发。主要用来响应DDL:Create、Alter、Drop。

        DDL触发器用于执行管理任务,并强制影响数据库的业务规则;它们应用于数据库或服务器中某一类型的所有命令;DDL触发器分为数据库和服务器触发器,DML触发器为表级触发器

            →定义DDL触发器:

              CREATE TRIGGER trigger_name ON { ALL SERVER | DATABASE }

[ WITH ENCRYPTION ]

FOR {event_type|event_group }[ ,...n ] --可以是 after drop_table/alter_table等

AS { sql_statement [ ; ] }

            ·管理触发器:

              1)查看触发器定义:系统存储过程sp_help和sp_helptext

              2)修改触发器:Alter Trigger

              3)禁用触发器:Disable Trigger ... ON ...;重新启用:ENABLE TRIGGER

              4)删除触发器:Drop Trigger

14.SQL Server的安全性:验证模式(Windows 身份验证模式、混合身份验证模式(也称SQL Server 身份验证模式))、登录名、数据库用户名、角色,以及相应的创建、修改和删除T-SQL语句。登录名和数据库用户的区别与联系。

·安全性的管理主要包括两个阶段:身份验证和权限验证;数据库权限管理两类角色:服务器角色(预定义了几种对服务器执行操作权限的分组,如创建数据库、设置服务器选项等)、数据库角色(预定义了几类对数据库执行操作权限的分组)

·数据库用户与服务器登录名之间是通过映射来建立对应的关系,即当用户使用登录名和密码连接服务器后,如果数据库中有对应的用户与登录名之间存在映射关系,则该用户可以访问数据库

·身份验证模式:Windows身份验证和SQL Server身份验证(混合验证模式);Windows身份验证模式:允许用户使用Windows系统的域用户管理和本地用户管理模块来对用户身份进行验证;SQL Server身份验证模式:SQL Server负责把用户的登录名、密码与syslogins表的登录项进行比较,如果能找到匹配的数据行,用户就可以通过验证,连接服务器

·角色:Public角色、固定服务器角色、数据库角色、用户定义角色、应用程序角色

·创建登录名:CREATE LOGIN。一般情况下,登录名和用户名是一样的,但并非绝对sa是SQL Server内置的系统管理员登录名。

·架构:将多个数据库对象归属到架构中,以解决用户与对象之间因从属关系而引起的管理问题。dbo是系统默认架构。因此如果架构是dbo,则无需指明架构名称。

  →创建架构:CREATE SCHEMA;

15.SQL Server的权限类型权限语句:授予Grant、撤销Revoke和拒绝DENY。

·安全管理中授权的主体分类:1)Windows 级别的主体:Windows 域登录名、Windows 本地登录名; 2)SQL Server 级别的主体:SQL Server 登录名;3)数据库级别的主体:数据库用户、数据库角色(包括public角色、应用程序角色)

·权限:

  1. Grant授权:Grant ...ON... TO...
  2. Revoke收回权限:Revoke... ON... TO/FROM...用于撤消GRANT授予或者DENY拒绝的的权限,但是如果用户通过其他途径,如继承角色获得的权限不会被取消
  3. Deny拒绝权限:Deny ...ON... TO...;可设置CASCADE参数:除了将指定用户权限设定为拒绝外,由该用户授权给其他用户的同一对象的相同权限一并拒绝

16.数据库备份备份设备:创建删除;恢复机制;数据库备份命令数据库还原命令。

·数据库备份方式:数据库完整备份、差异式备份、事务日志备份、文件及文件组备份

  1)完整备份:对整个数据库进行备份。备份可以获得数据库中完整的表、视图等所有对象,也包括完整的事务日志;如果需要执行其他备份方式,必须先执行完整备份

  2)差异备份:备份的是自上一次备份之后新增加、变化的数据。备份的效率相对较高

前提条件是:备份的目标数据库已经完成完整备份;并且在还原数据库时,必须先还原完整备份,然后还原差异式备份(完整、差异备份期间,数据库只读,类似于静态转储)

  3)日志备份:备份的是事务日志文件中的内容。事务日志备份所需的空间、时间和消耗的资源也比完整备份要少。但在备份时要求已经完成一次完整备份,才能做事务日志备份(日志转储期间,数据库可以进行一些读取操作,类似于动态转储)

              4)文件、文件组备份:备份的对象是文件或者文件组。由于可以选择部分文件或文件组备份,备份的量会相对减少较多;在还原时,也只需要将损坏的部分文件或文件组还原,因此还原的量也会较少

·恢复模式:数据库执行的备份方式与数据库“恢复模式”设置有关。包括:简单恢复、完整恢复、大容量日志恢复。a.简单模式下:只能执行完整备份和差异式备份 b.在完整模式下:可以执行完整备份、差异式备份和事务日志备份  c.大容量日志模式下:与完整模式类似,可以执行完整备份、差异式备份和事务日志备份,但对于大数据复制操作的记录不会那么完整,无法还原到特定的时间点

·备份设备:临时备份设备和永久备份设备。临时备份设备:在备份过程中产生的备份文件,一般不做长久使用;永久备份设备:为重复使用、特意在SQL Server中创建的备份文件

  →创建备份设备sp_addumpdevice,删除备份设备sp_dropdevice

            ·备份:使用的TSQL语句为BACKUP;完整备份、差异备份、文件和文件组备份的语句均为BACKUP DATABASE,事务日志备份的语句为BACKUP LOG;还原数据库、日志:RESTORE DATABASE|LOG;从快照中恢复数据库:RESTORE DATABASE NETSALE FROM DATABASE_SNAPSHOT,要求源数据库必须存在,否则快照中缺乏完整数据,无法还原。

            · 恢复状态:包括RESTORE WITH RECOVERY、RESTORE WITH NORECOVERY和RESTORE WITH STANDBY。RESTORE WITH RECOVERY:让还原的数据库恢复到可用状态,一般用于还原最后的备份。如果后续还有其他备份集需要还原,不应该选择此项;RESTORE WITH NORECOVERY:表示当前数据库还处于还原状态其他用户不能访问数据库,但还可以继续还原其他备份。如果尚未完成所有备份的还原,应该选择此选项。RESTORE WITH STANDBY:使被还原的数据库处于只读状态,如果后续还有其他备份需要还原,且需要在还原过程中允许用户访问,可以选择此项,此选项需要指定备份文件。

17.数据库执行顺序:DML操作、INSTEAD OF触发器、完整性约束检查、AFTER触发器

  ·理解:用户先Insert(触发起点),先看这个操作有无InsteadOf触发器,有就不一定要插入,没有就考虑真的插入这个数据;真的插入就得检查完整性约束,看数据对不对;然后根据具体插入数据触发后触发器。

18. GROUP BY 生成单个结果集。每个组都有一个只包含分组依据列和显示该组子聚合的聚合函数的行。选择列表只能包含分组依据列和聚合函数。

COMPUTE 生成多个结果集。一类结果集包含每个组的明细行,其中包含选择列表中的表达式。另一类结果集包含组的子聚合,或 SELECT 语句的总聚合。选择列表可包含除分组依据列或聚合函数之外的其它表达式。聚合函数在 COMPUTE 子句中指定,而不是在选择列表中。

说明 在 COMPUTE 或 COMPUTE BY 子句中,不能包含 ntext、text 或 image 数据类型

PS: 期末周加油啊啊啊 都高分过!!!

SQL SERVER数据库设计期末知识点总结(自用)_第1张图片

你可能感兴趣的:(数据库,数据库,sqlite,sql,database,sqlserver)