感恩笔记之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. 解决log4net多进程日志文件被占用

    <log4net debug="true"> <appender name="RollingLogFileAppender" type=&qu ...

  2. Springboot使用MatrixVariable 注解

        根据 URI 规范 RFC 3986 中 URL 的定义,路径片段中可以可以包含键值对.规范中没对对应的术语.一般 "URL 路径参数" 可以被应用,尽管更加独特的 &qu ...

  3. Js/jquery常用

    id属性不能有空格 1. js判断checkebox是否被选中 var ischecked = document.getElementById("xxx").checked  // ...

  4. Struts2之国际化

    时间:2017-1-11 11:12 --国际化Struts2已经对国际化进行了封装,我们只需要根据其提供的API进行访问即可.要使用国际化的Action必须继承ActionSupport.1.什么是 ...

  5. springboot @value无法赋值

    1解决方式在类上在加@Compent @Component@EnableBinding(Sink.class)public class ReceiveMessageListenerController ...

  6. 硬核! Github上 ,star超高的Java 开源项目分享给你!

    Awsome JavaGreat Java project on Github(Github 上非常棒的 Java 开源项目). English Version 大家都知道 Github 是一个程序员 ...

  7. 论如何在服务器上部署一个自己的web前端项目

    就在前两天,有新人通过邮箱问到笔者,如何部署自己的web前端项目?笔者在此详细介绍. 一.购买云服务器 配置用户名密码.安全组 二.下载Xshell于Xftp工具 用于登录服务器和文件上传 三.在li ...

  8. 20210716考试-NOIP16

    考场时Prim的 $i$ 写成 $k$ 100->0 rank1->rank23 T1 Star Way To Heaven 考场正解:假设你要二分答案,则几个圆组成几道"屏障& ...

  9. Mysql常用sql语句(4)- distinct 去重数据

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 我们使用select进行数据查询时是会返回所有匹 ...

  10. 对easyui-validatebox的验证类型的扩展--补充

    一.说明 这篇文章是<对easyui-validatebox的验证类型的扩展>的补充.在工程的持续开发中,我们又对此进行了更多的补充. 二.补充代码 增加了更多的验证类型. /* * 比较 ...