mysql高级用法,正则表达

本文详细介绍了MySQL中的正则表达式使用,包括`REGEXP`关键字及各种匹配模式,如开始和结束标志、量词、字符集等。同时,还讲解了SQL查询中的比较运算符、逻辑运算符和位运算符的用法。此外,讨论了连接查询,如内连接、左连接和右连接的基本概念和语法。重点强调了在实际查询中如何运用这些操作提高数据检索效率。
摘要由CSDN通过智能技术生成

正则表达式

mysql正则表达式通常是在检索数据库记录的时候,根据指定的匹配模式记录中符合要求的特殊字符串。mysql的正则表达式regexp这个关键字来指定正则表达式的匹配模式,regexp操作支持的匹配模式表示
一,正则表达式
^ 匹配开始
$ 文本结束
. 单个字符

  • 零个或多个前面的字符
    +前面字符一次或多次
    字符串 :匹配含有指定字符串
    p1 | p2 或
    […]:匹配字符集中的任意一个字符
    [^…]:匹配不在括号内的字符
    {n}匹配 前面字符n次
    {n,m}:匹配前面字符串至少n次,最多m次
查询具体

1,select id,name from info where name regexp ‘ang+’;
查询名字中ang的id和name,
2,select id,name from info where name regexp 'an|zh‘;
查询名字中有an或者zh的id和name
3,select id,name from info where name regexp '1;
查询名字以s-z中字母开头的id和name
4,select id,name from info where name regexp ‘[caz]’;
名字不以caz开头的

运算符

一,运算符 描述

  •   加法
    
  •   减法
    
  •   乘法
    

/ 除法
% 取余
除数不能为0 ,否则返回空值null
在这里插入图片描述
在这里插入图片描述
二,运算符的比较
运算符 描述
= 等于

  		大于

< 小于

= 大于等于
<= 小于等于
!=或<> 不等于
is null 判断一个值是否为 NULL
IS NOT NULL 判断一个值是否不为 NULL
BETWEEN AND 两者之间
IN 在集合中
LIKE 通配符匹配
GREATEST 两个或多个参数时返回最大值
LEAST 两个或多个参数时返回最小值
REGEXP 正则表达式

字符串(字母)比较:(‘a’>‘b’)其实比较的就是底层的ASCII码
ascii码有:a、A、0(97、65、48)
如果比较的是多字符串,如:‘abc’=‘acb’,如何比较(字符个数、字符顺序)
如果比较的是多字符,如:‘abc’ <‘baa’ 如何比较
与linux返回值表达相反,linux 中运行正常返回值是0,运行异常返回值是非0
在这里插入图片描述
如果是整数,按照整数进行比较,如果一个整数一个字符串,会将字符串转换为数字,进行比较,如果都是字符串,就安装字符串比较,两者中至少有一个null,比较结果为null

2,不等于(<>,!=),正确返回1,不正确返回0
在这里插入图片描述
3,大于 小于,大于等于,小于等于,正确返回1,不正确返回0,有null,返回null
在这里插入图片描述
在这里插入图片描述
4,between and 比较判断一个值是都在中间
在这里插入图片描述
5,least 和greatest(取最小值、取最大值)
在这里插入图片描述
7,IN 判断一个值是否在对应的列表中,如果是返回 1,否则返回 0。
NOT IN 判断一个值是否不在对应的列表中,如果不是返回 1,否则返回 0
在这里插入图片描述
8,like,用来匹配字符串可以用正则
在这里插入图片描述
三,逻辑布尔运算
运算符 描述
not 或 ! 逻辑非
and 或 && 逻辑与
or 逻辑或
xor 逻辑异或
1,逻辑非,not或!,有null返回null
在这里插入图片描述
2,逻辑与 and 或&&
在这里插入图片描述
3,逻辑或or
在这里插入图片描述
4,逻辑异或
两个非null值的操作,两者都是0或者非0 ,返回0 ,一个0,另一个0,返回1,任意一个null,返回null。
在这里插入图片描述
四,位运算符
位运算符 描述
& 按位与
| 按位或
~ 按位取反
^ 按位异或
<< 按位左移

  	按位右移

