了解 SQL
SQL 是我们用来最长和数据打交道的方式之一,如果按照功能划分可分为如下 4 个部分:
- DDL,数据定义语言。定义数据库对象,数据表,数据列。也就是,对数据库和表结构进行增删改操作。
- DML,数据操作语言。对数据表的增删改。
- DCL,数据控制语言。定义访问权限和安全级别。
- DQL,数据查询语言。用来查询数据。
平时在编写 SQL 时,可能发现许多 SQL 大小写不统一,虽然不会影响 SQL 的执行结果,但保持统一的书写规范,是提高效率的关键,通常遵循如下的原则:
- 表名,表别名,字段名,字段别名等用小写。
- SQL 保留字,函数名,绑定变量等用大写。
- 数据表,字段名采用下划线命名。
目前排名较前的 DBMS:
- 关系型数据库:建立在关系模型上的数据库,在建表时,通常先设计 ER 图表示之间的关系。
- 键值型数据库:以 key-value 的形式存储数据,优点是查找速度快,缺点是无法向关系型数据库一样使用如 WHERE 等的过滤条件。常见场景是作为内容缓存。
- 文档型数据库,在保存时以文档作为处理信息的基本单位。
- 搜索引擎:针对全文检索而设计。核心原理是 “倒排索引”。
- 列式数据库:相对于如 MySQL 等行式存储的数据库,是以列将数据存在数据库中,由于列具有相同的数据类型,所以可以更好的压缩,从而减低系统的 I/O,适用于分布式文件系统,但功能相对有限。
- 图形数据库,利用图的数据结构存储实体之间的关系。比如社交网络中人与人的关系,数据模型为节点和边来实现。
Top
认识 SELECT
SELECT 一般是在学习 SQL 接触的第一个关键字,基础的内容就是不提了,这里整理常用的规范:
起别名
SELECT name AS n FROM student
查询常数, 增加一列固定的常数列:
SELECT '学生信息' as student_info, name FROM student
去重重复行
SELECT DISTINCT age FROM student
需要注意的是 DISTINCT 是对后面的所有列进行去重, 下面这种情况就会对 age 和 name 的组合进行去重。
SELECT DISTINCT age,name FROM student
排序数据,ASC 代表升序,DESC 代表降序
如先按照 name 排序,name 相等的情况下按照 age 排序。
SELECT DISTINCT age FROM student ORDERY BY name,age DESC
限制返回的数量
SELECT DISTINCT age FROM student ORDERY BY name DESC LIMIT 5
Top