SQL Server 2016 从入门到实战(视频教学版)
上QQ阅读APP看书,第一时间看更新

3.1 数据库简介

在具体介绍SQL Server 2016中如何创建数据库之前,读者需要对数据库的基本概念有初步了解。本节将为读者介绍一些数据库的专用术语,如数据库对象、系统数据库、表、记录、索引等。

3.1.1 数据库基本概念

简单地说,数据库是一个单位或一个应用领域的通用数据处理系统,存储的是属于企业和事业部门、团体和个人的有关数据的集合。数据库中的数据是从全局观点出发建立的,按一定的数据模型进行组织、描述和存储。数据库的结构基于数据间的自然联系,可提供一切必要的存取路径,且数据不针对某一应用,而是面向全组织的,具有整体的结构化特征。

数据库中的数据是为众多用户共享信息而建立的,已经摆脱了具体程序的限制和制约。不同的用户可以按各自的用法使用数据库中的数据,多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。

1.基本结构

数据库的基本结构分3个层次,反映了观察数据库的3种不同角度。以内模式为框架所组成的数据库叫作物理数据库,以概念模式为框架所组成的数据库叫作概念数据库,以外模式为框架所组成的数据库叫作用户数据库。

(1)物理数据层

它是数据库的最内层,是物理存储设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。

(2)概念数据层

它是数据库的中间一层,是数据库的整体逻辑表示。概念数据库指出了每个数据的逻辑定义及数据间的逻辑联系,是存储记录的集合,涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。

(3)用户数据层

它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。

数据库不同层次之间的联系是通过映射进行转换的。

2.主要特点

数据库技术是数据管理技术发展到现在的最新产物,经历了人工管理阶段和文件系统阶段。数据库的主要特点是实现数据共享、减少数据冗余、实现数据集中控制,提高数据的可靠性和安全性,具体如下:

(1)实现数据共享

数据共享包括所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

(2)减少数据的冗余度

与文件系统相比,由于数据库实现了数据共享,因此避免了用户各自建立应用文件,减少了大量重复数据,减少了数据冗余,维护了数据的一致性。

(3)数据的独立性

数据的独立性包括逻辑独立性和物理独立性,数据库实现了数据在逻辑和物理上的相对独立。

数据库中数据库的逻辑结构和应用程序相互独立,数据物理结构的变化不影响数据的逻辑结构。

(4)数据实现集中控制

在文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

(5)数据的安全性和可靠性

数据库提供了相关技术保障数据具有一致性和可维护性,主要包括安全性控制、完整性控制和并发控制。其中,安全性控制用于防止数据丢失、错误更新和越权使用;完整性控制用于保证数据的正确性、有效性和相容性;并发控制使在同一时间周期内允许对数据实现多路存取,又能防止用户之间的不正常交互作用。

(6)故障恢复

故障恢复是由数据库管理系统提供的一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或逻辑上的错误。例如,对系统的误操作造成的数据错误等。

3.数据库种类

数据库通常分为层次式数据库、网络式数据库和关系式数据库3种。不同的数据库是按不同的数据结构来联系和组织的。在当今的互联网时代,最常见的数据库模型主要有两种,即关系型数据库和非关系型数据库。

(1)关系型数据库

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。

关系型数据库诞生40多年了,从理论产生发展到现实产品。例如,Oracle、SQL Server和MySQL等都是关系型数据库。其中,Oracle在数据库领域处于霸主地位,形成每年高达数百亿美元的庞大产业市场。

(2)非关系型数据库

随着互联网Web 2.0网站的兴起,传统的关系数据库在应付Web 2.0网站,特别是超大规模和高并发的SNS类型的Web 2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库(Not Only SQL, NoSQL,不仅是SQL)则由于其本身的特点得到了非常迅速的发展。NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是作为对传统关系型数据库的一个有效补充。

非关系型数据库是一项全新的数据库革命性运动。NoSQL在早期就有人提出,发展至2009趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念是一种全新的思维的注入。

