MySQL过滤
- SQL中的查询语句主要依赖于select语句实现
- 有如下例子
- 检索单个列
- SELECT prod_name FROM products;
- 一般情况下将SQL关键词大写,对所有列名,表名小写,使代码便于阅读和调试
- SQL 语句不区分大小写,但是表名、列名区分大小写
- SQL 语句中的空格都被忽略掉
- 检索多个列
- 也是使用SELECT语句,不同的列名用逗号隔开
- SELECT prod_name, prod_name, prod_price FROM products
- 检索所有列
- SELECT * FROM products
- 检索列并返回唯一值
- 在SELECT后加上DISTINCT关键词,可以剔除重复行,只留下一个
- SELECT DISTINCT vend_id FROM products;
- 限制结果
- SELECT prod_name FROM products LIMIT 5;
- 返回prod_name的列,返回不超过五行
- SQL中的第一行 起始值也为0
- SELECT prod_name FROM products LIMIT 5, 5; # 第一个数字为开始行数,第二个数字为检索行数
- 表示从第五行开始,选择5行
- 完全限定表名
- SELECT products.prod_name FROM products;
- 检索单个列
- 有如下例子
!!子句!!
- SQL语句由子句构成,有些子句是必须的,有些可选,SELECT FROM 就是一个子句,可以实现一个功能
排序查询
- 排序子句
-
ORDER BY
* SELECT prod_name FROM products ORDER BY prod_name
* 这里也可以通过非选择列进行排序 -
按多个列排序
- SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;
- 联合排序是按照顺序进行的,先使用prod_price进行排序,如果prod_price中出现多个相同值,才使用prod_name进行排序
-
过滤数据
-
WHERE子句过滤
-
WHERE 与 SELECT 联合使用,在表名 FROM 之后给出
-
SELECT prod_name, prod_price FROM products WHERE prod_price =2.5;
-
ORDER BY 和 WHERE子句时,应该让 ORDER BY位于 WHERE之后,否则就会产生错误
-
WHERE 操作符
-
符号 说明 = 等于 <> 不等于 != 不等于 < 小于 <= 小于等于 > 大于 >= 大于等于 BETWEEN 在指定两个值之间 -
范围值检查
- SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10 - 数据库筛选实例
- SELECT O3 FROM envitable WHEREdatetime BETWEEN “2018-06-01 00:00:00” AND "2018-06-31 23:00:00"AND stationcode= 21010096;
- SELECT prod_name, prod_price
-
空值检查
-
IS NULL 与SELECT结合可以检查NULL
- SELECT prod_name FROM products WHERE prod_price IS NULL
-
-
WHERE子句组合
-
MySQL与匈奴可以给出多个WHERE子句,以AND 或者 OR子句的方式使用
- AND操作符
- SELECT prod_id, prod_price, prod_name
FROM products
WHERE vend_id = 1003 AND prod_price <= 10; - 多个过滤条件在后边在使用一个AND即可
- SELECT prod_id, prod_price, prod_name
- OR操作符
- SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;
- SELECT prod_name, prod_price
- AND操作符
-
计算次序
- SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >=10; - 上述语句的执行次序为 先执行 AND语句 再执行 OR,即:先 vend_id = 1003 AND prod_price >=10 之后将 AND 执行结果与 OR vend_id = 1002 结合
- 使用小括号可以消除执行顺序歧义
- SELECT prod_name, prod_price
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
- SELECT prod_name, prod_price
-
IN操作符
- IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配,IN中的合法值由逗号分隔
- SELECT prod_name, prod_price
FROM products
WHERE vend_id IN (1002,1003)
ORDER BY prod_name;
-
NOT操作符
- 否定 NOT后边的每一个条件
- SELECT prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
ORDER BY prod_name
-