全文约 3235 字,预计阅读时长: 9分钟
数据库
存储数据用文件就可以了,为什么还要弄个数据库?
- 文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,按照数据结构来组织、存储和管理数据的仓库(磁盘和内存)它能更有效的管理数据。用来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)。
为什么要使用专用系统(DBMS)来管理数据呢?
- 无法多人共享数据
- 无法提供操作大量数据所需的格式
- 实现读写自动化需要编程能力
- 无法应对突发事故
- DBMS 可以克服这些不足,实现多个用户同时安全简单地操作大量数据。这也是我们一定要使用DBMS 的原因。为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库管理系统(DBMS)的种类
DBMS 主要通过数据的保存格式(数据库的种类)来进行分类,现阶段主要有以下5 种类型。
-
层次数据库(Hierarchical Database,HDB)。最古老的数据库之一,它把数据通过层次结构(树形结构)的方式表现出来。层次数据库曾经是数据库的主流,但随着关系数据库的出现和普及,现在已经很少使用了。
-
关系数据库(Relational Database,RDB),关系数据库是现在应用最广泛的数据库。关系数据库在1969 年诞生,可谓历史悠久。和Excel 工作表一样,它也采用由行和列组成的二维表来管理数据,所以简单易懂。同时,它还使用专门的SQL(Structured Query Language,结构化查询语言)对数据进行操作。这种表格的DBMS 称为关系数据库管理系统(Relational Database Management System,RDBMS)。
比较具有代表性的RDBMS 有如下5 种。
- Oracle Database:甲骨文公司的RDBMS(通常简称为Oracle)
- SQL Server :微软公司的RDBMS
- DB2:IBM 公司的RDBMS
- PostgreSQL:开源的RDBMS
- MySQL :开源的RDBMS
-
面向对象数据库(Object Oriented Database,OODB)。编程语言当中有一种被称为面向对象语言的语言。把数据以及对数据的操作集合起来以对象为单位进行管理,因此得名。面向对象数据库就是用来保存这些对象的数据库。
-
XML数据库(XML Database,XMLDB)。最近几年,XMLB 作为在网络上进行交互的数据的形式逐渐普及起来。XML 数据库可以对XML 形式的大量数据进行高速处理。
-
键值存储系统(Key-Value Store,KVS)。这是一种单纯用来保存查询所使用的主键(Key)和值(Value)的组合的数据库。具有编程语言知识的读者可以把它想象成关联数组或者散列(hash)。近年来,随着键值存储系统被应用到Google 等需要对大量数据进行超高速查询的Web 服务当中,它正逐渐为人们所关注。
数据库的结构
介绍使用SQL 语言的关系数据库管理系统(RDBMS)的操作方法。如无特殊说明,下面所提到的数据库以及DBMS 都是指RDBMS。
- 使用RDBMS 时,最常见的系统结构就是客户端/ 服务器类型(C/S类型)。
- RDBMS 既可以和其客户端安装在同一台计算机上,也可以分别安装在不同的计算机上。这样一来,不仅可以通过网络使二者相互关联,还可以实现多个客户端访问同一个RDBMS。
- 客户端没有必要使用同样的程序,只要能将SQL 发送给RDBMS,就可以操作数据库了。并且,多个客户端还可以同时对同一个数据库进行读写操作。
另外,RDBMS 除了需要同时接收多个客户端的请求之外,还需要操作存有大量数据的数据库,因此通常都会安装在比客户端性能更优越的计算机上。操作数据量特别巨大的数据库时,还可以将多台计算机组合使用。
虽然RDBMS 的系统结构多种多样,但是从客户端发来的SQL 语句基本上都是一样的。
什么是SQL
- SQL是为操作数据库而开发的语言。它原本是为了提高数据库查询效率而开发的语言,但是现在不仅可以进行数据查询,就连数据的插入和删除等操作也基本上都可以通过SQL 来完成了。
国际标准化组织(ISO)为SQL 制定了相应的标准,以此为基准的SQL 称为标准SQL。以前,完全基于标准SQL 的RDBMS 很少,通常需要根据不同的RDBMS来编写特定的SQL 语句。这样一来,就会造成能够在Oracle 中使用的SQL 语句却无法在SQL Server 中使用,反之亦然。近来,对标准SQL 的支持取得了一些进展,因此希望准备学习SQL 的人们能够从现在开始就牢记标准SQL 的书写方式。学会标准SQL 就可以在各种RDBMS 中书写SQL 语句了。
MySQL
- MySQL 是一个可移植的关系型数据库管理系统的软件,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
- 需要操作数据管理软件的人有:数据库管理员,基于数据库做二次开发的,后端开发。
SQL语句 | 种类
SQL 用关键字、表名、列名等组合而成的一条语句(SQL 语句)来描述操作的内容。关键字是指那些含义或使用方法已事先定义好的英语单词,存在包含“对表进行查询”或者“参考这个表”等各种意义的关键字。
根据对RDBMS 赋予的指令种类的不同,SQL 语句可以分为以下三类。其中使用最多的是DML。
- DDL(Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令。
CREATE
: 创建数据库和表等对象DROP
: 删除数据库和表等对象ALTER
: 修改数据库和表等对象的结构
- DML(Data Manipulation Language,数据操纵语言) 用来查询或者变更表中的记录。DML 包含以下几种指令。
SELECT
:查询表中的数据INSERT
:向表中插入新数据UPDATE
:更新表中的数据DELETE
:删除表中的数据
- DCL(Data Control Language,数据控制语言) 用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL 包含以下几种指令。
- COMMIT: 确认对数据库中的数据进行的变更
- ROLLBACK: 取消对数据库中的数据进行的变更
- GRANT: 赋予用户操作权限
- REVOKE: 取消用户的操作权限
SQL 的基本书写规则
- SQL 语句要以分号(;)结尾。
- SQL 语句不区分大小写
- SQL 不区分关键字的大小写 。例如,不管写成SELECT 还是select,解释都是一样的。表名和列名也是如此。
- 但是插入到表中的数据是区分大小写的。例如,在操作过程中,数据Computer、COMPUTER 或computer,三者是不一样的。
- 常数的书写方式是固定的。在SQL 语句中直接书写的字符串、日期或者数字等称为常数。
- SQL 语句中含有日期或字符串的时候,需要使用单引号将其括起来。日期的格式有很多种(‘26 Jan 2010’ 或者’10/01/26’ 等),也可以使用’2010-01-26’ 这种’ 年- 月- 日’ 的格式。
- 在SQL 语句中书写数字的时候,不需要使用任何符号标识,直接写成1000 这样的数字即可。
存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。MySQL的核心就是插件式存储引擎,支持多种存储引擎。查看存储引擎:mysql登录后,show engines;