包括 SELECT
, UPDATE
, DELETE
, INSERT
SELECT
从数据库表中获取数据
用法
SELECT name FROM students;
SELECT name,age FROM students;
SELECT * FROM students;
DISTINCT
使用 DISTINCT
可以对搜索结果进行去重
SELECT DISTINCT name FROM students;
ORDER BY
ORDER BY
根据指定的列对结果集进行排序
DESC
倒序、ASC
正序
SELECT * FROM students ORDER BY age DESC, name ASC;
LIMIT
LIMIT
用于规定要返回的记录的数目
SELECT * FROM students LIMIT 10;
UNION & UNION ALL
UNION
操作符用于合并两个或多个 SELECT 语句的结果集
UNION
自动去重,如果不希望去重可以使用 UNION
注意:UNION
内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型,并且每条 SELECT 语句中的列的顺序必须相同
SELECT * FROM students WHERE age < 18
UNION
SELECT * FROM students WHERE age > 100;
SELECT * FROM students WHERE age < 18
UNION ALL
SELECT * FROM students WHERE name LIKE 'A%';
WHERE
使用 WHERE
可以增加搜索条件
SELECT name FROM students WHERE age BETWEEN 0 AND 18;
SELECT name FROM students WHERE age < 18;
支持的操作符:>
、<
、=
、<=
、>=
、<>
(!=
)、BETWEEN
、LIKE
BETWEEN
BETWEEN ... AND
在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围,可以是数值、文本或者日期
同时也可以通过 NOT
来选取这两个值之外的范围
注意: BETWEEN
的范围是同时包含左右两个值的
SELECT name FROM students WHERE age BETWEEN 0 AND 18;
SELECT name FROM students WHERE age NOT BETWEEN 0 AND 18;
IN
IN 操作符允许我们在 WHERE 子句中规定多个值
SELECT * FROM students WHERE name IN ('Tom', 'Jerry');
LIKE & RLIKE & REGEXP
LIKE
LIKE
操作符用于在 WHERE 子句中搜索列中的指定模式
LIKE
通常与 %
、_
一起使用,如果不使用通配符 LIKE
就相当于 =
MySQL 中 LIKE
不支持 [charlist]
、[^charlist]
通配符,需要使用正则进行匹配
SELECT * FROM students WHERE name LIKE 'A%';
SELECT * FROM students WHERE name NOT LIKE 'A%';
SELECT * FROM students WHERE name LIKE 'T_m';
RLIKE & REGEXP
MySQL中使用 RLIKE & REGEXP 操作符来进行正则表达式匹配,相比 LIKE 更加灵活
SELECT * FROM students WHERE name RLIKE '^[^a-c]';
SELECT * FROM students WHERE name REGEXP '^[^a-c].m';
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
. | 匹配除了' '之外的任意单个字符 |
[charlist] | 匹配列表所包含的任意一个字符 |
[^charlist] | 匹配列表不包含的任意一个字符 |
| | 匹配符号左边或右边的字符 |
* | 匹配前面的表达式 0 次或多次,等价于{0,} |
+ | 匹配前面的表达式 1 次或多次,等价于{1,} |
{n} | 匹配前面的表达式至少 n 次 |
{n,m} | 匹配前面的表达式至少 n 次,至多 m 次 |
通配符
%
替代一个或多个字符
_
仅替代一个字符
[charlist]
字符列中的任何单一字符
[^charlist]
不在字符列中的任何单一字符
AND & OR
AND
和 OR
可在 WHERE
子语句中把两个或多个条件结合起来
AND
要求两个条件同时成立
OR
只用其中一条成立即可
当 AND
和 OR
形成复杂的表达式时,可以使用 ()
将条件括起来
SELECT * FROM students WHERE (name LIKE 'A%' OR name LIKE 'B%') AND age>18;
UPDATE
更新数据库表中的数据
UPDATE students SET name = 'Jerry' WHERE name = 'Tom';
UPDATE students SET age = 18, gender = 'F' WHERE name = 'Alice';
DELETE
从数据库表中删除数据
DELETE FROM students WHERE name = 'Tom';
删除表中所有数据,但是表还保留
DELETE FROM students;
INSERT INTO
向数据库表中插入数据
INSERT INTO students VALUES ('Tom', 10, 'M'), ('Jerry', 9, 'M');
INSERT INTO students (name, gender) VALUES ('Tom', 'M');