SQLServer2016

第1章 数据库系统概述

1 数据库技术的发展历史

  • 概述:

数据管理是数据库的核心任务,内容包括对数据的分类组织编码存储检索维护。发展历史分为下面几个阶段

  • 人工管理阶段

(1)数据基本不保存

(2)没有对数据进行管理的软件系统

(3)没有文件的概念

(4)数据不具有独立性

  • 文件系统阶段

(1)数据可以长期保存

(2)由文件系统管理数据

(3)文件的形式已经多样化

(4)数据具有一定的独立性

  • 数据库系统阶段

(1)采用复杂的结构化的数据模型

(2)较高的数据独立性

(3)最低的冗余度

(4)数据控制功能

2 数据库系统的基本概念

  • 数据
    数据(Data)是数据库中存储的基本对象。是人们用各种物理符号把信息按一定格式记载下来的有意义的符号组合。

  • 数据库
    数据库(DataBase,简称DB),即存放数据的仓库,数据库中的数据并不是简单的堆积,数据之间是相互关联的。

  • 数据库管理系统
    数据库管理系统(DataBase Management System,简称DBMS)是专门用于管理数据库的计算机系统软件,介于应用程序与操作系统之间,是一层数据管理软件

  • 数据库系统
    数据库系统(DataBase System,简称DBS)是指在计算机系统中引入了数据库后的系统,由计算机硬件、操作系统、数据库管理系统、应用程序和用户构成,即由计算机硬件

3 数据库系统的结构

  • 数据库系统的三级模式结构:

  • 模式:模式也称为逻辑模式,是对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。不涉及数据的物理存储细节和硬件环境,也与具体的应用程序和开发工具无关。模式实际上是数据库数据在逻辑级上的视图。一个数据库只能有一个模式。模式只是对数据库结构的一种描述,而不是数据库本身,是装配数据的一个框架

  • 外模式:外模式也称为子模式或用户模式,是数据库用户看到的数据视图,是与某个应用有关的数据的逻辑表示

  • 内模式:内模式也称为存储模式,是数据在数据库系统内部的表示或底层的描述,即对数据库物理结构和存储方式的描述。一个数据库只能有一个内模式

  • 数据库系统的二级映像:

  • 外模式/模式的映像:模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对于每个外模式,数据库都有一个外模式/模式的映像,它定义并保证了外模式与模式之间的对应关系。这些映像定义通常包含在各自的外模式中

  • 模式/内模式的映像:数据库的内模式依赖于它的全局逻辑结构,即模式。因为一个数据库只有一个模式,也只有一个内模式,所以模式/内模式的映像也是唯一的。它定义并保证了模式与内模式之间的对应关系

4 习题

  • 数据库三级模式体系结构的划分,有利于保持数据库的______。(数据对立性 )


  • 什么是数据?数据有什么特征?数据和信息有什么关系?

数据是用于载荷信息的物理符号。

 数据的特征是:

① 数据有“型”和“值’之分;

② 数据受数据类型和取值范围的约束;

③ 数据有定性表示和定量表示之分;

④ 数据应具有载体和多种表现形式。

数据与信息的关系为:数据是信息的一种表现形式,数据通过能书写的信息编码表示信息。信息有多种表现形式,它通过手势、眼神、声音或图形等方式表达,但是数据是信息的最佳表现形式。由于数据能够书写,因而它能够被记录、存储和处理,从中挖掘出更深层的信息。但是,数据不等于信息,数据只是信息表达方式中的一种。正确的数据可表达信息,而虚假、错误的数据所表达的是谬误,不是信息。



  • 什么是数据库?数据库中的数据有什么特点?

数据库是数据管理的新方法和技术,它是一个按数据结构来存储和管理数据的计算机软件系统。

数据库中的数据具有的特点是:

① 数据库中的数据具有数据整体性,即数据库中的数据要保持自身完整的数据结构;

② 数据库中的数据具有数据共享性,不同的用户可以按各自的用法使用数据库中的数据,多个用户可以同时共享数据库中的数据资源。



  • 什么是数据库管理系统?它的主要功能是什么?

数据库管理系统简称DBMS(Database Management System),它是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。
数据库管理系统的主要功能是数据存储、数据操作和数据控制功能。



  • 什么是数据的独立性?

数据独立性是指应用程序和数据之间的依赖程度低,相互影响小。数据独立性分成物理数据独立性和逻辑数据独立性两级。数据的物理独立性是指应用程序对数据存储结构的依赖程度。数据物理独立性高是指当数据的物理结构发生变化时,应用程序不需要修改也可以正常工作。数据的逻辑独立性是指应用程序对数据全局逻辑结构的依赖程度。数据逻辑独立性高是指当数据库系统的数据全局逻辑结构改变时,它们对应的应用程序不需要改变仍可以正常运行。



第2章 数据模型

1 三大世界

  • 现实世界

现实世界(Real World)就是人们所能看到、接触到的世界。现实世界存在无数事物,每个客观存在的事物都可以看作一个个体,每个个体都有属于自己的特征。

  • 信息世界

信息世界(Information World)是现实世界在人们头脑中的反映。人们的思维以现实世界为基础,对事物进行选择、命名、分类等抽象工作之后,并用文字符号表示出来,就形成了信息世界

  • 计算机世界

计算机世界(Computer World)又称数据世界(Data World)。人们将信息世界中的信息经过抽象和组织,按照特定的数据结构(即数据模型)存储在计算机中,就形成了计算机世界。

2 两大模型

  • 概念模型

概念模型用于信息世界的建模,是对现实世界的抽象和概括。

  • 数据模型

数据模型(Data Model)是严格定义的一组概念的集合。精确地描述了系统的静态和动态特性,是数据库中用来对现实世界进行抽象的工具,是数据库系统的核心和基础,是描述数据的结构及定义在其上的操作和约束条件。

  • 常用的数据模型

在设计数据库全局逻辑结构时,不同的数据库管理系统对数据的具体组织方法不同。总的来说,当前实际的数据库系统中最常见的数据组织方法有以下5种:

层次模型(Hierarchical Model)。

网状模型(Network Model)。

关系模型(Relational Model)。

面向对象模型(Object Oriented Model)。

对象关系模型(Object Relational Model)。

其中,层次模型和网状模型统称为非关系模型,也统称为格式化模型。

  • 关系模型与非关系模型

① 关系模型不同于非关系模型,它是建立在严格的数学概念基础之上的。

② 关系模型与非关系模型相比较,概念单一,结构清晰,容易理解。

③ 关系模型的存取路径对用户是透明的,从而简化了用户的工作,提高了效率。实际上,关系模型的查询效率往往不如非关系模型,所以必须对关系模型的查询进行优化,这就增加了开发数据库的难度。

④ 关系模型中的数据联系是靠数据冗余实现的。

  • 关系模型的优缺点

关系模型的优点有:

① 使用表的概念来表示实体之间的联系,简单直观。

② 关系型数据库都使用结构化查询语句,存取路径对用户是透明的,从而提高了数据的独立性,简化了用户的工作。

③ 关系模型是建立在严格的数学概念基础之上的,具有坚实的理论基础。


关系模型的缺点有:

关系模型的连接等查询操作开销较大,需要较高性能计算机的支持,所以必须提供查询优化功能。

3 习题

  • 实体、实体型、实体集、属性、码、实体联系图(E-R图)、数据模型

① 实体:现实世界中存在的可以相互区分的事物或概念称为实体。例如,一个学生、一个工人、一台机器、一部汽车等是具体的事物实体,一门课、一个班级等称为概念实体。

② 实体型:现实世界中,对具有相同性质、服从相同规则的一类事物(或概念,即实体)的抽象称为实体型。实体型是实体集数据化的结果,实体型中的每一个具体的事物(实体)为它的实例。

③ 实体集:具有相同特征或能用同样特征描述的实体的集合称为实体集。例如,学生、工人、汽车等都是实体集。