3.1.2 数据库常用对象

数据库对象是数据库的组成部分,常见的对象有表、索引、视图、图表、默认值、规则、触发器、存储过程、用户、序列等,本小节将简要介绍这些对象的概念,为后续学习打下基础。

(1)表(Table)

数据库中的表与日常生活中使用的表格类似,由行(Row)和列(Column)组成。其中,列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括若干列的信息项。一行数据称为一个或一条记录,是有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。

每个表中通常都有一个主关键字,用于唯一地确定一条记录。

(2)索引(Index)

索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。

(3)视图(View)

视图看上去似乎与表一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存在。视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息。

(4)图表(Diagram)

图表其实就是数据库表之间的关系示意图,利用图表可以编辑表与表之间的关系。

(5)默认值(Default)

默认值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。

(6)规则(Rule)

规则是对数据库表中数据信息的限制,其限定的是表的列。

(7)触发器(Trigger)

触发器是一个用户定义的SQL事务命令的集合。当对一个表进行插入、更改、删除时,这组命令就会自动执行。

(8)存储过程(Stored Procedure)

存储过程是为完成特定的功能而汇集在一起的一组SQL程序语句,经编译后存储在数据库中的SQL程序。

(9)用户(User)

所谓用户,就是有权限访问数据库的人,同时需要自己登录账号和密码。一般来说,数据库用户分为管理员用户和普通用户,前者可对数据库进行修改删除,后者只能进行阅读、查看等操作。

除了如上列出的数据库对象之外,不同的数据库管理系统也有部分自定义的对象,将在具体学习中分别介绍,此处不再赘述。

3.1.3 数据库的组成

前面章节提到,数据库是相关数据的集合。一个数据库含有各种成分,包括数据表、记录、字段、索引等。从使用者的观点看,数据库主要由文档(Documents)、记录(Records)和字段(Fields)3个层次构成。从开发者的角度看,数据库主要由数据表(Table)、记录(Record)、字段(Field)、索引(Index)、查询(Query)和视图(View)等部分组成,具体组成部分如下。

(1)数据库(Database)

SQL Server 2016数据库是关系型数据库,一个数据库由一个或一组数据表组成。每个数据库都以文件的形式存放在磁盘上,即对应于一个物理文件。不同的数据库与物理文件对应的方式也不一样。

(2)数据表(Table)

数据表简称表,由一组数据记录组成,数据库中的数据是以表为单位进行组织的。一个表是一组相关的按行排列的数据,每个表中都含有相同类型的信息。事实上,数据表实际上是一个二维表格。例如,一个班所有学生的考试成绩可以存放在一个表中,表中的每一行对应一个学生,包括学生的学号、姓名及各门课程成绩。

(3)记录(Record)

表中的每一行称为一个记录,它由若干个字段组成。

(4)字段(Field)

表中的每一列称为一个字段,也称为域。每个字段都有相应的描述信息,如数据类型、数据宽度等。

(5)索引(Index)

为了提高访问数据库的效率,可以对数据库使用索引。当数据库较大时,为了查找指定的记录,使用索引和不使用索引的效率有很大差别。索引实际上是一种特殊类型的表,其中含有关键字段的值(由用户定义)和指向实际记录位置的指针,这些值和指针按照特定的顺序(也由用户定义)存储,从而可以以较快的速度查找到所需要的数据记录。

(6)查询(Query)

查询实质上是一条SQL(结构化查询语言)命令,用来从一个或多个表中获取一组指定的记录,或者对某个表执行指定的操作。当从数据库中读取数据时,往往希望读出的数据符合某些条件,并且能按某个字段排序,使用查询可以使这一操作容易实现而且更加有效。

SQL是非过程化语言(有人称为第4代语言),在用它查找指定的记录时,只需指出做什么,不必说明如何做。每个语句可以看作是一个查询(Query),根据这个查询可以得到需要的查询结果。

(7)过滤器(Filter)

过滤器是数据库的一个组成部分,它把索引和排序结合起来,用来设置条件,然后根据给定的条件输出所需要的数据。

