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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值