④ 属性:属性为实体的某一方面特征的抽象表示。如学生,可以通过学生的“姓名”、“学号”、“性别”、“年龄”及“政治面貌”等特征来描述,此时,“姓名”、“学号”、“性别”、“年龄”及“政治面貌”等就是学生的属性。

⑤ 码:码也称关键字,它能够惟一标识一个实体。例如,在学生的属性集中,学号确定后,学生的其他属性值也都确定了,学生记录也就确定了 由于学号可以惟一地标识一个学生,所以学号为码。

⑥ 实体联系图(E-R图):实体-联系方法(Entity-Relationship Approach,即E-R图法)是用来描述现实世界中概念模型的一种著名方法。E-R图法提供了表示实体集、属性和联系的方法。

⑦ 数据模型:数据模型是一组严格定义的概念集合。这些概念精确地描述了系统的数据结构、数据操作和数据完整性约束条件。



  • 试述数据模型的概念、数据模型的作用和数据模型的三要素。

数据模型是一组严格定义的概念集合,这些概念精确地描述了系统的数据结构、数据操作和数据完整性约束条件。数据模型是通过概念模型数据化处理得到的。

数据库是根据数据模型建立的 因而数据模型是数据库系统的基础。

数据模型的三要素是数据结构、数据操作和完整性约束条件。其中:数据结构是所研究的对象类型的集合,它包括数据的内部组成和对外联系;数据操作是指对数据库中各种数据对象允许执行的操作集合,它包括操作对象和有关的操作规则两部分内容;数据约束条件是一组数据完整性规则的集合,它是数据模型中的数据及其联系所具有的制约和依存规则。



  • 试述概念模型的作用。

概念模型也称信息模型,它是对信息世界的管理对象、属性及联系等信息的描述形式。概念模型不依赖计算机及DBMS,它是现实世界的真实而全面的反映。概念模型通过系统需求分析得到,对概念模型数据化处理后就得到了数据库的数据模型。



  • 试述数据库概念结构设计的重要性和设计步骤。

重要性:数据库概念设计是整个数据库设计的关键,将在需求分析阶段所得到的应用需求首先抽象为概念结构,以此作为各种数据模型的共同基础,从而能更好地、更准确地用某一 DBMS 实现这些需求。

设计步骤:概念结构的设计方法有多种,其中最经常采用的策略是自底向上方法,该方法的设计步骤通常分为两步:第 1 步是抽象数据并设计局部视图,第 2 步是集成局部视图,得到全局的概念结构。



  • 什么是E-R图?构成E-R图的基本要素是什么?

E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。

构成E-R图的基本要素是实体型、属性和联系,其表示方法为:

1)实体型,用矩形表示,矩形框内写明实体名;

2)属性,用椭圆形表示,并用无向边将其与相应的实体连接起来;

3)联系,用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。



  • E-R图
    看书吧

第3章 数据库设计

1 规范化

  • 范式的种类
    为了使关系模式设计的方法趋于完备,数据库专家研究了关系规范化理论。所谓第几范式,是指一个关系模式按照规范化理论设计符合哪个级别的要求

  • 函数依赖
    函数依赖(Functional Dependency)是关系模式中各个属性之间的一种依赖关系,是规范化理论中一个最重要、最基本的概念

2 习题

  • 关系数据库是以(数据的关系模型)为基础设计的数据库,利用( 关系模式 )描述现实世界。一个关系既可以描述(实体),也可以描述(实体间的联系)。
  • 在关系数据库中,二维表称为一个(关系),表的每一行称为(记录),表的每一列称为(字段或属性)。
  • 数据完整性约束分为(实体完整性)、(参照完整性)和(用户定义的完整性)。
  • ① 主码、候选码、外码。 ② 笛卡儿积、关系、元组、属性、域。③ 关系、关系模式、关系数据库。

主码、候选码、外码。
若关系中的某一属性组(或单个属性)的值能惟一地标识一个元组,则称该属性组(或属性)为候选码。为数据管理方便,当一个关系有多个候选码时,应选定其中的一个候选码为主码。当然,如果关系中只有一个候选码,这个惟一的候选码就是主码。
设F是基本关系R的一个或一组属性,但不是关系R的主码(或候选码)。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。

迪卡尔积、关系、元组、属性、域。
给定一组域D1,D2,…, Dn.这些域中可以有相同的部分,则D1,D2,…, Dn的笛卡地积为:D1×D2×…×Dn﹦{(dl,d2,…,dn)∣di∈Di,i=1,2, …,n}。
D1×D2×…×Dn的子集称作在域D1,D2,…, Dn上的关系,表示为:R(D1,D2,…, Dn)。其中,R表示关系的名字,n是关系的目。
笛卡儿积集合中的每一个元素(dl,d2,…,dn)称为一个元组。
关系中的每一列称为一个属性。
域为数据集合,属性值来源于域。

关系、关系模式、关系数据库。
关系是留卡儿积的有限子集,所以关系也是一个二维表。
关系的描述称为关系模式。关系模式可以形式化地表示为:R(U,D,Dom,F)。其中R为关系名,它是关系的形式化表示;U为组成该关系的属性集合;D为属性组U中属性所来自的域;Dom为属性向域的映像的集合;F为属性问数据的依赖关系集合。
在某一应用领域中,所有实体集及实体之间联系所形成关系的集合就构成了一个关系数据库。

第4章 SQL Server 2016基础

SQL Server 2016简介

  • 服务器组件

1.SQL Server数据库引擎

2.Analysis Services(分析服务)

3.Reporting Services(报表服务)

4.Integration Services(集成服务)

5.Master Data Services

6.R Services(数据库内)

  • 管理工具

1.SQL Server Management Studio

2.SQL Server配置管理器

3.SQL Server事件探查器

4.数据库引擎优化顾问

5.数据质量客户端

6.SQL Server Data Tools

7.连接组件

习题

1.数据库引擎(SQL Server Database Engine,SSDE)是SQL Server 系统的核心服务。

2.Sql Server Configuration Manager称为SQL Server 配置管理器。

3.SSMS是一个集成环境,是SQL Server 2008最重要的图形界面管理工具。

4.对象资源管理器以_树型结构显示和管理服务器中的对象节点。

5.在SQL Server 2008 中,主数据文件的后缀是_.mdf__,日志数据文件的后缀是.ldf。

6.每个文件组可以有多个日志文件。

第5章 数据库的创建与管理

1 数据库常用对象

  • 1.表

    表(也称为数据表)是存放数据和表示关系的主要形式,是最主要的数据库对象。
  • 2.视图

    视图是由一个或多个表生成的引用表(也称虚拟表),是用户查看数据表中数据的一种方式。视图的结构和数据建立在对表的查询基础之上。在数据库中并不存放视图的数据,只存放其查询定义。在打开视图时,需要执行其查询定义以产生相应的数据。
  • 3.索引

    索引是指对表记录按某个列或列的组合(索引表达式)进行排序,通过搜索索引表达式的值,可以实现对该类数据记录的快速访问。
  • 4.约束

    约束用于保障数据的一致性与完整性。例如,主键约束和外键约束,主键约束当前表记录的主键字段值的唯一性,外键约束当前记录与其他表的关系。
  • 5.存储过程

    存储过程是一组完成特定功能的SQL语句集合(包含查询、插入、删除和更新等操作),经编译后以名称的形式存储在SQL Server服务器端的数据库中,由用户通过指定存储过程的名称来执行。当这个存储过程被调用执行时,其包含的操作也会同时执行。
  • 6.触发器

    触发器是一种特殊类型的存储过程,它能够在某个规定的事件发生时触发执行。触发器通常可以强制执行一定的业务规则,以保持数据完整性,检查数据的有效性,同时实现数据库的管理任务和一些附加的功能。

2 系统数据库

SQL Server的安装程序在安装时默认建立4个系统数据库(master,model,msdb,tempdb)

1.master数据库

2.model数据库

3.msdb数据库

4.tempdb数据库

3 文件和文件组

  • 数据库文件

