mysql5.0数据库sql_sql语句(Mysql数据库)

IN关键字(实现的效果和 OR 相同)

SELECT prod_name,prod_price

FROM products

WHERE vend_id in (1002,1003)

ORDER BY prod_name;

相当于:

SELECT prod_name,prod_price

FROM products

WHERE vend_id = 1002 OR vend_id = 1003

ORDER BY prod_name;

为什么使用IN ?

IN操作符的语法更清楚且直观。

使用IN,计算的次序更加容易管理。

IN操作符一般比OR操作符执行更快。

IN最大的优点是可以包含其他SELECT语句,是的能够动态的建立WHERE字句。

-------------------------------------------------------------------------

NOT关键字   用来否认后面的条件可以对 IN  ,BETWEEN ,EXISTS字句取反。

SELECT prod_name,prod_price

FROM products

WHERE vend_id NOT IN (1002,1003)

ORDER BY prod_name;

---------------------------------------------------------------------------

五:通配符

LIke  用来只是Mysql说明后面的检索条件是使用通配符

通配符有两种:

%  匹配任意个数的字符

_  匹配单个字符

select prod_id,prod_name

from products

where prod_name like '%jes%';

使用通配符的技巧:除非非常需要,否则不使用。

尽量不要在搜索模式的开始处使用,把通配符至于搜索的开始处,搜索起来是最慢的。

-------------------------------------------------------------------------------

六:正则表达式

检索出列prod_mame包含文本1000的所有的行:

SELECT prod_name

FROM products

WHERE prod_name REGEXP '1000'

ORDER BY prod_name;

跟LIKE的语句很像

SELECT prod_name

FROM products

WHERE prod_name LIKE '%1000%'

ORDER BY prod_name;

---------------------------------------------

SELECT prod_name  --匹配多个字符之一(进行OR匹配)

FROM products

WHERE prod_name REGEXP '1000|2000|3000'

ORDER BY prod_name;

------------------------------------------------

SELECT prod_name  --[] 匹配[]中单个字符

FROM products

WHERE prod_name REGEXP '[123] Ton'

ORDER BY prod_name;

-------------------------------------------------------

SELECT prod_name  --[|||] 匹配[]中单个字符,效果如上面

FROM products

WHERE prod_name REGEXP '[1|2|3] Ton'    --1 Ton ,2 Ton,3 Ton

ORDER BY prod_name;

---------------------------------------------------------------

SELECT prod_name  --注意

FROM products

WHERE prod_name REGEXP '1|2|3 Ton'    --这里匹配的是1 ,2,3 Ton

ORDER BY prod_name;

-----------------------------------------------------------------

匹配范围:[3-6]匹配3-6   [a-z]匹配a-z

SELECT prod_name

FROM products

WHERE prod_name REGEXP '[1-5] Ton' --匹配 1 Ton  ,2 Ton, 3 Ton, 4 Ton ,5 Ton

ORDER BY prod_name;

---------------------------------------------------------------------------------

匹配特殊字符 . | [] - (注意Mysql使用\\)

SELECT prod_name

FROM prodects

WHERE prod_name REGEXP '\\.'    --匹配含有.的行

ORDER BY prod_name;

------------------------------------------------------------

空白元字符

元字符  说明

\\f  换页

\\n  换行

\\r  回车

\\t  制表

\\v  纵向制表

-------------------------------------------------------------

匹配字符类

字符类

类  说明

[:alnum:] 任意字母和数字(同[a-zA-Z0-9])

[:alpha:] 任意字母(同[a-zA-Z])

[:blank:] 空格和制表(同[\\t])

[:cotrl:] ASCII码控制字符(ASCII0-31和127)

[:digit:] 任意数字(同[0-9])

[:graph:] 与print相同,但不包含空格

[:lower:] 任意小写字母(同[a-z])

[:upper:] 任意大写字母

[:print:] 任意可打印字符

[:punct:] 既不在[:alnum:]也不在[:cotrl:]中的字符

[:space:] 包括空格在内的任意空白字符(同[\\t\\f\\r\\n\\v])

[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])

-------------------------------------------------------------

匹配多个实例

重复元字符

元字符  说明

*  0个或多个匹配

+  一个或多个匹配(相当于{1,})

?  0个或者1个匹配(相当于{0,1})

{n}  指定数目的匹配

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

{n,m}  指定数目的范围(m不超过255)

下面例子匹配:\\( 匹配),[0-9]匹配任意数字,stick?匹配stick和stick(后面有任意字符),\\)匹配 )

SELECT prod_name

FROM products

WHERE prod_name REGEXP '\\([0-9] stick?\\)'

ORDER BY prod_name;

下面例子:匹配连在一起的四个字符

SELECT prod_name

FROM products

WHERE prod_name REGEXP '[[:digit:]{4}]'

ORDER BY prod_name;

--------------------------------------------------------------

定位符

定位元字符

元字符  说明

^  文本的开始

$  文本的结束

[[:<:>

[[:<:>

匹配产品名称以数字或者.开头产品

SELECT prod_name

FROM prodducts

WHERE prod_name REGEXP '^[0-9\\.]'

ORDER BY prod_name;

---------------------------------------------------------------

LIKE 和 REGEXP的区别?

LIKE和REGEXP起类似的作用,但LIKE匹配的是整个串,而REGEXP匹配的是字串

REGEXP加入^ 和 $ 家可以实现与LIKE一样的作用

-----------------------------------------------------------------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值