SQL查缺补漏(视图、函数、find_in_set、group_concat)

1、视图

1.1 概念

视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。

1.2 特点

  • 视图中的数据并不属于视图本身,而是属于基本的表,对视图可以像表一样进行增删改查操作。
  • 视图不能被修改,表修改或者删除后应该删除视图再重建。
  • 视图的数量没有限制,但是命名不能和视图以及表重复,具有唯一性。
  • 视图可以嵌套,一个视图中可以嵌套另一个视图。
  • 视图不能索引,不能有相关联的触发器和默认值。

1.3 语法

  1. 创建视图:

    create view 视图名称[(字段1)(字段2)(字段3...] as select 查询语句 [with check option]
    

    参数:[with check option]可选项,防止用户对数据插入、删除、更新是操作了视图范围外的基本表的数据。

  2. 删除视图

    drop view 视图名称 [cascade]
    

2、函数

SQL拥有很多可用于计数和计算的内建函数。

语法:select function(列) from 表;

类型:

  1. 合计函数(Aggregate):面向一系列的值,并返回一个单一的值
    • count(column):返回某列的行数,不包括null值
    • count(*):返回被选行数
  2. Scalar函数:面向某个单一的值,并返回基于输入值的单一的值
    • ucase(c):将某个域转换为大写
    • lcase(c):将某个域转换为小写
    • len(c):返回某个文本域的长度

3、find_in_set函数

select * from 表名 where find_in_set(str,strlist);
  • str:要查询的字符串

  • strlist:参数以,分隔

返回strstrlist中的索引,从1开始,strlist必须以,分隔开。

SELECT FIND_IN_SET('b', 'a,b,c,d'); 返回2

select FIND_IN_SET('6', '1'); 返回0

一次返回多条记录:

select * from 表名 where find_in_set(id, '1,2,3,4');

id:字段名

like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文,分隔,Find_IN_SET查询的结果要小于like查询的结果。

4、group_concat

完整语法:

group_concat([distinct] 要连接的字段 [order by asc/desc 排序字段] [separator '分隔符'])
select * from test;

在这里插入图片描述
需求:一行显示id下所有的score

select id, group_concat(score) from test group by id;

在这里插入图片描述
去重:

select id, group_concat(distinct score) from test group by id;

在这里插入图片描述
排序

select id, group_concat(score order by score desc) from tset group by id;

在这里插入图片描述
设置分隔符

select id, group_concat(score separator ';') from test group by id;

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值