(1)主数据文件

主数据文件是数据库的起点,指向数据库中的其他文件。每个数据库都有一个主数据文件。主数据文件的推荐文件扩展名是.mdf。例如,某销售管理系统的主数据文件名为Sales_data.mdf。

(2)次要数据文件

除主数据文件以外的所有其他数据文件都是次要数据文件。某些数据库可能不含有任何次要数据文件,而有些数据库则可能含有多个次要数据文件。次要数据文件的推荐文件扩展名是.ndf。

(3)日志文件

日志文件包含着用于恢复数据库的所有日志信息。每个数据库必须至少有一个日志文件,也可以有多个。日志文件的推荐文件扩展名是.ldf。例如,销售管理系统的日志文件名为Sales_log.ldf。
SQL Server不强制使用.mdf,.ndf和.ldf文件扩展名,但使用它们有助于标识文件的各种类型和用途。

  • 文件组

(1)主文件组

主文件组包含主数据文件和任何没有明确分配给其他文件组的其他文件。系统表都分配在主文件组中。

(2)用户定义文件组

用户定义文件组是在CREATE DATABASE或ALTER DATABASE语句中使用 FILEGROUP指定的任何文件组

每个数据库中均有一个文件组被指定为默认文件组。如果创建表或索引时未指定文件组,则所有表或索引都将从默认文件组中分配。一次只能有一个文件组作为默认文件组。如果没有指定默认文件组,则将主文件组作为默认文件组。

对文件进行分组时,一定要遵循文件和文件组的设计规则:

文件只能是一个文件组的成员

文件或文件组不能由一个以上的数据库使用

数据和日志信息不能属于同一个文件或文件组

日志文件不能作为文件组的一部分

日志空间与数据空间要分开管理

4 习题

  • 1.查询编辑器是一个 自由 格式的文本编辑器,主要用来编辑与运行Transact-SQL命令。

  • 2.在Microsoft SQL Server中,主数据文件的后缀是.mdf,日志数据文件的后缀是.ldf,每个文件组可以有多个日志文件。

  • 3.通过T-SQL语句,使用CREATE DATABASE命令创建数据库,使用 sp_helpdb 命令查看数据库定义信息,使用 ALTER DATABASE 命令修改数据库结构,使用 DROP DATABASE命令删除数据库。

  • 4.创建一个指定多个数据文件和日志文件的数据库。该数据库名称为Students,有一个5MB和一个10MB的数据文件和两个5MB的事务日志文件。数据文件逻辑名称为Students1和Students2,物理文件名为Students1.mdf和Students2.ndf。主文件是Students1,由PRIMARY指定,两个数据文件的最大大小分别为无限大和100MB,增长速度分别为10%和1MB。事务日志文件的逻辑名为StudentsLog1和StudentsLog2,物理文件名为StudentsLog1.ldf和StudentsLog2.ldf,最大大小均为50MB,增长速度为1MB。要求数据库文件和日志文件的物理文件都存放在C盘的DATA文件夹下。

实现的步骤如下:

1)在C盘创建一个新的文件夹,名称是“DATA”。
2)在SQL Server Management Studio中新建一个查询页面。
3)输入以下程序段并执行此查询:
CREATE  DATABASE  STUDENTS
ON PRIMARY
(NAME=STUDENTS1,
FILENAME='E:\DATA\STUDENTS1.mdf',
SIZE=5,
MAXSIZE=unlimited,
FILEGROWTH=10%),
(NAME= STUDENTS12,
FILENAME='C:\DATA\STUDENTS2.ndf',
SIZE=10,
MAXSIZE=100,
FILEGROWTH=1)

LOG ON 
(NAME=STUDENTSLOG1,
FILENAME='C:\DATA\STUDENTSLOG1.ldf',
SIZE=5,
MAXSIZE=50,
FILEGROWTH=1),
(NAME=STUDENTSLOG2,
FILENAME='C:\DATA\STUDENTSLOG2.ldf',
SIZE=5,
MAXSIZE=50,
FILEGROWTH=1)
  • 5.删除已创建的数据库Students2。

实现的步骤如下:

1)在SQL Server Management Studio中新建一个查询页面。
2)输入以下程序段并执行此查询:
DROP DATABASE STUDENTS
说明:当有别的用户正在使用此数据库时,则不能进行删除操作。
  • 6.将已存在的数据库Student3重命名为Student_Back。

实现的步骤如下:

1)在SQL Server Management Studio中新建一个查询页面。
2)输入以下程序段并执行此查询:
SP_RENAMEDB 'STUDENT3','STUDENT_BACK'

第6章 表的创建与管理

1 表的基本概念

  • 概述 :在数据库中,表是由数据按一定的顺序和格式构成的数据集合,是组成数据库的基本元素。表由行和列组成,因此也称为二维表。每行代表一个记录,每列代表记录的一个字段。
  • 1.表结构

    组成表的各列的名称及数据类型,统称为表结构。
  • 2.记录

    每个表包含了若干行数据,它们是表的“值”。表中的一行称为一个记录。因此,表是记录的有限集合。
  • 3.字段

    每个记录由若干个数据项构成。将构成记录的数据项称为字段。例如,表6-1中的表结构为(学号,姓名,性别,出生日期,专业,总学分,备注),包含7个字段,由8个记录组成。
  • 4.空值

    空值(NULL)通常表示未知、不可用或将在以后添加的数据。若某列允许为空值,则向表中输入记录时可不为该列给出具体值;若某列不允许为空值,则在输入时必须给出具体值。
  • 5.关键字

    如果表中记录的某个字段或字段组合能唯一标识记录,则称该字段或字段组合为候选关键字(Candidate Key)。若一个表有多个候选关键字,则选定其中一个为主关键字(Primary Key),也称为主键。当一个表仅有唯一的一个候选关键字时,该候选关键字就是主关键字。这里的主关键字与前面讲的主键所起的作用是相同的,都用来唯一标识记录。

    外键就可以达到这个目的。它是对应主键而言的,就是“子表”中对应于“主表”的列,在“子表”中称为外键或引用键。它的值要求与主表的主键相对应。外键用来强制参照完整性。一个表可以有多个外键。

2 数据类型

在这里插入图片描述

3 使用T-SQL语句创建表

CREATE TABLE
    [database_name.[owner].|owner.]table_name
    ({
   
   <column_definition>|column_name AS computed_column_expression|
    <table_constraint>}[,…n][ON{ filegroup|DEFAULT}]
    [TEXTIMAGE_ON { filegroup|DEFAULT}]
        <column_definition>::={column_name data_type}
    [COLLATE <collation_name>]
    [[DEFAULT constant_expression]
    |[IDENTITY[(seed,increment) [NOT FOR REPLICATION]]]]
    [ROWGUIDCOL]
    [<column_constraint>][,…n]

各参数的说明如下。
database_name:用于指定所创建表的数据库名称。
owner:用于指定新建表的所有者的用户名。
table_name:用于指定新建表的名称。
column_name:用于指定新建表的列名。
computed_column_expression:用于指定计算列的列值表达式。
ON {filegroup | DEFAULT}:用于指定存储表的文件组名。
TEXTIMAGE_ON:用于指定text,ntext和image列的数据存储的文件组。
data_type:用于指定列的数据类型。
COLLATE:用于指定表的校验方式。
DEFAULT:用于指定列的默认值。
constant_expression:用于指定列的默认值的常量表达式,可以为一个常量或NULL或系统函数。
IDENTITY(seed, increment):用于将列指定为标识列。其中,seed用于指定标识列的初始值,increment用于指定标识列的增量值。
NOT FOR REPLICATION:用于指定列的IDENTITY属性在把从其他表中复制的数据插到表中时不发生作用,即不生成列值,使得复制的数据行保持原来的列值。
ROWGUIDCOL:用于将列指定为全局唯一标识符列(Row Global Unique Identifier Column)。
column_constraint和table_constraint:用于指定列约束和表约束。

约束

约束是SQL Server提供的自动保持数据库完整性的一种方法,它通过限制字段中的数据、记录中的数据和表之间的数据来保证数据的完整性。在SQL Server中,对于基本表的约束分为列级约束和表级约束两种。

1)列级约束
列级约束也称字段约束,可以使用以下短语进行定义。

