感恩笔记之SQL查询功能最简使用模板

第一部分:SQL单表功能

1 语句主要关键字

SELECT     --查询数据列
INTO --新建数据表
FROM --查询数据表
WHERE --筛选数据表结果 ORDER BY --筛选结果排序
GROUP BY --筛选结果分组
HAVING --筛选分组结果 UNION --合并查询结果

2 新增列功能汇总

SELECT   distrint   列名,                            --1.单列去重

         列  AS   新列名,                             --2.列命名

         函数(列) + 列名 AS  新列名,                   --3.函数+计算式

		 CASE WHEN 函数(列) + 列 > 80   THEN  '新增处理'      --4.函数+计算式+条件筛选
WHEN 条件2 THEN '新增处理'
WHEN 条件3 THEN '新增处理'
ELSE '新增处理' --如果以上条件都不满足
END as 新列名
FROM 表名

3 筛选条件汇总

SELECT * FROM 数据表

  WHERE  列名  >,<,=,!=,<>  数值         --1.比较查询=数值和字符
列名 BETWEEN 500 AND 100 --2.区间查询=数值 列名 IN ('字符','数值') --3.批量提取字符
列名 LIKE --4.特定字符查询
LIKE‘%字符%’ --模糊查询
LIKE‘字符%’ --精确查询
LIKE‘_字符%’ --定位查询
LIKE‘%[50%]%’ --数字符号查询
LIKE‘%[^50%]%’ --逆向查询 列名 is NULL 或 is NOT NULL --处理空值 --1 in 和like 功能性探索
注意:()和’’对应数字和字符的使用,两个关键字的查询内容都可以是字符或者数字
注意:默认都是字符型数据,如果要进行计算,改成数值型数据 --2 in :①可以多个查询,②可以查询字符和数字,③能一起查,④内容完全对应
select * from 体检信息 where 姓名 IN ('宋秋雨','王复学')
select * from 电话号码 where 姓名 IN ('13591067891','16604106992') --3 like:①可以多个查询,②可以查询数字,③但是要分列查询,④内容可以模糊查询
select * from 体检信息 where 姓名 like '%宋%' or 家属年龄 like '%48%' --4 like查询套路:筛选字符中的有用信息
--第一步:可乐和雪碧同时存在的数据
where 列名 like’%可乐%’ and 列名 like’%雪碧%’
--第二步:显示可乐的数据和显示雪碧的数据
where 列名 like’%可乐%’ or 列名 like’%雪碧%’
--第三步:在显示可乐和雪碧的数据同时去掉有牙膏字样的数据
where 列名 like’%可乐%’ or 列名 like’%雪碧%’ and 列名 not like’%牙膏%’ : --5 数据表中空白格解析:
--如果空白格中无数据:但是又不是null 那就代表空白格中的数据为0,
--如果是数值列:可以直接使用where 年龄 !='0' 姓名列不为0的列
--如果是字符的列:就可以用where 姓名 like '%_%' 姓名列不为空的列

4 其他关键字汇总

--1 Order by
SELECT *
FROM 数据表
WHERE 查询条件
ORDER BY 列 DESC --1.单列排序 SELECT *
FROM 数据表
WHERE 查询条件
ORDER BY 列,列 --2.多列排序 --2 Group by
SELECT 列1,COUNT (*)
FROM 数据表
GROUP BY 列1 --1.单列分组求数 SELECT 列1,列2,列3,COUNT (*)
FROM 数据表
GROUP BY 列1 ,列2,列3 --2.多列分组求数 SELECT 列名 , COUNT(求数列)次数 , SUM (求和列)总额
FROM 数据表
GROUP BY 列名 --3.分组求数+求和 --说明:在得出分类名称,分类次数后,对分类后每次的数额进行分类求和,
--可以对分组前,同名的机构进行求和验证数额的正确性

5 函数的应用位置

--1、函数在select中使用:建立as列名,后接where查询,不能使用as列名,需用完整函数表达式
--2、函数在where中使用:单独在where中使用必须完整布尔表达式
--3、在order by中使用:可以使用as列名进行排序
--4、在case when中使用:出现在条件表达式中,而case语句出现在select中
--5 函数组合说明:函数结果数字+比较范围
--函数结果数字+计算数字
--函数使用位置说明:
--函数在select中格式 :select 函数名 (列名) from 表名
--函数在where中格式 : select * from 表名 where 函数名(列名)