(8)视图(View)

数据的视图指的是查找到(或者处理)的记录数和显示(或者进行处理)这些记录的顺序。在一般情况下,视图由过滤器和索引控制。

3.1.4 系统数据库

在SQL Server 2016系统运行时会用到的相关信息(如系统对象和组态设置等)都是以数据库的形式存在的,而存放这些系统信息的数据库称为系统数据库。

1.系统数据库

当用户成功安装SQL Server 2016后,打开该数据库时会发现系统会自动建立master、model、msdb、resource和tempdb五个系统数据库。这些系统数据库有着各自不同的功能,具体如下:

(1)master

master数据库是SQL Server 2016中最重要的数据库,记录了SQL Server 2016系统中所有的系统信息,包括登入账户、系统配置和设置、服务器中数据库的名称、相关信息和这些数据库文件的位置以及SQL Server 2016初始化信息等。由于master数据库记录了如此多且重要的信息,一旦数据库文件损失或损毁,将对整个SQL Server系统的运行造成重大的影响,甚至使得整个系统瘫痪,因此要经常对master数据库进行备份,以便在发生问题时对数据库进行恢复。

(2)tempdb

tempdb数据库是存在于SQL Server 2016会话期间的一个临时性的数据库。一旦关闭SQL Server 2016,tempdb数据库保存的内容将自动消失。重新启动SQL Server 2016时,系统将重新创建新的且内容为空的tempdb数据库。

tempdb保存的内容主要包括显示创建临时对象,例如表、存储过程、表变量或游标;所有版本的更新记录;SQL Server创建的内部工作表;创建或重新生成索引时,临时排序的结果。

(3)model

model系统数据库是一个模板数据库,可以用作建立数据库的模板。它包含建立新数据库时所需的基本对象,如系统表、查看表、登录信息等。在系统执行建立新数据库操作时,它会复制这个模板数据库的内容到新的数据库上。由于所有新建立的数据库都是继承这个model数据库而来的,因此,若更改model数据库中的内容,则稍后建立的数据库也都会包含该变动。

model系统数据库是tempdb数据库的基础,由于每次启动SQL Server 2016时,系统都会创建tempdb数据库,因此model数据库必须始终存在于SQL Server系统中,用户不能删除该系统数据库。

(4)msdb

msdb数据库是代理服务数据库,为其报警、任务调度和记录操作员的操作提供存储空间。

SQL Server代理服务是SQL Server 2016中的一个Windows服务,用于运行任何已创建的计划作业。作业是指SQL Server中定义的能自动运行的一系列操作。例如,如果希望在每个工作日下班后备份公司所有服务器,就可以通过配置SQL Server代理服务使数据库备份任务在周一到周五的22:00之后自动运行。

(5)resource

resource数据库是只读数据库,包含SQL Server中所有系统对象,如sys.object对象。SQL Server系统对象在物理上持续存在于resource数据库中。

2.修改系统数据

SQL Server 2016不支持用户直接更新系统对象(如系统数据库、系统存储过程和目录视图)中的信息。但SQL Server 2016提供了一整套管理工具,用户可以使用这些工具充分管理他们的系统以及数据库中的所有用户和对象。其中包括:

(1)管理实用工具,如SQL Server Management Studio,帮助用户管理所有SQL Server 2016的数据对象。

(2)SQL-SMO API,使程序员获得在其应用程序中管理SQL Server的全部功能。

(3)T-SQL脚本和存储过程,这组工具允许用户使用系统存储过程和T-SQL DDL数据定义语句。

3.查看系统数据库数据

同样,SQL Server 2016允许用户通过使用以下方法获得系统数据库的目录和相关系统信息:

(1)系统目录视图。

(2)SQL-SMO。

(3)Windows Management Instrumentation(WMI)接口。

(4)应用程序中使用的数据API(如ADO、OLE DB或ODBC)的目录函数、方法、特性或属性。

(5)T-SQL系统存储过程和内置函数。