MySQL必知必会读书笔记-2(去重,limit,结果的排序,通配符,正则表达式)
Posted vplus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL必知必会读书笔记-2(去重,limit,结果的排序,通配符,正则表达式)相关的知识,希望对你有一定的参考价值。
1——DISTINCT(去除重复行)
使用DISTINCT关键字,注意,这个关键字是针对所有列的
#查找所有不同的vend_id
SELECT DISTINCT vend_id FROM products
#查找所有不同的vend_id, prod_price SELECT DISTINCT vend_id, prod_price FROM products
2——LIMIT(限制输出行数)
结果行数的限制
使用LIMIT
SELECT prod_name FROM products LIMIT 3, 4;
#输出第三行之后的四行(即4567行)
mysql5也支持这样写,效果与前面一样
LIMIT 4 OFFSET 3
3——对结果排序
使用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
#先按价格排序,价格相同时按名称排序
指定排序规则
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC;
#指定降序
多个列指定不同的排序规则
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;
#先按降序排列价格,价格相同的按产品名升序排列
注意:DESC关键字只作用于其之前的那一列,与DESC对应的是升序ASC,是默认的,所以不用写
练习:找到最贵的物品
SELECT prod_price, prod_name FROM products ORDER BY prod_price DESC LIMIT 1
4——where子句过滤数据
SELECT prod_price, prod_name FROM products where prod_name =\'fuses\'
结果不分大小写
between关键字
SELECT prod_price, prod_name FROM products where prod_price BETWEEN 5 AND 10
范围包含边界值
空值检查
SELECT cust_id, cust_email
FROM customers
WHERE cust_email IS NULL;
AND操作符
SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 AND prod_price <=10
OR操作符
SELECT prod_id, prod_price, prod_name, vend_id FROM products WHERE vend_id = 1003 OR vend_id = 1002
IN操作符
SELECT prod_id, prod_price, prod_name, vend_id FROM products WHERE vend_id IN(1002, 1003)
NOT IN 操作符
与IN操作符刚好相反
5——使用通配符过滤
使用通配符时必须使用like关键字
% 通配符
找出所有name以jet开头的物品(字母分不分大小写由MySQL配置方式决定)
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE \'jet%\';
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE \'%anvil%\';
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE \'s%e\';
注意:NULL值是不会被%匹配出来的
_ 通配符
与%匹配多个字符不同,_ 只匹配一个字符
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE \'% ton anvil\';
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE \'_ ton anvil\';
忠告:不要过度使用通配符
6——使用正则表达式搜索
正则表达式是用来匹配文本的特殊的串
搜索商品名中含有\'1000\'的字符串
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'1000\'
. 表示匹配一个字符
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'.000\'
匹配不区分大小写,为区分大小写可使用BINARY关键字
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP BINARY \'JetPack .000\'
OR匹配
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'1000|2000\'
匹配几个字符之一
使用[]括住你想要匹配的字符
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'[123] ton\'
[123] ton等价于[1|2|3] ton或者1 ton|2 ton|3 ton
[^123]表示匹配除了这些字符之外
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'[^123] ton\'
匹配范围
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'[1-5] ton\'
匹配特殊字符
由于[] , | , . ,等特殊字符在正则表达式中被赋予了特定含义,所以匹配这些字符的时候需要以\\\\为前导
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'\\\\.\'
字符集
匹配多个实例
匹配连在一起的四个数字
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'[[:digit:]]{4}\'
也可以这样写
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'[0-9][0-9][0-9][0-9]\'
定位符
找出以一个数(包含小数点开始的数)开始的所有产品
SELECT prod_id, prod_name FROM products WHERE prod_name REGEXP \'^[0-9\\\\.]\'
测试正则表达式
以上是关于MySQL必知必会读书笔记-2(去重,limit,结果的排序,通配符,正则表达式)的主要内容,如果未能解决你的问题,请参考以下文章