第1部分 基础篇
第1章 认识数据库
本章包括
◆ 数据库的类型和概念
◆ 常见的数据库对象
◆ 数据库管理系统的基本功能
◆ SQL语言简介
◆ 使用数据库系统的用户
数据库系统其实是一个集合,它包括数据库、数据库管理系统和数据库管理员。数据库是存储数据的一个集合,是依照某种数据模型组织起来并存放的数据集合。一个数据库系统里可以有多个数据库。在操作系统看来,每个数据库就是存在的一个或几个文件。它的特点是能被各种用户共享,数据之间、数据与应用程序之间既有密切的联系,又能相对独立。
数据库管理系统是管理这些数据库的软件,它用人性化的界面为用户提供与数据库进行沟通的渠道,负责进行数据的写入、读取和维护等操作。数据库管理员是使用数据库管理系统管理数据库的人。
1.1 数据库的类型
数据库系统根据数据存储的数据模型可以分为结构型数据库、网络型数据库、关系型数据库及面向对象型数据库4种,下面分别对这4种数据库进行简单的介绍。
1.1.1 结构型数据库
结构型数据库是基于层次模型建立的,也可以理解成是树形结构。它是由一组通过链接互相联系在一起的记录组成,数据分别存储在不同的层次之下。数据结构像一棵倒立的树,不同层次的数据关联很直接,也很简单,记录之间的联系通过指针实现。此结构的缺点是无法反映多对象的联系,记录之间的联系只能一对多,如果数据向纵向发展,则横向关联很难建立,数据的冗余性大,查询和更新操作复杂,管理起来不方便。IBM的IMS就属于这种数据库管理系统。
1.1.2 网络型数据库
网络型数据库是基于网状模型建立的,它把每条记录当成一个结点,记录与记录之间可以建立关联,这些关联也是通过指针实现,这么一来多对多的关联就能轻松实现了。这种类型数据库的优点是数据的冗余性很小,缺点是当数据越来越多的时候,关联的维护会变得很复杂,关联也会变得混乱不清。Computer Associates的IDMS就属于这种数据库管理系统。
1.1.3 关系型数据库
关系型数据库是基于关系模型建立的,它是由一系列二维表格组成,将数据分类存储在多个这样的二维表格中,用关系(外键)来表达表格与表格之间的关系。同时,每个表格又是相对独立的,对一个表格进行数据的增加、修改和删除时,只要不涉及关联,都不会影响其他表格。在查询时,也可以通过表格之间的关联性,从多个表格里取出相关的信息。Microsoft的SQL Server就属于这种数据库管理系统。
1.1.4 面向对象型数据库
面向对象型数据库是建立在面向对象模型的基础上的,是一种比较新的数据库类型,它是面向对象的,包含了对象的属性和方法,还有类别和继承等特性。这些对象的集合称为类,类可以嵌套。Computer Associates的Jasmine就属于这种数据库管理系统。
1.2 数据库的基本概念
下面介绍一些数据库中最基本的概念,只有在掌握了这些概念之后,才能更好地掌握数据库知识。
1.2.1 数据
数据(Data)就是描述事件的符号。在现实生活中,任何可以用来描述实物或事件的属性的数字、文字、图像、声音等,都可以看成是数据。例如一个人的联系方式,可以包括电话、地址、邮编等,这些都是数据。
1.2.2 数据库
数据库(Database)就是用来存放数据的地方。例如,将很多人的联系方式都写在一个本子上,那么这个本子就是一个数据库。在计算机中,数据库是数据和数据库对象的集合,是可以以二进制形式存放在计算机里的一个或几个文件。
1.2.3 数据库管理系统
数据库管理系统(DBMS)是用来管理数据库的计算机应用软件,它可以让用户很方便地对数据库进行写入、查询、维护等操作。
1.2.4 数据库系统
数据库系统(DBS)从狭义上来讲,指的是数据库、数据库管理系统和用户;从广义上来讲,它除了包括数据库、数据库管理系统和用户之外,还包括计算机硬件、操作系统和维护人员。
1.3 常见的数据库对象
数据库对象是数据库的组成部分,常见的有以下几种。
1.3.1 表与记录
数据库中的表与日常生活中常见的表很类似,也是由行和列组成的。其中每一列都代表一个相同类型的数据,例如要创建一个客户表,那么列可以分别设置为联系人姓名、地址、电话等。每一列就是一个字段,每列的标题就是字段名。
在表的结构建立完毕之后,表中的每一行数据就是一条记录。记录是有一定意义信息的组合。例如在客户表中,每一个人的所有信息,包括姓名、地址、电话,这就是一条记录。表就是记录的集合,没有记录的表称为空表。
1.3.2 主键与外键
一般来说,每个表都会有一个主关键字,可以唯一地确定一条记录。例如在客户表中,如果有两个人都叫张三的话,那么在数据库中就无法知道要查询的到底是哪个张三的记录了。因此,在客户表中必须建立一个客户编号(客户ID)字段,这个字段是不允许重复的。在查找客户的时候,只要知道客户编号,就可以很精确地定位到想要查询的那条记录上。这个唯一的编号,就是数据表的主键。事实上,并不是每个表都会有主键,但是SQL Server还是建议为每个数据表都设立一个主键。如果一个表中没有一个字段具有唯一性的话,也可以指定两个或多个字段组合起来作为主键。
外键用来实现表与表之间的关系。例如,数据库里除了客户表之外,还有一个订单表,那么这个表格里的客户编号就是一个外键,它指向客户表,通过这个客户编号就可以知道购买某个商品的客户是谁。当然,也可以通过这个客户编号来查看该客户购买了哪些商品。
如图1.1所示,在客户表中,客户ID是主键;在订单表中,订单ID是主键,客户ID是外键。订单表中的客户ID指向客户表里的客户ID。
图1.1 主键与外键
1.3.3 索引
索引是根据数据表里的列建立起来的顺序。与书中的索引相似,数据库中的索引可以让用户快速找到表中的特定信息。设计良好的索引可以显著提高数据库查询能力和应用程序的性能。索引还可以强制表中的记录具有唯一性,从而确保数据库中的数据具有完整性。
1.3.4 约束
约束是为了保证数据库里数据的完整性而实现的一套机制,包括主键约束、外键约束、Unique约束、Check约束、默认值和允许空6种机制。
1.3.5 视图
视图是一个虚拟的表,和表一样,也具有字段和记录。视图是虚拟的,在数据库中并不实际存在。视图里的记录其实就是从数据表里查询出来的记录,它用于限制用户能看到和修改的数据。在数据库应用程序里,可以把视图当成表来进行查询等操作,就像一个真实的表一样。例如,图1.2所示的是类别表里的记录,图1.3所示的是产品表里的记录,现在从产品表里抽取产品ID和产品名称两个字段,再从类别表里抽取类别名称字段,组成一个新的产品视图,如图1.4所示。
图1.2 类别表里的记录
图1.3 产品表里的记录
图1.4 产品视图
1.3.6 关系图
关系图就是数据表之间的关系示意图,利用它可以编辑表与表之间的关系。图1.1就是一个关系图。
1.3.7 默认值
默认值就是在数据表中插入数据时,对于没有指定具体值的字段,数据库会自动添加事先设定好的值。
1.3.8 规则
规则是用来限制数据表中字段的有限范围,以确保列中数据完整性的一种方式。例如订单明细表中的折扣字段,就可以把它限制到0以上、10以下,这就是规则。
1.3.9 存储过程
存储过程是为了实现某个功能的一组或一个SQL(Structured Query Language,结构化查询语言)语句,它是经过编译后存入数据库中的。因为经过编译,所以运行速度要比执行相同的SQL语句要快。
1.3.10 触发器
触发器是特殊的存储过程,它在对数据进行插入、修改、删除等操作或对数据库(表)进行建立、修改、删除等操作时自动激活并执行。
1.3.11 用户和角色
用户是有权限访问数据库的人。角色是设定好权限的用户组。
1.4 数据库管理系统的基本功能
数据库管理系统是一个操作数据库的应用软件,虽然目前市场上这种类型的软件很多,但是它们的主要功能都大同小异,都包括创建数据库、操作数据、保证数据安全以及备份和恢复数据。
1.4.1 定义数据
数据库管理系统必须能充分定义和管理数据,包括建立数据库,建立数据表,定义各种类型的字段,为数据表设立主键、外键、索引、约束、规则、默认值、存储过程和触发器等。
1.4.2 处理数据
数据库管理系统必须能够为用户提供对数据库中的数据进行操作的功能,其中包括插入、修改、查询与删除数据等。越成熟的数据库管理系统,越能提供良好的用户界面,让用户可以更方便地处理数据。
1.4.3 保证数据安全
数据库管理系统必须有设定用户、密码、权限的功能,使不同的用户有不同的存取权限,以防止机密数据外泄或被破坏。
1.4.4 备份和恢复数据
数据库管理系统必须提供方便的数据备份和恢复功能,在数据库遭到破坏或错误操作后还可以还原到备份时的状态,最大程度地减少损失。
1.5 SQL语言简介
SQL是目前关系型数据库管理系统中使用得最广泛的查询语言,目前市场上绝大多数关系型数据库管理系统都支持SQL语言。
SQL的基本语法由一些英文句子所构成,结构简洁,功能强大,简单易学,自从IBM公司于1981年推出之后,就被广泛使用了。
1.5.1 SQL语言的历史
◆ 在20世纪70年代初,关系型数据模型提出之后,IBM就开始研制SQL语言,最早的SQL语言是在1976年公布的,当时它的名字叫做Sequel2。
◆ 1979年,Oracle公司首先提供商用的SQL,IBM公司也在自己的DB2和SQL/DS数据库系统中实现了SQL。
◆ 1980年,Sequel2改名为SQL。
◆ 1986年10月,美国ANSI(美国国家标准协会)采纳定义的关系数据库管理系统的SQL标准语言(ANSI X3. 135-1986),后被国际标准化组织(ISO)采纳为国际标准。
◆ 1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89,该标准替代ANSI X3.135-1986版本。
1.5.2 SQL语言的优点
SQL语言的优点很多,大致可以归纳为以下4点:
◆ 用简单英文语句实现强大功能。例如,下面是一个建立数据表的SQL语句,即使英文不太好的人也很容易看懂。
CREATE TABLE类别 ( 类别ID int NOT NULL, 类别名称char(15), 说明char(500), 图片image )
◆ 非过程化语言。SQL是一个非过程化的语言,一次只处理一个记录。对用户而言,不需要知道数据的存放方法,只要集中精力于要得到什么结果即可。
◆ 统一的语言。无论用户是什么人,不管是普通用户还是高级管理员,只要是对数据库进行操作,所用到的SQL语言都是一样的。
◆ 公共的语言。在所有关系型数据库中都能使用SQL语言。
1.5.3 SQL语言分类
SQL语言可以分为4大类:数据查询语言(DQL)、数据操纵语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)。
◆ 数据查询语言(Data Query Language):用来完成对数据库数据的查询,简单一点说,就只有一条Select命令,但是这条命令有很多选项和子句,可以进行很复杂的查询、筛选和排序。
◆ 数据操作语言(Data Manipulation Language):用来操作数据库里的数据,包括插入数据(Insert)、更新数据(Update)和删除数据(Delete)三个命令。
◆ 数据定义语言(Data Definition Language):用来操作数据库里的对象,例如数据库或数据表,包括创建(Create)、删除(Drop)和重构(Alter)三个命令。
◆ 数据控制语言(Data Control Language):用来控制用户在数据库中进行的数据访问,一般用于创建与用户访问相关的对象。
1.6 数据库系统的用户
数据库系统的用户,指的是使用数据库系统的人,包括下面4类。
◆ 数据库的建库者:根据客户的需要设计数据库、并建设好数据库的人。
◆ 数据库的管理者:数据库设计完并建设完毕之后,就可以交给数据库管理人员来负责管理和维护。数据库的管理者要维护数据库正常运转、监督和记录数据库的运行情况、备份和还原数据。
◆ 应用程序的设计者:数据库的作用主要是用来存储数据。然而,并不是所有的用户都具有专业知识来对数据库进行操作,这就需要应用程序设计者设计好应用程序,让用户方便地通过友好界面来操作数据库。
◆ 应用程序的使用者:这些用户是最普遍的使用者,他们只需要在客户端操作应用程序来查询或存储数据,不用考虑怎样存放数据以及怎样维护数据。
1.7 小结
数据库是依照某种数据模型组织起来并存放的数据集合,数据库管理系统是管理这些数据集合的应用软件系统。数据库管理系统的基本功能包括定义数据、处理数理、保证数据安全、备份和恢复数据。数据库分为结构型数据库、网络型数据库、关系型数据库和面向对象型数据库4种。
另外,本章还介绍了数据库的基本概念、常见的数据库对象及SQL语言和数据库系统的用户,第2章将重点介绍SQL Server 2008平台及其安装方法。