数据库速通:基础篇(下)

125 阅读2分钟

日新计划6月更文 Day 15

  上一篇我们讨论了简单的 DDL 的使用,包括模式与表的创建、修改和删除,本文我们将讨论 DML 与 DQL 的使用。

  查询数据使用SELECT,查询语句的一般格式如下:

Select [Distinct] <目标表达式> [, <目标表达式>...]
From <表名>|<视图名>|(<子查询语句>) As <子查询别名>[,<表名>|<视图名>|(<子查询语句>) As <子查询别名>...]
[Where <条件表达式>]
[Group By <列名> [Having <条件表达式>]]
[Order By <列名> [Deac|Asc]]
  1. 使用子查询必须设置子查询表的别名
  2. 排序不给出升序(Asc)/降序(Desc),默认升序
  3. 并列对各排序条件,优先级依次降低且每一个升序/降序仅对一个排序条件有效

  对于多张表/视图/子查询,可使用“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 ANDINLIKE等进行更灵活地判断。

  对集合的操作可使用并(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;
  1. 删除与更新不给出 Where子句则对整张表进行操作。