一、sql介绍
我们可以把SQL语言按照功能划分成以下的4个部分:
-
DDL,英文叫做Data Definition Language,也就是数据定义语言,它用来定义我们的数据库对象,包括 数据库、数据表和列。通过使用DDL,我们可以创建,删除和修改数据库和表结构。
-
DML,英文叫做Data Manipulation Language,数据操作语言,我们用它操作和数据库相关的记录,比 如增加、删除、修改数据表中的记录。
-
DCL,英文叫做Data Control Language,数据控制语言,我们用它来定义访问权限和安全级别。
-
DQL,英文叫做Data Query Language,数据查询语言,我们用它查询想要的记录,它是SQL语言的重中
之重。在实际的业务中,我们绝大多数情况下都是在和查询打交道,因此学会编写正确且高效的查询语 句,是学习的重点。
SQL是我们与DBMS交流的语言,我们在创建DBMS之前,还需要对它进行设计,对于RDBMS来说采用的是 ER图(Entity Relationship Diagram),即实体-关系图的方式进行设计。
它是我们用来描述现实世界的概念模型,在这个模型中有3个要素:实体、属性、 关系。
关于SQL大小写的问题,我总结了下面两点:
1. 表名、表别名、字段名、字段别名等都小写; 2. SQL保留字、函数名、绑定变量等都大写。
SELECT name, hp_max FROM heros WHERE role_main = 'սʿ'
你能看到SELECT、FROM、WHERE这些常用的SQL保留字都采用了大写,而name、hp_max、role_main这 些字段名,表名都采用了小写。此外在数据表的字段名推荐采用下划线命名,比如role_main这种。
二、DBMS
(1)DB、DBS和DBMS的区别是什么
DBMS的英文全称是DataBase Management System,数据库管理系统,实际上它可以对多个数据库进行管 理,所以你可以理解为DBMS = 多个数据库(DB) + 管理程序。
DB的英文是DataBase,也就是数据库。数据库是存储数据的集合,你可以把它理解为多个数据表。
DBS的英文是DataBase System,数据库系统。它是更大的概念,包括了数据库、数据库管理系统以及数据 库管理人员DBA。
这里需要注意的是,虽然我们有时候把Oracle、MySQL等称之为数据库,但确切讲,它们应该是数据库管理 系统,即DBMS。
关系型数据库(RDBMS)就是建立在关系模型基础上的数据库,SQL就是关系型数据库的查询语言。
键值型数据库通过Key-Value键值的方式来存储数据,其中Key和Value可以是简单的对象,也可以是复杂的 对象。Key作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,同时缺点也很明显, 它无法像关系型数据库一样自由使用条件过滤(比如WHERE),如果你不知道去哪里找数据,就要遍历所 有的键,这就会消耗大量的计算。键值型数据库典型的使用场景是作为内容缓存。Redis是最流行的键值型 数据库。
文档型数据库用来管理文档,在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录, MongoDB是最流行的文档型数据库。
搜索引擎也是数据库检索中的重要应用,常见的全文搜索引擎有Elasticsearch、Splunk和Solr。虽然关系型 数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎的优势在于采用了全文搜索的技 术,核心原理是“倒排索引”。
列式数据库是相对于行式存储的数据库,Oracle、MySQL、SQL Server等数据库都是采用的行式存储 (Row-based),而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适合于分布式文件系统,不足在于功能相对有限。
图形数据库,利用了图这种数据结构存储了实体(对象)之间的关系。最典型的例子就是社交网络中人与人 的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效地解决复杂的关系问题。
(3)sql阵营中的DBMS
1979年,Oracle 2诞生,它是第一个商用的RDBMS(关系型数据库管理系统),随后被卖给了军方客户。 随着Oracle软件的名气越来越大,公司也改叫Oracle公司。20世纪90年代,Oracle的创始人埃里森成为继比 尔・盖茨之后第二富有的人,可以说IBM缔造了两个帝国,一个是软件业的霸主微软,另一个是企业软件市 场的霸主Oracle。如今Oracle的年收入达到了400亿美金,足以证明商用数据库软件的价值。从这点我们也 能看出,如果选择了一个大的赛道,就要尽早商业化,占据大型企业客户完全可以创建巨大的商业价值,也 足以证明一个软件企业不需要靠卖硬件也可以挣到很多钱。
MySQL是1995年诞生的开源数据库管理系统,因为免费开源的特性,得到了开发者的喜爱,用户量迅速增长,成为开源数据库的No.1。但在发展过程中,MySQL先后两次被易手,先是在2008年被SUN收购,然后 在2010年SUN被Oracle收购,于是Oracle同时拥有了MySQL的管理权,至此Oracle在数据库领域中成为绝对 的领导者。从这里我们也能看到,虽然MySQL是免费的产品,但是使用人数多,就足以证明巨大的用户价 值。一个有巨大用户价值的产品,即使没有直接的商业价值,但作为基础设施也会被商业巨头看上。
不过在Oracle收购MySQL的同时,MySQL的创造者担心MySQL有闭源的风险,因此创建了MySQL的分支项 目MariaDB,MariaDB在绝大部分情况下都是与MySQL兼容的,并且增加了许多新的特性,比如支持更多的 存储引擎类型。许多企业也由原来的MySQL纷纷转向了MariaDB。
SQL Server是微软开发的商业数据库,诞生于1989年。实际上微软还推出了Access数据库,它是一种桌面数 据库,同时具备后台存储和前台界面开发的功能,更加轻量级,适合小型的应用场景。因为后台的存储空间 有限,一般只有2G,Access的优势在于可以在前台便捷地进行界面开发。而SQL Server是大型数据库,用 于后台的存储和查询,不具备界面开发的功能。从这里我们也能看出,即使SQL语言是通用的,但是为了满 足不同用户的使用场景,会存在多个DBMS。比如Oracle更适合大型跨国企业的使用,因为他们对费用不敏 感,但是对性能要求以及安全性有更高的要求,而MySQL更受到许多互联网公司,尤其是早期创业公司的 青睐。