一、数据库简介
1.1什么是数据库
数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。
数据库有很多种,至于各种数据库孰优孰劣,主要取决于人们希望如何使用数据。
关系数据库在 20 世纪 80 年代成为了主流。在关系数据库中,项被组织为一组具有列和行的表。这为访问结构化信息提供了一种有效、灵活的方法。
面向对象数据库中的信息以对象的形式表示,这与面向对象的编程相类似。
分布式数据库由位于不同站点的两个或多个文件组成。数据库可以存储在多台计算机上,位于同一个物理位置,或分散在不同的网络上。
数据仓库是数据的中央存储库,是专为快速查询和分析而设计的数据库。
NoSQL 或非关系数据库,支持存储和操作非结构化及半结构化数据(与关系数据库相反,关系数据库定义了应如何组合插入数据库的数据)。随着 Web 应用的日益普及和复杂化,NoSQL 数据库得到了越来越广泛的应用。
图形数据库根据实体和实体之间的关系来存储数据。 OLTP 数据库是一种高速分析数据库,专为多个用户执行大量事务而设计。
这些只是目前投入使用的几十种数据库中的一小部分。另外还有许多针对具体的科学、财务或其他功能而定制的不太常见的数据库。
1.2数据库的历史
1)人工管理阶,在20世纪50年代后期之前,这个时期的计算机主要用于科学计算。硬件上,没有磁盘等直接存取的存储设备;软件上,没有操作系统,数据处理方式是批处理。
这个时期数据管理的特点是:
(1) 数据不保存
(2) 没有对数据进行管理的软件系统
(3) 没有文件的概念
(4) 数据是面向应用的
2)文件系统阶段
文件系统阶段,在从50年代后期到60年代。硬件上,外存有了磁盘、磁鼓等直接存取的存储设备。在软件上,操作系统有了文件系统。
这个时期数据管理的特点是:
1. 数据可以长期保存在外存上并反复操作
2. 文件系统提供了文件管理功能和访问文件的存取方法。
但是仍有以下缺点
(1)数据共享性差,冗余度大
在文件系统中,一个(或一组)文件基本上对应于一个应用程序,即文件仍然是面向应用的。当不同的应用程序具有部分相同的数据时,也必须建立各自的文件,而不能共享相同的数据,因此数据的冗余度大,浪费存储空间。同时由于相同数据的重复存储、各自管理,容易造成数据的不一致性,给数据的修改和维护带来了困难。
(2)数据独立性差
文件系统中的文件是为某一特定应用服务的,文件的逻辑结构是针对具体的应用来设计和优化的,因此要想对文件中的数据再增加一些新的应用会很困难。而且,当数据的逻辑结构改变时,应用程序中文件结构的定义必须修改,应用程序中对数据的使用也要改变,因此数据依赖于应用程序,缺乏独立性。可见,文件系统仍然是一个不具有弹性的无整体结构的数据集合,即文件之间是孤立的,不能反映现实世界事物之间的内在联系。
( 3)数据库系统阶段
数据库系统阶段是从60年代后期开始的。在这一阶段中,数据库中的数据不再是面向某个应用或某个程序,而是面向整个企业(组织)或整个应用的。数据库系统阶段的特点是:
a. 数据结构化
数据库系统不仅要描述数据本身,还要描述数据之间的联系。这种联系是通过存取路径来实现的。
b.数据的共享性高,冗余度低且易扩充
数据面向系统,因此数据可以被各个用户共享,并且数据是有结构的。这使数据库系统弹性大,易于扩充
c.数据独立性高 数据独立性是借助数据库管理数据的一个显著优点,它己成为数据库领域中一个常用术语和重要概念,包括数据的物理独立性和逻辑独立性。物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。也就是说,数据在数据库中怎样存储是由数据库管理系统管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时应用程序不用改变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。也就是说,数据的逻辑结构改变时用户程序也可以不变。
二、SQL的相关知识
2.1 什么是SQL
SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制.SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。
2.2 SQL的特点
SQL包括的主要特点为:
(1)综合统一
SQL 集数据定义语言、数据操纵语言、数据控制语言的功能于一体,语言风格统一
可以独立完成数据库生命周期中的全部活动,包括以下一系列操作要求:
•定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据库。
•对数据库中的数据进行查询和更新。
•数据库重构和维护。
•数据库安全性、完整性控制,以及事务控制。
•嵌入式SQL和动态SOL定义。
(2)高度非过程化
SOL进行数据操作时,只要提出“做什么”,而无须指明“怎么做”,因此无须了解存取路径。存取路径的选择以及SQL的操作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性。
(3)面向集合的操作方式
SQL采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
(4)以同一种语法结构提供多种使用方式
SQL既是独立的语言,又是嵌入式语言。作为独立的语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SOL 语句能够嵌入到高级语言(例如C、C++、Java)程序中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL的语法结构基本上是一致的。
2.3 SQL的语法知识
(1)数据类型
数据库表中的每个列都要求有名称和数据类型。SQL 开发人员必须在创建 SQL 表时决定表中的每个列将要存储的数据的类型。数据类型是一个标签,是便于 SQL 了解每个列期望存储什么类型的数据的指南,它也标识了 SQL 如何与存储的数据进行交互。
CHARACTER(n) | 字符/字符串。固定长度 n。 |
VARCHAR(n) 或 CHARACTER VARYING(n) | 字符/字符串。可变长度。最大长度 n。 |
BINARY(n) | 二进制串。固定长度 n。 |
BOOLEAN | 存储 TRUE 或 FALSE 值 |
BINARY VARYING(n) | 二进制串。可变长度。最大长度 n。 |
INTEGER(p) | 整数值(没有小数点)。精度 p。 |
DECIMAL(p,s) | 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数,小数点后有 2 位数的数字。 |
INTEGER | 整数值(没有小数点)。精度 10。 |
SMALLINT | 整数值(没有小数点)。精度 5。 |
DATE | 存储年、月、日的值。 |
TIME | 存储小时、分、秒的值。 |
ARRAY | 元素的固定长度的有序集合 |
MULTISET | 元素的可变长度的无序集合 |
(2)SELECT
SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。
SELECT column1, column2, ... FROM table_name;
(3)DISTINCT
DISTINCT关键词用于返回唯一不同的值。
SELECT DISTINCT column1, column2, ... FROM table_name;
(4)WHERE
WHERE 子句用于提取那些满足指定条件的记录
SELECT column1, column2, ... FROM table_name WHERE condition;
(5)AND & OR
AND & OR 运算符用于基于一个以上的条件对记录进行过滤
(6)INSERT INTO
INSERT INTO语句用于向表中插入新记录。
INSERT INTO table_name VALUES (value1,value2,value3,...);
(7)UPDATE
UPDATE 语句用于更新表中已存在的记录。
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
(8)DELETE
DELETE 语句用于删除表中的记录。
DELETE FROM table_name WHERE condition;
(9)view语句
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
注:视图会显示最新的数据。当用户查询视图时,数据库引擎才会使用视图的 SQL 语句重建数据。
(10)LIKE
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT column1, column2, ... FROM table_name WHERE column LIKE pattern;
(11)通配符
通配符可用于替代字符串中的任何其他字符。
% | 替代 0 个或多个字符 |
_ | 替代一个字符 |
[charlist | 字符列中的任何单一字符 |
[^charlist] 或 [!charlist] | 不在字符列中的任何单一字符 |
(12)SQL别名
通过使用 SQL,可以为表名称或列名称指定别名。
列的别名语法
SELECT column_name AS alias_name FROM table_name;
表的别名语法
SELECT column_name(s) FROM table_name AS alias_name;
(13)SQL函数
SQL 拥有很多可用于计数和计算的内建函数。
包括SQL Aggregate 函数和SQL Scalar 函数,不一一列举了。
三、心得与总结
数据库是数据管理的有效技术,如今信息资源已成为各个部门的重要财富和资源。建立一个满足各级部门信息处理要求的行之有效的信息系统也成为一个企业或组织生存和发展的重要条件。熟练掌握数据库技术是必要的。本文涉及较基础的用法,其他知识与语法还需要读者自行探索。