第二部分:SQL多表功能

1 两表_父子查询和连接查询架构

1 嵌套查询
select * FROM 父表
WHERE 相同列 IN (SELECT 相同列 FROM 子表) --1.子表在父表中存在的数据 SELECT * FROM 父表
WHERE 相同列 NOT IN (SELECT 相同列 FROM 子表) --2.子表不在附表中存在的数据 --说明:附带属性:用相同字段连接,通过子句属性,显示父句中匹配的数据 2 链接查询
SELECT * FROM 表1 AS a FULL JOIN 表2 AS b --1.两表全部连接,包括空值
ON a.相同列=b.相同列 SELECT * FROM 表1 AS a INNER JOIN 表2 AS b --2.两表有效值链接
ON a.相同列=b.相同列 SELECT * FROM 表1 AS a LEFT JOIN 表2 AS b --3.以左表为准,包括空值
ON a.相同列=b.相同列 SELECT * FROM 表1 AS a RIGHT JOIN 表2 AS b --4.以右表为准,包括空值
ON a.相同列=b.相同列 SELECT * FROM 表1 AS a JOIN 表1 AS b --5.自连接,同一列分类排序
ON a.相同列=b.相同列 --说明:连表后去掉重复列名:逐个显示列

2 三表父子查询和连接查询架构

1 三表子查询_重复
select *
from 表1
where 相同列 in ( select 相同列
from 表2
where 身份证 in ( select 相同列
from 表3 )) 2 三表子查询_不重复
select *
from 表1
where 相同列 in ( select 相同列
from 表2
where 身份证 not in ( select 相同列
from 表3 )) --说明:三表嵌套,赛选不重复数据,最下一层是not in 上一层是in,这就是一个逻辑反转负负得正的结果 3 三表连接_重复
select *
from 表1 as a join 表2 as b on a.表1相同列 = b.表2相同列
join 表3 as c on b.表2相同列 = c.表3相同列 4 三表连接_不重复
select *
from 表1 as a join 表2 as b on a.表1相同列 != b.表2相同列
join 表3 as c on b.表2相同列 != c.表3相同列

3 多表简便连接

1 二表简便连接
select *
from 表1 , 表2
where 表1.相同列 = 表2.相同列 2 三表简便连接
select *
from 表1 a, 表2 b, 表3 c
where a.身份证号=b.身份证号
and b.参合家庭编号=c.参合家庭编号 --说明:三表连接相同,结果正常显示没毛病,如果是显示三表连接不相同的,那么在连接的 = 号就有一个逻辑关系,类似于负负得正的关系

4 子查询组合连接查询

SELECT *  from                                            --1总查询模型

	(select *                                             --2子查询1
from 父表1
where 表1相同列 in (select 表1相同列
from 子表1 ) ) AS a JOIN --3表连接名 (select * --4子查询2
from 父表2
where 表2相同列 not in (select 表2相同列
from 子表2) ) as b
ON a.表1相同列 = b.表2相同列 --5表连接条件

5 多表查询结果处理

--说明:union的功能不仅可以合并相同字段结果,也可以达到去掉重复的结果
--说明:字段必须相同 1 合并结果:列必须相同
SELECT 列1,列2,列3 FROM 数据表 WHERE
UNION
SELECT 列1,列2,列3 FROM 数据表 WHERE 2 结果新建表
SELECT *
INTO 新建表名
FROM (SELECT * FROM 表1
UNION
SELECT * FROM 表2) AS 新表名 3 批量合并结果
careate view 视图名 as
select * from 表1
union all
select * from 表2
......其他所有表
--说明:使用union all 上面不能接别的语句,会报错

6 子查询各位置用法

说明:where位置的子查询是最常用的.

