- SQL应用开发参考手册
- 郭鑫
- 8575字
- 2025-02-14 20:01:36
第2章
数据库的基本操作
2.1 创建数据库对象
本节主要以SQL Server数据库为例讲解如何创建数据库对象。
2.1.1 创建数据表
在使用数据库的过程中,接触最多的就是数据库中的表,表中存放了数据库中的所有数据,所以表是SQL Server数据库系统的基本信息存储结构,也是数据库中最重要的部分,管理好表自然就管理好了数据库。
创建表的过程就是定义表列的过程,下面在Microsoft SQL Server Management Studio中创建数据表mrkj,具体操作步骤如下。
(1)启动"Microsoft SQL Server Management Studio",并连接到SQL Server 2008中的数据库。
(2)鼠标右键单击“表”选项,在弹出的快捷菜单中选择“新建表”命令,如图2.1所示。
(3)进入“添加表”对话框,如图2.2所示。在列表框中填写所需要的字段名,单击“保存”按钮,即添加表成功。

图2.1 新建表

图2.2 创建数据表名称
2.1.2 创建视图
视图设计器以可视化的形式创建视图,视图设计器分为四个部分。
●“关系图区”以图形方式显示正在查询的表和其他表结构化对象,如视图。同时,也显示它们之间的连接关系。每个矩形代表一个表或表结构化对象,并显示可用的数据列以及表示每列用于查询的图标,如排序图标等。矩形之间的连接线表示两个表之间的连接。
●“网格区”是一个类似电子表格的网格,用户可以在其中指定视图的选项,如在视图中显示哪些数据列、哪些行等。通过“网格区”可以指定要显示列的别名、列所属表、计算列的表达式、查询的排序次序、搜索、条件以及分组准则等。
●“SQL区”显示用于查询视图的SQL语句。可以对设计器自动生成的SQL语句进行编辑,也可以输入自己的SQL语句。对于不能用“关系图区”和“网格区”创建的SQL语句(如联合查询),就可以在该区写入相应的SQL语句。
●“结果区”显示最近执行的选择查询的结果。可以通过编辑该网格单元中的值对数据库进行修改,而且可以添加或删除行。在视图设计器中,“结果区”也可以显示视图的定义信息。
下面在Microsoft SQL Server Management Studio中创建视图"View_Stu",具体操作步骤如下。
(1)启动"Microsoft SQL Server Management Studio",并连接到SQL Server 2008中的数据库。
(2)在“对象资源浏览器”中展开“数据库”节点,展开指定的数据库“db_2008”。
(3)鼠标右键单击“视图”选项,在弹出的快捷菜单中选择“新建视图”命令,如图2.3所示。
(4)弹出“添加表”对话框,如图2.4所示。在列表框中选择学生信息表"student",单击“添加”按钮,然后单击“关闭”按钮。

图2.3 新建视图

图2.4 “添加表”对话框
(5)进入“视图设计器”界面,如图2.5所示。在“表选择区”中选择“所有列”选项,单击执行按钮,视图结果区中自动显示视图结果。
(6)单击工具栏中的“保存”按钮,弹出“选择名称”对话框,如图2.6所示。在“输入视图名称”文本框中输入视图名称"View_student",单击“确定”按钮即可保存该视图。

图2.5 视图设计器

图2.6 “选择名称”对话框
2.1.3 创建存储过程
下面在Microsoft SQL Server Management Studio中创建存储过程"Proc_Stu",要求完成以下功能:在Student表中查询男生的Sno、Sex、Sage这几个字段的内容。具体操作步骤如下。
(1)启动"Microsoft SQL Server Management Studio",并连接到SQL Server 2008中的数据库。
(2)在“对象资源管理器”中选择指定的服务器和数据库,展开数据库的“可编程性”节点,鼠标右键单击“存储过程”,在弹出的快捷菜单中选择“新建存储过程”命令,如图2.7所示。
(3)在弹出的“连接到数据库引擎”对话框中,单击“连接”按钮,便出现创建存储过程的窗口,如图2.8所示。

图2.7 选择“新建存储过程”命令

