第11章 初识数据库
数据库是按照某种规则和结构来组织、存储和管理数据的一种特殊的文件。使用数据库,可以存放大量的数据。通过相应的接口,程序可以很轻松地实现数据管理。本章将给大家详细讲解数据库的相关知识。
11.1 数据库简介
严格地说,数据库是按照数据结构来组织、存储和管理数据的仓库,它最大的好处是能够在运行时被访问。这样就使得开发人员可以使用数据库存储评论、图片等,通过ASPX页面访问这些数据。本节将对数据库进行简单介绍。
数据库类型包括关系数据库、平面文件数据库、对象关系数据库和面向对象数据库。最常用的数据库为关系数据库,这种数据库常用于Web站点中,本书主要应用的也是这种数据库。关系数据库中的记录保存在表中,数据以行和列形式存储。表中的每行包含存储于其中的记录项的完整信息,而每列包含表中记录项的特定属性的信息。使用数据库的主要优点如下。
(1)实现数据共享
数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。
(2)减少数据的冗余度
同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据和数据冗余,维护了数据的一致性。
(3)数据的独立性
数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。
(4)数据实现集中控制
文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
(5)数据一致性和可维护性,以确保数据的安全性和可靠性
主要包括:① 安全性控制。以防止数据丢失、错误更新和越权使用;② 完整性控制。保证数据的正确性、有效性和相容性;③ 并发控制。使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。
(6)故障恢复
由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复运行时出现的故障(可能是物理上或是逻辑上的错误),比如对系统的误操作造成的数据错误等。
11.2 常用数据库
在ASP.NET项目中可以使用多种不同类型的数据库,包括Microsoft Access、SQL Server、Oracle和MySQL。最常用的数据库有3种:Oracle、Access和SQL Server数据库。如果开发中型的,且是微软操作系统下的数据库程序,优先考虑SQL Server数据库;如果是比较大型的,且需要跨操作系统的数据库程序,则使用Oracle数据库。下面将详细介绍这3种常用数据库。
11.2.1 Access数据库
知识点讲解:光盘\视频讲解\第11章\Access数据库.mp4
Access数据库是微软公司开发的小型数据库软件,主要用于小型软件的数据管理。它是Office的一个成员,在专业版和更高版本的Office版本里面被单独出售。一般的Access在安装Office时就会一起安装。微软Office Access 2010于2010年5月12日在微软Offic 2010里发布,上一个版本是微软Office Access 2007。在微软官网上下载安装Office 2010后,就可以使用Office Access 2010了。Access的最新版本为2012年发布的Microsoft Office Access 2013。
注意:由于Access数据库是简单的数据库,因此存储的数据量不能太大,否则会造成数据的丢失或损坏,并且Access数据库只能在微软操作系统下使用。
11.2.2 SQL Server数据库
知识点讲解:光盘\视频讲解\第11章\SQL Server数据库.mp4
SQL Server数据库是微软公司推出的基于C/S结构的关系数据库,主要用于中小型企业的数据管理,它为维护数据库系统的安全性提供了完善的管理机制和简单而丰富的操作手段。目前较新版本是2012年3月份推出的SQL Server 2012,可在微软官网上的Download Center中下载。SQL Server的上一个版本是Microsoft SQL Server 2008。
注意:SQL语言是用于操作数据的语言,它只需要告诉数据库进行什么操作,而不需要确定数据库如何进行操作。
11.2.3 Oracle数据库
知识点讲解:光盘\视频讲解\第11章\Oracle数据库.mp4
Oracle数据库系统是美国ORACLE公司(甲骨文公司)提供的以分布式数据库为核心的一组软件产品,是目前最流行的C/S或B/S体系结构的数据库之一。Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库,它具有使所有数据和文档存储在少数几个高性能数据库的能力,这样使得客户可以集中管理所有的数据,并且信息管理和访问更加容易、可靠。最新版本为Oracle Database 11g R2,用户可以在Oracle官网(www.oracle.com)下载安装。
注意:Oracle数据库是免费使用的,还能在所有的平台上运行。
11.3 Access数据库的使用
Microsoft Access是Microsoft Office中的一个成员。Office版本Microsoft Office 97、2000、XP、2003、2007、2010和2013中都包含Access组件。因此,只要使用的Office版本包含于上述版本,就可以使用Access数据库。本节我们来学习Access数据库的使用方法。
11.3.1 创建数据库
知识点讲解:光盘\视频讲解\第11章\创建数据库.mp4
选择“开始”|“所有程序”|Microsoft Office|Microsoft Access 2010命令,打开Access数据库,如图11.1所示。
图11.1 Access数据库
单击图11.1中右下角的“打开文件”按钮,在路径“E:\Chapter11\Access数据库\”下新建一个Access数据库,命名为DataAccess.accdb,如图11.2所示。
图11.2 创建数据库DataAccess.accdb
注意:数据库创建时可以选择目录。
11.3.2 创建表
知识点讲解:光盘\视频讲解\第11章\创建表.mp4
在DataAccess.accdb数据库中,创建两个表student和class。在菜单栏的“创建”选项夹中选择“表设计”选项,即可打开表设计器创建表。student表中字段名称和类型如图11.3所示,class表中字段名称和数据类型如图11.4所示。
图11.3 student表 | 图11.4 class表 |
设计好字段名称后,在student/class表上单击右键,在弹出的菜单中选择“保存”命令。将两个表分别命名为student和class。然后在表student上单击右键,选择“打开”命令,就可以编辑表的数据。student表中数据如图11.5所示,class表中数据如图11.6所示。
图11.5 student表的数据 | 图11.6 class表的数据 |
注意:在表上单击右键,选择“打开”命令,就可以编辑表的数据。
11.3.3 创建查询
知识点讲解:光盘\视频讲解\第11章\创建查询.mp4
在菜单栏的“创建”选项夹中选择“查询设计”,即可创建一个查询。在弹出的“显示表”对话框中分别选择表student和class,单击“添加”按钮。此时,两个表显示在查询的界面中,将student表的classid列拖动到与class表的id列相连,即可创建查询条件。也就是说当student表中的classid列与class表中的id列相等的记录才可以查询显示出来。然后在界面下方的表中按图11.7所示进行设置。
图11.7 创建查询
设置完成后,右键单击class_student查询,将其保存。在左侧的“查询”面板中双击查询class_student,即可查看数据库中满足查询条件的记录,查询结果如图11.8所示。
图11.8 查询结果
注意:从图11.8可以看出,查询到的结果中包含了student表和class表的内容。
11.4 SQL Server数据库的环境搭建
SQL Server是微软开发的一款大中型数据管理系统。SQL Server 2012是当前发布的最新版本。在业界领先的商业智能领域,SQL Server 2012提供了更多更全面的功能以满足不同人群对数据以及信息的需求,包括支持与来自不同网络环境的数据的交互,全面的自助分析等创新功能。在ASP.NET 4.5 Web站点中最常用的数据库是Microsoft SQL Server。本节着重对SQL Server的环境搭建作详细介绍。
11.4.1 对硬件和操作系统的要求
知识点讲解:光盘\视频讲解\第11章\对硬件和操作系统的要求.mp4
由于SQL Server 2012是一款相对比较大的开发软件,我们在安装之前有必要对计算机的硬件配置和软件系统要求做一个说明。
SQL Server 2012对硬件的安装要求主要包括CPU、内存、硬盘等几个方面,具体要求如表11.1所示。
表11.1 SQL Server 2012硬件要求
注意:SQL Server 2012需要计算机内存比较大。
SQL Server 2012对操作系统的要求如表11.2所示。
表11.2 SQL Server 2012操作系统要求
项目 | 推荐配置 |
操作系统 | Windows Vista Home Basic、Windows Vista SP2 Business和Windows 7 SP1 Professional等 |
11.4.2 下载SQL Server 2012
知识点讲解:光盘\视频讲解\第11章\下载SQL Server 2012.mp4
在浏览器地址栏中输入微软官方网站地址www.microsoft.com.cn,打开微软官方网站。下载页面如图11.9所示。
图11.9 SQL Server 2012下载页面图
单击“安装”按钮,弹出对话框,选择SQL Server 2012的保存位置,开始下载,如图11.10所示。
图11.10 保存SQL Server 2012安装文件
注意:建议到官方网站下载软件。
11.4.3 安装SQL Server 2012
知识点讲解:光盘\视频讲解\第11章\安装SQL Server 2012.mp4
下载后的文件为光盘镜像文件,不能直接使用,用户可以有两种选择:
- 使用光盘刻录机及其软件,将光盘镜像文件刻录到光盘上,然后使用光盘进行安装。
- 也可以安装虚拟光驱软件,如Daemon Tools,然后将镜像文件加载到虚拟光驱软件中,通过虚拟光驱进行安装。
本节我们来安装SQL Server 2012。
(1)将光盘放入光驱中,光盘会自动运行。在打开的对话框中,系统提供了多种安装模式,如全新SQL Server独立安装或向现有安装添加功能、新的SQL Server故障转移群集安装等。这里选择全新安装,如图11.11所示。
图11.11 SQL Server安装中心
在图11.11中选择“全新SQL Server独立安装或向现有安装添加功能”选项,运行“安装程序支持规则”。该规则可确定在安装SQL Server安装程序支持文件时可能发生的问题,更正所有失败后,安装程序才能继续。安装程序支持规则如图11.12所示。
图11.12 安装程序支持规则
(2)在图11.12中安装程序支持规则后,单击“确定”按钮,进入“产品密钥”界面。可以指定要安装的SQL Server 2012的免费版本或输入产品密钥。如果用户拥有正版密钥,可以在“输入产品密钥”下方输入正版密钥。如果没有密钥,可以使用测试版本Evaluation,测试版的有效期为180天。这里选择的是输入产品密钥选项。将密钥正确输入,然后单击“下一步”按钮,如图11.13所示。
图11.13 输入产品密钥
(3)许可条款。输入产品密钥成功后,进入“许可条款”界面。若要安装SQL Server,必须接受Microsoft软件许可条款。选中“我接受许可条款”复选框,然后单击“下一步”按钮,如图11.14所示。
图11.14 接受许可条款
(4)产品更新。在打开的“产品更新”界面中单击“下一步”按钮,如图11.15所示。
图11.15 “产品更新”界面
(5)安装程序支持规则。在打开的“安装程序支持规则”中单击“下一步”按钮,如图11.16所示。
图11.16 “安装程序支持规则”界面
(6)设置角色。选中“SQL Server功能安装”单选按钮,然后单击“下一步”按钮,如图11.17所示。
图11.17 “设置角色”界面
(7)功能选择。鉴于初学者对功能选项不是很了解,故建议单击“全选”按钮,然后单击“下一步”按钮,如图11.18所示,打开“安装规则”界面。
图11.18 “功能选择”界面
(8)安装规则。安装规则是安装程序正在运行规则以确定是否要阻止安装过程,如图11.19所示,操作完成后单击“下一步”按钮。
图11.19 “安装规则”界面
(9)实例配置。在打开的“实例配置”界面中,为该数据库设置命名实例为SMILE,列ID为MSSQLSERVER。然后单击“下一步”按钮,如图11.20所示。
图11.20 “实例配置”界面
(10)磁盘空间要求。安装SQL Server数据库的磁盘空间使用情况如图11.21所示。
图11.21 “磁盘空间要求”界面
(11)服务器配置。在“服务器配置”界面中单击“下一步”按钮,如图11.22所示。
图11.22 “服务器配置”界面
注意:安装SQL Server 2012要求空间较大。
(12)数据库引擎配置。在“数据库引擎配置”界面中选中“混合模式”单选按钮,并为系统管理员输入密码。然后在指定SQL Server管理员列表框下单击“添加当前用户”按钮,在列表框中显示出当前用户,单击“下一步”按钮,如图11.23所示。
图11.23 “数据库引擎配置”界面
(13)Analysis Services配置。在“Analysis Services配置”界面中单击“添加当前用户”按钮,在列表框中显示出当前用户。单击“下一步”按钮,如图11.24所示。
图11.24 “Analysis Services配置”界面
(14)Reporting Services配置。在“Reporting Services配置”界面中选中“安装和配置”单选按钮,单击“下一步”按钮,如图11.25所示。
图11.25 “Reporting Services配置”界面
(15)分布式重播控制器。单击“添加当前用户”按钮,当前用户即显示在列表框内,然后单击“下一步”按钮,如图11.26所示。
图11.26 “分布式重播控制器”界面
(16)分布式重播客户端。在打开的“分布式重播客户端”界面中单击“下一步”按钮,如图11.27所示。
图11.27 “分布式重播客户端”界面
(17)错误报告。在打开的“错误报告”界面中单击“下一步”按钮,如图11.28所示。
图11.28 “错误报告”界面
(18)安装配置规则。在打开的“安装配置规则”界面中单击“下一步”按钮,如图11.29所示。
图11.29 “安装配置规则”界面
(19)准备安装。单击“安装”按钮,如图11.30所示。
图11.30 “准备安装”界面
(20)安装进度。耐心等待系统安装SQL Server 2012即可,如图11.31所示。
图11.31 “安装进度”界面
(21)完成。在打开的“完成”界面中单击“关闭”按钮,如图11.32所示。
图11.32 “完成”界面
至此,SQL Server 2012数据库安装完成,可以正常使用。
11.5 SQL Server数据库的使用
SQL Server适用于开发中型的、微软操作系统下的数据库程序,它为维护数据库系统的安全性提供了完善的管理机制和简单而丰富的操作手段,因此它的使用非常广泛。本节我们来学习SQL Server数据库的使用方法。
11.5.1 创建数据库
知识点讲解:光盘\视频讲解\第11章\创建数据库.mp4
在SQL Server中,数据库的创建很简单。选择“开始”|“所有程序”|Microsoft SQL Server 2012|SQL Server Management Studio命令,打开SQL Server 2012数据库。连接成功后,在“对象资源管理器”面板中的“数据库”上单击右键,选择“新建数据库”命令。创建一个名称为Express的数据库,如图11.33所示。
图11.33 创建数据库
注意:数据库的创建非常简单。
11.5.2 创建表
知识点讲解:光盘\视频讲解\第11章\创建表.mp4
创建好数据库Express后,我们为该数据库创建表Student和Class。展开“对象资源管理器”面板中的数据库Express,可以看到“表”选项。在“表”上单击右键,选择“新建表”命令,即可打开表设计器。Student表的列名、数据类型和是否允许为空等设置如图11.34所示。Class表的列名、数据类型和是否允许为空等设置如图11.35所示。
图11.34 Student表的设计 | 图11.35 Class表的设计 |
设计好后,在Student/Class表上单击右键,在弹出的菜单中选择“保存”命令。然后在表Student/Class上单击右键,选择“编辑前200行”命令,就可以编辑表的数据。Student表的数据如图11.36所示。Class表的数据如图11.37所示。
图11.36 Student表的数据 | 图11.37 Class表的数据 |
注意:在“表”上单击右键,选择“新建表”命令,即可打开表设计器。
11.5.3 创建外键
知识点讲解:光盘\视频讲解\第11章\创建外键.mp4
在数据库中定义主键和外键是为了维护关系数据库的完整性。主键是能确定一条记录的唯一标识。外键用于与另一张表的关联。外键是能确定另一张表记录的字段,本小节为Student表和Class表创建外键。
在Student和Class表中,都是ID列为主键。单击dbo.Student前面的“+”号,在“键”选项上单击右键,选择“新建外键”命令。创建外键FK_Student_Class,如图11.38所示。
图11.38 创建外键
注意:主键是一张表的唯一标识,而外键是两张表的关系。
11.5.4 创建视图
知识点讲解:光盘\视频讲解\第11章\创建视图.mp4
在Express数据库中的“视图”上单击右键,选择“新建视图”命令。在弹出的“添加表”对话框中分别选择表Student和Class,单击“添加”按钮。此时,两个表就显示在视图中,还可以看到Student表的Classid列与Class表的ID列的外键,如图11.39所示。
图11.39 创建视图
视图创建完成后,将其保存,命名为dbo.View_1。在dbo.View_1上单击右键,选择“返回前1000行”命令,结果如图11.40所示。
图11.40 查询视图
注意:从图11.40可以看出,查询到的结果中包含了Student表和Class表的内容。
11.6 SQL语句的使用
结构化查询语言(Structured Query Language,SQL)是一种与关系数据库通信的方式,使用户可以定义、查询、修改和控制数据。使用SQL语法,可以构造一条语句,根据指定的条件来提取记录。SQL语句以create或select这样的关键字开头。SQL是一种功能强大的语言,一个语句就可以影响整个表。一些常用的SQL关键字有select、where、order by、insert into、delete和update。本节我们来学习SQL语句的使用方法。
11.6.1 select语句
知识点讲解:光盘\视频讲解\第11章\select语句.mp4
select语句让用户能够读取表格中一个或多个字段的所有记录。也就是说,无论记录是否重复,都将获取。select语句的通用形式如图11.41所示。
图11.41 select语句的通用形式
注意:Name1表示表中的字段名,Name2表示表名。
【示例11-1】数据库Express的表Student中的数据如图11.42所示。请查询Student表中的所有Name字段。
图11.42 Student表中的数据
在数据库Express上单击右键,选择“新建查询”命令。在弹出的查询视图中输入查询Name字段的SQL语句,然后单击工具栏上的图标。SQL语句及其执行结果如图11.43所示。
图11.43 SQL语句及其执行结果
在该示例中,在查询视图中输入SQL语句,查询出Student表中的所有Name字段的值。
11.6.2 where语句
知识点讲解:光盘\视频讲解\第11章\where语句.mp4
通常用户不会每一次都将表格中的所有记录获取出来,许多情况下,用户会选择性地获取记录。这样就会用到where语句。where语句用于将满足一定条件的记录从数据库中筛选出来。where语句通常与select语句相关联,其通用形式如图11.44所示。
图11.44 where语句的通用形式
注意:a>n是一个条件表达式,用来判断查询到的记录是否满足条件。
【示例11-2】数据库Express的表Student中的数据如图11.45所示。请查询Student表中年龄大于等于20岁的学生姓名。
图11.45 Student表中的数据
在数据库Express上单击右键,选择“新建查询”命令。在弹出的查询视图中输入查询年龄大于等于20岁的Name字段的SQL语句,然后单击工具栏上的图标。SQL语句及其执行结果如图11.46所示。
图11.46 SQL语句及其执行结果
在该示例中,在查询视图中输入SQL语句,查询出Student表中年龄大于等于20岁的所有Name字段的值。where关键字后跟的是表达式,该表达式的值是布尔类型的。当数据库中的记录满足该表达式的条件,就将其筛选出来,显示在结果集中。
11.6.3 order by语句
知识点讲解:光盘\视频讲解\第11章\order by语句.mp4
用户通常需要将从表里获取到的记录进行从大到小(descending)或者从小到大(ascending)的排序,这样就需要运用到order by语句,其通用形式如图11.47所示。其中,where语句可以存在,也可以不存在,如果存在where语句,那么就必须在order by语句之前。name指定按某个字段进行排序。ASC表示结果以由小到大的顺序排列(即升序排列),DESC代表结果以由大到小的顺序排列(即降序排列)。
图11.47 order by语句的通用形式
注意:order by语句的默认排序为ASC。
order by语句还可以按多字段排序,其形式如图11.48所示。
图11.48 order by语句的另一种形式
【示例11-3】数据库Express的表Student中的数据如图11.49所示。请将Student表中的记录按年龄升序排列。
图11.49 Student表中的数据
在数据库Express上单击右键,选择“新建查询”命令,在弹出的查询视图中输入排序的SQL语句,然后单击工具栏上的图标。SQL语句及其执行结果如图11.50所示。
图11.50 SQL语句及其执行结果
在该示例中,在查询视图中输入SQL语句,将所有满足where语句的记录按照升序排序显示出来。
11.6.4 insert into语句
知识点讲解:光盘\视频讲解\第11章\insert into语句.mp4
insert into语句的作用是为表格添加数据,其通用形式如图11.51所示。
图11.51 insert into通用形式
注意:字段名称和新数据必须相互匹配。
【示例11-4】数据库Express的表Student中的数据如图11.52所示。请在Student表中插入一条记录。
图11.52 Student表中的数据
在数据库Express上单击右键,选择“新建查询”命令。在弹出的查询视图中输入插入数据的SQL语句,然后单击工具栏上的图标。SQL语句及其执行结果如图11.53所示。在该示例中,在查询视图中输入SQL语句,将在Student表中插入一条记录。在此使用select语句查询表Student中的所有记录,如图11.54所示。可以看到数据库中多了一条ID为6的记录。
图11.53 SQL语句及其执行结果 | 图11.54 查询表Student中的记录 |
11.6.5 delete语句
知识点讲解:光盘\视频讲解\第11章\delete语句.mp4
delete语句用于删除表格中的某些数据,其通用形式如图11.55所示。
图11.55 delete语句通用形式
注意:where语句后面是条件表达式,结果必须为布尔类型。
【示例11-5】数据库Express的表Student中的数据如图11.56所示。请在Student表中删除一条记录。
图11.56 Student表中的数据
在数据库Express上单击右键,选择“新建查询”命令。在弹出的查询视图中输入删除数据的SQL语句,然后单击工具栏上的图标。SQL语句及其执行结果如图11.57所示。
图11.57 SQL语句及其执行结果
在该示例中,在查询视图中输入SQL语句,将从Student表中删除一条记录。再次使用select语句查询表Student中的所有记录,如图11.58所示。可以看到数据库中少了一条ID为6的记录。
图11.58 查询表Student中的记录
11.6.6 update语句
知识点讲解:光盘\视频讲解\第11章\update语句.mp4
update语句用于修改表格中的数据,它与关键字set相连,其通用形式如图11.59所示。
图11.59 update语句通用形式
注意:修改的字段名称和新数据必须相互匹配。
【示例11-6】数据库Express的表Student中的数据如图11.60所示。请在Student表中更新一条记录:将Name值为“小化”的记录的Age的值更改为20。
图11.60 Student表中的数据
在数据库Express上单击右键,选择“新建查询”命令。在弹出的查询视图中输入更新数据的SQL语句,然后单击工具栏上的图标。SQL语句及其执行结果如图11.61所示。
图11.61 SQL语句及其执行结果
在该示例中,在查询视图中输入SQL语句,将在Student表中更新一条记录。再次使用select语句查询表Student中的所有记录,如图11.62所示。可以看到数据库中Name为“小化”的记录的Age值被更改为20。
图11.62 查询表Student中的记录
11.7 小结
本章主要介绍了数据库的相关知识,包括数据库简介,常用数据库,Access数据库的使用方法,SQL Server数据库的下载、安装、使用以及SQL语句的用法。本章重点是对Access数据库和SQL Server数据库的使用方法的掌握。
11.8 本章习题
习题11-1 创建一个Access数据库,命名为MyData。正确创建结果如图11.63所示。
图11.63 创建Access数据库
【分析】本题目主要考查的是对创建Access数据库的掌握情况。
习题11-2 在习题11-1中创建的数据库中创建一个表,命名为fruit,并在表中添加五条记录,设计视图如图11.64所示,表的记录如图11.65所示。
图11.64 创建fruit表
图11.65 在fruit表中添加记录
【分析】本题目主要考查的是对创建Access数据表的掌握程度。
习题11-3 创建一个SQL Server数据库,命名为MySQLData。正确创建结果如图11.66所示。
图11.66 创建SQL Server数据库
【分析】本题目主要考查的是对创建SQL Server数据库的掌握程度。
习题11-4 在习题11-3中创建的数据库MySQLData中添加数据表,命名为fruit。该表的设计视图如图11.67所示,表的记录如图11.68所示。
图11.67 创建SQL Server数据表 | 图11.68 为表添加记录 |
【分析】本题目主要考查的是对创建数据表的掌握程度。
习题11-5 MySQLData数据库中的表fruit的内容如图11.69所示。请查询该表中name列的所有值,正确结果如图11.70所示。
图11.69 fruit表的内容 | 图11.70 查询name一列的值 |
【分析】本题目主要考查的是对SQL语句的掌握程度。