--1单句from位置,具体用途待研究
select * from (select 统筹支付,count(*) 次数 --门诊结算金额出现频率前20名
from T_医院门诊结算单_西丰
where 统筹支付>0
group by 统筹支付
order by 次数 desc)
where rownum<21; --2union位子 双句子查询,两句结果合并
select count(*)
from (select 身份证号
from T_医院门诊结算单_西丰
group by 身份证号
having sum(统筹支付)>0 union --合并去重 select 身份证号
from T_医院住院结算单_西丰
group by 身份证号
having sum(统筹支付)>0); --3 from位置 连接查询带子查询
select * from (查询语句) join (查询语句) on 条件连接 --4 select位置的子查询
select *,(select 想要在父表显示的列名1
from 子表1
where 父表.相同列 = 子表1.相同列 ) as 表1 , (select 想要在父表显示的列名2
from 子表2
where 父表.相同列 = 子表2.相同列 ) as 表2
from 父表
--格式说明:新增列子查询中:select 只能显示一列信息,多了报错,如果想显示多列可以再写一个,where 中设定的条件就是两个表连接的内容
--重点说明:如果是新增的列参与运算,不能用as后的名字,需要用新增的运算格式

第三部分:SQL变量功能

1 变量使用基本格式

--1定义变量
declare @查询名称 varchar (50) --2赋值变量
set @查询名称 = '名称' --3使用变量
select 户主姓名1 from dbo.A三表住院信息 where 户主姓名1 = @查询名称
select 户主姓名2 from dbo.B三表门诊信息 where 户主姓名2 = @查询名称
select 户主姓名3 from dbo.B三表门诊信息 where 户主姓名3 like @查询名称

2 视图使用基本格式

create view 视图名 as        --1定义视图名称

select * from 表             --2查询模块

执行:select * from 视图名      --3执行视图


3 存储过程使用基本格式

1_存储过程基础
----------------------------------------------------------------
create proc 存储过程名 as --1定义存储过程 select * from 表 --2查询模块 执行:exec 存储过程名 --3执行存储过程 2_带输入参数_存储过程
----------------------------------------------------------------
create proc 存储过程名 --1定义存储过程名
@变量1 int --2定义输入变量
@变量2 char(10)
as select 列1,列2,列3 --3查询模块
from 表
where 列1=@变量1 --4输入变量对接
and 列2=@变量2 执行1:exec 存储过程名 '列1内容' , --5执行输入参数存储过程
'列2内容' 执行2:exec 存储过程名 @变量1='列1内容'
@变量2='列2内容' 3_带有输入和输出函数的存储过程
----------------------------------------------------------------
一_定义模块 create proc 存储名称 --1定义存储过程名
@输入变量名 char(10) , --2定义输入变量
@输出变量名1 char(10) output , --3定义输出变量
@输出变量名2 char(10) output
as 二_查询语句模块
select @输出变量名1 = 列名1, --4输出变量对接
@输出变量名2 = 列名2
from 查询表
where 列名 = @输入变量名 --5输入变量对接 三_执行模块 declare @输出变量名1 char(10) , --1声明输出变量
@输出变量名2 char(10) exec 存储名 '输入参数对接列内容' , --2执行带有输出和输出参数的存储过程
@输出变量名1 output ,
@输出变量名2 output print @输出变量名1 --3执行输出变量
print @输出变量名2

4 游标基本格式待整理

    通常情况下,关系数据库中的操作总是对整个记录集产生影响,例如使用SELECT语句检索数据表时,将得到所有满足该语句where子句中条件的记录,而在实际应用过程中,经常需要每次处理一条或者一部分记录。在这种情况下,需要使用游标在服务器内部处理结果集合,他可以有助于识别一个数据集合内部指定的记录,从而可以有选择的按记录执行操作。


( 本章完 )