图2.8 创建存储过程窗口
(4)在创建存储过程的窗口中,将对应的SELECT语句修改为以下语句:
SELECT Sno,Sname,Sex,Sage FROM Student WHERE Sex='男'
2.1.4 创建触发器
在SQL Server Management Studio中创建触发器的操作步骤如下。
(1)在操作系统的任务栏中依次选择“开始”→“所有程序”→“Microsoft SQL Server 2008”→"SQL Server Management Studio"。
(2)在"Microsoft SQL Server Management Studio"窗口中选择指定数据库中的指定表,展开表节点,选择“触发器”,单击鼠标右键,在弹出的快捷菜单中选择“新建触发器”命令,如图2.9所示。
(3)在"Microsoft SQL Server Management Studio"窗口右侧显示创建触发器的模板,如图2.10所示。然后根据该模板编写相应的SQL语句即可。

图2.9 选择“新建触发器”命令

图2.10 创建触发器的模板
2.2 备份和恢复数据库
在数据库使用过程中,数据的备份和恢复工作是保证数据安全性的一个重要操作。科学地管理数据库,可以从多种故障中恢复数据,例如媒体故障、用户错误及服务器永久丢失。同样也可以使用备份和恢复数据库的方法,实现两个数据库之间的复制工作。
备份数据库是指对数据库或事务日志的复制,当系统、磁盘或数据库文件损坏时,可以使用备份文件进行恢复,防止数据丢失。
恢复数据库是在备份数据库基础上的操作,只有在数据库备份后,才能通过备份文件对数据库进行还原操作。在计算机受到病毒的破坏、磁盘损坏等原因导致数据丢失、不完整或数据错误时,通过对数据库的恢复,将数据恢复到备份数据库中的某一时间,以减少用户的损失。本节将介绍SQL Server数据库和Oracle数据库的备份和还原。
2.2.1 备份SQL Server数据库
“备份数据库”任务可执行不同类型的SQL Server数据库备份(完整备份、差异备份和文件备份)。
下面以备份数据库“MRKJ”为例介绍如何备份数据库。具体操作步骤如下。
(1)启动"Microsoft SQL Server Management Studio",并连接到SQL Server 2008中的数据库。在“对象资源管理器”中展开“数据库”节点。
(2)鼠标右键单击要备份的数据库“MRKJ”,在弹出的快捷菜单中选择“任务”→“备份”命令,如图2.11所示。
(3)弹出“备份数据库”对话框,如图2.12所示。在“常规”选项卡中设置备份数据库的数据源和备份地址。

图2.11 选择备份数据库

图2.12 “备份数据库”对话框
在该对话框中设置以下几项:
●在“数据库”下拉列表框中验证数据库名,如果需要也可以更改备份的数据库名称。
●在“备份类型”下拉列表框中选择数据库备份的类型,这里选择“完整”备份。同时选择“备份组件”区域中的“数据库”单选框,备份整个数据库。
●根据需要通过“备份集过期时间”选项设置备份的过期天数。取值范围为0~9999,0表示备份集将永不过期。
在“目标”区域中单击“添加”按钮,弹出“选择备份目标”对话框,如图2.13所示,这里选择“文件名”单选框,单击其后的浏览按钮,选择文件名及其路径。
(4)单击“确定”按钮,返回到“备份数据库”对话框。选择“选项”选项卡,如图2.14所示。这里在“覆盖媒体”区域中选择“备份到现有媒体集”→“追加到现有备份集”单选框,把备份文件追加到指定介质上,同时保留以前的所有备份。

图2.13 “选择备份目标”对话框

图2.14 “备份数据库”对话框
(5)单击“确定”按钮,系统提示备份成功的提示信息,如图2.15所示。单击“确定”按钮后即可完成数据库的完整备份。

图2.15 提示信息
2.2.2 还原SQL Server数据库
执行数据库备份的目的是便于进行数据恢复。如果发生机器错误、用户操作错误等,用户就可以对备份过的数据库进行恢复。
下面以还原数据库“MRKJ”为例介绍如何恢复数据库。具体操作步骤如下。
(1)启动Microsoft SQL Server Management Studio,并连接到SQL Server 2008中的数据库。在“对象资源管理器”中展开“数据库”节点。
(2)鼠标右键单击要恢复的数据库“MRKJ”,在弹出的快捷菜单中选择“任务”→“还原”→“数据库”命令,如图2.16所示。

