注意:select语句的order by子句对检索出的数据进行排序,这个字句必须出现在select语句中的最后一条子句。至于为什么,这个我暂时还不知道哈。。。
5、过滤数据select语句中,数据可以根据where子句指定的过滤条件进行过滤,where子句在表名(from子句)之后给出,比如,select id, name from goods where id = 2,该语句只显示id为2记录的id和name。注意:如果同时使用where和order by子句,应该让order by子句在where之后,否则会产生错误。
where子句操作符如下:
= 等于
<> 不等于
!= 不等于
< 小于
> 大于
>= 大于等于
between 在指定的两个值之间(比如select * from goods where id between 1 and 2)
我们在创建表时,可以指定其中的列是否可以不包含值,在一个列不包含值时,其值为空值null,select语句有一个特殊的where子句,用来检测具有null值的列,比如:select * from goods where num is null 就把num是空值得记录给打印出来。
6、数据过滤常用的select子句在过滤数据时使用的是单一的条件,为了进行更强的过滤控制,可以下多个where子句,这些子句有两种方式:以and子句和or子句的方式使用。
select * from goods where id = 2 and num > 10 检索id为2并且num大于10的记录
select * from goods where id = 3 or num > 15 检索id为3并且num大于15的记录
假如多个and和or语句放在一起,则优先处理and操作符,此时可以使用圆括号来改变其优先顺序。圆括号还可以指定in操作符的条件范围,范围中的每个条件都可以进行匹配。
where子句中的not操作符只有否定它之后的任何条件这一作用。
7、用通配符进行过滤使用like操作符进行通配搜索,以便对数据进行复杂过滤。
百分号(%)操作符 搜索中,%表示任何字符出现任意次数。
下划线(_)通配符,它用来匹配单个字符而不是多个字符。
通配符很有用,但这是有代价的,通配符的搜索处理一般比其他搜索花费时间长,这里有一些技巧:
不要过度使用通配符,如果其他操作符能达到同样的目的,就应该使用其他操作符。
在确实需要使用通配符时,除非绝对必要,否则不要把它们用在搜索模式的开始处,把通配符放在开始处,搜索起来是最慢的。
注意通配符位置,位置不对可能不会返回想要的结果。
8、正则表达式正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。mysql的where子句对正则表达式提供了初步支持,允许你指定正则表达式 ,过滤select检索出的数据。先看一下表记录:
select * from goods where name regexp '香' order by num desc 检索出name中有'香'的所有记录
select * from goods where name regexp '香.' 检索出name中有'香'的所有记录,'.'表示匹配任意一个字符
select * from goods where name regexp '香|瓜' 检索处name中有'香'或者'瓜'的所有记录
如果记录匹配正则表达式,则就会被检索出来,使用下面正则表达式重复元字符可以进行更强的控制。
* 匹配0个或多个
+ 匹配1个或多个(等于{1,})
? 匹配0个或1个(等于{0,1})
{n} 指定书目的匹配
{n,} 不少于指定数据的匹配
{n,m} 匹配指定数据的范围(m不超过255)
^ 文本的开始
$ 文本的结束
[[:<:]] 词的开始
[[:>:]] 词的结束
注意:regexp和like作用类似,regexp和like不同之处在于,like匹配整个串而regexp匹配子串,利用定位符,通过'^'开始每个表达式,用'$'结束每个表达式,可以使regexp的作用和like一样。
9、创建计算字段拼接将值连接到一起构成单个值,在mysql的select语句中,可使用concat()函数来拼接两个列。