mysql 正则排序_MySQL必知必会读书笔记-2(去重,limit,结果的排序,通配符,正则表达式)...

1——DISTINCT(去除重复行)

使用DISTINCT关键字,注意,这个关键字是针对所有列的

#查找所有不同的vend_id

SELECT DISTINCTvend_idFROMproducts

#查找所有不同的vend_id, prod_priceSELECT DISTINCTvend_id, prod_priceFROM products

2——LIMIT(限制输出行数)

结果行数的限制

使用LIMIT

SELECTprod_nameFROM products

LIMIT3, 4;

#输出第三行之后的四行(即4567行)

MySQL5也支持这样写,效果与前面一样

LIMIT 4 OFFSET 3

3——对结果排序

使用ORDER BY,默认升序

SELECTprod_nameFROMproductsORDER BY prod_name

a13b8284c00f49eb7d5a8ffa6d3d9333.png

(本文截图不一定是完整的结果)

按多个列排序

SELECTprod_id, prod_price, prod_nameFROMproductsORDER BY prod_price, prod_name

#先按价格排序,价格相同时按名称排序

2663bf9e4b02016883b63b60bce646a1.png

指定排序规则

SELECTprod_id, prod_price, prod_nameFROMproductsORDER BY prod_price DESC;

#指定降序

a2f3caae4c5c026cb723d66c0d27f97d.png

多个列指定不同的排序规则

SELECTprod_id, prod_price, prod_nameFROMproductsORDER BY prod_price DESC, prod_name;

#先按降序排列价格,价格相同的按产品名升序排列

a6f3e434f29328faf3918849d9d181cf.png

注意:DESC关键字只作用于其之前的那一列,与DESC对应的是升序ASC,是默认的,所以不用写

练习:找到最贵的物品

SELECTprod_price, prod_nameFROMproductsORDER BY prod_price DESCLIMIT1

4a19c1e6574db5c3e7aca207ea17d4f2.png

4——where子句过滤数据

SELECTprod_price, prod_nameFROMproductswhere prod_name ='fuses'

结果不分大小写

d6996cf12784f3d03c94f1d3f673e078.png

between关键字

SELECTprod_price, prod_nameFROMproductswhere prod_price BETWEEN 5 AND 10

范围包含边界值

e2ea727a09d2ea9d14f64b1e6070d2c7.png

空值检查

SELECT cust_id, cust_email

FROM customers

WHERE cust_email IS NULL;

63c4d2c240510f350482ce8ee3edb8be.png

AND操作符

SELECTprod_id, prod_price, prod_nameFROMproductsWHERE vend_id = 1003 AND prod_price <=10

4568de145f5b97b26115f37315411082.png

OR操作符

SELECTprod_id, prod_price, prod_name, vend_idFROMproductsWHERE vend_id = 1003 OR vend_id = 1002

ff963cb23a1b692bc8cb9c6a6050b846.png

IN操作符

SELECTprod_id, prod_price, prod_name, vend_idFROMproductsWHERE vend_id IN(1002, 1003)

1d600211bb21d1b0d9baa84ac6cb2daf.png

NOT IN 操作符

与IN操作符刚好相反

5——使用通配符过滤

使用通配符时必须使用like关键字

% 通配符

找出所有name以jet开头的物品(字母分不分大小写由MySQL配置方式决定)

SELECTprod_id, prod_nameFROMproductsWHERE prod_name LIKE 'jet%';

7fb41f6fdb1310fa923ebf7a7273aaf4.png

SELECTprod_id, prod_nameFROMproductsWHERE prod_name LIKE '%anvil%';

4b5bd124fc90e4e4267f5e5a643a369e.png

SELECTprod_id, prod_nameFROMproductsWHERE prod_name LIKE 's%e';

6612af733141b10daf44814612954b15.png

注意:NULL值是不会被%匹配出来的

_ 通配符

与%匹配多个字符不同,_ 只匹配一个字符

SELECTprod_id, prod_nameFROMproductsWHERE prod_name LIKE '% ton anvil';

c5c2b6328fdb7b2cda997d39cc349a14.png

SELECTprod_id, prod_nameFROMproductsWHERE prod_name LIKE '_ ton anvil';

5b6c2034cb3d467ac7d903b2c593ef82.png

忠告:不要过度使用通配符

6——使用正则表达式搜索

正则表达式是用来匹配文本的特殊的串

搜索商品名中含有'1000'的字符串

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '1000'

8e8396fa1ce3e660eabef9a4a17e7ef1.png

. 表示匹配一个字符

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '.000'

29ec9ac3dcb35c635cd5f7852dfc0402.png

匹配不区分大小写,为区分大小写可使用BINARY关键字

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP BINARY 'JetPack .000'

f66f2874d07f506850954664abccb287.png

OR匹配

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '1000|2000'

33c56c52d8837574d9a5934c48993d6a.png

匹配几个字符之一

使用[]括住你想要匹配的字符

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '[123] ton'

[123] ton等价于[1|2|3] ton或者1 ton|2 ton|3 ton

b59924abd335c8715004cd5a4f16ff90.png

[^123]表示匹配除了这些字符之外

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '[^123] ton'

442ac396b0832bc5b8e082d230dd3a70.png

匹配范围

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '[1-5] ton'

a63f4c6c812169d036204a3044e1b412.png

匹配特殊字符

由于[] , | , . ,等特殊字符在正则表达式中被赋予了特定含义,所以匹配这些字符的时候需要以\\为前导

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '\\.'

4c49aac86f4572110f50b4b3f562c458.png

字符集

22a2f76ef69fa8f0971617746c3f98e9.png

匹配多个实例

5a6c99136e02e31aa124b3f0d076113f.png

匹配连在一起的四个数字

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '[[:digit:]]{4}'

也可以这样写

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '[0-9][0-9][0-9][0-9]'

16c3f02b18c882dafd7e9661c86b37fc.png

定位符

57ae1bde9028f0077d0378958f9bc6e1.png

找出以一个数(包含小数点开始的数)开始的所有产品

SELECTprod_id, prod_nameFROMproductsWHERE prod_name REGEXP '^[0-9\\.]'

18bdbfd745200b0dd95a7a6e0bf71f73.png

测试正则表达式

35f208162fcbcf641ca805ae992f0f5c.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值