图2.16 选择还原数据库
(3)弹出“还原数据库”对话框,在该对话框的“常规”选项卡中设置还原的目标和源数据库,在该对话框中保留默认设置即可,如图2.17所示。

图2.17 还原数据库
(4)选择“选项”选项卡,设置还原操作时采用的形式以及恢复完成后的状态,如图2.18所示。这里在“还原选项”区域中选中“覆盖现有数据库”复选框,以便在恢复时覆盖现有数据库及其相关文件。

图2.18 “选项”选项卡
(5)单击“确定”按钮,系统提示还原成功的提示信息,如图2.19所示。单击“确定”按钮后即可完成数据库的还原操作。

图2.19 提示信息
2.2.3 备份Oracle数据库
以下操作实现的是使用Oracle EM管理工具备份Oracle DBMR数据库的操作。
(1)在浏览器的URL中输入“http://主机名称:端口号/em”(例如本示例中为http://192.168.1.23:5501/em)进入EM登录界面,如图2.20所示。在该页面中输入用户名和口令,连接身份选择"Normal"。
(2)进入EM界面后,单击EM的“数据库实例”→“维护”标签,进入图2.21所示的“维护”选项卡页面。

图2.20 进入EM界面的登录窗口

图2.21 “维护”选项卡页面
(3)在备份Oracle数据库前,需要对要备份的数据库进行恢复设置。单击图2.21中“备份/恢复设置”区域中的“恢复设置”选项,进入图2.22所示的页面。在该页面中需要选中“介质恢复”区域中的“ARCHIVELOG模式”(归档模式)复选框,然后单击页面右上方的“应用”按钮。
(4)完成以上操作后,将返回图2.21所示的页面,在该页面中单击“备份/恢复”区域中的“调度备份”选项,进入图2.23所示的页面。

图2.22 “恢复设置”页面

图2.23 “调度备份”页面
在“定制备份”区域中选择要备份的对象,这里保持其默认设置即备份整个数据库。
(5)单击图2.23(“调度备份”页面)中的“调度定制备份”按钮,进入图2.24所示的“调度定制备份:选项”页面。
在“备份类型”选项区域中选择备份类型为“完全备份”,其设置保持默认。
(6)单击图2.24页面右侧的“下一步”按钮,进入图2.25所示的“调度定制备份:设置”页面。

图2.24 “调度定制备份:选项”页面

图2.25 “调度定制备份:设置”页面
这里需要注意的是数据库的磁盘备份位置是安装Oracle数据库时的默认路径,可以更改,操作步骤如下。
(1)单击图2.21“备份/恢复设置”区域中的“备份设置”选项,进入图2.26所示的页面。
(2)在“磁盘备份位置”文本框内输入备份的磁盘路径(例如E:\backup),然后单击页面右侧的“测试磁盘备份”按钮,如果测试成功将显示“磁盘备份测试成功”信息。设置完成后,磁盘备份位置就会更改为:E:\backup。
(3)单击图2.25页面右侧的“下一步”按钮,进入图2.27所示的“调度定制备份:调度”页面。保持该页面中的默认设置。

图2.26 “备份设置”页面

图2.27 “调度定制备份:调度”页面
(4)单击图2.26页面右侧的“下一步”按钮,进入图2.28所示的“调度定制备份:复查”页面。保持该页面中的默认设置。

图2.28 “调度定制备份:复查”页面
(5)单击图2.28页面右侧的“提交作业”按钮,进入图2.29所示的“已成功提交作业”页面。单击该页面中的“查看作业”按钮,进入“作业活动”页面,如图2.30所示,可以在该页面“结果”区域中的“状态(执行)”选项中查看Oracle数据库的备份是否成功(本示例的执行状态为“成功”)。

图2.29 “已成功提交作业”页面

图2.30 “作业活动”页面
2.2.4 还原Oracle数据库
以下操作实现的是使用Oracle EM管理工具还原Oracle DBMR数据库的操作。
(1)在浏览器的URL中输入:“http://主机名称:端口号/em”(例如本示例为http://192.168.1.23:5501/em)进入EM界面。
(2)进入EM界面后,单击EM的“数据库实例”→“维护”标签,进入图2.31所示的“维护”选项卡页面。在该页面的“高可用性”区域中单击“执行恢复”选项。
(3)完成以上操作后,进入“执行恢复”页面,如图2.32所示。在“整个数据库恢复”区域中选中“恢复到当前时间或过去的某个时间点”单选框,然后单击该页面右侧的“执行整个数据库恢复”按钮,其他选项保持默认设置。

