sql系列文章为学习极客时间的”sql必知必会”这一课程的知识总结,此篇对应的课程是01-03,除特殊标注之外的快速阅读即可
简介
我们常说的SQL是一种语言,而mysql、Oracle这些则是数据库管理系统(下面简称为DBMS),SQL是我们与DBMS交互的语言,对于不同的DMBS会按照指定的SQL执行操作。
SQL有两个重要的标准,SQL92和SQL99,分别是92年和99年发布的SQL标准。现在常用的SQL语言仍是使用这些标准。
SQL按功能分类
DDL,全称Data Definition Language,用于创建,删除和修改数据库和表结构
DML,全称Data Manipulation Language,用于增加、删除、修改数据库中的记录
DCL,全程Data Control Language,用于定义访问权限和安全级别
DQL,全称Data Query Language,用于查询数据库中的记录
ER图
ER图(Entity Relationship Diagram)即实体-关系图,是设计表的重要方式。
ER图有三大要素:实体、属性、关系
实体就是要我们管理的对象,实体中拥有属性来标识不同的实体。关系比较难以抽象化,所以我用一个例子来说明这三要素。
我们有三个实体,”孙笑川”、”吴亦凡”、”蔡徐坤”
孙笑川的属性:抽象、儒雅随和
吴亦凡的属性:带电
蔡徐坤的属性:唱、跳、rap
孙笑川是吴亦凡和蔡徐坤的哥哥,也有是说哥哥可以有多个弟弟,与之相应的弟弟也可以有多个哥哥。这也就是我们常说的多对多的关系。
除此之外还有一对一和一对多的关系。
具体的图待补充。。。
DBMS的分类
人们常说的SQL和NoSQL是指关系型数据库和非关系型数据库
而非关系型数据库包含了键值型数据库、文档型数据库、搜索引擎和列存储以及图形数据库。
键值型数据库:以Key-Value的形式存储数据,Key和Value都可以是对象。Key是唯一的标识符,优点是查找速度快,明显优于关系型。但缺点也很明显,它无法使用条件过滤,如果不确定要找哪里的数据,就要遍历所有键。
键值型数据库常用于作内容缓存。其中Redis最为流行
文档型数据库:用于管理文档,一个文档相当于一条记录
最流行的文档型数据库为MongoDB
搜索引擎:虽然不是真正意义上的数据库,但在数据库检索中也起到重要的作用,其优势在于采用全文搜索的技术,核心原理是“倒排索引”
常见的全文搜索引擎有Elasticsearch、Splunk和Solr
列式数据库:将数据按照列存储到数据库中,优势是可以大量降低系统的I/O,适合分布式文件系统,缺点是功能有限
Oracle、MySQL、SQL Server等数据库均采用行式存储(Row-basesd)
图形数据库:用图这种数据结构存储实体之间的关系。能搞笑解决复杂的关系问题