一、正则表达式

1.作用

在查询数据库记录时,根据指定的匹配条件匹配记录中符合要求的特殊字符串

2.类别

匹配模式 含义 实例
^ 匹配文本的开始字符 ‘^bcd’ 匹配以 bcd 开头的字符串
$ 匹配文本的结束字符 ‘q$’ 匹配以 q 结尾的字符串
. 匹配任何单个字符 ‘s.tt’ 匹配任何s 和t 之间有一个字符的字符串
* 匹配零个或多个在它前面的字符 ‘foo*t’ 匹配 t 前面有任意个 o
+ 匹配前面的字符 1 次或多次 ‘hoo+’ 匹配以 ho 开头,后面至少一个o 的字符串
p1|p2 匹配 p1 或 p2 ‘bg|df’ 匹配bg或fg
[…] 匹配字符集合中的任意一个字符 ‘[abc]’ 匹配 a 或者 b 或者 c
[^…] 匹配不在括号中的任何字符 ‘[^ab]'匹配不包含 a 或者 b 的字符串
{n} 匹配前面的字符串 n 次 ‘g{3}’ 匹配含有 3 个 g 的字符串
{n,m} 匹配前面的字符串至少 n 次,至多m 次 ‘f{2,3}’ 匹配 f 最少 2 次,最多 3 次
‘字符串’ 匹配包含指定的字符串 ‘co’ 匹配含有 co 的字符串

3.使用语句

使用正则表达式时格式

select column1,column2,... from table_namae where column1,... REGEXP '正则表达式';

列句

select id,name,from info where name REGEXP 'z';  //表中查询包含k字符串的name字段并打印对应的 id、name select id,name, from info where name REGEXP 'oooo+';//表中查询包含四个或者更多个o的 name 字段并打印对应的 id、name

注意:“^”不仅可以放到左侧,也可以放到方括号内,
放到左侧表示以这些字符集内的字符开头,而放到方括号内则表示不在指定的字符集合内的字符。

二、运算符

MySQL 的运算符共有四种,分别是:算术运算符、比较运算符、逻辑运算符和位运算符

1、算术运算符

+(加法)、-(减法)、*(乘法)、/(除法)、%(取余)

例如:select 1+2 as a, 2-1 as b, 2*3 as c, 4/2 as d, 7%2 as e;

在除法运算和求余数运算中,除数不能为 0,若除数是 0,返回的结果则为 NULL。需要注意的是,
如果有多个运算符,按照先乘除后加减的优先级进行运算,相同优先级的运算 符没有先后顺序

2、比较运算符

比较运算符是查询数据记录时经常使用的一类运算符。通过使用比较运算符可以判断出
表中有哪些记录是符合条件的,如果比较的结果为真则返回 1,如果为假则返回 0,
比较的结果如果不确定则返回 NULL。其中字符串在进行比较的时候默认是不区分大小写的

运算符 含义 运算符 含义
= 等于 is not null 判断一个值是否不为 NULL
> 大于 between and 两者之间
< 小于 in 在集合中
>= 大于等于 like 通配符匹配
<= 小于等于 greatest 两个或多个参数时返回最大值
!=或<> 不等于 least 两个或多个参数时返回最小值

注意:如果两者都是整数,则按照整数值进行比较。
如果一个整数一个字符串,则会自动将字符串转换为数字(其中字符的比较是根据 ASCII 码来转换),再进行比较。
如果两者都是字符串,则按照字符串进行比较。
如果两者中至少有一个值是 NULL,则比较的结果是 NULL。

‘字符串’与’字符串’比较是或的关系,第一个字符相比 结果出来了后面字符就不进行了
between包含头和尾部

least 最小值 放的中有字符,不能执行,如果其中一个值为 NULL,则返回结果就为 NULL
greatest 最大值 其中值中有字符,会屏蔽其中的字符,如果其中一个值为 NULL,则返回结果就为 NULL

3.逻辑运算符
逻辑运算符又被称为布尔运算符,通常用来判断表达式的真假,如果为真返回 1,否则返回 0,真和假也可以用 TRUE 和 FALSE 表示。MySQL 中支持使用的逻辑运算符有四种

3.1 类别

