MySQL数据库高阶语句之正则表达式运算符连接表达式JOIN

Posted 28线不知名云架构师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库高阶语句之正则表达式运算符连接表达式JOIN相关的知识,希望对你有一定的参考价值。

一、正则表达式

 

实例:

select id,name from www where name regexp '^li';		##查询以li开头的学生信息

select id,name from www where name regexp 'i$';        ##查询以i结尾的的学生信息

 

select id,name from www where name regexp 'an';        ##查询名字中包含an的学生信息

字符串是一个整体
select id,name from www where name regexp 'an|ei';	##查询名字包含an或者ei

 

select id,name from www where name regexp 'sag*';	##查询名字中有sa,g可有可无的学生信息
必须要有的部分是'an' 而'g'可有可无


 

select id,name from www where name regexp 'ang+';	##查询名字中含有an,g至少出现一次的学生信息

 

select id,name from www where name regexp '^[s-x]';	##查询名字以s-x开头的学生信息

select id,name from www where name regexp '[^wangwu]';	##查询名字不是wangwu的学生信息

select id,name from www where name regexp '^[^czx]';		##查询学生名字不以czx各字母开头的学生信息


二、运算符

1、算术运算符

以 SELECT 命令来实现最基础的加减乘除运算,mysql 支持使用的算术运算符
如表所示

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

create table qq as select 1+2,2-1,3*2,4/2,5%2;
select * from qq;

 2、比较运算符

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

 实例:

select 2=4,2=2,2=‘2’,‘e’=‘e’,‘r’=null;


比较的是ascii码,a的值是97,b的值是98 

 

select 'bb'>'b';			##仍旧是比较第一位b与b

select 97=‘a’;

 

 实例:

select 'abc'<>'cba',2<>2,3!=2,null<>null;

 

 

 实例:

select 5>4,3<4,'a'<'b',4.4<5,'u'>=null;
select 2 is null,'a' is not null,null is null;

 

 

select 6 between 5 and 7,'c' between 'a' and 'b';		##判断6是否在5和7之间,c是否a和b之间

select 3 between 2 and 3;

 

 实例:

select least(1,2,3),greatest(1,2,3),least('a','b','c'),greatest('a','b','c');	

select least (1,'a','b'),greatest(1,'a','b');	

 

 实例:

 select 3 in(1,2,3),1 not in(1,2,3);

 

实例:

select 'abc' like 'ab%','abc' like 'a_c','abc' not like 'abc';

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

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

 实例:

select not 0,!3,!null;

 

select 3 and 4,null and 5,0 && null,6 && 0;

 实例:

select 3 or 4,null or 5,0 or null,6 or 0,0 or 0;

也可以多个值比较

select 0 or null or 2;

 

实例:

select 0 xor 0,0 xor 5,3 xor 4,3 xor null;

 

 4、位运算符

 

 实例:

select 10 & 15,10 | 15,10^15,5 &~1;

 

5、优先级

以上不管哪种运算符,在使用过程中都有优先级问题。运算符的优先级决定了不同的运算符在计算过程中的先后顺序
级别高的运算符会先进行计算,如果运算符的级别相同, MySQL 会按照顺序从左到右依次进行计算
优先级如下表所示 :

三、连接查询

select 左表 left join 右表信息
select 左表 right join 右表信息

 3.1 内连接

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

实例:

create table biao(name varchar(20),score decimal(4,2),address varchar(40));
insert into biao values('wangwu',80,'beijing'),('zhangsan',90,'shanghanghai'),('tianqi',79,'xian');

select www.id,www.name from www inner join biao on www.name=biao..name; 查询id、name字段,条件是www和biao中name字段值相同

 3.2 左连接

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

实例:

select * from www left join biao on www.name=biao.name; ##join左表的www表作为主表全部显示出来,右表biao只会显示符合搜索条件的记录,右表记录不足的地方均为NULL

 3.3 右连接

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

实例:

select * from www right join biao on www.name=biao.name; ##join右边的biao表作为主表全部显示出来,左表www只会显示符合搜索条件的记录,坐表记录不足的地方均为NULL

以上是关于MySQL数据库高阶语句之正则表达式运算符连接表达式JOIN的主要内容,如果未能解决你的问题,请参考以下文章

瞧这里,没有比这更全的!mysql高阶语句介绍汇总!(查询正则表达式运算符连接查询函数存储过程)

MySQL高阶语句二

Linux——MySQL高阶语句杂而精

Linux——MySQL高阶语句杂而精

MySQL高阶语句

Mysql高阶语句