三.sql数据库查询语句,模块化使用

前言:此博客内容为sql查询语句的高度总结,通过直接赋值语句格式,修改目标表名和列名,用以实现其查询脑功能.

1_整体架构

select      查询哪一列
into        新建什么表
from        从什么表查
where       选什么条件
order by    哪一组排序
group by    哪一组分组
having      分组选条件

2_基本查询

--1查询全表
select * 
from   表格
================================================================================
--2查询目标列
select 列名1,列名2 
from   表格
================================================================================
--3查询结果排序
select *
from   表格
ORDER BY  列名1  desc
================================================================================
--4查询结果分组
select1,2
from   表格
GROUP BY1,2
================================================================================
--5查询结果新建表
select * 
into  新建表格名称
from  表格

3_条件查询

--1 数值大小比较
select * 
from   表格   
where  列名 > 1030                        
================================================================================
--2 数值区间取值
select * 
from   表格   
where  列名  BETWEEN 列中数值1 and 列中数值2   
================================================================================
--3 去掉空值和空格
select * 
from   快手人员信息   
where  列名  is  not   null               
================================================================================
--4 提取字符
select * 
from   表名   
where  列名 in ('列中数据' )           
================================================================================
--5 提取字符like 
--模糊查询
select * 
from   表名   
where  列名  like '%列中数据%'    
================================================================================
--精确查询字符数据
select * 
from   表名   
where  列名  like '列中数据%'   
================================================================================
--按照空格位置查询字符数据
select * 
from   表名   
where  所在股室  like '__数据%'     

4_函数查询

--1 显示列中字符个数
select  len  (列名) 
from    表格
================================================================================
--2 显示特定字符在列中位置数
select  charindex ('列中数据', 列名 )    
from    表格
================================================================================
--3 显示从左数第几个字符
select  left (列名,3)                   
from 表格
================================================================================
--4 显示从右数第几个字符
select  right (列名,4)            
from    表格
================================================================================
--5 显示在列中从第几位选择第几个字符
select  substring (列名,4,4)         
from    表格
================================================================================
--6 显示在列中哪个字符替换成什么字符
select  replace (列名,'原来字符','替换字符')    
from    表格

5_查询列计算

--1新增列
select * , 新增数据   
from   表格          
================================================================================
--2计算列
select * ,1 +2 as 新表名 ,1 -2 as 新表名 ,  
from   表格
================================================================================
--3分类列
select *  , case 
            when 列名 BETWEEN  1000  AND 1500  THEN  '1500以下的数额'     
            when 列名 BETWEEN  1500  AND 2000  THEN  '2000以下的数额'
            when 列名 > 2000                   THEN  '大于2000的数额'
            else '小于1000的数额' 
            end  
from  表格
================================================================================
--4子查询在select的用法
select *,(select 想要在父表显示的列名1 
          from 子表1 
          where 父表.相同列 = 子表1.相同列  ) as1 ,
          
         (select 想要在父表显示的列名2 
          from 子表2 
          where 父表.相同列 = 子表2.相同列  ) as2
from  父表 
================================================================================
--格式说明:新增列子查询中:select 只能显示一列信息,多了报错,如果想显示多列可以再写一个,where 中设定的条件就是两个表连接的内容
--重点说明:如果是新增的列参与运算,不能用as后的名字,需要用新增的运算格式

6_多表查询

                                1_多表基本格式
--1嵌套子查询
select *  
from   父表  
where  两表相同列  in  ( select  两表相同列   
                       from    子表 )
================================================================================
--2连接匹配查询 
select * 
from1 a   join2 b 
       on  a.相同列 = b.相同列
================================================================================
                                 2_三表连接匹配
--1 三表连接_重复 
select * 
from1 as a join2 as b  
      on a.1相同列 = b.2相同列
               join3 as c 
      on b.2相同列 = c.3相同列
================================================================================
--2 三表连接_不重复 
select * 
from1 as a join2 as b  
      on a.1相同列 != b.2相同列
               join3 as c 
      on b.2相同列 != c.3相同列
================================================================================
--二表简便连接
select * 
from1 ,2   
where1.相同列 =2.相同列 
================================================================================
--三表简便连接
select  *
from1 a,2 b,3 c
where   a.身份证号=b.身份证号   
 and    b.参合家庭编号=c.参合家庭编号
================================================================================
--4说明:三表连接相同,结果正常显示没毛病,如果是显示三表连接不相同的,那么在连接的 = 号就有一个逻辑关系,类似于负负得正的关系
================================================================================
                                 3_三表嵌套子查询
--1 三表嵌套_重复                          
select * 
from1 
where  相同列 in ( select 相同列 
                  from2  
                  where  身份证 in ( select 相同列 
                                    from3 ))
================================================================================
--2三表嵌套_不重复   
select * 
from1 
where  相同列 in ( select 相同列 
                  from2  
                  where  身份证 not in ( select 相同列 
                                        from3 ))
================================================================================ --3说明:三表嵌套,赛选不重复数据,最下一层是not in 上一层是in,这就是一个逻辑反转负负得正的结果       
================================================================================
                           4_嵌套+匹配

SELECT *  from                                            --1总查询模型

	(select *                                             --2子查询1
	 from   父表1                                          
	 where1相同列  in   (select1相同列 
                  	        from   子表1   ) )  AS  a
                  	        
JOIN                                                      --3表连接名

	(select *                                             --4子查询2
	 from 父表2                                          
	 where2相同列  not in   (select2相同列 
                                from  子表2) )  as  b
ON  a.1相同列 = b.2相同列                               --5表连接条件
================================================================================
                                 5_查询结果合并
--说明:union的功能不仅可以合并相同字段结果,也可以达到去掉重复的结果
--说明:字段必须相同

SELECT1,列2,列3  FROM  数据表  WHERE  
UNION                                        --1.合并结果:列必须相同
SELECT1,列2,列3  FROM  数据表 WHERE  


SELECT   *  
 INTO 新建表名 
   FROMSELECT  * FROM1  
          UNION                              --2.结果新建表
          SELECT  * FROM2AS  新表名

7_变量

--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 @查询名称  

8_视图

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

select * from--2查询模块

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

9_存储过程

                                   1_存储过程基础
                              
create proc 存储过程名 as    --1定义存储过程

select * from--2查询模块

执行:exec 存储过程名          --3执行存储过程

================================================================================
                                    2_带输入参数_存储过程

create proc 存储过程名                  --1定义存储过程名
            @变量1 int                 --2定义输入变量
            @变量2 char(10)            
as     

select1,2,3                      --3查询模块
fromwhere1=@变量1                       --4输入变量对接
  and2=@变量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

10_游标

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

发布了5 篇原创文章 · 获赞 0 · 访问量 374
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览