运算符 含义
NOT或! 逻辑非
AND或&& 逻辑与
OR或|| 逻辑或
XOR 逻辑异或

3.2运算规则

且 0&&0=0 1&&0=0 0&&1=0 1&&1=1 0&&null=0 1&&null=null
或 0||0=0 1||0=1 0||1=1 1||1=1 0 or null=null 1or null=1
异或 0^0=0 1^0=1 0^1=1 1^1=0 0 xor null=null , 1 xor null=null

注意:或运算时不用 || ,用or

4.位运算符
位运算符实际上是对二进制数进行计算的运算符。MySQL 内位运算会先将操作数变成二进制格式,然后进行位运算,最后在将计算结果从二进制变回到十进制格式,方便用户查看。MySQL 支持 6 种位运算符

4.1 类别

运算符 含义
& 按位与
| 按位或
~ 按位取反
^ 按位异或
<< 按位左移
>> 按位右移

4.2例句

select 5 &~1; //按位取反(~),是对应的二进制数逐位反转,即 1 取反后变为 0, 0 取反后变为 1。数字 1 的二进制是 0001,取反后变为 1110, 数字 5 的二进制是 0101,将 1110 和 0101进行求与操作,其结果是二进制的 0100,转换为十进制就是 4

“15>>2”将数字 15 转换为二进制是 1111,向右移动两位,右侧的两位 11 被丢弃,变为 11, 左侧用 00 补齐,最终变为二进制的 0011,转换为十进制就是 3。

注意:不管哪种运算符,在使用过程中都有优先级问题。运算符的优先级决定了不同的运 算符在计算过程中的先后顺序。级别高的运算符会先进行计算,如果运算符的级别相同, MySQL 会按照顺序从左到右依次进行计算。
“!”的优先级最高,而“:=”的优先级最低。

运算符优先级

优先级 运算符 优先级 运算符
1 8 |
2 ~ 9 =,<=>,>=,<=,<,<>,!=,IS,LIKE,REGEXP,IN
3 ^ 10 BETWEEN,CASE,WHEN,THEN,ELSE
4 *,/(DIV),%(MOD) 11 NOT
5 +,- 12 &&,AND
6 >>,<< 13 ||,OR,XOR
7 & 14 :=

三、连接查询

1,概念

MySQL 的连接查询,通常都是将来自两个或多个表的行结合起来,基于这些表之间的共同字段,进行数据的拼接。

2.分类

内连接、左连接、右连接

3.语法

3.1.内连接

通常在FROM 子句中使用关键字 INNER JOIN 来连接多张表,
并使用 ON 子句设置连接条件。

SELECT column_name(s)FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

注意:建议最好不要超过三个表

3.2 、左连接

左连接也可以被称为左外连接,在 FROM 子句中使用 LEFT JOIN,左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行

SELECT column_name(s)FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;

3.3右连接

右连接也被称为右外连接,在 FROM 子句中使用 RIGHT JOIN 。右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配。也就是说匹配右表中的每一行及左表中符合条件的记录

SELECT column_name(s)FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;

四 数据库函数

1.分类

数学函数、聚合函数、字符串函数和日期时间函数。

2.数学函数

数学函数 含义
abs(x) 返回 x 的绝对值
rand() 返回 0 到 1 的随机数
mod(x,y) 返回 x 除以 y 以后的余数
power(x,y) 返回 x 的 y 次方
round(x) 返回离 x 最近的整数
round(x,y) 保留x 的y 位小数四舍五入后的值
sqrt(x) 返回 x 的平方根
truncate(x,y) 返回数字 x 截断为 y 位小数的值
ceil(x) 返回大于或等于 x 的最小整数
floor(x) 返回小于或等于 x 的最大整数
greatest(x1,x2…) 返回集合中最大的值
least(x1,x2…) 返回集合中最小的值

注意;rand()取值能取到0,取不到1,

3.聚合函数

聚合函数 含义
avg() 返回指定列的平均值
count() 返回指定列中非 NULL 值的个数
min() 返回指定列的最小值
max() 返回指定列的最大值
sum() 返回指定列的所有值之和

注意:count()可以放数值,但只能一个数

4.字符串函数

