语句类型
DDL数据定义语言:
创建、删除数据库和表等对象
CREATE
创建数据库和表等对象DROP
删除数据库和表等对象ALTER
修改数据库和表等对象的结构
DML数据操纵语言:
查询、变更表中的记录:
SELECT
查询表中数据INSERT
插入新数据UPDATE
更新表中数据DELETE
删除表中数据
DCL数据控制语言:
确认、取消对数据库中数据的更改
COMMIT
将SQL语句的执行结果写入数据库表中ROLLBACK
撤销SQL语句的执行结果
重点是DML数据操纵语言。
单表查询
从一个数据表中,查询出一列或多列数据:
SELECT
[列名]FROM
[表名];SELECT
[列名1],[列名2],[列名3]FROM
[表名];SELECT
*FROM
[表名];
可以使用[表名].[列名]
的方式代替列名,比较方便。
-
AS 别名设置:
SELECT
[列名1],[列名2]AS
[别名],[列名3]AS
[别名]…FROM
[表名]; -
常数添加:
SELECT
‘常数’AS
[别名]FROM
[表名]; -
四则运算:
SELECT
[四则运算表达式]FROM
[表名];
sale_price - in_price AS profit
-
CONCAT 字符拼接:
SELECT
CONCAT
([列名1],[列名2],…)FROM
[表名];
不仅可以拼接列,还可以拼接文本。 -
CONCAT_WS 指定拼接符:
SELECT
CONCAT_WS
(‘拼接符’,[列名1],[列名2],…)FROM
[表名];
多字段拼接,字段间使用同样的拼接符
会自动跳过NULL
-
DISTINCT 取出不重复的列值:
SELECT
DISTINCT
[列名]FROM
[表名]; -
ORDER BY 结果排序:(非必须语句)
应该写在查询语句的最末尾,列名可以用索引代替;
ORDER BY
[列名1],[列名2],…;在列名后面加上关键字
ASC
或者DESC
可以指定排序方式DESC
只对紧跟着的关键字起作用如果要被指定为排序的列是文本类型,需要使用
CONVERT([列名] USING gbk)
语句。
SELECT * FROM [表名] ORDER BY CONVERT([列名] USING gbk);
-
WHERE 数据过滤
SELECT
[列名]FROM
[表名]WHERE
[条件]; -
IFNULL 函数,如果是空值,则替换成一个值
IFNULL
([列名],替换值)
SELECT
[列名]FROM
[表名]WHERE
IFNULL
([列名],0)!=
15 ; -
BETWEEN…AND…选出两个值之间的行,包含两端
WHERE
[列]BETWEEN
[前端值]AND
[后端值] ; -
IS NULL 空值过滤
WHERE
[列]IS NULL
; -
IS NOT NULL 过滤非空值
WHERE
[列]IS NOT NULL
;
- LIKE 模糊查询
-
通配符
_
,一个代表一个字符
知道字符位置和数目
WHERE
[列]LIKE
‘…_
…’; -
通配符
%
知道字符位置,不知道数目,%
可以代表任意个
WHERE
[列]LIKE
‘…%
…’;
-
以通配符开头,查询效率比较低
转义字符为\
过滤条件可以有多个,用AND或OR连接,可以加括号防止优先级混淆
WHERE
[条件1] AND
[条件2] OR
[条件3]…;
-
IN 明确而不连续的取值
WHERE
[字段]IN
(值1, 值2, …); -
NOT 否定条件
WHERE
NOT
[条件1];
只否定紧跟着的条件
SELECT
*FROM
milk_teaWHERE
NOT
prod_nameIN
(‘奶茶’,‘薯片’); 表示除了奶茶和薯片