常见的关系型数据库有 Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access 和 MySQL 等。
非关系型数据库又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL。
常见的非关系型数据库有 Neo4j、MongoDB、Redis、Memcached、MemcacheDB 和 HBase 等。
不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行 SQL 语句,进行数据库管理。主要的数据库访问接口主要有 ODBC、JDBC、ADO.NET 和 PDO。
具有代表性的面向文档数据库有 MongDB 和 CouchDB。
列存储数据库通常用来应对分布式存储的海量数据。具有代表性的列存储数据库有 Cassandra 和 HBase。
具有代表性的键值存储数据库有 Redis、Memcached 和 MemcachedDB。
MySQL Community Server(社区版):该版本是自由下载且完全免费的,但是官方不提供技术支持。
MySQL Enterprise Server(企业版):该版本是收费的,而且不能下载,但是该版本拥有完善的技术支持(官方提供电话技术支持)。
1)MySQL 是开放源代码的数据库
MySQL 是开放源代码的数据库,任何人都可以获取该数据库的源代码。这就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的来使用该数据库。MySQL 是一款可以自由使用的数据库。
MySQL 也有一些不足,比如对于大型项目来说,MySQL 的容量和安全性就略逊于 Oracle 数据库。
数据库管理系统(DBMS)是位于操作系统与用户之间的一种操纵和管理数据库的软件。关系型数据库通过关系数据库管理系统(RDBMS)进行管理。
关系(Relational,即 RDBMS 里的 R)表示这是一种特殊的 DBMS,数据库中表与表之间要存在关系。
数据库(DataBase,即 RDBMS 里的 DB)是一个用来存储和管理数据的仓库。它的存储空间很大,并且有一定的数据存放规则。通过由行和列组成的二维表(类似 Excel 工作表)来管理数据。数据库中可以同时存储多个表。
管理系统(Management System,即 RDBMS 里的 MS)是一个软件,我们可以通过它来插入(insert)、查询(query)、修改(modify)或删除(delete)表中的数据。
SQL(Structured Query Language,结构化查询语言)
客户端-服务器(Client/Server)结构简称 C/S 结构,是一种网络架构,通常在该网络架构下的软件分为客户端和服务器。
客户端可以是 MySQL 提供的工具(如 MySQL Workbench、SQLyog)、脚本语言(如Perl)、Web 应用开发语言(如ASP、ColdFusion、JSP 和 PHP)和程序设计语言(如 C、C++、Java)等。
与 MySQL 5.6 相比,MySQL 5.7 具有以下几个方面的新功能。
- 随机 root 密码
MySQL 5.7 数据库初始化完成后,会自动生成一个 root@localhost 用户,root 用户的密码不为空,而是随机产生一个密码。 - 自定义 test 数据库
MySQL 5.7 默认安装完成后没有 test 数据库。用户可以自行创建 test 数据库并对其进行权限控制。 - 默认 SSL 加密
MySQL 5.7 采用了更加简单的 SSL 安全访问机制,默认连接使用 SSL 的加密方式。 - 密码过期策略
MySQL 5.7 支持用户设置密码过期策略,要求用户在一定时间过后必须修改密码。 - 用户锁
MySQL 5.7 为管理员提供了暂时禁用某个用户的功能,使被锁定的用户无法访问和使用数据库。 - 全面支持JSON
随着非结构化数据存储需求的持续增长,各种非结构化数据存储的数据库应运而生(如 MongoDB),各大关系型数据库也不甘示弱,纷纷提供对 JSON 的支持,以应对非结构化数据库的挑战。
MySQL 5.7 也提供了对 JSON 的支持,在服务器端提供了一组便于操作 JSON 的函数。存储的方法是将 JSON 编码成 BLOB 后再由存储引擎进行处理。这样,MySQL 就同时拥有了关系型数据库和非关系型数据库的优点,并且可以提供完整的事务支持。
7) 支持两类生成列(generated column)
生成列是通过数据库中的其他列计算得到的一列。当为生成列创建索引时,可以便捷地加快查询速度。MySQL 5.7 支持虚拟生成列和存储生成列。虚拟生成列仅将数据保存在表的元数据中,作为缺省的生成列类型;存储生成列则是将数据永久保存在磁盘上,需要更多的磁盘空间。
8) 引入系统库(sys schema)
系统库中包含一系列视图、函数和存储过程,通过多线程、多进程、组合事务提交和基于行的优化方式将复制功能提高 5 倍以上,用户向外扩充其跨商品系统的工作负载时,得以大幅提升复制的效能和效率。