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的主要内容,如果未能解决你的问题,请参考以下文章