感恩笔记之SQL查询功能最简使用模板的更多相关文章

  1. 感恩笔记之SQL语句操纵数据集基本功能模板

    SQL查询_基本功能 一 SQL语句整体架构 SELECT --1 查询数据表 INTO --2 新建数据表 FROM --3 查询数据表 WHERE --4 筛选数据表 ORDER BY --5 排 ...

  2. mysql体系结构和sql查询执行过程简析

    一: mysql体系结构 1)Connectors 不同语言与 SQL 的交互 2)Management Serveices & Utilities 系统管理和控制工具 备份和恢复的安全性,复 ...

  3. SQL学习笔记之SQL查询练习题1

    (网络搜集) 0x00 表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id ...

  4. ECSHOP后台SQL查询提示错误 this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT

    一).首先说一下错误现象:市面上流行的绝大部分ECSHOP模板,安装的时候都需要执行一段或几段SQL语句来修改数据结构或者初始化一些数据.大多数ECSHOP管理员为了省事,都会通过 “ECSHOP后台 ...

  5. MySQL 笔记整理(1) --基础架构,一条SQL查询语句如何执行

    最近在学习林晓斌(丁奇)老师的<MySQL实战45讲>,受益匪浅,做一些笔记整理一下,帮助学习.如果有小伙伴感兴趣的话推荐原版课程,很不错. 1) --基础架构,一条SQL查询语句如何执行 ...

  6. SQL查询(笔记2——实体查询)

    SQL查询(笔记2——实体查询) 二.实体查询 如果查询返回了某个数据表的全部数据列,且该数据表有对应的持久化类映射,我们就把查询结果转换成实体查询.将查询结果转换成实体,可以使用SQLQuery提供 ...

  7. 笔记:Hibernate SQL 查询

    Hibernate 支持使用原生的SQL查询,使用原生SQL查询可以利用某些数据库特性,原生SQL查询也支持将SQL语句放在配置文件中配置,从而提高程序的解耦,命名SQL查询还可以用于调用存储过程. ...

  8. MySQL 笔记整理(2) --日志系统,一条SQL查询语句如何执行

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 2) --日志系统,一条SQL查询语句如何执行 MySQL可以恢复到半个月内任意一秒的状态,它的实现和日志系统有关.上一篇中记录了一 ...

  9. SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题

    目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...

随机推荐

  1. SpringBoot使用@Scheduled创建定时任务

    定时任务一般会存在中大型企业级项目中,为了减少服务器.数据库的压力往往会采用时间段性的去完成某些业务逻辑.比较常见的就是金融服务系统推送回调,一般支付系统订单在没有收到成功的回调返回内容时会持续性的回 ...

  2. LeetCoded第206题题解--反转链表

    反转一个单链表. 示例 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 方法一:递归 自始至 ...

  3. 对集合使用Comparator

    1 import java.util.Comparator; 2 import java.util.PriorityQueue; 3 4 /** 5 * 对集合使用Comparator,不改变对象的自 ...

  4. 自建纯净谷歌搜索「GitHub 热点速览 v.21.35」

    作者:HelloGitHub-小鱼干 虽然 Google 搜索的结果不如百度搜索结果那般广告丛生,但是对于一心只想找到匹配结果的我们而言,推广的信息条目能免则免.whoogle-search 便是一个 ...

  5. 使用Visual Studio分析dump

    最近系统是不是CPU会飙升的百分之九十多甚至百分百,在本地又很难复现问题,无法定位问题出现在哪. 可以用转储文件来保存现场,然后通过分析dump文件可以大概分析出问题的所在 生成转存文件 在CPU飙升 ...

  6. Promise.race()

    Promise.race([ ])---race竞赛,只要有一个决议了,就返回一个promise实例(对应resolve()或reject( )中参数值: 1.与Promise.all()对应的,还有 ...

  7. 从kratos分析breaker熔断器源码实现

    为什么要用熔断 前面我们讲过限流保证服务的可用性,不被突如其来的流量打爆.但是两种情况是限流解决不了的. 如果我们服务只能处理1000QPS,但是有10wQPS打过来,服务还是会炸.因为拒绝请求也需要 ...

  8. 20210819 Emotional Flutter,Medium Counting,Huge Counting,字符消除2

    考场 T1 一下想到了这题,将白块缩短 \(s\) 后维护类似的区间即可. T2 T3 俩计数,直接跳了. T4 的可行 \(t\) 集合相同相当与从 \(n\) 往前跳 kmp 数组,途径点相同,从 ...

  9. NOIP模拟「random·string·queen」

    T1:random   我又来白剽博客了:   详细证明请看土哥   土哥写的不是很详细,我在这里详细写一下:   首先,对于f[n]的式子:   加一是那一个对的贡献,大C是选其余的几个数,\(2^ ...

  10. 前后端数据交互(八)——请求方法 GET 和 POST 区别

    WEB 开发同学一看 get 和 post 请求方法的区别,第一感觉都是 So easy! 学习ajax.fetch.axios时,发送网络请求携带参数时,都需要分别处理get和post的参数.所以我 ...