[NOT NULL|NULL]:定义不允许或允许字段值为空。
[PRIMARY KEY CLUSTERED|NON CLUSTERED:定义该字段为主键并建立聚集或非聚集索引。
[REFERENCE <参照表>(<对应字段>)]:定义该字段为外键,并指出被参照表及对应字段。
[DEFAULT <默认值>]:定义字段的默认值。
[CHECK(<条件>)]:定义字段应满足的条件表达式。
[IDENTITY(<初始值><步长>)]:定义字段为数值型数据,并指出它的初始值和逐步增加的步长值。

(2)表级约束
表级约束也称记录约束,语法格式为:

CONSTRAINT <约束名> <约束式>
约束式主要有以下几种。
[PRIMARY KEY [CLUSTERED|NONCLUSTERED](<列名组>)]:定义表的主键并建立主键的聚集或非聚集索引。
[FOREIGN KEY(<外键>)REFERENCES<参照表>(<对应列>)]:指出表的外键和被参照表。
[CHECK(<条件表达式>)]:定义记录应满足的条件。
[UNIQUE(<列组>)]:定义不允许重复值的字段组。

习题

1.在一个表上可以定义多个CHECK约束。
2.创建表的语句是:CREATE TABLE 表名。
3.数据完整性包括:实体完整性、域完整性、引用完整性和用户定义完整性。
4.删除表Course中的Course_Name列所使用的语句是:
    ALTER TABLE Course
    DROP Course_Name 
5.为表Student删除主键约束的语句代码是:
    ALTER TABLE Student
    DROP  CONSTRAINT 约束名 PRIMARY KEY
6.假定利用CREATE TABLE 命令建立下面的BOOK表:
    CREATE TABLE BOOK
     (
     总编号 char(6),
     分类号 char(6),
     书名 char(6),
     单价 numeric(10,2)
     )
则“单价”列的数据类型为_数值_型,列宽度为10,其中包含有2位小数。

第7章 数据的输入与维护

习题

一、填空题
1.T-SQL语言中,将数据插入到数据表的语句是__,修改数据的语句是_。
2.SQL语言中,删除一个表中所有数据,但保留表结构的命令是__。

答:
1.T-SQL语言将数据插入到数据表的语句是_INSERT_,修改数据的语句是_UPDATE_
2.SQL语言中,删除一个表中所有数据,但保留表结构的命令是_DELETE_。

二、单项选择题
1.SQL语言集数据查询、数据操作、数据定义和数据控制功能于一体,语句INSERT、DELETE、UPDATE实现哪类功能__。B
    A.数据查询       B.数据操纵      C.数据定义      D.数据控制
2.下面关于INSERT语句的说法正确的是__。A
    A.INSERT一次只能插入一行的元组   B.INSERT只能插入不能修改
    C.INSERT可以指定要插入到哪行     D.INSERT可以加WHERE条件

第8章 数据查询

1.SQL语句中条件短语的关键字是   where  。
2.在SELECT语句中, order  子句根据列的数据对查询结果进行排序。
3.联合查询(连接查询)指使用join运算将多个表合并到一起。
4.当一个子SELECT的结果作为查询的条件,即在一个SELECT语句的WHERE子句中出现另一个SELECT语句,这种查询称为  嵌套   查询。
5.在SELECT语句中,定义一个区间范围的特殊运算符是    between    ,检查一个属性值是否属于一组值中的特殊运算符是   in   。
6.已知“出生日期”求“年龄”的表达式是   YEAR(GETDATE()) – YEAR(出生日期)  。
7.语句“SELECT * FROM 成绩表WHERE 成绩>(SELECT Avg(成绩) FROM 成绩表)”的功能是查询成绩表中成绩大于成绩平均分的所有记录。
8.采用全外连接操作时,查询结果中包括连接表中的所有数据行。


Mg:对第3小题,(连接查询)是我加的。有些书籍(网站)把union当作联合查询,合并的是查询结果,但本书中UNION查询属于3个集合查询之一,相对来说连接查询看作联合查询更贴切一些——百度搜索也是有把join当作联合查询的。孰对孰错就不去过度追究了。

二、单项选择题
1.在SELECT语句中,如果需要显示的内容使用“*”,则表示________。B
A.选择任何属性                	B.选择所有属性
C.选择所有元组                 	D.选择主键

2.查询时若要去掉重复的元组,则在SELECT语句中使用________。D
A.All        	B.UNION     	C.LIKE       	D.DISTINCT

3.使用SELECT语句进行分组检索时,为了去掉不满足条件的分组,应当________。B
A.使用WHERE子句
B.在GROUP BY后面使用HAVING子句
C.先使用WHERE子句,再使用HAVING子句
D.先使用HAVING子句,再使用WHERE子句

4.在SQL语句中,与表达式“仓库号NOT IN("wh1","wh2")”功能相同的表达式是________。D
A.仓库号="wh1" And 仓库号="wh2"		B.仓库号<>"wh1" Or 仓库号<>"wh2"
C.仓库号<>"wh1" Or 仓库号="wh2"		D.仓库号<>"wh1" And 仓库号<>"wh2"

第5~8题使用如下3个表:
部门:部门号 Char (8),部门名 Char (12),负责人 Char (6),电话 Char (16)
职工:部门号 Char (8),职工号 Char(10),姓名 Char (8),性别 Char (2),
出生日期 Datetime
工资:职工号 Char (10),基本工资 Numeric (8, 2),津贴 Numeric (8, 2),
奖金 Numeric (8, 2),扣除Numeric (8, 2)

5.查询职工实发工资的正确命令是________。C
A.SELECT 姓名,(基本工资+津贴+奖金扣除) AS 实发工资 FROM 工资
B.SELECT 姓名,(基本工资+津贴+奖金扣除) AS 实发工资 FROM 工资 WHERE 职工.职工号=工资.职工号
C.SELECT 姓名,(基本工资+津贴+奖金扣除) AS 实发工资 FROM 工资,职工 WHERE 职工.职工号=工资.职工号
D.SELECT 姓名,(基本工资+津贴+奖金扣除) AS 实发工资 FROM 工资 JOIN 职工 WHERE 职工.职工号=工资.职工号

6.查询1972年10月27日出生的职工信息的正确命令是________。D
A.SELECT * FROM 职工 WHERE 出生日期={1972-10-27}
B.SELECT * FROM 职工 WHERE 出生日期=1972-10-27
C.SELECT * FROM 职工 WHERE 出生日期="1972-10-27"
D.SELECT * FROM 职工 WHERE 出生日期='1972-10-27'

7.查询每个部门年龄最长者的信息,要求得到的信息包括部门名和最长者的出生日期,正确的命令是________。A
A.SELECT 部门名,MIN(出生日期) FROM 部门 JOIN 职工 ON 部门.部门号=
职工.部门号 GROUP BY 部门名
B.SELECT 部门名,MAX(出生日期) FROM 部门 JOIN 职工 ON 部门.部门号=
职工.部门号 GROUP BY 部门名
C.SELECT 部门名,MIN(出生日期) FROM 部门 JOIN 职工 WHERE 部门.部门号=职工.部门号 GROUP BY 部门名
D.SELECT 部门名,MAX(出生日期) FROM 部门 JOIN 职工 WHERE 部门.部门号=职工.部门号 GROUP BY 部门名

8.查询所有目前年龄在35岁以上(不含35岁)的职工信息(姓名、性别和年龄),正确的命令是________。C
A.SELECT 姓名,性别,YEAR(GETDATE())-YEAR(出生日期) AS 年龄 FROM 职工 WHERE 年龄>35
B.SELECT 姓名,性别,YEAR(GETDATE())-YEAR(出生日期) AS年龄 FROM 职工 WHERE YEAR(出生日期)>35
C.SELECT 姓名,性别,YEAR(GETDATE())-YEAR(出生日期) AS年龄 FROM 职工 WHERE YEAR(GETDATE())-YEAR(出生日期)>35
D.SELECT 姓名,性别,年龄=YEAR(GETDATE())-YEAR(出生日期) FROM 职工 WHERE YEAR(GETDATE())-YEAR(出生日期)>35

第9章 视图

视图的基础知识

  • 视图是一种数据库对象,它是从一个或多个表或视图中导出的虚表,也就是说,它可以从一个或多个表中的一列或多列中提取数据,并按照表的行和列来显示这些信息,可以把视图看作一个能把焦点定在用户感兴趣的数据上的监视器。
  • 视图是虚拟的表。与表不同的是,视图本身并不存储视图中的数据。视图是由表派生的。派生表被称为视图的基本表,简称基表。视图可以来源于一个或多个基表的行或列的子集,也可以是基表的统计汇总,或者是视图与基表的组合。视图中的数据是通过视图定义语句由其基表中动态查询得来的。
一、单项选择题
1SQL的视图是从_______中导出的。C
A.基本表		B.视图			C.基本表或视图			D.数据库
2.在视图上不能完成的操作是_______。C
A.更新视图数据					B.查询
C.在视图上定义新的基本表    		D.在视图上定义新视图
3.关于数据库视图,下列说法正确的是_______。C
A.视图可以提高数据的操作性能
B.定义视图的语句可以是任何数据操作语句
C.视图可以提供一定程度的数据独立性
D.视图的数据一般是物理存储的
4.在下列关于视图的叙述中,正确的是_______。 A
A.当某一视图被删除后,由该视图导出的其他视图也将被自动删除
B.若导出某视图的基本表被删除了,则该视图不受任何影响
C.视图一旦建立,就不能被删除
D.当修改某一视图时,导出该视图的基本表也随之被修改

二、简答题
1.简答视图的作用及视图的优缺点。
答:
视图是一种数据库对象,它是从一个或多个表或视图中导出的虚表,即它可以从一个或多个表中的一个或多个列中提取数据,并按照表的组成行和列来显示这些信息,可以把视图看做是一个能把焦点定在用户感兴趣的数据上的监视器。
使用视图有下列优点:
① 为用户集中数据,简化用户的数据查询和处理。有时用户所需要的数据分散在多个表中,定义视图可将它们集中在一起,从而方便用户进行数据查询和处理。
② 屏蔽数据库的复杂性。用户不必了解复杂的数据库中的表结构,并且数据库表的更改也不影响用户对数据库的使用。
③ 简化用户权限的管理。只需授予用户使用视图的权限,而不必指定用户只能使用表的特定列,也增加了安全性。
④ 便于数据共享。各用户不必都定义和存储自己所需的数据,而可共享数据库的数据,这样,同样的数据只需存储一次。
⑤ 可以重新组织数据以便输出到其他应用程序中。
视图的缺点主要表现在其对数据修改的限制上。当更新视图中的数据时,实际上就是对基本表的数据进行更新。事实上,当从视图中插入或者删除时,情况也是一样。然而,某些视图是不能更新数据的,这些视图有如下的特征:
① 有UNION等集合操作符的视图。
② 有GROUP BY子句的视图。
③ 有诸如AVG、SUM等函数的视图。
④ 使用DISTINCT短语的视图。
⑤ 连接表的视图(其中有一些例外)。
所以视图的主要用途在于数据的查询。在使用视图时,要注意只能在当前数据库中创建与保存视图,并且定义视图的基表一旦被删除,则视图也将不可再用。

2.简答基本表与视图的区别和联系。
答:
视图是虚拟的表,与表不同的是,视图本身并不存储视图中的数据,视图是由表派生的,派生表被称为视图的基本表,简称基表。视图可以来源于一个或多个基表的行或列的子集,也可以是基表的统计汇总,或者是视图与基表的组合,视图中的数据是通过视图定义语句由其基本表中动态查询得来的。

3.简答查看视图定义信息的方法。
答:
系统存储过程sp_help可以显示数据库对象的特征信息,sp_helptext可以用于显示视图、触发器或存储过程等在系统表中的定义,sp_depends可以显示数据库对象所依赖的对象。它们的语法形式分别如下:
sp_help 数据库对象名称
sp_helptext 视图(触发器、存储过程)
sp_depends 数据库对象名称

第10章 索引

简述

在SQL Server中,数据存储的基本单位是页。一个页是8KB的磁盘物理空间。向数据库中插入数据时,数据按照插入的时间顺序被放置在页中。通常,放置数据的顺序与数据本身的逻辑关系之间并没有任何的关系。因此,从数据之间的逻辑关系方面来讲,数据是乱七八糟地堆放在一起的。数据的这种堆放方式称为“堆”。当一个页中的数据堆满之后,其他的数据就堆放在另外一个页中。

习题

一、填空题
1.在索引命令中使用关键字CLUSTEREDNONCLUSTERED表示将分别建立_______索引和_______索引。
2.访问数据库中的数据有两种方法,分别是:_______和_______。
3.索引一旦创建,将由_______自动管理和维护。
4.在一个表中,最多可以定义_______个聚集索引,最多可以有______个非聚集索引。

答:
1.在索引命令中使用关键字CLUSTEREDNONCLUSTERED分别表示将建立的是_聚集_索引和_非聚集__索引。
2.访问数据库中的数据有两种方法,分别是:__表扫描______和____索引查找____。
3.索引一旦创建,将由__数据库管理系统_____自动管理和维护。
4.在一个表上,最多可以定义___1____个聚集索引,最多可以有___多个__非聚集索引。

二、单项选择题
1.为数据表创建索引的目的是_______。A
A.提高查询的检索性能			B.节省存储空间
C.便于管理						D.归类
2.索引是指对数据库表中_______字段的值进行排序。C
A.一个			B.多个 		C.一个或多个     	D.零个
3.下列_______属性不适合建立索引。D
A.经常出现在GROUP BY字句中的属性		B.经常参与连接操作的属性
C.经常出现在WHERE字句中的属性			D.经常需要进行更新操作的属性

三、简答题
1.简述引入索引的主要目的。
答:
索引是数据库随机检索的常用手段,它实际上就是记录的关键字与其相应地址的对应表。通过索引可大大提高查询速度。
在没有建立索引的表内,使用堆的集合方法组织数据页。在堆的集合中,数据行不按任何顺序进行存储,数据页序列也没有任何特殊顺序。因此,扫描这些数据堆集花费的时间肯定较长。在建有索引的表内,数据行基于索引的键值按顺序存放,必然改善了系统查询数据的速度。

2.简述聚集索引和非聚集索引的区别。
答:
根据索引的顺序与数据表的物理顺序是否相同,可以把索引分为聚集索引和非聚集索引。聚集索引会对磁盘上的数据进行物理排序,所以这种索引对查询非常有效。表中只能有一个聚集索引。当建立主键约束时,如果表中没有聚集索引,SQL Server会用主键列作为聚集索引键。聚集索引将数据行的键值在表内排序并存储对应的数据记录,使数据表的物理顺序与索引顺序相同。
非聚集索引与图书中的目录类似。非聚集索引不会对表进行物理排序,数据记录与索引分开存储。使用非聚集索引不会影响数据表中记录的实际存储顺序。非聚集索引中存储了组成非聚集索引的关键字值和行定位器。由于非聚集索引使用索引页存储,因此它比聚集索引需要较少的存储空间,但检索效率比聚集索引低。由于一个表只能建一个聚集索引,当用户需要建立多个索引时,就需要使用非聚集索引了。每个表中最多只能创建249个非聚集索引。

3.删除索引时,其所对应的数据表会被删除吗?
答:
不会

第11章 T-SQL语言、游标和函数

T-SQL语言的构成

  • 数据定义语言(DDL)
  • 数据操纵语言(DML)
  • 数据控制语言(DCL)
  • T-SQL增加的语言元素

常量与变量

  • 常量是指在程序运行过程中其值不变的量。(字符串常量、数值常量、日期常量)
  • 变量是指在程序运行过程中其值可以改变的量。变量又分为局部变量和全局变量。

习题

一、填空题
1.T-SQL中的变量分为局部变量与全局变量,局部变量用_____开头,全局变量用____开头。
2.T-SQL提供了______运算符,用于将两个字符数据连接起来。
3.在WHILE循环体内可以使用BREAKCONTINUE语句,其中______语句用于终止循环的执行,______语句用于将循环返回到WHILE开始处,重新判断条件,以决定是否重新执行新的一次循环。
4.在T-SQL中,若循环体内包含多条语句,则必须用______语句括起来。
5.在T-SQL中,可以使用嵌套的IFELSE语句来实现多分支选择,也可以使用______语句来实现多分支选择。
6.在自定义函数中,语句RETURNS INT表示该函数的返回值是一个整型数据,______表示该函数的返回值是一个表。

答:
1.T-SQL中的变量分为局部变量与全局变量,局部变量用__@____ 开头,全局变量用__@@____开头。
2.T-SQL提供了___+___运算符,将两个字符数据连接起来。
3.在WHILE循环体内可以使用BREAKCONTINUE语句,其中__ BREAK ____语句用于终止循环的执行,__ CONTINUE ____语句用于将循环返回到WHILE开始处,重新判断条件,以决定是否重新执行新的一次循环。
4.在T-SQL中,若循环体内包含多条语句时,必须用__ BEGINEND ____语句括起来。
5.在T-SQL中,可以使用嵌套的IFELSE语句来实现多分支选择,也可以使用___ CASE ___语句来实现多分支选择。
6.在自定义函数中,语句RETURNS INT表示该函数的返回值是一个整型数据,_ RETURNS TABLE _____表示该函数的返回值是一个表。

二、简答题
1.什么是批处理?编写批处理时应注意哪些问题?
答:
批处理就是一个或多个T-SQL语句的集合,用户或应用程序一次将它发送给SQL Server,由SQL Server编译成一个执行单元,此单元称为执行计划,执行计划中的语句每次执行一条。批处理的种类较多,如存储过程、触发器、函数内的所有语句都可构成批处理。
某些SQL语句不能放在同一个批处理中执行,它们需要遵循下述规则:
① 多数CREATE 命令要在单个批处理中执行,但CREATE DATABASECREATE TABLECREATE INDEX除外。
② 调用存储过程时,如果它不是批处理中第一个语句,则在它前面必须加上EXECUTE。
③ 不能把规则和默认值绑定到用户定义的数据类型上后,在同一个批处理中使用它们。
④ 不能在给表字段定义了一个CHECK约束后,在同一个批处理中使用该约束。
⑤ 不能在修改表的字段名后,在同一个批处理中引用该新字段名。
⑥ 一个批处理中,只能引用全局变量或自己定义的局部变量。

2.什么是游标?如何使用游标?
答:
数据库的游标是类似于C语言指针一样的语言结构。通常情况下,数据库执行的大多数SQL命令都是同时处理集合内部的所有数据。但是,有时侯用户也需要对这些数据集合中的每一行进行操作。在没有游标的情况下,这种工作不得不放到数据库前端,用高级语言来实现。这将导致不必要的数据传输,从而延长执行的时间。通过使用游标,可以在服务器端有效地解决这个问题。游标提供了一种在服务器内部处理结果集的方法,它可以识别一个数据集合内部指定的工作行,从而可以有选择地按行采取操作。

用户在使用游标时,应先声明游标,然后打开并使用游标,使用完后应关闭游标、释放资源。

3.简答常用函数的分类。
答:
T-SQL编程语言提供了4种系统内置函数:行集函数、聚合函数、Ranking函数、标量函数。SQL Server提供的常用标量函数包括:数学函数、字符串函数、日期和时间函数、游标函数、元数据函数、配置函数、系统函数等。

第12章 存储过程

存储过程的基本概念

1.存储过程的定义

存储过程就是预先编译和优化并存储于数据库中的过程,是由一系列对数据库进行复杂操作的SQL语句、流程控制语句或函数组成的批处理作业。

2.存储过程的特点

(1)大大增强了SQL语言的功能和灵活性

(2)可保证数据的安全性和完整性

(3)更快的执行速度

(4)将体现企业规则的运算放入数据库服务器中以便集中控制

3. 存储过程的类型

在SQL Server中,存储过程分为3类:

1.系统存储过程

2.扩展存储过程

3.用户存储过程

(1)存储过程

(2)CLR存储过程

习题

一、填空题
1.存储过程是SQL Server服务器中________T-SQL语句的集合。
2SQL Server中的存储过程包括________、________和________三种类型。
3.创建存储过程实际上是对存储过程进行定义的过程,主要包含存储过程名称及其_______和存储过程的主体两部分。
4.在定义存储过程时,若有输入参数,则应放在关键字AS的________说明,若有局部变量,则应放在关键字AS的________定义。
5.在存储过程中,若在参数的后面加上________,则表明此参数为输出参数,执行该存储过程时必须声明变量来接收返回值,并且在变量后必须使用关键字 。

答:
1.存储过程是SQL Server服务器中_一组预编译的___T-SQL语句的集合。
2SQL Server中的存储过程包括__系统存储过程______、____扩展存储过程____和__用户存储过程______3种类型。
3.创建存储过程实际是对存储过程进行定义的过程,主要包含存储过程名称及其__参数______和存储过程的主体两部分。
4.在定义存储过程时,若有输入参数则应放在关键字AS的___前面____说明,若有局部变量则应放在关键字AS的____后面____定义。
5.在存储过程中,若在参数的后面加上____ OUTPUT ____,则表明此参数为输出参数,执行该存储过程必须声明变量来接受返回值并且在变量后必须使用关键字 。

二、选择题
1.在SQL Server服务器中,存储过程是一组预先定义并________的T-SQL语句。B
   A.保存           B.编译          C.解释        D.编写
2.使用EXECUTE语句来执行存储过程时,在________情况下可以省略该关键字。A
   A.EXECUTE语句如果是批处理中的第一条语句时
   B.EXECUTE语句在DECLARE语句之后
   C.EXECUTE在GO语句之后
   D.任何时候
3.用于查看表的行数及表使用的存储空间信息的系统存储过程是________。A
   A.sq_spaceused     B.sq_depends     C.sq_help     D.sq_rename

三、简答题
1.什么是存储过程?请分别写出使用SSMS和T-SQL语句创建存储过程的主要步骤。
答:
存储过程是一组编译在单个执行计划中的T-SQL语句,它将一些固定的操作集中起来交给SQL Server数据库服务器完成,以实现某个任务。
存储过程就是预先编译和优化并存储于数据库中的过程,由一系列对数据库进行复杂操作的SQL语句、流程控制语句或函数组成的批处理作业。它像规则、视图那样作为一个独立的数据库对象进行存储管理。存储过程通常是在SQL Server服务器上预先定义并编译成可执行计划。在调用它时,可以接受参数、返回状态值和参数值,并允许嵌套调用。
使用SSMS创建存储过程的操作步骤如下。
1)启动SSMS,在“对象资源管理器”窗格中展开服务器,然后展开数据库StudentManagement节点下的“可编程性”节点。
2)右键单击“存储过程”选项,在弹出的快捷菜单中,选择“新建存储过程”菜单项。
3)打开“存储过程脚本编辑”窗口。在该窗口中输入要创建的存储过程的代码,输入完成后单击“执行”按钮,若执行成功则创建完成。
用户可以使用CREATE PROCEDURE命令创建存储过程,但要注意下列几个事项:
① CREATE PROCEDURE语句不能与其他SQL语句在单个批处理中组合使用。
② 必须具有数据库的CREATE PROCEDURE权限。
③ 只能在当前数据库中创建存储过程。
④ 不要创建任何使用sp_作为前缀的存储过程。
CREATE PROCEDURE的语法形式如下:
CREATE { PROC | PROCEDURE } [schema_name.] procedure_name 
    [ { @parameter [ type_schema_name. ] data_type } 
   [ VARYING ] [ = default ] [ OUT | OUTPUT ] ] [ ,...n ] [ WITH ENCRYPTION ]
