MySQL进阶语句二(内/左/右连接查询、数据库函数、存储过程)

本文深入探讨了MySQL中的正则表达式、运算符、连接查询(内连接、左连接、右连接)、数据库函数(数学、聚合、字符串、日期时间函数)以及存储过程的使用,包括创建、调用和删除。通过实例解析了各种函数和运算符的用法,帮助读者提升MySQL操作技能。
摘要由CSDN通过智能技术生成

目录

一、正则表达式

二、运算符

1、算术运算符  

2、比较运算符

3、逻辑运算符(布尔值)   

4、位运算符

三、连接查询

1、内连接

2、左连接

3、右连接

四、数据库函数

1、数学函数

2、聚合函数

3、字符串函数

4、日期时间函数 

五、存储过程

1、概述       

2、简介

3.存储过程的优点

4、创建存储过程

5、删除存储过程


一、正则表达式

MySQL正则表达式通常是在检索数据库记录的时候,根据指定的匹配模式匹配记录中符合要求的特殊字符串。MySQL的正则表达式使用 regexp 这个关键字来指定正则表达式的匹配模式,regexp 操作符所支持的匹配模式。

查询以  ^A 开头的信息
select id,name from 表名 where name regexp '^A  ';
 
查询以  B$ 结尾的信息
select id,name from 表名 where name regexp ' B$';
 
查询名字中包含  的信息
select id,name from 表名 where name regexp '  ';
 
查询名字是  C开头,  D结尾,中间不知道是一个什么字符的信息
select id,name from 表名 where name regexp ' C.D';
 
查询名字中包含  E或者 F 的学生信息
select id,name from 表名 where name regexp ' E | F  ';
 
查询名字中有 G, 可有可无的学生信息
必须要有的部分是' ’而' '可有可无
select id,name from 表名 where name regexp '  *' ;
 
查询名字中含有 H ,  至少出现一次的学生信息
select id, name from 表名 where name regexp ' H +' ;
 
查询名字以 - 开头的学生信息
select id,name from 表名 where name regexp '^[ - ]';
 
查询名字不是  的学生信息
select id,name from 表名 where name regexp ' [^  ]';
 
查询学生名字不以 ... 开头的学生信息
select id,name from 表名 where name regexp '^[^  ]';

匹配     描述
^     匹配文本的开始字符
$     匹配文本的结束字符
.     匹配任何单个字符
*     匹配零个或多个在它前面的字符
%     匹配所有
+     匹配前面的字符1次或多次
?
字符串     匹配包含指定的字符串
p1 | p2     匹配p1或p2
[ ... ]     匹配字符集合中的任意一个字符
[ ^... ]     匹配不在括号中的任何字符
[ n ]     匹配前面的字符串n次
[ n,m ]     匹配前面的字符串至少n次,至多m次

二、运算符

MySQL的运算符用于对记录中的字段值进行运算。MySQL的运算符共有四种,分别是:算术运算符、比较运算符、逻辑运算符和位运算符。

1、算术运算符  

以 select 命令来实现最基础的加减乘除运算,MySQL支持使用的算术运算符。

运算符 描述
+ 加法
- 减法
* 乘法
/ 除法
% 取余

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

select 1+2,2-1,3*4,4/2,582;
create table 表名 as select 1+2,2-1, 3*2, 4/2, 582;
select * from 表名;

2、比较运算符

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

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

等号 (=)是用来判断数字、字符串和表达式是否相等的,如果相等则返回1,如果不相等则返回0。如果比较的两者有一个值是NULL, 则比较的结果就是NULL。 其中字符的比较是根据ASCII 码来判断的,如果ASCII码相等,则表示两个字符相同:如果ASCII 码不相等,则表示两个字符不相同。

字符串(字母)比较:('a'>'b')其实比较的就是底层的ASCII码
需要关注的是ascii码有: a、A、0 (97、 65、48 )。
与linux返回值表达相反,linux中运行正常返回值是0,运行异常返回值是非0。

select 2=3;   不成立返回0

select 2<3;   成立返回1

① 如果两者都是整数,则按照整数值进行比较。
② 如果一个整数一个字符串,则会自动将字符串转换为数字,再进行比较。 (在程序中,一般是不会吧这两者进行相比较的)
③ 如果两者都是字符串,则按照字符串进行比较。
④ 如果两者中至少有一一个值是NULL, 则比较的结果是NULL。

select 'a'<'b';       字符比较需要加 引号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值