图2.31 “维护”选项卡页面

图2.32 “执行恢复”页面
(4)完成以上操作后,进入“确认”页面,如图2.33所示。在该页面中将有如下提示信息:“数据库当前处于OPEN状态和ARCHIVELOG模式。要执行整个数据库恢复,数据库首先关闭,然后进入MOUNTED状态。是否确实要立即关闭数据库?”。单击该页面中的“是”按钮,关闭连接的数据库。
(5)关闭所连接的数据库后,将进入数据库示例:DBMR的“维护”页面,如图2.34所示。单击该页面中的“执行恢复”选项。

图2.33 “确认”页面

图2.34 “维护”页面
(6)完成以上操作后,将进入“执行恢复”页面,如图2.35所示。此时该页面将显示数据库当前状态为MOUNTED(归档模式)。在“主机身份证明”区域中的“用户名”和“口令”文本框内分别输入主机的用户名和口令。
(7)单击图2.35页面右侧的“执行整个数据库恢复”按钮,进入图2.36所示的“执行恢复:结果”页面。此时可以查看到数据库恢复操作成功。

图2.35 归档模式(MOUNTED)下的“执行恢复”页面

图2.36 “执行恢复:结果”页面
2.3 导入和导出数据
2.3.1 从SQL Server中导入数据表
导入数据是从Microsoft SQL Server的外部数据源中检索数据,然后将数据插入到SQL Server表的过程。
下面主要介绍通过导入和导出将SQL Server数据库“db_2008”中的部分数据表导入到SQL Server数据库“MRKJ”中。具体操作步骤如下。
(1)启动"Microsoft SQL Server Management Studio",并连接到SQL Server 2008中的数据库。在“对象资源管理器”中展开“数据库”节点。
(2)鼠标右键单击数据库“MRKJ”,在弹出的快捷菜单中选择“任务”→“导入数据”命令,如图2.37所示,此时将打开“SQL Server导入和导出向导”窗口。

图2.37 选择导入数据
(3)单击“下一步”按钮,打开“选择数据源”窗口,在该窗口中首先选择数据源,然后选择服务器名称,再选择身份验证方式,最后选择导入数据的源数据库,这里选择“db_2008”数据库,如图2.38所示。
(4)单击“下一步”按钮,打开“选择目标”窗口,在该窗口中选择要将数据库复制到何处,如图2.39所示。

图2.38 “选择数据源”窗口

图2.39 “选择目标”窗口
说明 在选择要将数据库复制到何处时,首先需要输入服务器名称,然后选择身份验证方式,并输入用户名和密码,最后选择数据库即可。
(5)单击“下一步”按钮,打开“指定表复制或查询”窗口,在该窗口中选择是从指定数据源复制一个或多个表和视图,还是从数据源复制查询结果,这里选中“复制一个或多个表或视图的数据”单选框,如图2.40所示。
(6)单击“下一步”按钮,打开“选择源表和源视图”窗口,在该窗口中选择一个或多个要复制的表或视图,这里选择"Employee"表,如图2.41所示。

图2.40 “指定表复制或查询”窗口

图2.41 “选择源表和源视图”窗口
(7)单击“下一步”按钮,打开“保存并运行包”窗口,该窗口用于提示是否选择SSIS包,如图2.42所示。
(8)单击“下一步”按钮,打开“完成该向导”窗口,如图2.43所示。

图2.42 “保存并运行包”窗口

图2.43 “完成该向导”窗口
(9)单击“完成”按钮开始执行复制操作,打开“执行成功”窗口,如图2.44所示。

图2.44 “执行成功”窗口
(10)最后单击“关闭”按钮,完成数据表的导入操作。
(11)展开数据库“MRKJ”,单击“表”选项,即可从数据库中查看从数据库“db_2008”中导入的数据表,如图2.45所示。

