select
要给出两个信息
想选什么
从什么地方选
检索一列
SELECT 列名
FROME 表名;
检索多列
SELECT 列名1, 列名2
FROM 表名;
注意:最后一个列后面不用跟逗号
检索所有列
SELECT *
FROM 表名;
只返回值不同的行
SELECT DISTINCT vend_id
FROM products;
当作用于两个列的时候
DISTINCT不能局部使用
表示这两个列组合是唯一的即可
组合相同的不会显示
SELECT DISTINCT vend_id, prod_price
FROM products;
返回指定行数
返回前5行
SELECT prod_name
FROM products
LIMIT 5;
返回第5行后的5行
SELECT prod_name
FROM products
LIMIT 5, 5;
第五行不返回
排序检索
按单列值进行排序
SELECT prod_name
FROM products
ORDER BY prod_name;
注意可以用非显示的列进行排序
也就是可以不用prod_name进行排序
按多列值进行排序
SELECT prod_id, prod_price, prod_name
FROM products
ORDER BY prod_price, prod_name;
先按prod_price排序
prod_price相同的行再按prod_name排序
单列降序排序
默认是升序的
SELECT prod_name
FROM products
ORDER BY prod_name DESC;
多列降序排序
SELECT prod_id, prod_price, prod_name
FROM products
ORDER BY prod_price DESC, prod_name DESC;
每个DESC只做作用前面一个字段
大小写顺序
默认是字典排序A和a是相同的
如果想改变只能请求数据库管理员帮忙
ORDER BY 和 LIMIT结合能找到最大或最小的一些
注意
ORDER BY必须在FROM之后
LIMIT必须在ORDER BY之后
过滤行数据
核心
WHERE
以下都要和WHERE配合
概念
按指定的条件取部分行
注意
WHERE在FROM之后
ORDER BY在 WHERE之后
相等过滤
SELECT prod_name, prod_price
FROM products
WHERE prod_price = 2.50;
注意
如果列的数据类型是字符串
那么 右边要用单引号
而且字符串匹配一样不分大小
其他过滤操作符
不等于 <> 或 !=
<, <= , > , >=
BETWEEN m AND n 在指定的m、n之间
而且还包括m、n
控制检查
WHERE ?? IS NULL;
这个??不用是之前SELECT的
AND 和 OR操作符
注意连用的时候AND优先级要高于OR
所以连用时候最好注意用括号
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10
IN
概念
清单匹配
WHERE vend_id in (1002, 1003)
和上面的 WHERE (vend_id = 1002 OR vend_id = 1003) 效果一样
优点
比OR更快
能包含其他SELECT子句
NOT
否定后面跟的所有条件
WHERE vend_id NOT IN (1002, 1003)
特点
MySQL的NOT支持对IN 、BETWEEN、EXISIT取反
其他DBMS不这样