项目1创建关系数据库 【项目要点】 (1) 关系数据库的基本概念和术语。 (2) SQL Server 2016数据库管理系统软件的安装与启动操作。 (3) 关系数据库的创建。 (4) 数据表的创建。 任务1.1认知关系数据库 1.1.1关系 要了解什么是关系数据库(relation database),首先要从感性认知的角度出发对关系(relation)有个初步的认知。观察下面的一张有关描述学生信息情况的表格(table)——学生信息表,如表11所示。 表11学生信息表 学号姓名性别出生日期电话班级名系名 20190190101张志强男20010219139××××××××网络1901信息安全系 20190190102李保国男20010620133××××××××网络1901信息安全系 20190190103王温敏男20010826189××××××××网络1901信息安全系 表11具备以下六方面的特征。 (1) 表格的数据列(column)和数据行(row)的数量是确定的,表格中每列数据具有原子性(即每一列数据都必须是不可分的数据项)。 (2) 表格中每列数据的性质是相同的,即每一列中的信息是同一类型的数据。 (3) 表格中的任意两行数据不能完全相同(否则数据会有重复,可以部分相同)。 (4) 表格中任意两列不能有相同的列名(否则数据列会有重复)。 (5) 表格中数据列的顺序无所谓,即列的次序可以任意交换,由于列顺序是无关紧要的,因此在许多实际关系数据库产品中增加新列时,永远是插在最后一列。 (6) 表格中行除首行外,其余数据行的次序也可以任意互换,不会改变表格所描述的信息。 在数据库领域中,像表11这类同时具备上述六方面特征的数据表格称为关系。关系非常接近于Excel工作簿中的工作表(sheet)。一张表只有同时具备了上述六点特征才能称为一个关系。 表12则不能称为一个关系,因为其行数和列数不确定。“收入”这一列又细分解为“基本工资”“津贴”“其他”“水电补贴”和“实际收入”五列,违反了前述的六方面特征中的第一条。 表12工资表 职工号姓名 收入 基本工资津贴其他水电补贴实际收入 0101张三1000.001000.00600.00200.002400.00 0102李四1200.001000.00900.00200.002900.00 0103王五1500.001000.001000.00200.003300.00 1.1.2关系数据库 关系数据库是由若干个关系组成的相关的可被共享的数据集合。关系数据库如同Excel应用软件创建的工作簿那样,一个关系相当于Excel工作簿文件中的一张工作表。当然这样比喻并不十分恰当,随着学习的不断深入,读者对关系数据库的认识会不断深入。 1.1.3和关系数据库相关的术语 (1) 关系(relation): 是一种特殊的二维表格,如前面所述,关系是同时具备上述六点特征的表格。 (2) 记录(record): 除首行外(首行有时称为表的结构或表头),关系中的任意一行称为一条记录或一个元组(tuple)。 (3) 字段(field): 关系的任何一列,称为一个字段。列有名和值之分,如“姓名”是列名,“张三”是列值。 (4) 主键(primary key): 是一个列或多个列的组合,主键的取值具有唯一性,既不能重复,也不能为空。主键主要用来区分关系中的每一行数据。每个关系有且只能有一个主键。 如学生表中的“学号”这一列就可以作为主键,而在表14所示的成绩表中,“学号”和“课程号”两个列组合起来才可以作为主键。在一个表中只能有一个主键。 (5) 主属性(main attribute): 包含在主键中的属性(列名)称为主属性。主属性不同于主键,当主键由多个列组成时,一个数据表中可以有多个主属性; 而当主键由一个列组成时,主键和主属性可以理解为是等价的。 提示: 初学者很容易误把一个关系中的多个主属性认识为多个主键,这是不正确的,因为一个关系中只能有一个主键。 (6) 外键(foreign key): “学号”列既是表11学生表中的列,又是表14成绩表中的列,它在学生表中是主键,在成绩表中不是主键或候选键,则称“学号”字段是成绩表的“外键”,“外键列”的取值只能取“主键列”已存在的值。 (7) 候选键(candidate key): 候选键又称候选码,是关系中的一个列或多个列的组合。候选键的取值也具有唯一性,即不能重复,但可以有空值(只能有一个空值)。候选键也可以用来区分关系中的每一条记录,这一点与主键相同。一个关系中可以有多个候选键,在候选键中选取一个作为主键。 (8) 关系数据库(relation database): 与一个特定的组织各项应用有关的全部数据表(关系)的集合,主要由关系、视图、存储过程和触发器等数据库对象组成(注: 视图、存储过程和触发器等内容将在后续的项目中陆续学习)。例如,学生表(表11)、课程表(表13)和成绩表(表14)就组成了一个简单的成绩管理系统数据库。 表13课程表 课程号课程名学分 01英语5 02数学4 03法律2 04体育2 表14成绩表 学号课程号成绩 201901901010190 201901901010285 201901901010395 201901901020195 201901901020290 201901901030280 201901901030395 (9) 关系数据库管理系统(relation database management system,RDBMS): 对关系数据库进行创建和管理的一类系统软件的总称。数据库管理系统软件产品有很多种,常用的数据库管理系统软件有SQL Server、Oracle、MySQL、Access、Visual FoxPro等。在计算机应用基础课程中学习过的电子表格应用软件——Excel也具备了关系数据库管理系统的一些基本功能。 本书主要阐述如何利用SQL Server 2016这一关系数据库管理系统软件进行数据库的创建、管理、运行、安全及其他各种相关操作技能等知识。 任务1.2运行SQL Server 2016数据库 管理系统软件 1.2.1SQL Server 2016简介 SQL Server 2016是微软公司推出的基于客户/服务器(Client/Server,C/S)架构的关系数据库管理系统,它具有较强的可伸缩性、可用性和可管理性,既可用于二层的C/S架构,又可用于多层的B/S架构。本书主要阐述SQL Server 2016的二层的C/S架构功能。 最简单的C/S架构将软件分成两部分: 一台服务器(server)和多个客户机(client)。服务器通常采用高性能的PC、工作站或小型机,并安装大型数据库管理系统服务器端软件,如Oracle或SQL Server。客户机常采用性能一般的PC,需要安装专用的客户端软件。C/S架构的优点是客户端响应速度快。C/S架构如图11所示。 图11C/S架构示意图 1. SQL Server数据库服务器 SQL Server数据库服务器是指安装并运行了SQL Server数据库管理系统服务器端组件的计算机。“数据库引擎”就是一种经常使用的SQL Server数据库管理系统服务器端组件。 2. SQL Server客户机 SQL Server客户机是指安装并运行了SQL Server数据库管理系统客户端组件的计算机。“SQL Server管理工具”就是一种经常使用的SQL Server数据库管理系统客户端组件。 C/S架构的工作机制如下。 (1) 用户在客户机使用TransactSQL语句向SQL Server数据库服务器发出数据请求。 (2) SQL Server数据库引擎响应用户的数据请求并完成相应的数据操作请求后把处理结果信息回复给客户机。 1.2.2运行SQL Server数据库管理系统软件 1. 启动数据库引擎 对数据库的创建、删除和管理等操作都是借助数据库管理系统软件来进行的,所以创建数据库之前应先掌握SQL Server数据库管理系统软件的安装与启动。下面介绍如何启动SQL Server数据库管理系统软件。 常用的Microsoft SQL Server 2016数据库服务器端组件有数据库引擎、代理服务器、报表服务器、分析服器等。其中,数据库引擎(Microsoft SQL Server 2016 Database Engine)是较常使用的服务器端组件之一,它是用于存储、处理和保护数据的核心后台服务程序。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内要求极高而且需要处理海量数据的应用需要。数据库引擎还在保持高可用性方面提供了有力的支持。 启动运行SQL Server 2016,首先应启动Microsoft SQL Server 2016数据库引擎,操作步骤如下。 单击Windows 10操作系统桌面底部的“开始”按钮,打开“开始”菜单,用鼠标拖动“开始”菜单右侧的滚动条,找到并单击展开Microsoft SQL Server 2016菜单,然后在展开的Microsoft SQL Server 2016菜单中选择“SQL Server 2016配置管理器”命令,如图12所示,打开SQL Server Configuration Manager窗口,如图13所示。 图12“SQL Server 2016 配置管理器”子菜单项 图13SQL Server Configuration Manager窗口 在SQL Server Configuration Manager窗口的左侧窗格中选择“SQL Server服务”选项,在右侧窗格中右击SQL Server(MSSQLSERVER)行(此行即是数据库引擎服务名称),在弹出的快捷菜单中选择“启动”命令,如图1 4所示。待启动完毕,计算机就是一台SQL Server 数据库服务器了。 图14“启动”快捷菜单项 由于SQL Server 数据库服务器运行于后台,SQL Server Configuration Manager(SQL Server配置管理器)窗口可以关闭,而并不影响SQL Server 数据库服务器的运行。 提示: 在SQL Server 2016安装完成后,SQL Server 数据库引擎组件是自动启动的,不必手动启动。有时,机房管理员为了提高计算机的运行速度,关闭了SQL Server数据库引擎组件开机自动启动的运行方式,所以需要人工手动启动SQL Server数据库引擎组件。另外,由于机房中的计算机中一般都安装了还原卡,所以每次上机使用SQL Server 2016都应先手 动启动SQL Server数据库引擎组件。 2. 启动客户端组件Microsoft SQL Server Management Studio Microsoft SQL Server Management Studio(下面简称为SSMS)是Microsoft SQL Server 2016 提供的一种集成环境,用于访问、配置、控制、管理和开发 SQL Server 的所有其他组件。SSMS将一组多样化的图形工具与多种功能齐全的脚本编辑器组合在一起,可为各种技术级别的开发人员和管理员提供对SQL Server 2016数据库引擎组件的访问和管理。 启动SQL Server 2016客户端组件SSMS的操作步骤如下。 单击Windows 操作系统桌面左下角的“开始”按钮,打开“开始”菜单,用鼠标拖动“开始”菜单右侧的滚动条,找到并单击展开Microsoft SQL Server Management Tools菜单,选择Microsoft SQL Server Manage命令,此时,弹出SSMS欢迎界面,如图1 5所示。 图15Microsoft SQL Server Management Studio欢迎界面 随后弹出“连接到服务器”对话框,如图16所示。 图16“连接到服务器”对话框 在“连接到服务器”对话框的“服务器类型”下拉列表框中选择“数据库引擎”选项; 在“服务器名称” 下拉列表框中选择默认值(HYXYPC),其中HYXYPC是数据库服务器计算机的名称,对于不同的计算机而言,该名称是不相同的; 在“身份验证”下拉列表框中选择默认值“Windows身份认证”; 在“用户名” 下拉列表框选择hyxyPC\hyxy(服务器计算机名/用户名)。然后,单击对话框底部“连接”按钮,即可进入SSMS窗口,如图17所示。 图17SSMS窗口 此时的计算机就是一台SQL Server客户机了。 SSMS窗口是今后操作SQL Server数据库的主要窗口,所有建立数据库、操作数据库和管理数据库等的操作都是在该窗口中进行的。 提示: 必须先启动SQL Server 2016 Database Engine,然后启动SQL Server 2016客户端组件,顺序不能颠倒,因为数据库客户端组件启动时,要连接已经启动运行于后台的数据库服务器端组件——数据库引擎。 如果一台计算机既运行了SQL Server 2016数据库引擎组件,又运行了SQL Server 2016客户端组件,那么这台计算机就同时具备了数据库服务器和数据库客户机端双重功能。 提示: 对安装SQL Server 2016软件感兴趣的同学可参阅附录A。 任务1.3利用SSMS创建关系数据库 1.3.1数据库的组成 在SQL Server 2016中,数据库是用来存放数据表、视图和索引等数据库对象的逻辑实体。数据库可以存放在一个或多个物理磁盘上,一个磁盘也可以存放一个或多个数据库。一个最简单的数据库至少由一个扩展名为.MDF的主数据文件和一个扩展名为 .LDF的事务日志文件组成。也可以根据实际需要,给数据库增加多个扩展名为.NDF的次数据文件和其他扩展名为.LDF的日志文件,并可以将它们放在不同的磁盘上。 SQL Server的每一个数据库都由关系图(relation map)、表(table)、视图(view)、存储过程 (stored procedures)、触发器(triggers)、用户自定义数据类型(userdefined data types)、用户定义函数(userdefined functions)、索引(indexes)、规则(constraints)、默认值(defaults)等数据库对象组成。 1.3.2数据库的类型 在SQL Server 2016中,数据库分为系统数据库、用户数据库和示例数据库三种。 1. 系统数据库 SQL Server 2016安装完毕后,安装程序自动安装了四个系统数据库: master、model、msdb和tempdb,如图18所示。 图18系统数据库 (1) master数据库。master数据库由一些系统表组成。这些系统表跟踪整体的系统安装和随后创建的其他数据库。虽然每个数据库都有一组维护其包含对象信息的系统目录,但是master数据库中的一些系统目录还能够保存关于磁盘空间、文件分配和使用、系统层次的配置信息、端点、用户名的信息以及当前实例上的数据库信息和系统上其他SQL Server 信息。 因为master数据库对系统来说至关重要,所以应保存它的一个当前备份。诸如创建另一个数据库、改变配置值和修改 用户名的操作都会修改master数据库,所以在执行过这些操作后应该备份master数据库。 (2) model数据库。model数据库是一个模板数据库,它包含了用户数据库中应该包含的所有系统表以及其他对象的结构。 Model数据库只是一个模板数据库。每当创建一个新的数据库时,SQL Server都会复制model数据库作为新数据库的基础。如果希望每一个新的数据库在创建时都含有某些对象或者权限,可以把这些对象或权限放在model数据库中,此后,所有新建立的数据库都会继承它们。 (3) msdb数据库。msdb数据库记录了有关SQL Server Agent代理服务的有关信息,如安排报警、作业,并记录操作员等信息。 SQL Server代理服务会使用msdb数据库,执行一些例如备份和预先计划好的复制任务。Service Broker也会用到msdb数据库,它为SQL Server提供队列和可靠消息传递。当不在该数据库上执行备份和维护任务时,通常可以忽略msdb数据库(不过也许需要查看一下备份历史和一些保存在那里的其他信息)。因为在Microsoft SQL Server Management Studio的对象资源管理器中可以访问msdb中的所有信息,所以通常不需要直接访问该数据库中的表。可以把msdb数据库中的表看作另一种形式的系统表,就像不能直接修改系统表那样,不应该直接在msdb的表中添加或删除数据,除非对自己的操作有着非常透彻的理解,或者微软SQL Server技术支持工程师告诉我们去那样做。在SQL Server 2016以前,实际上是可以删除msdb数据库的,之后SQL Server仍然可用,但不能再维护任何历史备份,并且不能够再定义任务、警告、工作,或者建立副本。在SQL Server 2016中,有一个没有文档记录的跟踪标记(trace flag)允许删除msdb数据库,不过因为默认的msdb数据库非常小,建议即使用不到也不要删除它。 (4) tempdb数据库。tempdb数据库是服务器的一个主要工作区。在执行复杂或者大型的查询操作时,如果SQL Server需要创建一些临时表来完成,那它就在tempdb数据库中进行。在创建临时表时,即使你是在当前数据库中创建这些表的,但实际也是在tempdb数据库中创建的。只要需要临时保存数据,就是将数据保存在tempdb数据库中。 tempdb数据库与其他数据库大相径庭。不仅数据库中的对象是临时的,数据库本身也是临时的。每次启动SQL Server时,tempdb数据库是系统中唯一完全重建的数据库。 提示: 从技术角度讲,可以在tempdb数据库中创建自己的对象,但强烈禁止进行该类操作。这是因为每次重启SQL Server数据库服务器时,SQL Server系统都会删除并重新建立tempdb数据库,在其中创建的所有对象和权限在下次重启SQL Server时会全部丢失,不能长期保存,所以直接在tempdb数据库中创建对象没有任何意义。 2. 用户数据库 用户根据实际需求,为处理某一方面事务而自行建立的数据库称为用户数据库。 3. 示例数据库 在SQL Server 2016中可使用Adventure Works Cycles公司的示例数据库,数据库中包含了该公司的业务方案、雇员和产品信息。默认情况下,SQL Server 2016安装程序不会自动安装示例数据库,可从有关网站中查找并下载。 示例数据库也是用户数据库,它是微软公司提供的,是用作例子、演示和说明用的数据库。 1.3.3创建用户数据库 【例11】 利用SSMS创建数据库。 创建一个名为cjgl的学生信息管理数据库。主数据文件名为cjgl.mdf,“初始文件大小”为10MB,“最大文件大小”为“无限制”,增长量为1MB; 事务日志文件名为cjgl_log.ldf,“初始文件大小”为15MB,“最大文件大小”为“无限制”,增长量为1MB。 创建数据库cjgl的操作步骤如下。 (1) 打开SSMS窗口,在“对象资源管理器”窗格中展开数据库服务器节点,右击“数据库”节点,在弹出的快捷菜单中选择“新建数据库”命令,如图19所示,可打开“新建数据库”对话框。 图19“新建数据库”快捷菜单 (2) 在“新建数据库”对话框中,默认显示的是“常规”选择页。在“常规”选择页的“数据库名称”后的文本框中输入数据库的名称cjgl,输入数据库名称的同时,“数据库文件”列表的“逻辑名称”列下的单元格内容将随之发生变化,如图110所示。 图110“新建数据库”对话框 (3) “数据库文件”列表中每一个单元格的内容均可被编辑更改。单击“初始大小(MB)”列下面的单元格,把数据文件和日志文件的初始大小分别改为10和15(默认的文件容量单位是MB)。 (4) 在“数据库文件”列表“自动增长/最大大小”单元格位置,单击按钮打开“更改cjgl的自动增长设置”对话框,可以更改数据库自动增长方式为“按百分比”或“按MB”, “最大文件大小”可设置为“限制为(MB)”(可进一步在其后的文本框内输入具体的数值)