数据库基础
数据库在应用程序开发中占据着非常重要的地位。从原来的 Sybase 数据库发展到今天的 SQL Server、MySQL、Oracle 等高级数据库,数据库技术已经相当成熟。本节将对数据库的基础知识进行讲解。
什么是数据库
数据库是一种存储结构,它允许使用各种格式输入、处理和检索数据,不必在每次需要数据时重新输入。例如,当需要某人的电话号码时,需要查看电话簿,按照姓名来查阅,这个电话簿就是一个数据库。数据库具有以下主要特点。
-
实现数据共享。数据共享包括所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。
-
减少数据的冗余度。同文件系统相比,数据库实现了数据共享,从而避免了用户各自建立应用文件,减少了大量重复数据,减少了数据冗余,维护了数据的一致性。
-
数据的独立性。数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。
-
数据实现集中控制。文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理操作中,其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
-
数据的一致性和可维护性,以确保数据的安全性和可靠性。主要包括:
-
安全性控制,以防止数据丢失、错误更新和越权使用。
-
完整性控制,保证数据的正确性、有效性和相容性。
-
并发控制,既在同一时间周期内允许对数据进行多路存取,又能防止用户之间的不正常交互。
-
故障的发现和恢复。
-
从发展的历史来看,数据库是数据管理的高级阶段,是由文件管理系统发展起来的。数据库的基本结构分为3个层次。
-
物理数据层:它是数据库的最内层,是物理存储设备上实际存储的数据集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的字符和字组成。
-
概念数据层:它是数据库的中间一层,也是数据库的整体逻辑表示,指出了每个数据的逻辑定义及数据间的逻辑联系。它是存储记录的集合。它涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况。它是数据库管理员概念下的数据库。
-
逻辑数据层:它是用户所看到和使用的数据库,是一个或一些特定用户使用的数据集合,即逻辑记录的集合。
数据库的种类和功能
数据库系统一般基于某种数据模型,可以分为层次型、网状型、面向对象型及关系型等,简述如下。
-
层次型数据库:层次型数据库类似于树结构,是一组通过链接而相互联系在一起的记录。层次模型的特点是记录之间的联系通过指针实现。由于层次模型的层次顺序严格而且复杂,因此对数据进行各项操作都很困难。层次型数据库如图17.1所示。
Figure 1. 图17.1 层次型数据库 -
网状型数据库:网络模型是使用网络结构表示实体类型、实体间联系的数据模型。网络模型容易实现多对多的联系。但在编写应用程序时,程序员必须熟悉数据库的逻辑结构,如图17.2所示。
Figure 2. 图17.2 网状型数据库 -
面向对象型数据库:建立在面向对象模型基础上。
-
关系型数据库:关系型数据库是目前最流行的数据库之一,是基于关系模型建立的数据库,关系模型是由一系列表格组成的。后面会详细地讲解它。
在当前比较流行的数据库中,MySQL 数据库是最好的开源关系数据库系统应用软件之一,具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点。同时,它也是具有客户机/服务器体系结构的分布式数据库管理系统。MySQL 是完全网络化的跨平台关系型数据库系统,它支持多种平台。在 UNIX/Linux 系统上,MySQL 支持多线程运行方式,从而能获得相当好的性能。不使用 UNIX 系统的用户,可以在 Windows NT 系统上以系统服务方式运行,或者在 Windows 95/98 系统上以普通进程方式运行。
从 JDK 6 开始,在 JDK 的安装目录中,除了传统的 bin、jre 等目录,还新增了一个名为 db 的目录,这便是 Java DB。这是一个纯 Java 实现的、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目Derby。它只有2MB大小,但这并不妨碍Derby功能齐备、支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,作为内嵌的数据库,Derby得到了包括IBM和Sun等大公司以及全世界优秀程序员们的支持。这就好像为JDK注入了一股全新的活力,Java程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准且免费的数据库编程了。
SQL语言
SQL(structure query language,结构化查询语言)被广泛地应用于大多数数据库中,使用SQL语言可以方便地查询、操作、定义和控制数据库中的数据。SQL 语言主要由以下几部分组成:
-
数据定义语言(data definition language,DDL),如 create、alter、drop 等。
-
数据操纵语言(data manipulation language,DML),如 select、insert、update、delete 等。
-
数据控制语言(data control language,DCL),如 grant、revoke 等。
-
事务控制语言(transaction control language),如 commit、rollback 等。
在应用程序中使用最多的就是数据操纵语言,它也是最常用的核心 SQL 语言。下面对数据操纵语言进行简单的介绍。
select语句
select 语句用于从数据表中检索数据。语法如下:
SELECT 所选字段列表 FROM 数据表名
WHERE 条件表达式 GROUP BY 字段名 HAVING 条件表达式(指定分组的条件)
ORDER BY 字段名[ASC|DESC]
假设数据表名称是 tb_emp,要检索出 tb_emp 表中所有女员工的姓名、年龄,并按年龄升序排序,代码如下:
select name,age form tb_emp where sex = '女' order by age;
insert语句
insert 语句用于向表中插入新数据。语法如下:
insert into 表名[(字段名1,字段名2...)]
values(属性值1,属性值2...)
假设要向数据表 tb_emp(包含字段 id、name、sex、department)中插入数据,代码如下:
insert into tb_emp values(2,'lili','女','销售部');