查询数据
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