图2.45 导入的数据表
2.3.2 从SQL Server中导出数据表
导出数据是将SQL Server实例中的数据设为某些用户指定格式的过程,如将SQL Server表的内容复制到Excel表格中。
下面主要介绍通过导入导出向导将SQL Server数据库“db_2008”中的部分数据表导出到Excel表格中。具体操作步骤如下。
(1)启动"Microsoft SQL Server Management Studio",并连接到SQL Server 2008中的数据库。在“对象资源管理器”中展开“数据库”节点。
(2)鼠标右键单击数据库“db_2008”,在弹出的快捷菜单中选择“任务”→“导出数据”命令,如图2.46所示。此时将打开“选择数据源”窗口,在该窗口中选择要从中复制数据的源,如图2.47所示。

图2.46 选择导出数据
(3)单击“下一步”按钮,打开“选择目标”窗口,在该窗口中选择要将数据库复制到何处。在该窗口中分别选择数据源类型和Excel文件的位置,如图2.48所示。

图2.47 “选择数据源”窗口

图2.48 “选择目标”窗口
(4)单击“下一步”按钮,打开“指定表复制或查询”窗口,在该窗口中选择是从指定数据源复制一个或多个表和视图,还是从数据源复制查询结果,这里选中“复制一个或多个表或视图的数据”单选框,如图2.49所示。
(5)单击“下一步”按钮,打开“选择源表和源视图”窗口,在该窗口中选择一个或多个要复制的表或视图,这里选择"Employee"表和"Student"表,如图2.50所示。

图2.49 “指定表复制或查询”窗口

图2.50 “选择源表和源视图”窗口
(6)单击“下一步”按钮,打开“保存并运行包”窗口,该窗口用于提示是否选择SSIS包,如图2.51所示。
(7)单击“下一步”按钮,打开“完成该向导”窗口,如图2.52所示。
(8)单击“完成”按钮开始执行复制操作,打开“执行成功”窗口,如图2.53所示。
(9)最后单击“关闭”按钮,完成数据表的导入操作。

图2.51 “保存并运行包”窗口

图2.52 “完成该向导”窗口
(10)打开book1.Excel,即可查看从数据库“db_2008”中导入的数据表中的内容,如图2.54所示,图2.55为student表中的内容。

图2.53 “执行成功”窗口

图2.54 Excel文件中的内容

图2.55 student表中的内容
2.3.3 从Oracle中导出数据表
从Oracle数据库中导出数据表使用EM管理数据文件的方法。
以下操作演示的是在数据文件管理页面进行导出Oracle数据库DBMR中表的操作。
(1)进入EM主页面后单击“维护”标签,进入“维护”选项卡页面,选择“导出到导出文件”选项,如图2.56所示。
(2)完成以上操作后,进入图2.57所示的页面,在该页面中选择导出类型:“表”,然后单击该页面中的“继续”按钮。
(3)进入“导出:添加表”页面,如图2.58所示。在该页面中单击方案图标,将弹出如图2.59所示的页面,选择可用方案中名为"MR"的方案。

图2.56 EM主页面“维护”页面的“导出到导出文件”选项

图2.57 选择数据库DBMR的导出类型

图2.58 “导出:添加表”页面

图2.59 选择可用方案
(4)选择方案"MR"后,单击该页面中的“开始”按钮,将会在页面中的“搜索结果”中显示要导出的方案MR下的所有数据表,如图2.60所示。这里选择该方案下的所有表,然后单击页面中的“选择”按钮,进入下一步操作。
(5)进入“导出:表”页面,单击“下一步”按钮即可,如图2.61所示。
(6)完成上一步操作后,进入“导出:选项”页面,如图2.62所示。在“可选文件”区域内选择“目录对象”中创建的"MRExport",单击该页面上部的“下一步”按钮。
(7)进入“导出:文件”页面,如图2.63所示。在该页面“选择目录对象”区域中选择创建的目录对象"MRExport",然后单击该页面上部的“下一步”按钮。

图2.60 选择要导出的数据表

图2.61 “导出:表”页面

图2.62 “导出:选项”页面

图2.63 “导出:文件”页面
(8)完成以上操作,进入“导出:调度”页面,如图2.64所示。在该页面的“作业参数”区域内可以填写“作业名称”和“说明”两部分内容,其他选项选择默认即可,然后单击页面上部的“下一步”按钮。
(9)进入“导出:复查”页面,如图2.65所示,可以对所要导出的数据表进行复查工作。单击页面上的“提交作业”按钮,即可进入作业创建过程,如图2.66所示。
(10)完成以上操作后,查看“作业活动”结果,可以查看到从Oracle数据库中导出DBMR数据库表为执行成功状态,如图2.67所示。

