前言 数据库原理
1.1.1. 文件存储
对数据的存储需求一直存在。保存数据的方式,经历了手工管理、文件管理等阶段,直至数据库管理阶段。
文件存储方式保存数据的弊端:
- 缺乏对数据的整体管理,数据不便修改;
- 不利于数据分析和共享;
- 数据量急剧增长,大量数据不可能存在长期保存在文件中。
数据库应运而生,是人们存放数据、访问数据、操作数据的存储仓库。
1.1.2. DB和DBMS
数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。
数据库管理系统(Database Management System,简称DBMS):管理数据库的软件。
数据库建立了数据之间的联系,使用结构化的方式组织和处理数据,能够统一、集中及独立的管理数据,使数据的存取独立于使用数据的程序,实现了数据共享。
数据库的典型特征包括:数据的结构化,数据间的共享,减少数据的冗余度,以及数据的独立性。
数据库成为数据的知识仓库,并对这些数据的存储、访问、安全、数据一致性、并发操作及备份恢复负责。
1.1.3. 关系数据库简介
关系是一个数学概念,描述两个元素间的关联或对应关系。所以关系型数据库,即是使用关系模型把数据组织到数据表(Table)中。现实世界可以用数据来描述。
主流数据库产品:
- Oracle(Oracle)
- DB2(IBM)
- SQL Server(MS)
- MySQL(Oracle)
1.1.4. 表的概念
在关系数据库中,数据被存放于二维数据表(Table)中。
一个关系数据库由多个数据表组成,数据表是关系数据库的基本存储结构,由行和列组成,行(Row)也就是横排数据,也经常被称作记录(Record),列(Column)就是纵列数据,也被称作字段(Field)。表和表之间是存在关联关系的。
1.2. 主流关系型数据库
1.2.1. Oracle数据库概述
Oracle是当今著名的Oracle(甲骨文)公司的数据库产品,它是世界上第一个商品化的关系型数据库管理系统,也是第一个推出和数据库结合的第四代语言开发工具的数据库产品。
Oracle采用标准的SQL结构化查询语言,支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、 WINDOWS、OS/2等多种平台。Oracle公司的软件产品丰富,包括Oracle服务器产品,Oracle开发工具和Oracle应用软件。其中 最著名的就是Oracle数据库,目前最新的版本是Oracle 12c。
1.2.2. DB2数据库概述
DB2是IBM的关系型数据库管理系统,DB2有很多不同的版本,可以运行在从掌上产品到大型机不同的终端机器上。DB2 Universal Database Personal Edition和DB2 Universal Database Workgroup Edition分别是为OS/2和Windows系统的单用户和多用户提供的数据库管理系统。
DB2在高端数据库的主要竞争对手是Oracle。
1.2.3. Sybase数据库
Sybase是美国Sybase公司研制的一种关系型数据库系统,是较早采用C/S技术的数据库厂商,是一种典型的UNIX或Windows NT平台上客户机/服务器环境下的大型数据库系统。 Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的PowerBuilder为开发工具,在国内大中 型系统中具有广泛的应用。
SYBASE主要有三种版本,一是UNIX操作系统下运行的版本,二是Novell Netware环境下运行的版本,三是Windows NT环境下运行的版本。对UNIX操作系统目前广泛应用的为SYBASE 10 及SYABSE 11 for SCO UNIX。
2010年Sybase被SAP收购。
1.2.4. SQL Server数据库概述
Microsoft SQL Server是运行在Windows NT服务器上,支持C/S结构的数据库管理系统。它采用标准SQL语言,微软公司对它进行了部分扩充而成为事务SQL(Transact-SQL)。
SQL Server最早是微软为了要和IBM竞争时,与Sybase合作所产生的,其最早的发展者是Sybase,和Sybase数据库完全兼容。在与 Sybase终止合作关系后,微软自主开发出SQL Server 6.0版,往后的SQL Server即均由微软自行研发。最新的版本是SQL Server 2012,上一版本是2008。
Microsoft SQL Server几个初始版本适用于中小企业的数据库管理,但是后来它的应用范围有所扩展,已经触及到大型、跨国企业的数据库管理。
1.2.5. MySQL数据库概述
MySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。
与其它的大型数据库例如Oracle、IBM DB2等相比,MySQL自有它的不足之处,如规模小、功能有限等,但对于一般个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
2008年1月16日,Sun正式收购MySQL。2009年4月20日,SUN被Oracle公司收购 。目前的最新版本是MySQL5.6.
1.3. SQL概述
1.3.1. 结构化查询语言
SQL(Structured Query Language) 是结构化查询语言的缩写。
SQL是在关系数据库上执行数据操作、检索及维护所使用的标准语言,可以用来查询数据,操纵数据,定义数据,控制数据,所有数据库都使用相同或者相似的语言。
SQL可分为:
- 数据定义语言(DDL) : Data Definition Language
- 数据操纵语言(DML) : Data Manipulation Language
- 事务控制语言(TCL):Transaction Control Language)
- 数据查询语言(DQL):Data Query Language
- 数据控制语言(DCL) : Data Control Language
执行SQL语句时,用户只需要知道其逻辑含义,而不需要知道SQL语句的具体执行步骤。
1.3.2. 数据定义语言(DDL)
用于建立、修改、删除数据库对象,包括创建语句(CREATE)、修改语句(ALTER)、删除语句(DROP),比如使用CREATE TABLE创建表,使用ALTER TABLE修改表,使用DROPTABLE删除表等动作。这类语言不需要事务的参与,自动提交。
1.3.3. 数据操作语言(DML)
用于改变数据库数据,包括INSERT、UPDATE、DELETE三条语句。其中,INSERT语句用于将数据插入到数据库 中,UPDATE语句用于更新数据库中已存在的数据,DELETE用于删除数据库中已存在的数据。DML语言和事务是相关的,执行完DML操作后必须经过 事务控制语句提交后才真正的将改变应用到数据库中。
1.3.4. 数据控制语言(TCL)
用来维护数据一致性的语句,包括提交(COMMIT)、回滚(ROLLBACK)、保存点(SAVEPOINT)三条语句,其中COMMIT 用来确认已经进行的数据库改变, ROLLBACK语句用来取消已经进行的数据库改变,当执行DML操作后(也就是上面说的增加、修改、删除等动作),可以使用COMMIT语句来确认这种 改变,或者使用ROLLBACK取消这种改变。SAVEPOINT语句用来设置保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变。
1.3.5. 数据查询语言(DQL)
用来查询所需要的数据。使用最广泛,语法灵活复杂。
1.3.6. 数据控制语言(DCL)
用于执行权限的授予和收回操作、创建用户等,包括授予(GRANT)语句,收回(REVOKE)语句,CREATE USER语句,其中GRANT用于给用户或角色授予权限, REVOKE用于收回用户或角色已有的权限。DCL语句也不需要事务的参与,是自动提交的。