MySQL高级语句(二):VIEW视图、正则及常见计算

目录

一、VIEW(视图)

1.1 概念

1.2 创建、查看和删除视图

二、联集

2.1 UNION

2.1 UNION ALL

三、交集值

3.1 两表没有单独重复的行,并且确实有交集的时候用

3.2 取两个SQL语句结果的交集,且没有重复

3.3、无交集值

四、CASE的用法

五、排名的计算

六、中位数的计算

七、累积总计的计算

八、总合百分比的计算

九、累积总合百分比的计算

十、空值(NULL)和无值(“”)的区别

十一、正则表达式(REGEXP)

11.1 正则表达式匹配符

11.2 正则表达式示例

十二、存储过程

12.1 存储过程的优点

12.2 创建、调用和查看存储的过程

12.3 存储过程的参数

12.4 存储过程的控制语句

12.4.1 条件控制语句 if-then-else … end if

12.4.2 循环语句 while … end while


一、VIEW(视图)

1.1 概念

可以被当作是虚拟表或存储查询

视图跟表格的不同是,表格中有实际储存资料,而视图是建立在表格之上的一个架构,它本身并不实际储存资料。

临时表在用户退出或同数据库的连接断开后就自动消失了,而视图不会消失。

视图不含有数据,只存储它的定义,它的用途一般可以简化复杂的查询。比如你要对几个表进行连接查询,而且还要进行统计排序等操作,写SQL语句会很麻烦的,用视图将几个表联结起来,然后对这个视图进行查询操作,就和对一个表查询一样,很方便。

1.2 创建、查看和删除视图

建立两张表,字段数据如下,后面测试用:

CREATE VIEW "视图表名" AS "SELECT 语句"; #创建视图表

SELECT * FROM 'V_NAME_VALUE'; #查看视图表

DROP VIEW V_NAME_VALUE; #删除视图表

实例:

CREATE VIEW V_NAME_VALUE AS SELECT A.name NAME,SUM(B.value) VALUE FROM club A INNER JOIN football B ON A.name = B.name GROUP BY NAME;

二、联集

将两个SQL语句的结果合并起来,两个SQL语句所产生的栏位需要是同样的资料种类

2.1 UNION

生成结果的资料值将没有重复,且按照字段的顺序进行排序

语法:[SELECT 语句 1] UNION [SELECT 语句 2];

示例:

SELECT name FROM club UNION SELECT name FROM football;

2.1 UNION ALL

将生成结果的资料值都列出来,无论有无重复

语法:[SELECT 语句 1] UNION ALL [SELECT 语句 2];

示例:

SELECT name FROM club UNION ALL SELECT name FROM football;

三、交集值

取两个SQL语句结果的交集

SELECT A.name FROM club A INNER JOIN football B ON A.name = B.name;

SELECT A.name FROM club A INNER JOIN football B USING(name);

示例:

3.1 两表没有单独重复的行,并且确实有交集的时候用

SELECT A.name FROM (SELECT name FROM club UNION ALL SELECT name FROM football ) A GROUP BY A.name HAVING COUNT(*) > 1;

这里的A表示派生表

示例:

3.2 取两个SQL语句结果的交集,且没有重复

SELECT A.name FROM (SELECT B.name FROM club B INNER JOIN football C ON B.name = C.name ) A GROUP BY A.name;

SELECT DISTINCT A.name FROM club A INNER JOIN football B USING(name);

SELECT DISTINCT name FROM club WHERE (name) IN (SELECT name FROM football);

SELECT DISTINCT A.name FROM club A LEFT JOIN football B USING(name) WHERE B.name IS NOT NULL;

示例:

 

3.3、无交集值

显示第一个SQL语句的结果,且与第二个SQL语句没有交集的结果,且没有重复

SELECT DISTINCT name FROM club WHERE (name) NOT IN (SELECT name FROM football);

实例:

四、CASE的用法

是SQL用来作为IF-THEN-ELSE之类逻辑的关键字

语法格式:

SELECT CASE (字段名)

WHEN "条件1" THEN "结果1"

WHEN "条件2" THEN "结果2"

……

ELSE "结果N"

END

FROM "表名"

#条件可以是一个数值或是公式。ELSE子句不是必须的。

示例:

select case area #选择area字段

when 'America' then value + 10000000 #如果球员是America的就加一千万

when 'Europe' then value + 10000000 #如果球员是Europe的就减一千万

else value / 2 #其他情况除2

end #结束此case

result,name,area #别名为result,显示name和area字段

from football; #以上操作对于football表进行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值