数据库学习记录即简单关键字(MySQL)D.2

排序    &  过滤   &  用正则表达式索引  &  拼接字段

==============================QWQ=======================================

tips:子句的定义,由一个关键字和所提供的数据组成。例如:select 的 from

排序:

order by检索一个或者多个语句。

可以对检索的内容进行,按升序排序数字,再升序排序字母。

 为了进行降序,可以在之后添加DESC,

 

在排序多个列时,想降序,在列名之后加desc就行

tip:应用limit与order by 可以找到最大或者最小。

===========================qwq===========================================

过滤数据

数据库一般包含庞大的数据,一般检索只寻找自己需要的,这时候我们有where在寻找特定的想找的内容。

 

tips:在同时使用order by 和 where 时,让order by在where 之后。先检索再排序没问题吧。

where 子句操作符

=     等于

<>    不等于

!=   不等于

<       小于

>       大于

<=      小于等于

>=       大于等于

between         在指定的

两个值之间

如下是限制范围

如下是不匹配检查

简而言之,就是寻找除了1以外的数据 != 也可以实现类似操作。

 

如下是范围值检索

注意:between是检索从小的数字到大的数字范围,如果是从5到0,检索就是empty set。

其余操作自己试试吧!

where 的特殊子句 is null 空值检查。

tips:在进行匹配过滤或者不匹配过滤时,null都不会被返回,所以验证返回数据时,一定要验证被过滤掉的null                                                                                                                   

 tips:在寻找字符型的时候记得加   '   '

-----------------------------------------------------------qwq----------------------------------------------------------------

数据过滤

操作符,用来联结或改变where子句中的子句的字。也称做逻辑操作符。

and 操作符

简单来说就是添加条件

用and联结的子句同时存在的情况下检索,以缩小范围,一般是对不同列进行限制,同一列限制注意范围内是否有数据。

每添加一个条件用一次and

or操作符

指匹配任意一个条件但是不同时匹配。写法同and 放在限制条件中间

tips:在没有()时先执行and操作再执行or的操作,所以在设定条件的时候注意()的使用。

养成习惯添加括号来限制顺序的习惯,可以避免默认排序的矛盾

in操作符

用()来指定应用范围,in取的合法值用 逗号分开。

此操作符与or完成相同的功能

但是,优点有

1,在使用长的合法选项清单的时候,in操作符的语法更清楚且更直观

2,在使用in时,计算的次序更容易管理(减少使用操作符)

3,in操作符一般执行比or快

4,in最大的优点是可以包含其他select语句,使得能够更动态的的建立where语句

not操作符

 取反,对其之后的子句进行否定。可以对in between exists等取反

-----------------------------------------------------------qwq----------------------------------------------------------------

用通配符进行过滤

什么时通配符?

用来匹配值的一部分的特殊的字符 。

什么时搜索模式?

由字面值,通配符或者两结合构成的搜索条件

like操作符用来过滤

百分号%通配符

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

代码如下

SELECT prod_id, prod_name
FROM products
WHERE prof_name LIKE 'jet%'

表示检索以jet起头的词。

搜索是可以区分大小写的,没有限制区分大小写,就是默认不区分。

%jet%

表示搜索模式%jet%表示匹配任何位置包含文本jet的值,不论在之前还是之后出现什么字符。

tips:%不仅可以代表一个或者多个字符,%还可以表示0个字符。%代表搜索模式中给定位置的0个1个或者多个字符。

tips:%可以匹配任意东西除了无敌的null

下划线_通配符

下划线用法与%一样,但是_只能匹配单个字符。而且只能是单个字符,多个字符都不行。

显而易见,这种依次检索的功能很方便,但是相对的时间花费很大,因此要牢记以下通配符使用小技巧

1,不要过度使用通配符,其他的操作符能做到相似操作,尽量不用通配符

2,在确定使用通配符之后,除非特别有必要,不要用在搜索模式的开始处,这样搜索起来是最慢的

3,注意通配符的位置,位置不对可能找不到想要的数据

----------------------------------------------------------qwq-----------------------------------------------------------------

