DBMS的前世今生
至今47年前,也就是1974年,IBM研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门结构化的英语查询语言》。SEQUEL的语言标准是开放的,但是围绕它的商业化竞争却从来没有停止过。首先因为商标之争,SEQUEL改名为SQL,后来有一个重量级的公司基于那篇论文研发出了商业化的数据库管理软件,这就是Oracle。自此之后,又诞生了一堆大家熟知的DBMS,比如MySQL、SQL Server、PostgreSQL、DB2和MongoDB等。
在我们的日常工作中,使用的是类似MySQL、Oracle这种的数据库管理系统,实际上这些数据库管理系统都遵循SQL语言,这就意味着,我们在使用这些数据库的时候,都是通过SQL语言与它们打交道。自从SQL加入了TIOBE(https://www.tiobe.com/tiobe-index/)编程语言排行榜,就一直保持在Top 10。SQL有两个重要的标准,分别是SQL92和SQL99,它们分别代表了92年和99年颁布的SQL标准,我们今天使用的SQL语言依然遵循这些标准。直到今天这门结构化的查询语言并没有太大的变化,相比于其他语言,SQL的半衰期可以说是非常长了。
DB、DBS和DBMS的区别
DBMS的英文全称是DataBase Management System,数据库管理系统,实际上它可以对多个数据库进行管理,所以你可以理解为:DBMS = 多个数据库(DB) + 管理程序。
DB的英文是DataBase,也就是数据库。数据库是存储数据的集合,你可以把它理解为多个数据表。
DBS的英文是DataBase System,数据库系统。它是更大的概念,包括了数据库、数据库管理系统以及数据库管理人员DBA。这里需要注意的是,虽然我们有时候把Oracle、MySQL等称之为数据库,但确切讲,它们应该是数据库管理系统,即DBMS。
排名靠前的DBMS
SQL阵营与NoSQL阵营
1970:NoSQL = We have no SQL
1980:NoSQL = Know SQL
2000:NoSQL = No SQL!
2005:NoSQL = Not only SQL
2013:NoSQL = No, SQL!
SQL阵营中的DBMS

补充知识

※ MySQL名字的由来:
MySQL以联合创始人Monty Widenius的女儿My的名字命名。MySQL的海豚标志的名字叫“sakila”,它是从用户在我们的“命名海豚”竞赛中建议的大量名称中选出的。获奖名称由来自非洲Eswatini(前斯威士兰)的开源软件开发人员Ambrose Twebaze提交。根据安布罗斯的说法,女性名字Sakila起源于埃斯瓦蒂尼的当地语言SiSwati。Sakila也是坦桑尼亚阿鲁沙的一个小镇的名字,靠近安布罗斯的原籍国乌干达。

一般我们经常读成:“迈瑟抠”,而这不是正确的发音,正确的发音,MySQL官网(https://dev.mysql.com/doc/refman/5.7/en/what-is-mysql.html)中已给出解释:The official way to pronounce “MySQL” is “My Ess Que Ell” (not “my sequel”), but we do not mind if you pronounce it as “my sequel” or in some other localized way.

※ SQL(Structured Query Language)语言分类:
① 数据查询语言(DQL,Data Query Language):也称为“数据检索语句”,用于从表中获得数据,确定数据怎样在应用程序给出。例:SELECT;
② 数据操作语言(DML,Data Manipulation Language):分别用于添加、修改和删除表中的行。例:INSERT、UPDATE、DELETE;
③ 事务处理语言(TPL/TCL,Transaction Processing/Control Language):能确保DML语句影响的表的所有行及时得以更新。例:BEGIN TRANSACTION、COMMIT、ROLLBACK;
④ 数据控制语言(DCL,Data Control Language):通过GRANT和REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。例:GRANT、REVOKE;
⑤ 数据定义语言(DDL,Data Definition Language):在数据库中创建新表或删除表;为表加入索引。例:CREATE TABLE、DROP TABLE、ALTER TABLE等;
⑥ 指针控制语言(CCL,Cursor Control Language):用于对一个或多个表的单独行进行操作。例:DECLARE CURSOR、FETCH INTO、UPDATE WHERE CURRENT等。