数据库涉及到哪些技术?

数据库系统由硬件和软件共同构成,硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分则主要包括 DBMS、支持 DBMS 运行的操作系统,以及支持多种语言进行应用开发的访问技术等。

本节主要介绍数据库涉及到的技术,包括数据库系统、SQL 语言和数据库访问接口。

数据库系统

数据库系统主要有以下 3 个组成部分:
  1. 数据库:用于存储数据的地方。
  2. 数据库管理系统:用于管理数据库的软件。
  3. 数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库库的软件补充。

数据库管理系统(Database Management System,DBMS)是位于操作系统与用户之间的一种操纵和管理数据库的软件,按照一定的数据模型科学地组织和存储数据,同时可以提供数据高效地获取和维护。

数据库管理系统的主要功能包括以下几个方面。

1) 数据定义功能

DBMS 提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象进行定义。

2) 数据操纵功能

DBMS 还提供数据操纵语言(Data Manipulation Language,DML),用户可以使用 DML 操作数据,实现对数据库的基本操作,如查询、插入、删除和修改等。

3) 数据库的运行管理

数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。例如:
  • 数据的完整性检查功能保证用户输入的数据应满足相应的约束条件;
  • 数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据;
  • 数据库的并发控制功能使多个用户可以在同一时刻并发地访问数据库的数据;
  • 数据库系统的故障恢复功能使数据库运行出现故障时可以进行数据库恢复,以保证数据库可靠地运行。

4) 提供方便、有效地存取数据库信息的接口和工具

编程人员可通过编程语言与数据库之间的接口进行数据库应用程序的开发。数据库管理员(Database Administrator,DBA)可通过提供的工具对数据库进行管理。

数据库管理员是维护和管理数据库的专门人员。

5) 数据库的建立和维护功能

数据库功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监控、分析功能等。这些功能通常由一些使用程序来完成。

数据库系统是指在计算机系统中引入数据库后的系统。一个完整的数据库系统(Database System,DBS)一般由数据库、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户组成。完整的数据库系统结构关系如图所示:

完整的数据库系统结构关系

了解SQL语言

MySQL 服务器正确安装以后,就已经完成了一个完整的 DBMS 的搭建,可以通过命令行管理工具或者图形化的管理工具对 MySQL 数据库进行操作。这种对数据库进行查询和修改操作的语言叫做 SQL(Structured Query Language,结构化查询语言)。SQL 语言是目前广泛使用的关系数据库标准语言,是各种数据库交互方式的基础。

SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。与其他程序设计语言(如 C语言、 Java 等)不同的是,SQL 由很少的关键字组成,每个 SQL 语句通过一个或多个关键字构成。

SQL 具有如下优点。
  1. 一体化:SQL 集数据定义、数据操作和数据控制于一体,可以完成数据库中的全部工作。
  2. 使用方式灵活:SQL 具有两种使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入C、C++、Fortran、COBOL、Java 等语言中使用。
  3. 非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”,存储路径的选择和操作的执行由数据库管理系统自动完成。
  4. 语言简洁、语法简单:该语言的语句都是由描述性很强的英语单词组成,而且这些单词的数目不多。

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 UNSIGNED,
    name VARCHAR(30) ,
    sex CHAR(1),
    birth DATE,
    PRIMARY KEY(student_id)
);

该表包含 4 个字段,分别为 student_id、name、sex、birth,其中 student_id 定义为表的主键。

现在只是定义了一张表格,但并没有任何数据,接下来这条 SQL 声明语句,将在 students 表中插入一条数据记录:

INSERT INTO students (student_id, name, sex, birth)
VALUES (41048101, 'C语言中文网MySQL教程', '1', '2013-02-14');

执行完该 SQL 语句之后,students 表中就会增加一行新记录,该记录中字段 student_id 的值为“41048101”,name 字段的值为“ C语言中文网MySQL教程”。sex 字段值为“1”,birth 字段值为“2013-02-14”。

再使用 SELECT 查询语句获取刚才插入的数据,如下:

SELECT name FROM students WHERE student_id=41048101;
+--------------+
| name         |
+--------------+
|C语言中文网MySQL教程|
+--------------+

上面简单列举了常用的数据库操作语句,在这里留下一个印象即可,后面我们会详细介绍这些知识。
注意:SQL 语句不区分大小写,许多 SQL 开发人员习惯对 SQL 本身的关键字进行大写,而对表或者列的名称使用小写,这样可以提高代码的可阅读性和可维护性。本教程也按照这种方式组织 SQL 语句。大多数数据库都支持通用的 SQL 语句,同时不同的数据库具有各自特有的 SQL 语言特性。

数据库访问接口

不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行 SQL 语句,进行数据库管理。主要的数据库访问接口主要有  ODBC、JDBC、ADO.NET 和 PDO。

ODBC

ODBC(Open Database Connectivity,开放数据库互连)为访问不同的 SQL 数据库提供了一个共同的接口。ODBC 使用 SQL 作为访问数据的标准。这一接口提供了最大限度的互操作性。一个应用程序可以通过共同的一组代码访问不同的 SQL 数据库管理系统。

一个基于 ODBC 的应用程序对数据库的操作不依赖任何 DBMS,不直接与 DBMS 打交道,所有的数据库操作由对应的 DBMS 的 ODBC 驱动程序完成。也就是说,不论是 MySQL 还是 Oracle 数据库,均可用 ODBC API 进行访问。由此可见,ODBC 的最大优点是能以统一的方式处理所有的数据库。

JDBC

Java Data Base(JDBC,Java 数据库连接)用于 Java 应用程序连接数据库的标准方法,是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。

ADO.NET

ADO.NET 是微软在 .NET 框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET 提供了对关系数据、XML 和应用程序的访问,允许和不同类型的数据源以及数据库进行交互。

PDO

PDO(PHP Data Object)为 PHP 访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO 是 PHP 5 新加入的一个重大功能。