SELECT --1 查询数据表 INTO --2 新建数据表 FROM --3 查询数据表 WHERE --4 筛选数据表 ORDER BY --5 排序结果表 GROUP BY --6 分组结果表 HAVING --7 筛选分组结果表 UNION --8 合并查询结果表
select * from 表名
--1 查询一列 select 列1名 from 表名 --2 查询多累 select 列1名 , 列2名 from 表名
SELECT distinct 列1名 from 表名
--1 新列名放在后面 select 列1名 AS 新列名 --2 AS关键字省略 select 列1名 新列名 --3 新列名放在前面 select 新列名 = 列1名
select 函数(列1名) from 表名
select 列1 + 列2 from 表名
select CASE WHEN 条件表达式1 THEN '设定字符1' WHEN 条件表达式2 THEN '设定字符2' WHEN 条件表达式3 THEN '设定字符3' ELSE '设定字符4' END as 新列名 from 表名
select * into 新表名 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,这就是一个逻辑反转负负得正的结果
--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.参合家庭编号 --说明:三表连接相同,结果正常显示没毛病,如果是显示三表连接不相同的,那么在连接的 = 号就有一个逻辑关系,类似于负负得正的关系
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表连接条件
SELECT * FROM 表名 WHERE 列1名 > 50 --比较运算符 >, <, =, !=, <>
SELECT * FROM 表名 where 列1名 BETWEEN 500 AND 100
SELECT * FROM 表名 WHERE 列1名 IN ('字符',60)
SELECT * FROM 表名 WHERE 列1名 LIKE‘%字符%’ --模糊查询 LIKE‘字符%’ --精确查询 LIKE‘_字符%’ --定位查询 LIKE‘%[50%]%’ --数字符号查询 LIKE‘%[^50%]%’ --逆向查询
SELECT * FROM 表名 where 列1名 is NULL 列1名 is NOT NULL
SELECT * FROM 表名 where 列1名 > 50 and 列2名 BETWEEN 500 AND 100 and 列3名 IN ('字符',60) or 列4名 LIKE‘%字符%’ or 列5名 is NOT NULL
SELECT * FROM 表名 WHERE 查询条件 ORDER BY 列1名 --正序 ORDER BY 列1名 DESC --倒序
SELECT * FROM 表名 WHERE 查询条件 ORDER BY 列1名,列2名
SELECT 列1名,COUNT(*) FROM 表名 GROUP BY 列1名
SELECT 列1名,列2名,列3名,COUNT (*) FROM 表名 GROUP BY 列1名 ,列2名,列3名
--说明: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 上面不能接别的语句,会报错