字符串函数 含义
length(x) 返回字符串 x 的长度
trim() 返回去除指定格式的值
concat(x,y) 将提供的参数 x 和 y 拼接成一个字符串
upper(x) 将字符串 x 的所有字母变成大写字母
lower(x) 将字符串 x 的所有字母变成小写字母
left(x,y) 返回字符串 x 的前 y 个字符
right(x,y) 返回字符串 x 的后 y 个字符
repeat(x,y) 将字符串 x 重复 y 次
space(x) 返回 x 个空格
repiace(x,y,z) 将字符串 z 替代字符串 x 中的字符串 y
strcmp(x,y) 比较 x 和 y,返回的值可以为-1,0,1
substring(x,y,z) 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串
reverse(x) 将字符串 x 反转

注意;length(‘ bcd’)中空格算一个长度
length(null)长度是null
trim()去头尾的空格,空格在中间的不去 ,
left(x,y),right(x,y)中x是字符串,y是个数
replace(x,y,z)=(‘abcefg’,‘bc’,‘23’) 结果是a23efg
substring(‘abcdefg’,3,3)结果是cde

5.日期时间函数

时间日期函数 含义
curdate() 返回当前时间的年月日
curtime() 返回当前时间的时分秒
now() 返回当前时间的日期和时间
month(x) 返回日期 x 中的月份值
week(x) 返回日期 x 是年度第几个星期
hour(x) 返回 x 中的小时值
minute(x) 返回 x 中的分钟值
second(x) 返回 x 中的秒钟值
dayofweek(x) 返回 x 是星期几,1 星期日,2 星期一
dayofmonth(x) 计算日期 x 是本月的第几天
dayofyear(x) 计算日期 x 是本年的第几天

五、存储过程

1.简介

MySQL 数据库存储过程是一组为了完成特定功能的 SQL 语句的集合。存储过程这个功能是从 5.0 版本才开始支持的,它可以加快数据库的处理速度,
增强数据库在实际应用中的灵活性。存储过程在使用过程中是将常用或者复杂的工作预先使用 SQL 语句写好并用一个指定的名称存储起来,
这个过程经编译和优化后存储在数据库服务器中。当需要使用该存 储过程时,只需要调用它即可。操作数据库的传统 SQL 语句在执行时需要先编译,
然后再去执行,跟存储过程一对比,明显存储过程在执行上速度更快,效率更高。

2.优点

存储过程执行一次后,生成的二进制代码就驻留在缓冲区,之后如果再次调用的话,将 直接调用二进制代码,使得存储过程的执行效率和性能得到大幅提升。
存储过程是 SQL 语句加上控制语句的集合,有很强的灵活性,可以完成复杂的运算。
存储过程存储在服务器端,客户端调用时,直接在服务器端执行,客户端只是传输的调 用语句,从而可以降低网络负载。
存储过程被创建后,可以多次重复调用,它将多条 SQL 封装到了一起,可随时针对 SQL
语句进行修改,不影响调用它的客户端。
存储过程可以完成所有的数据库操作,也可以通过编程的方式控制数据库的信息访问权 限。

3.创建存储过程

CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>[过程参数[,…] ] 格式
[ IN | OUT | INOUT ] <参数名><类型>

注意:存储过程的名称应该尽量避免选取与 MySQL 内置的函数或者字段相同的名称,否则会发生错误

4.修改存储过程

ALTER PROCEDURE <过程名> [ <特征> … ]

5.删除存储过程

DROP { PROCEDURE | FUNCTION } [ IF EXISTS ] <过程名>

注意:存储过程名称后面没有参数列表,也没有括号。在删除之前,必须确认 该存储过程没有任何依赖关系,否则会导致与之关联的存储过程无法运行