AS { <sql_statement> [;][ ...n ] }[;]
<sql_statement> ::= { [ BEGIN ] statements [ END ] }


2.如何将数据传递给一个存储过程?如何将存储过程的结果值返回?
答:
将数据值传递给存储过程,存储过程用来接收传递进来数据值的参数就是所谓的“输入参数”。创建带参数的存储过程的语句格式:
CREATE PROC[EDURE] procedure_name
[{@parameter data_type} [=DEFAULT][OUTPUT]][ ,…n]
[WITH{RECOMPILE | ENCRYPTION| RECOMPILE, ENCRYPTI○N}]
AS sql_ statements
从存储过程中返回一个或多个值,可以通过在创建存储过程的语句中定义输出参数来实现。为了使用输出参数,需要在CREATE PROCEDURE语句中指定OUTPUT关键字。通过使用输出参数,任何由于执行了存储过程的参数变化都可以保留,即使在存储过程完全完成之后。具体语法如下:
@parameter_name datatype[=default] OUTPUT [ ,…n]

第13章 触发器

触发器的基本概念

  • 触发器的类型

1.DML触发器

DML触发器又分为AFTER触发器和INSTEAD OF触发器两种。

(1)AFTER触发器

(2)INSTEAD OF触发器

2.DDL触发器

