Open evantianx opened 5 years ago
SELECT prod_name FROM products ORDER BY prod_name
检索出 prod_name 后,按照 prod_name 字母顺序升序排列 (也可以使用非检索列进行排序)
SELECT prod_id, prod_price, price_name FROM products ORDER BY prod_price DESC, prod_name
同时对多个检索表进行排序,优先使用 prod_price 降序排序,若遇到 prod_price 相同则使用 prod_name 升序排序
注意这里使用了关键字 DESC (降序排序),ORDER BY 默认排序为 ASC (升序排序)
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1
注意这里的顺序:ORDER BY 子句必须位于 FROM 子句后,而 LIMIT 子句必须位于 ORDER BY 子句后
SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50
检索两个列同时筛选 prod_price 为 2.50 的行 注意 ORDER BY 与 WHERE 同时使用的时候, ORDER BY 应位于 WHERE 之后
WHERE 子句操作符
SELECT cust_id FROM customers WHERE cust_email IS NULL
空值检查
SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10
从表中选取指定的两列,筛选条件为 vend_id 为 1002 或者 vend_id 为 1003 且 prod_price 大于等于 10
造成这样的原因是因为 AND 计算次序优先级高于 OR。解决方法:
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10
SELECT prod_name, prod_price FROM products WHERE vend_id IN (1002, 1003) AND prod_price >= 10
作用和上面的 OR 相同 IN 优于 OR:a. 语法更为直观;b. 计算次序容易管理;c. IN 执行比 OR 快; d. 可以包含其他 SELECT 语句,即可以动态建立 WHERE 子句
SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN (1002, 1003) ORDER BY prod_name
NOT 用来排除某些特定条件的行
在搜索串中, % 表示任何字符出现的任意次数
% 不能匹配 NULL
只匹配单个字符而非多个字符
SELECT prod_id, prod_name FROM products WHRER prod_name LIKE '_ ton anvil'
通配符使用注意: a.勿滥用;b. 尽量不在搜索模式开头使用,否则会大大降低搜索速度;c. 注意匹配内容是否符合要求
检索列
SELECT prod_name FROM products
SELECT prod_id, prod_name, prod_price FROM products
SELECT * FROM products
SELECT DISTINCT vend_id FROM products
SELECT prod_name FROM products LIMIT 5, 5