MySQL的高级语句应用(2)相关推荐

  1. MySQL数据库高级SQL语句(三)

    MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...

  2. MySQL存储过程分支语句_mysql 高级语句--存储过程(PROCEDURE)

    mysql 高级语句 一.存储过程 1.什么是存储过程: 就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能. ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的, ...

  3. 数据库应用:MySQL数据库SQL高级语句与操作

    目录 一.理论 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 5.MySQL中6种常见的约束 二.实验 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL ...

  4. MySQL——高阶语句(上)

    MySQL高阶语句(上) 一.MySQL高级语句 1.ORDER BY----按关键字排序 单字段排序 多字段排序 2.OR/AND----或/且 3.DISTINCT----查询不重复记录 4.GR ...

  5. Mysql数据库(三)——mysql数据库高级操作

    Mysql数据库(三)--mysql数据库高级操作 一.指定主键的另一种方式 二.克隆/复制一个表 1.方法一 2.方法二 三.清空表,删除表内数据 1.方法一 2.方法二 3.方法三 4.三个删除方 ...

  6. mysql navicat 函数_Navicat for MySQL 函数高级属性讲解

    原标题:Navicat for MySQL 函数高级属性讲解 过程和函数是一组可以保存在服务器上的 SQL 语句.MySQL()函数高级属性主要涉及安全性.定义者.数据访问.决定性等方面的内容. Na ...

  7. mysql dba高级教程_MySQL DBA高级视频教程 博瑞森一线DBA大神亲授

    下载服务器:五号服务器---VIP资料下载八区\数据库专区 游客,如果您要查看本帖隐藏内容请回复 MySQL DBA高级视频教程 这个是我参与培训的,分享给大家学习,真正一线DBA大神亲授 全程高清, ...

  8. MySQL 03 高级查询(一)

    MySQL 03 高级查询(一) 文章目录 MySQL 03 高级查询(一) 一.学习目标 二.调整数据库的表结构 三.修改表 四.设置主外键约束 五.添加约束 (练习) 六.数据操纵语言 6.1.D ...

  9. mysql视图高级设置_MySQL 视图高级属性知多少?

    Navicat 中的视图用于限制访问一组关联(表),就像一个单一的表,视图也可以用来限制访问行(一个特定表的子集).MySQL视图的高级属性主要涉及以下几点: Navicat 视图高级属性 算法 ● ...

最新文章

  1. 华为发布面向2025十大趋势
  2. React文档(六)state和生命周期
  3. mysql集群2台linux_安装配置基于两台服务器的MySQL集群(2)
  4. Meta为元宇宙建全球最快AI超算,1.6万个A100 GPU,英伟达都赚麻了
  5. linux中的SGI(核间中断)IPI_RESCHEDULE详解
  6. boost::all_degree_centralities用法的测试程序
  7. 【Python基础避坑】函数内存底层分析,全局变量/局部变量,参数传递,浅拷贝/深拷贝
  8. 黑马2016java_2016年成功的Java开发人员简介
  9. 关于游戏行业目前的形势
  10. STM8 ADC转换模式-------单次扫描模式
  11. 沙盘模拟软件_3D电子心理沙盘系统
  12. 收银系统连接不上数据服务器,收银系统服务器数据库
  13. php 队列管理器,Horizon 队列管理工具
  14. 保研面试-中英文问题及回答总结
  15. 大数据安全体系介绍之技术体系篇
  16. 即插即用demo系列——文本相似度比较
  17. ffmpeg 之 RTSP 一
  18. 内网搭建Ubuntu(银河麒麟)的apt本地源服务器
  19. .so是什么文件_Linux的so文件到底是干嘛的?浅析Linux的动态链接库
  20. 对c++输入输出的一些封装(bushi)

热门文章

  1. 5000字详细解说什么是面向对象编程的三⼤特性—封装、继承、多态
  2. 新锐美妆品牌数字化革命报告摘要 (内附报告下载链接)
  3. tensorflow2中自定义损失、传递loss函数字典/compile(optimizer=Adam(lr = lr), loss= lambda y_true, y_pred: y_pred)理解
  4. 【8-12】树莓派部署t265+px4飞控实现无人机视觉定位
  5. 计算机中mu的作用是什么,计算机上MM-MUGT等分别代表意思.doc
  6. 【调剂】华东理工大学接收调剂研究生,课题组主要从事无人系统导航控制、精密传感、机器视觉、智能算法等领域的研究...
  7. Android点击button弹出ProgressDialog,响应结束后ProgressDialog消失
  8. 7.克隆主机与远程访问
  9. 使用Flutter建立一个登陆界面
  10. SFSCB-A25 后备保护器 一体化SPD智能浪涌保护器 生产厂家 四川项目应用