数据库从字面上的理解就是数据的仓库,其实我们平时说的数据库是指数据库管理系统(Database Management System),它是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。严格来说数据库是数据库管理系统的实例,一个数据库管理系统可以有多个数据库实例。
数据库种类很多,我们平时接触最多的就是Oracle数据库和MySQL数据库。两者是应用最广泛的关系型数据库。
最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。
关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“一对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)
关系型数据库诞生距今已有 40 多年了,从理论产生到发展到实现产品,例如:常见的 MySQL 和 Oracle 数据库,Oracle 在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而 MySQL 也是不容忽视的数据库,以至于被 Oracle 重金收购了。
数据的存储形式:关系型数据库以行和列的形式存储数据,这一系列的行和列被称为表,一组表组成了数据库
关系型数据库在存储数据时实际就是采用的一张二维表(和 Word 和 Excell 里表格几乎一样)。
市场占有量较大的是 MySQL 和 Oracle 数据库,而互联网场景最常用的是 MySQL 数据库。
随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站(特别是超大规模和高并发类型的web2.0纯动态网站)已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展;2008年左右,网站、论坛、社交网络开始高速发展,关系型数据库的地位受到了很大的挑战。
关系型数据库的以下问题逐渐凸显:
- 难以应付每秒上万次的高并发数据写入。
- 查询上亿量级的数据速度极其缓慢。
- 关系型数据库分库、分表形成的子库到达一定规模后难以进一步扩展。
- 分库、分表的规则可能会因为需求变更而发生变更。
- 修改表结构困难。
在很多互联网应用场景下,对数据联表的查询需求不是那么强烈,也并不需要在数据写入后立刻读取,但对数据的读取和并发写入速度有非常高的要求。在这样的情况下,非关系型数据库得到高速的发展。
非关系型数据库也被称为 NoSQL 数据库,NoSQL 的本意是 “Not Only SQL”,NoSQL 的产生并不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。
NoSQL 数据库在特定的场景下可以发挥难以想象的高效率和高性能。
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
NoSQL 数据库不是否定关系型数据库,而是作为关系数据库的一个重要补充。
NoSQL 数据库为了灵活及高性能、高并发而生,忽略影响高性能、高并发的功能。
在NoSQL 数据库领域,当今的最典型产品为 Redis(持久化缓存)、MongoDB、Memcached(纯内存)等。
NoSQL 数据库没有标准的查询语言(SQL),通常使用数据接口或者查询API。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle旗下产品。MySQL 是最流行的关系型数据库管理系统之一,MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
RDBMS即关系数据库管理系统(Relational Database Management System)
MySQL Community Server是社区版本,开源免费,但不提供官方技术支持。MySQL Community Server也是我们通常用的MySQL的版本。根据不同的操作系统平台细分为多个版本。
MySQL Enterprise Edition企业版本,需付费,可以试用30天。
MySQL Cluster集群版,开源免费,可将几个MySQL Server封装成一个Server。
MySQL Cluster CGE高级集群版,需付费。
以 MySQL 5.7.27 这个版本的版本号为例说明每个数字含义。
第一个数字(5)主版本号:文件格式改动时,将作为新的版本发布;
第二个数字(7)发行版本号:新增特性或者改动不兼容时,发行版本号需要更改;
第三个数字(27)发行序列号:主要是小的改动,如bug的修复、函数添加或更改、配置参数的更改等。
MySQL的官方网址: http://www.mysql.com/
中文官网地址:https://www.mysql.com/cn/
MySQL的社区版本下载地址为: http://dev.mysql.com/downloads/mysql/
SQL是为操作数据库而开发的一种语言,它可以对数据库里的表进行操作,比如修改数据,查找数据。
数据库里面放着数据,SQL是用来操作数据库里数据的工具。
SQL代表结构化查询语言(Structured Query Language),用于访问数据库的标准化语言。
SQL包含三个部分:
总结:
DDL用来定义数据库本身及其对象(表、索引等)
DML用来修改数据,如插入、修改、删除数据
DCL用来定义数据的访问权限,决定用户对数据的访问级别