习题

1.触发器是一种特殊的________,基于表而创建,主要用来保证数据的完整性。
2.触发器可以在对一个表进行________、________和________操作中的任一种或几种操作时被自动调用执行。
3.替代触发器(INSTEAD OF)在数据变动前被触发。对于每个触发操作,只能定义________个INSTEAD OF 触发器。
4.当某个表被删除后,该表上的________将自动被删除。

答:
1.触发器是一种特殊的_存储过程_______,基于表而创建,主要用来保证数据的完整性。
2.触发器可以在对一个表进行__ INSERT ______、__ DELETE ______和___ UPDATE _____操作中的任一种或几种操作时被自动调用执行。
3.替代触发器(INSTEAD OF)将在数据变动前被触发,对于每个触发操作,只能定义________个INSTEAD OF 触发器。
4.当某个表被删除后,该表上的__所有触发器______将自动被删除。

二、选择题
1.在SQL Server中,触发器不具有________类型。D
   A.INSERT触发器               	B.UPDATE触发器
   C.DELETE触发器               	D.SELECT触发器

2SQL Server为每个触发器建立了两个临时表,它们是________。B
   A.inserted和updated             	B.inserted和deleted
   C.updated和deleted             	D.selected和inserted

三、简答题
1.什么是触发器?SQL Server有哪几种类型的触发器?
答:
触发器是一种专用类型的存储过程,它被捆绑到数据表或视图上。换言之,触发器是一种在数据表或视图被修改时自动执行的内嵌存储过程,主要是通过事件触发而被执行。触发器不允许带参数,也不能直接调用,只能自动被激发。
在SQL Server中,按照触发事件的不同可以将触发器分为两大类:DML触发器和DDL触发器。

