1.2 数据库技术构成
数据库系统由硬件部分和软件部分共同构成。硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分则主要包括DBMS、支持DBMS运行的操作系统,以及支持多种语言进行应用开发的访问技术等。本节将介绍数据库的技术构成。
1.2.1 数据库系统
数据库系统有3个主要的组成部分。
(1)数据库:用于存储数据的地方。
(2)数据库管理系统:用于管理数据库的软件。
(3)数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。
数据库(Database System)提供了一个存储空间,用以存储各种数据,可以将数据库视为一个存储数据的容器。一个数据库可能包含许多文件,一个数据库系统中通常包含许多数据库。
图1-2 数据库系统
数据库管理系统(DataBase Management System, DBMS)用户创建、管理和维护数据库时所使用的软件,位于用户与操作系统之间,对数据库进行统一管理。DBMS能定义数据存储结构,提供数据的操作机制,维护数据库的安全性、完整性和可靠性。
数据库应用程序(DataBase Application)虽然已经有了DBMS,但是在很多情况下,DBMS无法满足对数据管理的要求。数据库应用程序的使用可以满足对数据管理的更高要求,还可以使数据管理过程更加直观和友好。数据库应用程序负责与DBMS进行通信,访问和管理DBMS中存储的数据,允许用户插入、修改和删除DB中的数据。
数据库系统如图1-2所示。
1.2.2 SQL语言
对数据库进行查询和修改操作的语言叫作SQL。SQL的含义是结构化查询语言(Structured Query Language)。SQL有许多不同的类型,有三个主要的标准:ANSI(美国国家标准机构)SQL;对ANSI SQL修改后在1992年采纳的标准,称为SQL-92或SQL2;最近的SQL-99标准。SQL-99标准从SQL2扩充而来并增加了对象关系特征和许多其他新功能。各大数据库厂商提供不同版本的SQL。这些版本的SQL支持原始的ANSI标准,而且在很大程度上支持新推出的SQL-92标准。
SQL语言包含4个部分。
(1)数据定义语言(DDL):DROP、CREATE、ALTER等语句。
(2)数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
(3)数据查询语言(DQL):SELECT语句。
(4)数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句。
下面是一条SQL语句,声明创建一个叫students的表:
CREATE TABLE students ( student_id INT, name VARCHAR(30), sex CHAR(1), birth DATE, PRIMARY KEY (student_id) );
该语句创建一张表,该表包含四个字段,分别为student_id、name、sex、birth,其中student_id被定义为表的主键。
现在只是定义了一张表格,并没有任何数据,接下来这条SQL声明语句将在students表中插入一条数据记录:
INSERT INTO students (student_id, name, sex, birth) VALUES (41048101, 'Lucy Green', '1', '1990-02-14');
执行完该SQL语句之后,students表中就会增加一行新记录,该记录中字段student_id的值为41048101,name字段的值为Lucy Green,sex字段值为1,birth字段值为1990-02-14。
再使用SELECT查询语句获取刚才插入的数据,语句如下:
SELECT name FROM students WHERE student_id = 41048101;
在PostgreSQL 11的pgAdmin客户端的查询结果如图1-3所示。
图1-3 查询符合条件的学生名字
上面简单列举了常用的数据库操作语句,目的是给读者一个直观的印象(读者可能还不能理解),接下来会在学习PostgreSQL的过程中详细介绍这些知识。
1.2.3 数据库访问技术
不同的程序设计语言会有各自不同的数据库访问技术,程序语言通过这些技术执行SQL语句,进行数据库管理。主要的数据库访问技术有以下几种。
1. ODBC
ODBC(Open Database Connectivity,开放数据库互连)技术为访问不同的SQL数据库提供了一个共同的接口。ODBC使用SQL作为访问数据的标准。这一接口提供了最大限度的互操作性:一个应用程序可以通过共同的一组代码访问不同的SQL数据库管理系统(DBMS)。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是Access、PostgreSQL还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
2. JDBC
JDBC(Java Data Base Connectivity,Java数据库连接)用于Java应用程序连接数据库的标准方法,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,由一组用Java语言编写的类和接口组成。
3. ADO.NET
ADO.NET是微软在.NET框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET提供了对关系数据、XML和应用程序数据的访问,允许和不同类型的数据源以及数据库进行交互。
4. PDO
PDO(PHP Data Object)为PHP访问数据库定义了一个轻量级的、一致性的接口,提供了一个数据访问抽象层。这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO是PHP 5新加入的一个重要功能。