感恩笔记之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