检索数据
SELECT
检索列:SELECT 列名1,列名2,列名3
FROM 表名;
检索全部:SELECT *
FROM 表名;
DISTINCT
用DISTINCT来查找不重复的行。
SELECT DISTINCT Bedrooms,Bathrooms FROM practice1.house_price;
排序检索数据
ORDER BY
多列排序
SELECT 列名1,列名2,列名3
FROM 表名
ORDER BY 列名3,列名4(可以是非选择中的列名);
注意:先按列名3,再按列名4排序
指定排序方向
SELETC 列名1,列名2 FROM 表名
ORDER BY 列名3 DESC(降序),列名2 ASC(升序,默认);
过滤数据
WHERE
SELECT 列名1,列名2
FROM 表名
WHERE 搜索条件/过滤条件(操作符)
ORDER BY 列名3;
注意:ORDER BY在WHERE之后
操作符总结:
WHERE+AND/OR(IN/NOT)
AND操作符
SELECT 列名1,列名2
FROM 表名
WHERE 条件1 AND 条件2;#同时满足两个条件
OR操作符
SELECT 列名1,列名2
FROM 表名
WHERE 条件1 OR 条件2;#满足条件1或条件2
注意:计算次序是先AND再OR,多AND和OR组合时,注意加括号明确分组
IN操作符
SELECT 列名1,列名2
FROM 表名
WHERE 列名4 IN (,,)
ORDER BY 列名3;#相当于OR
NOT操作符
SELECT 列名1,列名2
FROM 表名
WHERE NOT 条件
ORDER BY 列名3;
SELECT * FROM practice1.house_priceWHERE Bedrooms = 2AND NOT Bathrooms = 3; # NOT比AND的优先级高,先执行NOT
WHERE+LIKE+通配符:针对不完全已知的文字查找
百分号%
A%:SELECT 列名1,列名2
FROM 表名
WHERE 列名3 LIKE ‘Fish%’;
注意:搜索模式 ‘Fish%’ 表示匹配任何以Fish开头的值,接受Fish之后任意字符,不管多少字符
%A %:SELECT 列名1,列名2
FROM 表名
WHERE 列名3 LIKE ‘%Fish%’;
注意:搜索模式 ‘%Fish%’ 表示匹配任何位置包含Fish的值,不管它之前之后出现什么字符
A%C:SELECT 列名1,列名2
FROM 表名
WHERE 列名3 LIKE ‘F%h’;
注意:搜索模式 ‘F%h’ 表示匹配以F开头以h结尾的值
下划线(_)通配符:只匹配单个字符,而不是多个
_:匹配一个字符
__:两根,匹配两个字符
SELECT 列名1,列名2
FROM 表名
WHERE 列名3 LIKE ‘__ inch teddy bear’;
注意:只能搜索出两位数的结果,因为有两根
方括号([])通配符:只匹配单个字符
[JM]%:所有以J或M开头的值
SELECT 列名1,列名2
FROM 表名
WHERE 列名3 LIKE ‘[JM]%’
ORDER BY 列名3;
[^JM]%:所有不以J或M开头的值
注意:并非所有都支持方括号,用NOT也可以
正则表达式
SELECT * FROM practice1.reWHERE 某列 REGEXP 'c$';#匹配字符串末尾带c的,注意是最后一位为c
参考书籍:《SQL必知必会》