难点重点

正则表达式

正则表达式的作用在很多的地方都有着很棒的作用,深入的学习还需要另外的研究深入,此部分仅仅讲解基础常用的操作。

正则表达式作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较(这点与通配符匹配相似)。MySQL用where子句对正则表达式提供了初步的支持,允许指定正则表达式,过滤select检索出的数据。

基本字符匹配

由一个简单的例子入手

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000' 

除关键字LIKE被REGEXP替换以外

这条语句与LIKE相似,REGEXP后跟的东西作为正则表达式。

注意:

1,符号    .     是正则表达式语言一个特殊的字符,他表示匹配任意一个字符

2,正则表达式匹配不区分大小写,但是可以用BINRY关键字限制区分大小写,

用法

SELECT prod_name
FROM products
WHERE prod_name REGEXP BINARY '1000' 

进行or匹配

为搜索两个串之一(或者这个串,或者为另一个串),使用   |    

如下演示

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000|2000' 

匹配几个字符之一

匹配任何单一字符,如果只想匹配特定的名称,可以用一组     [和]    括起来的字符来完成来表示。

如下演示

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[123]Ton' 

这里表达是匹配1或2或3,因此可能有 1 Ton  ,  2 Ton , 3 Ton这样的

[ 123 ] 其实是 [1|2|3] 的缩写,也可以使用后者。要用 [ ]定义or查找什么

如果是 1|2|3 Ton 这样就表达的是寻找 1 或者 2 或者 3 Ton 的串。

字符集合也可以被否定,在集合的开始处放个 ^ 符号就行了

匹配的范围

集合可以用来匹配一个或者多个字符,比如0至9可以这样写

[123456789]

为简化这种集合可以用 - 来定义范围

[1-9]

也可以用这种方式写字母范围

匹配特殊符号字符

之前我们提到了  .  []  |  -这些特殊字符。我们如果想匹配这些字符要在前面加  \\  即可

\\  也可以用来引用元字符 

\\f   换行

\\n  换页

\\r  回车

\\t  制表

\\v  纵向制表

tips:如果想返回  \   就 \\\ 套娃

匹配字符类

存在找出你自己经常使用的数字,所有字母字符或所有数字字母字符等的匹配。为方便工作,可以使用预定义的字符集,称之为字符类。

\\有字符类表,可以自行查询搜索\\

匹配多个实例

在此之前所说的匹配都是单次出现,若想多次出现就需要重复元字符,不多我就写在下面了

*   0个或者多个匹配

+   1个或多个匹配(等同于{1,})

?  0个或1个匹配({0,1})

{n}  指定数目匹配

{n,}不少于指定数目的匹配

{n,m}匹配数目的范围(m'不超过255)

举两个实例用于解释

 

SELECT prod_name
FROM products
WHERE prod_name REGEXP '\\([0-9] sticks?\\)' 

\\(  匹配(  ,[0-9]匹配任一数字,sticks?之后的?使得s可选。也就是或sticks和stick都可行

结合之前说的匹配字符类

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[[:digit:]]{4}' 

[:digit:]表示任意数字,{4}表示出现4次。

此时我们应该了解到,同一个匹配可以用不同的方式完成!!!

定位符

为了匹配特定位置的文本,需要使用到顶

^   文本的开始

$   文本的结尾

[[:<:]]  词的开始

[[:>:]]  词的结尾

实例,

我们想找到以    .     开头的所有产品,直接用 [ 0-9 \\. ]肯定不行,这是在文本内任意位置查找匹配。解决方式就是用 ^

写作 ^[0-9 \\.]

^匹配串的开始,意为只在  .  或任意数字开头作为一个字符时才匹配他们。

tips:  ^ 的双重用法在集合中(用[]定义)来否定集合,否则,用来指串的开始处

tips:

REGEXP与LIKE 的区别在于,LIKE 匹配整个串PEGEXP匹配子串。通过使用 ^开始每个表达式,用$结束每个表达式,可以使其起同样的作用。

到此结束,去实机试试吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值