数据库
首页 > 数据库> > 感恩笔记之SQL语句操纵数据集基本功能模板

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

作者:互联网

SQL查询_基本功能

一 SQL语句整体架构

SELECT     --1 查询数据表
INTO       --2 新建数据表
FROM       --3 查询数据表
WHERE      --4 筛选数据表

ORDER BY   --5 排序结果表   
GROUP BY   --6 分组结果表
HAVING     --7 筛选分组结果表

UNION      --8 合并查询结果表

二 select部分功能

1 select查询数据表

select * 
from   表名

2 select查询单列和多列

--1 查询一列
select 列1名  
from   表名

--2 查询多累
select 列1名 , 列2名 
from   表名

3 select单列去重

SELECT   distinct  列1名  from 表名

4 select更改列名

--1 新列名放在后面
select  列1名  AS 新列名

--2 AS关键字省略
select  列1名  新列名

--3 新列名放在前面
select  新列名 = 列1名  

5 select使用函数

select  函数(列1名)   
from    表名

6 select多列运算

select 列1 + 列2 
from   表名

7select数据标定

select 	CASE WHEN 条件表达式1   THEN  '设定字符1'      
             WHEN 条件表达式2   THEN  '设定字符2' 
             WHEN 条件表达式3   THEN  '设定字符3' 
			 ELSE '设定字符4'     
             END  as 新列名 
from 表名

三 into新建表

select * 
into   新表名
from   表名

四 from查询数据表

1 from父子查询

注意:语句结构过长,在电脑上可以查看完整结构

--1.子表在父表中存在的数据
select * 
FROM   父表                               
WHERE  相同列 IN (SELECT 相同列 
                 FROM   子表)     

--2.子表不在附表中存在的数据
SELECT * 
FROM   父表  
WHERE  相同列 NOT IN (SELECT 相同列 
                     FROM   子表) 
--说明:附带属性:用相同字段连接,通过子句属性,显示父句中匹配的数据



--3 三表子查询_重复                          
select * 
from   表1 
where  表1相同列 in ( select 表2相同列 
                     from   表2  
                     where  表2相同列 in ( select 表3相同列 
                                          from   表3 ))


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

2 from连接查询

--1.全连接:两表全部连接,包括空值 
SELECT * 
FROM 表1 a FULL JOIN 表2 b   
ON   a.相同列 = b.相同列                            

--2.自连接:两表有效值链接
SELECT * 
FROM 表1 a INNER JOIN 表2 b   
ON   a.相同列 = b.相同列

--3.左连接:以左表为准,包括空值
SELECT * 
FROM 表1 a LEFT JOIN 表2 b   
ON   a.相同列 = b.相同列

--4.右连接:以右表为准,包括空值
SELECT * 
FROM 表1 a RIGHT JOIN 表2 b   
ON   a.相同列 = b.相同列

 --5.交叉连接:同一张表提取不同字段连接
SELECT * 
FROM 表1 a JOIN 表1 b  
ON  a.相同列=b.相同列
--说明:连表后去掉重复列名:逐个显示列



--6 三表连接_重复 
select * 
from  表1 as a join 表2 as b  on a.表1相同列 = b.表2相同列
               join 表3 as c  on b.表2相同列 = c.表3相同列


--7三表连接_不重复 
select * 
from  表1 as a join 表2 as b  on a.表1相同列 != b.表2相同列
               join 表3 as c  on b.表2相同列 != c.表3相同列
               
               
--8多表简便连接
--二表简便连接
select * 
from   表1 , 表2   
where  表1.相同列 = 表2.相同列 

--三表简便连接
select  *
from    表1 a, 表2 b, 表3 c
where   a.身份证号=b.身份证号   
 and    b.参合家庭编号=c.参合家庭编号

--说明:三表连接相同,结果正常显示没毛病,如果是显示三表连接不相同的,那么在连接的 = 号就有一个逻辑关系,类似于负负得正的关系

3 from父子查询+连接查询

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表连接条件

五 where筛选数据表

1 where比较查询

SELECT * 
FROM   表名
WHERE  列1名 > 50

--比较运算符
>, <, =, !=, <>     

2 where区间查询

SELECT * 
FROM   表名
where  列1名  BETWEEN  500  AND 100

3 where精确查询

SELECT * 
FROM   表名
WHERE  列1名  IN ('字符',60) 

4 where模糊查询

SELECT * 
FROM   表名
WHERE  列1名 LIKE‘%字符%’  --模糊查询             
			 LIKE‘字符%’   --精确查询
             LIKE‘_字符%’  --定位查询            
             LIKE‘%[50%]%’ --数字符号查询
             LIKE‘%[^50%]%’ --逆向查询 

5 where空值查询

SELECT * 
FROM   表名
where  列1名  is NULL 
       列1名  is NOT NULL

6 where多条件筛选

SELECT * 
FROM   表名
where  列1名 > 50  and
	   列2名 BETWEEN  500  AND 100  and
       列3名 IN ('字符',60)  or
       列4名 LIKE‘%字符%’  or
       列5名 is NOT NULL

六 order by排序结果表

1 order by单列排序

SELECT   *  
FROM    表名  
WHERE   查询条件
ORDER BY   列1名  --正序
ORDER BY   列1名   DESC  --倒序

2 order by多列排序

SELECT   *  
FROM   表名  
WHERE  查询条件
ORDER BY   列1名,列2名 

七 group by分组结果表

1 group by单列分组求数

SELECT 列1名,COUNT(*)  
FROM   表名 
GROUP BY   列1名  

2 group by多列分组求数

SELECT   列1名,列2名,列3名,COUNT (*)  
FROM     表名 
GROUP BY 列1名 ,列2名,列3名

八 union合并查询结果表

--说明: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 上面不能接别的语句,会报错

(本章完)

标签:相同,--,表名,查询,基本功能,select,SQL,模板,SELECT
来源: https://www.cnblogs.com/PythonSQL/p/15391832.html