日新计划6月更文 Day 15
上一篇我们讨论了简单的 DDL 的使用,包括模式与表的创建、修改和删除,本文我们将讨论 DML 与 DQL 的使用。
查询数据使用SELECT,查询语句的一般格式如下:
Select [Distinct] <目标表达式> [, <目标表达式>...]
From <表名>|<视图名>|(<子查询语句>) As <子查询别名>[,<表名>|<视图名>|(<子查询语句>) As <子查询别名>...]
[Where <条件表达式>]
[Group By <列名> [Having <条件表达式>]]
[Order By <列名> [Deac|Asc]]
- 使用子查询必须设置子查询表的别名
- 排序不给出升序(Asc)/降序(Desc),默认升序
- 并列对各排序条件,优先级依次降低且每一个升序/降序仅对一个排序条件有效
对于多张表/视图/子查询,可使用“Where”语句进行连接或使用相关连表语句进行连接,使用“Where”进行连接为内连接。
表的连接方式有左外连接(LEFT JOIN <表> ON <条件表达式>)、右外连接(RIGHT JOIN <表> ON <条件表达式>)、全外连接(FULL JOIN <表> ON <条件表达式>)和内连接(INNER JOIN <表> ON <条件表达式>),其区别在于悬空记录的处理方式。
Where 用于对原始数据进行筛选,Having用于对聚合后的数据进行筛选,即执行顺序为“Where筛选”->“Group By”->“Having”。
为了方便或为了避免歧义,可为语句过程中从字段、表设置别名,设置别名使用AS或直接在表、列后跟别名。
“条件表达式”不仅可以使用大于(>)、小于(<)、等于(=)、不等于(!=或<>)等对比两个字段或值,使用且(AND)、或(OR)、非(NOT)连接基本语句,还可使用BETWEEN AND、IN、LIKE等进行更灵活地判断。
对集合的操作可使用并(UNION)、交(INTERSECT)、差(EXCEPT)等操作。
相比查询,增加、删除、修改数据就简单很多。
插入数据使用INSERT INTO语句,如:
Insert Into Cat(`name`, `birthday`)
Values("Monroe", '1993-1-1'),("Lura", '1991-12-23');
删除数据使用DELETE FROM,如:
Delete From Cat
Where `name` = "Monroe";
更新数据使用UPDATE,如:
Update `CatScore`
Set `score` = `score` + 1
Where `id` = 1;
- 删除与更新不给出 Where子句则对整张表进行操作。