图2.64 “导出:调度”页面

图2.65 “导出:复查”页面

图2.66 作业创建过程

图2.67 作业活动结果
2.3.4 从Oracle中导入数据表
从Oracle数据库中导入数据表使用EM管理数据文件的方法。
以下操作演示的是将本地磁盘中导出的Oracle数据库表导入到Oracle dbsql数据库中。
(1)进入EM主页面后单击“维护”标签,进入“维护”选项卡页面,选择“从导出文件导入”选项,如图2.68所示。
(2)进入“导入:文件”页面,如图2.69所示。首先选择文件“导入类型”为表,然后在“文件”区域内的“选择目录对象”下拉列表框中选择名称为"mr"的目录对象。

图2.68 选择“从导出文件导入”选项

图2.69 “导入:文件”页面
这里需要强调的是,在创建目录对象时,其路径的选择要填写所要导入文件的物理路径。
(3)完成以上操作后,进入“导入:处理:读取导入文件”页面,如图2.70所示。完成此操作后此页将自动跳转到下一页。

图2.70 “导入:处理:读取导入文件”页面
(4)接下来共进行五步操作,依次为导入表、重新映射、设置选项、调度、复查。
导入读取成功后,将进入“导入:表”页面,如图2.71所示。在该页面中单击“添加”按钮,进行选择方案操作,本示例选择名称为"MR"的方案,如图2.72所示。
(5)选择可用方案后,单击图2.71页面中的“下一步”按钮,进入“导入:添加表”页面,如图2.73所示。在该页面中,首先在“搜索”选项区域内单击图标,选择可用的方案(本示例选择的是名称为"MR"的方案),注意选择的方案必须在Oracle数据库中存在,然后单击页面中的“开始”按钮,在“搜索结果”选项区域内显示该方案下所有的数据表。
单击“搜索结果”区域中的“全选”按钮,导出该方案下的所有数据表。完成以上操作后,单击界面中的“选择”按钮,进入“导入:表”页面,如图2.74所示。
(6)在“导入:表”页面中保持其默认设置,单击页面中的“下一步”按钮,进入“导入:重新映射”页面,如图2.75所示。
在该页面的“重新映射方案”区域内单击“添加另一行”按钮(通过此操作用户可以将一个方案中的数据导入到另一个方案中),本示例选择的目标方案名称为“SH”,如图2.76所示。
其他设置选择默认,单击该页面中的“下一步”按钮。

图2.71 “导入:表”页面

图2.72 “搜索和选择:可用方案”页面

图2.73 “导入:添加表”页面

图2.74 “导入:表”页面

图2.75 “导入:重新映射”页面

图2.76 选择的目标方案名称为“SH”
(7)完成以上操作,进入“导入:选项”页面,如图2.77所示。在该页面的“可选文件”区域内“目录对象”下拉列表框中选择名称为"Import"的目录对象,其他选项保持默认设置,然后单击页面中的“下一步”按钮。
(8)进入“导入:调度”页面,在该页面中用户可以指定导入作业的名称、说明和开始日期。本示例在“作业名称”文本框中输入“000666000”,如图2.78所示。

图2.77 “导入:选项”页面

图2.78 “导入:调度”页面
(9)完成以上所有操作后,将进入最后一步“导入:复查”页面,如图2.79所示,可以对导入表的导入类型、日志文件等进行查看。然后单击该界面上的“提交作业”按钮,创建作业。此时,将进入“导入:正在进行中”页面,如图2.80所示。系统提示“提交作业已在处理中,完成此操作可能需要一段时间”,该操作完成后将自动跳转到下一页。

图2.79 “导入:复查”页面

图2.80 “导入:正在进行中”页面
(10)如果提交的作业成功处理后,将会显示“已成功创建作业000666000”信息,如图2.81所示,在“结果”区域中的“状态(执行)”内会看到“已调度”状态。
(11)完成以上所有操作后,可以在EM管理工具的“维护”页面中查看作业的运行情况,如图2.82所示,在“执行数”区域内可以看到作业执行状态为成功状态。至此,从Oracle数据库中导入数据表的操作全部完成。

图2.81 “作业活动”页面

图2.82 查看导入数据表是否成功