在这里插入图片描述
优先级 运算符
1 !
2 ~
3 ^
4 *、/、%
5 +,-
6 >>,<<
7 &
8 |
9 =,<=>,>=,>,<=,<,<>,!=,IS,LIKE,REGEXP,IN
10 BETWEEN,CASE,WHEN,THEN,ELSE
11 NOT
12 &&,AND
13 ||,OR,XOR
14 :=

五,连接查询

mysql的连接查询,通常是两个或多个表的记录结合,基于这个表之间共同字段
使用较多的连接查询包括:内连接、左连接和右连接
1,内连接
内连接就是两张或多张表中符合条件的组合,通常在from自居中使用关键字inner join连接多张表,并使用on自居设置连接条件,inner可以省略,
(1)语法
SELECT column_name(s)FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
在这里插入图片描述
左连接
左连接也可以被称为左外连接,在 FROM 子句中使用 LEFT JOIN 或者 LEFT OUTER JOIN 关键字来表示。左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参 考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行。

mysql>  select * from info left join infos on info.name=infos.name;
+------+-----------+--------+------------+--------+------+--------+-------+---------+
| id   | name      | score  | address    | hobbid | addr | name   | score | address |
+------+-----------+--------+------------+--------+------+--------+-------+---------+
|    2 | wangwu    |  50.00 | shengzheng |      2 | nj   | wangwu | 80.00 | beijing |
|    3 | lisi      |  50.00 | shanghai   |      4 | nj   | lisi   | 99.99 | nanjing |
|    1 | liuyi     |  60.00 | beijing    |      2 | nj   | NULL   |  NULL | NULL    |
|    4 | tianqi    | 100.00 | hangzhou   |      5 |      | NULL   |  NULL | NULL    |
|    5 | jiaoshou  | 100.00 | laowo      |      3 | NULL | NULL   |  NULL | NULL    |
|    6 | hanmeimei | 100.00 | nanjing    |      3 | NULL | NULL   |  NULL | NULL    |
|    7 | lilei     | 100.00 | nanjing    |      5 | NULL | NULL   |  NULL | NULL    |
|    8 | abn       |  81.00 | bj         |      1 | nj   | NULL   |  NULL | NULL    |
+------+-----------+--------+------------+--------+------+--------+-------+---------+

右连接
右连接也被称为右外连接,在 FROM 子句中使用 RIGHT JOIN 或者 RIGHT OUTER JOIN 关键字来表示。右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配

mysql>  select * from info left join infos on info.name=infos.name;
+------+-----------+--------+------------+--------+------+--------+-------+---------+
| id   | name      | score  | address    | hobbid | addr | name   | score | address |
+------+-----------+--------+------------+--------+------+--------+-------+---------+
|    2 | wangwu    |  50.00 | shengzheng |      2 | nj   | wangwu | 80.00 | beijing |
|    3 | lisi      |  50.00 | shanghai   |      4 | nj   | lisi   | 99.99 | nanjing |
|    1 | liuyi     |  60.00 | beijing    |      2 | nj   | NULL   |  NULL | NULL    |
|    4 | tianqi    | 100.00 | hangzhou   |      5 |      | NULL   |  NULL | NULL    |
|    5 | jiaoshou  | 100.00 | laowo      |      3 | NULL | NULL   |  NULL | NULL    |
|    6 | hanmeimei | 100.00 | nanjing    |      3 | NULL | NULL   |  NULL | NULL    |
|    7 | lilei     | 100.00 | nanjing    |      5 | NULL | NULL   |  NULL | NULL    |
|    8 | abn       |  81.00 | bj         |      1 | nj   | NULL   |  NULL | NULL    |
+------+-----------+--------+------------+--------+------+--------+-------+---------+

总结:主要重点
1,select,order by 的使用和limit的结合使用
2,重点是内连接,左连接和右连接。
inner join内连接
left join左连接
right join右连接
3,子查询
嵌套查询,先差括号内,再查外。


  1. s-x ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值