sql 语句增强

1、 group 语句

1、创建表

create tabel test(
a varchar(20),
b varchar(20),
c varchar(20)
)

2、 插入语句

insert into test values(1,'a','甲')
insert into test values(1,'a','甲');
insert into test values(1,'a','甲');
insert into test values(1,'a','甲');
insert into test values(1,'a','乙');
insert into test values(1,'b','乙');
insert into test values(1,'b','乙');
insert into test values(1,'b','乙');

例子1:

select   count(a),b from test group by b

在这里插入图片描述
例子2:

select count(a),b,c from test group by c

在这里插入图片描述
例子3:

select count(a),b,c from test group by b,c  # b和c的排列组合都满足的情况下

在这里插入图片描述

distinct 语句

1、创建表

create tabel test(
a varchar(20),
b varchar(20),
c varchar(20)
)

2、 插入语句

insert into test values(1,'a','甲')
insert into test values(1,'a','甲');
insert into test values(1,'a','甲');
insert into test values(1,'a','甲');
insert into test values(1,'a','乙');
insert into test values(1,'b','乙');
insert into test values(1,'b','乙');
insert into test values(1,'b','乙');

例子1 :

SELECT distinct b from test;

在这里插入图片描述
例子2:

SELECT DISTINCT * from test;SELECT DISTINCT a,b,c from test;  # 全部的属性的排列组合都只有一种

在这里插入图片描述
例子3:

SELECT DISTINCT b,COUNT(*) from test;   # 加上聚合函数会导致失效

在这里插入图片描述

开窗函数

mysql8.0前不支持开窗函数

1、创建表

create tabel test(
a varchar(20),
b varchar(20),
c varchar(20)
)

2、 插入语句

insert into test values(1,'a','甲')
insert into test values(1,'a','甲');
insert into test values(1,'a','甲');
insert into test values(1,'a','甲');
insert into test values(1,'a','乙');
insert into test values(1,'b','乙');
insert into test values(1,'b','乙');
insert into test values(1,'b','乙');
select a,b,(select count(*) from test where b = "a" where b="a"; 

两个的结果相同:

select a,b,count(*) over() from test where b = "a"

开窗函数

case when

1、创建表

create TABLE test_time (
    istime datetime
		)

2、 插入语句

select CASE istime
	WHEN istime THEN
		DATE_FORMAT(istime,"%Y%m%d")
END
 from test_time

is not null 和 != null的区别

1、创建表

create tabel test(
a varchar(20),
b varchar(20),
c varchar(20)
)

2、 插入语句

insert into test values(1,'a','甲')
insert into test values(1,'a','甲');
insert into test values(1,'a','甲');
insert into test values(1,'a','甲');
insert into test values(1,'a','乙');
insert into test values(1,'b','乙');
insert into test values(1,'b','乙');
insert into test values(1,'b','乙');

例子1:

select * from test
WHERE a != null  # 结果为空的值

例子2:

select * from test
where a is not null   # 存在值

临时表

mysql方式:

create temporary table demo (

)

只在一次连接内有效
我用mysql5.7试了一下,报错

select * into #new_table from test   
select * from #new_table

with as

只有mysql8及以上才可以使用

with demo AS (
	select * from test
)
selct * from demo

相当于创建了一张临时表,然后我们去判断临时表的数据

reverse

优化like
使用环境: 当like中 前面有% 而后面没有%的时候可以使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值