Mysql - 使用入门 (4)

排序的数据在很多场合可能都会用上,可以下面下面的方式进行检索排序

select 列名 from 表名 order by 列名; select prod_name from products order by prod_name; -- order by 同时也可以按照非检索的列名进行排序,通常不这样做 3.1 多个列排序 select 列1, 列2, 列3 from 表名 order by 列1, 列2; select prod_id, prod_price,prod_name from products order by prod_price, prod_name; 3.2 指定排序方向 desc(降序) asc(默认升序) select 列1, 列2, 列3 from 表名 order by 列1 desc, 列2 asc; select prod_id, prod_price,prod_name from products order by prod_price desc, prod_name asc; 3.3 order by 于 limit的组合 select 列名 from products order by 列名 limit x,y; select prod_price from products order by prod_price limit 5; 4.0 过滤行数据(where子句)

where 字句操作符号

操作符 说明
>   大于  
!=(<>)   不等于  
=   等于  
<   小于  
>=   大于等于  
<=   小于等于  
between   在两者之间  
and   两种条件都要满足  
or   只要满足其中的一种条件  
in   指定检索的范围  
not   否定后面跟的条件  

基本使用方法

select 列1, 列2 from 表名 where 列数据 = 2.5; select prod_name, prod_price from products where prod_price = 2.5; 4.1 检索值范围 between x and y 即(x <= value <= y) select 列1, 列2 from products where 列1 between X and Y; select prod_name, prod_price from products where prod_price between 5 and 10; 4.2 空值检索 -- 应为空值具有特殊含义, 所以这里用的是 is select 列名 from 表名 where 列名 is null; select cust_id from customers where cust_email is null; 4.3 or操作符 select 列名, 列名 from 表名 where 列名 = 值 or 列名 = 值; select prod_name, prod_price from products where vend_id = 1002 or vend_id = 1003; 4.4 or与and的组合 -- 这里需要的注意的是在进行组合运算的时候添加个 () 不会有错的 -- 如果不添加 () ,下面的例子就会出现很奇怪的事 select prod_name, prod_price from products where prod_price >=10 and (vend_id = 1002 or vend_id = 1003); 4.5 in操作符

上面的句子其实是可以这么化简的

select 列名 from 表名 where 列名 in (值1, 值2, ..., 值n); select prod_name, prod_price from products where prod_price >=10 and vend_id in (1002, 1003); 4.6 not操作符

对上面的 vend_in 筛选的结果取反

select 列名 from 表名 where 列名 not in (值1, 值2, ..., 值n); select prod_name, prod_price from products where prod_price >=10 and vend_id not in (1002, 1003); 5.0 通配符的使用

通配符

% 表示任何字符出现任何次

_ 表示任何字符出现一次

5.1 like操作符 select 列名 from 表名 where 列名 like 带有通配符的值; -- 如果我只记得prod_name的值有je开头的,我应该咋匹配呢? select prod_id, prod_name from products where prod_name like 'je%';

或者我想搜索一个文本中包含什么的

select prod_id, prod_name from products where prod_name like '%se%';

......

5.2 通配符的使用技巧

通配符确实很好用,但是这个开销会比前面的检索方式慢太多

通过其他方式能检索到的,就完全没比较使用通配符了

在确实需要使用的时候,最好不用把通配符置于搜索模式的开始处,这样搜索是最慢的

6.0 正则表达式进行检索(尽量少用) select 列名 from 表名 where 列表 regexp 正则表达式; select prod_name from products where prod_name regexp '.000' order by prod_name; mysql> select prod_name from products where prod_name regexp '1000' order by prod_name; +--------------+ | prod_name | +--------------+ | JetPack 1000 | +--------------+ 1 row in set (0.00 sec) mysql> mysql> select prod_name from products where prod_name like '1000' order by prod_name; Empty set (0.00 sec) 由上面可以发现,like 是匹配整个列的,当列数据不一致,即不返回数据, 而 regexp 是在列值内进行匹配,如果被匹配上了,当然就返回数据了 6.1 正则表达式进行or匹配 ' | ' select prod_name from products where prod_name regexp '1000|2000' order by prod_name; 6.2 匹配几个字符之一 ' [] ' select prod_name from products where prod_name regexp '[123] Ton' order by prod_name; 6.3 匹配范围 ' [a-g] ' ... '[0-4]' select prod_name from products where prod_name regexp '[1-5] Ton' order by prod_name; 6.4 匹配特殊字符

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzyzd.html