1.DML触发器
DML触发器是在用户使用数据操作语言(DML)事件编辑数据时发生。DML事件是针对表或视图的INSERTUPDATEDELETE语句。DML触发器有助于在表或视图中修改数据时强制业务规则,扩展数据完整性。
DML触发器又分为AFTER触发器和INSTEAD OF触发器两种:
(1AFTER触发器
这种类型的触发器将在数据变动(INSERTUPDATEDELETE操作)完成以后才被触发。AFTER触发器只能在表上定义。
(2)INSTEAD OF触发器
INSTEAD OF触发器将在数据变动以前被触发,并取代变动数据的操作,而去执行触发器定义的操作。INSTEAD OF触发器可以在表或视图上定义。每个INSERTUPDATEDELETE语句最多定义一个INSTEAD OF触发器。

2.DDL触发器
DDL触发器也是由相应的事件触发的,但DDL触发器触发的事件是数据定义语句(DDL)。这些语句主要是以CREATEALTERDROP等关键字开头的语句。DDL触发器的主要作用是执行管理操作,例如审核系统、控制数据库的操作等。在通常情况下,DDL触发器主要用于以下一些操作需求:防止对数据库架构进行某些修改;希望数据库中发生某些变化以利于相应数据库架构中的更改;记录数据库架构中的更改或事件。DDL触发器只在响应由T-SQL语法所指定的DDL事件时才会触发。

第14章 数据库的备份和还原

习题

一、选择题
1. 下面哪个不是备份数据库的理由(  D   )?
A. 数据库崩溃时恢复。
B. 将数据从一个服务器转移到另外一个服务器。
C. 记录数据的历史档案。
D. 转换数据
2. 防止数据库出现意外的有效方法是(  C   )。
A. 重建              B. 追加               C. 备份             D. 删除
3.SQL Server的配置及其他数据被改变以后,都应该备份的数据库是(   A  )。
A. Master             B. Model              C. Msdb             D. Tempdb
4. 能将数据库恢复到某个时间点的备份类型是(  B   )。
A. 完整数据库备份                         B. 差异备份
C. 事务日志备份                           D. 文件组备份

二、简答题
1.什么是备份设备?
答:
备份设备是用来存储数据库、事务日志或文件和文件组备份的存储介质,可以是硬盘、磁带或管道。当使用磁盘时,SQL Server允许将本地主机硬盘和远程主机上的硬盘作为备份设备。备份设备在硬盘中是以文件的方式存储的。

2SQL Server数据库备份有几种方法?试比较各种不同数据备份方法的异同点。
答:
SQL Server 2008中有两种基本的备份:一是只备份数据库,二是备份数据库和事务日志,它们又都可以与完全或差异备份相结合。另外,当数据库很大时,也可以进行个别文件或文件组的备份,从而将数据库备份分割为多个较小的备份过程。这样就形成了以下4种备份方法:
① 完全数据库备份
这种方法按常规定期备份整个数据库,包括事务日志。当系统出现故障时,可以恢复到最近一次数据库备份时的状态,但自该备份后所提交的事务都将丢失。
完全数据库备份的主要优点是简单,备份是单一操作,可按一定的时间间隔预先设定,恢复时只需一个步骤就可以完成。
② 数据库和事务日志备份
这种方法不需很频繁地定期进行数据库备份,而是在两次完全数据库备份期间,进行事务日志备份,所备份的事务日志记录了两次数据库备份之间所有的数据库活动记录。当系统出现故障后,能够恢复所有备份的事务,而只丢失未提交或提交但未执行完的事务。
执行恢复时,需要两步:首先恢复最近的完全数据库备份,然后恢复在该完全数据库备份以后的所有事务日志备份。
③ 差异备份
差异备份只备份自上次数据库备份后发生更改的部分数据库,它用来扩充完全数据库备份或数据库和事务日志备份方法。对于一个经常修改的数据库,采用差异备份策略可以减少备份和恢复时间。差异备份比全量备份工作量小而且备份速度快,对正在运行的系统影响也较小,因此可以更经常地备份。经常备份将减少丢失数据的危险。
使用差异备份方法,执行恢复时,若是数据库备份,则用最近的完全数据库备份和最近的差异数据库备份来恢复数据库;若是差异数据库和事务日志备份,则需用最近的完全数据库备份和最近的差异备份后的事务日志备份来恢复数据库。
④ 数据库文件或文件组备份
这种方法只备份特定的数据库文件或文件组,同时还要定期备份事务日志,这样在恢复时可以只还原已损坏的文件,而不用还原数据库的其余部分,从而加快了恢复速度。

3.什么还是原数据库?当还原数据库时,用户可以使用这些正在还原的数据库吗?
答:
数据库还原是指将数据库备份重新加载到系统中的过程。当还原数据库的时候,用户不可以使用这些正在还原的数据库。

第15章 数据库的安全管理

SQL Server的安全机制

SQL Server的安全体系结构

(1)操作系统的安全机制

(2)SQL Server服务器的安全机制

(3)SQL Server数据库的安全机制

(4)SQL Server数据库对象的安全机制

SQL Server的身份验证模式

SQL Server有两种身份验证模式:

(1)Windows身份验证模式

Windows身份验证模式只在用户登录Windows时进行身份验证,而登录SQL Server时不再进行身份验证

(2)SQL Server身份验证模式

在SQL Server身份验证模式下,SQL Server服务器要对登录的用户进行身份验证

习题

一、选择题
1.当采用Windows验证方式登录时,只要用户通过Windows用户账户验证,就可以_______到SQL Server数据库服务器。A
A. 连接      	B. 集成     		C. 控制       	D. 转换
2.T-SQL语句的GRANT和REMOVE语句主要用来维护数据库的_______。C
A. 完整性    	B. 可靠性   		C. 安全性     	D. 一致性
3.可以对固定服务器角色和固定数据库角色进行的操作是_______。B
A. 添加      	B. 查看     		C. 删除       	D. 修改
4.下列用户对视图数据库对象执行操作的权限中,不具备的权限是_______。C
A. SELECT   	B. INSERT   	C. EXECUTE  	D. UPDATE
5.“保护数据库,防止未经授权的或不合法的使用造成的数据泄露、更改破坏”是指数据的_______。A
A.安全性   	B.完整性     	C.并发控制  	D.恢复
6.在SQL Server中,为便于管理用户及权限,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户称为_______。B
A. 账户     	B. 角色       	C. 登录       	D. SQL Server用户

二、简答题
1.简述SQL Server的安全体系结构。
答:
(1)操作系统的安全防线
在用户使用客户计算机通过网络实现对SQL Server服务器的访问时,用户首先要获得客户计算机操作系统的使用权。
(2)服务器的安全防线
SQL Server服务器的安全性是建立在控制服务器登录账号和口令的基础上的。SQL Server采用了标准的SQL Server 登录和集成Windows登录两种方法。无论是哪种登录方式,用户在登录时提供的登录账号和口令决定了用户能否获得对SQL Server 服务器的访问权,以及在获得访问权后用户可以利用的资源。设计和管理合理的登录方式是SQL Server DBA(DataBase Administrator,数据库管理员)的重要任务,在SQL Server的安全体系中,DBA是发挥主动性的第一道防线。
(3SQL Server数据库的安全防线
在用户通过SQL Server服务器的安全性检查以后,将直接面对不同的数据库入口。这是用户接受的第三次安全性检查。
在建立用户的登录账号信息时,SQL Server会提示用户选择默认的数据库。以后用户每次连接上服务器后,都会自动转到默认的数据库上。如果在设置登录账号时没有指定默认的数据库,则对用户的权限将局限在 Master数据库内。
(4SQL Server数据库对象的安全防线
数据库对象的安全性是核查用户权限的最后一个安全等级。在创建数据库对象时,SQL Server自动将该数据库对象的所有权赋予该对象的创建者。对象的所有者可以实现以该对象的完全控制。

2SQL Server的身份验证模式有几种?各是什么?
答:
安全身份验证用来确认登录SQL Server的用户的登录帐号和密码的正确性,由此来验证该用户是否具有连接SQL Server的权限。SQL Server 2008有两种身份验证模式:Windows验证模式和SQL Server验证模式。
(1)Windows验证模式
用户登录Windows时进行身份验证,登录SQL Server时就不再进行身份验证。以下是对于Windows验证模式登录的几点重要说明。
① 必须将Windows账户加入到SQL Server中,才能采用Windows账户登录SQL Server。
② 如果使用Windows账户登录到另一个网络的SQL Server,则必须在Windows中设置彼此的托管权限。
(2SQL Server验证模式
在SQL Server验证模式下,SQL Server服务器要对登录的用户进行身份验证。当SQL Server在Windows XP或Windows 2003等操作系统上运行时,系统管理员设定登录验证模式的类型可为Windows验证模式和混合模式。当采用混合模式时,SQL Server系统既允许使用Windows登录名登录,也允许使用SQL Server登录名登录。

3SQL Server提供哪些类型的约束?
答:
SQL Server中有五种约束类型,分别是CHECK约束、DEFAULT约束、PRIMARY KEY约束、FOREIGN KEY 约束、UNIQUE约束。

4.什么是角色?服务器角色和数据库角色有什么不同?用户可以创建哪种角色?
答:
角色是具有一定权限的用户组合。SQL Server用户和角色分为两级:一种为服务器级用户和角色;另一种是数据库级用户和角色。
服务器角色是指根据SQL Server的管理任务,以及这些任务相对的重要性等级来把具有SQL Server管理职能的用户划分为不同的用户组,每一组所具有的管理SQL Server的权限都是SQL Server内置的。服务器角色存在于各个数据库之中,要想加入用户,该用户必须有登录帐号以便加入到角色中。
数据库角色是为某一用户或某一组用户授予不同级别的管理或访问数据库以及数据库对象的权限,这些权限是数据库专有的,并且还可以给一个用户授予属于同一数据库的多个角色。SQL Server提供了两种类型数据库角色:固定的数据库角色和用户自定义的数据库角色。


5SQL Server的权限有哪几种?各自的作用对象是什么?
答:
在SQL Server中包括三种类型的权限:即对象权限、语句权限和预定义权限。
(1)对象权限
对象权限表示对特定的数据库对象(即表、视图、字段和存储过程)的操作权限,它决定了能对表、视图等数据库对象执行哪些操作。如果用户想要对某一对象进行操作,其必须具有相应的操作的权限。表和视图权限用来控制用户在表和视图上执行SELECTINSERTUPDATEDELETE语句的能力。字段权限用来控制用户在单个字段上执行SELECTUPDATEREFERENCES操作的能力。存储过程权限用来控制用户执行EXECUTE语句的能力。
(2)语句权限
语句权限表示对数据库的操作权限,也就是说,创建数据库或者创建数据库中的其他内容所需要的权限类型称为语句权限。这些语句通常是一些具有管理性的操作,如创建数据库、表和存储过程等。这种语句虽然仍包含有操作的对象,但这些对象在执行该语句之前并不存在于数据库中。因此,语句权限针对的是某个SQL语句,而不是数据库中已经创建的特定的数据库对象。 
(3)预定义权限
预定义权限是指系统安装以后有些用户和角色不必授权就有的权限。其中的角色包括固定服务器角色和固定数据库角色,用户包括数据库对象所有者。只有固定角色或者数据库对象所有者的成员才可以执行某些操作。执行这些操作的权限就称为预定义权限。

6.简述规则和CHECK约束的区别,如果在列上已经绑定了规则,当再次向它绑定规则时,会发生什么情况?
答:
规则是一组使用T-SQL语句组成的条件语句,规则提供了另外一种在数据库中实现域完整性与用户定义完整性的方法。
规则和CHECK约束功能类似,只不过规则可用于多个表中的列,以及用户自定义的数据类型,而CHECK约束只能用于它所限制的列。一列上只能使用一个规则,但可以使用多个CHECK约束。规则一旦定义为对象,就可以被多个表的多列所引用。

7.简述SQL Server实现数据完整性的方法。
答:
数据完整性是指存储在数据库中的数据的一致性和准确性。数据的正确性是指防止数据库中存在不符合语义的数据,而造成无效操作或错误信息。数据的相容性是保护数据库防止恶意的破坏和非法的存取。数据完整性能够确保数据库中数据的质量。
数据完整性包括实体完整性、域完整性和参照完整性。

猜你喜欢

转载自blog.csdn.net/qq_45549336/article/details/107975855