查询数据
SELECT column_1, column_2, ... FROM table_1 [INNER | LEFT |RIGHT JOIN table_2 ON conditions] WHERE conditions GROUP BY column_1 HAVING group_conditions ORDER BY column_1 LIMIT offset, length;
SELECT
语句由以下列表中所述的几个子句组成:
-
SELECT
之后是逗号分隔列或星号(*
)的列表,表示要返回所有列。 -
FROM
指定要查询数据的表或视图。 -
JOIN
根据某些连接条件从其他表中获取数据。 -
WHERE
过滤结果集中的行。 -
GROUP BY
将一组行组合成小分组,并对每个小分组应用聚合函数。 -
HAVING
过滤器基于GROUP BY
子句定义的小分组。 -
ORDER BY
指定用于排序的列的列表。 -
LIMIT
限制返回行的数量。
语句中的SELECT
和FROM
语句是必须的,其他部分是可选的。
SELECT DISTINCT
运算符来消除结果集中的重复行。
过滤数据
-
WHERE 根据指定的条件过滤行记录。
-
AND运算符 组合布尔表达式以形成用于过滤数据的复杂条件。
-
OR运算符 与
AND
运算符组合以过滤数据。 -
IN运算符 确定值是否匹配列表或子查询中的指定值。
-
BETWEEN运算符 根据指定范围查询数据。
-
LIKE 基于特定模式匹配查询数据,以执行一些模糊查询。
-
LIMIT 限制返回的行数。
-
IS NULL 测试值是否为
NULL
。 -
比较运算符 =,<> 或 !=,>,>=,<,<=
排序数据
-
ORDER BY 排序结果集。
-
ORDER BY FIELD() 自定义排序顺序。
- AES 升序排序,DESC 降序排序。
分组数据
-
GROUP BY子句 根据列或表达式将行记录分组到子组。
-
HAVING子句 按特定条件过滤组。
修改数据
-
INSERT INTO语句 将数据插入到数据库表中。
-
UPDATE语句 更新数据库表中的数据。
-
DELETE语句 从表中删除数据。
INSERT INTO table_1(column1,column2...) VALUES (value1,value2,...); # 插入一行 INSERT INTO table_1(column1,column2...) VALUES (value1,value2,...),(value1,value2,...),...; # 插入多行 INSERT INTO table_1 VALUES (value1,value2,...); # 为所有列指定相应的值 INSERT INTO table_1 SELECT c1,c2 FROM table_2; # 使用SELECT语句返回的列和值来填充INSERT语句的值
注意,不必为自动递增列指定值,因为MySQL会自动为自动递增列生成值。
UPDATE [LOW_PRIORITY] [IGNORE] table_name SET column_name1 = expr1, column_name2 = expr2, ... WHERE condition;
在上面UPDATE
语句中:
- 首先,在
UPDATE
关键字后面指定要更新数据的表名。 - 其次,
SET
子句指定要修改的列和新值。要更新多个列,请使用以逗号分隔的列表。以字面值,表达式或子查询的形式在每列的赋值中来提供要设置的值。 - 第三,使用WHERE子句中的条件指定要更新的行。
WHERE
子句是可选的。 如果省略WHERE
子句,则UPDATE
语句将更新表中的所有行。
MySQL在UPDATE
语句中支持两个修饰符。
LOW_PRIORITY
修饰符指示UPDATE
语句延迟更新,直到没有从表中读取数据的连接。LOW_PRIORITY仅
对使用表级锁定的存储引擎(例如MyISAM,MERGE,MEMORY)生效。- 即使发生错误,IGNORE修饰符也可以使UPDATE语句继续更新行。导致错误(如重复键冲突)的行不会更新。
DELETE FROM table_name WHERE condition;
除了从表中删除数据外,DELETE
语句返回删除的行数。
CASE WHEN
1. 简单 CASE
CASE case_expression WHEN when_expression_1 THEN commands WHEN when_expression_2 THEN commands ... ELSE expression END
2. 搜索 CASE
CASE WHEN condition_1 THEN commands WHEN condition_2 THEN commands ... ELSE expression END