SQL 查询 (代码)

**************************************
*************SELECT  查询*************
**************************************

查询单列字段信息:
SELECT 姓名
FROM 例子
**************************************
查询多字段信息:
SELECT 姓名,地址,电话
FROM 例子
**************************************
查询所有字段信息:
SELECT *
FROM 例子
**************************************
通过指定数据表中所有字段来查询数据信息:
SELECT 姓名,职务,地址,电话,编号,性别
FROM 例子

**************************************
*         DISTINCT  去除重复         *
**************************************

取出查询结果中重复的值:
SELECT DISTINCT 姓名
FROM 例子
**************************************
去掉多列查询结果中的重复值:
SELECT DISTINCT 姓名,编号,电话
FROM 例子
**************************************
在查询数据时使用别名:
SELECT
编号 AS 'nomber'
姓名 AS 'name'
电话 AS 'phone'
FROM 例子
**************************************

**************************************
*           ASC  升序排列            *
**************************************

将查询结果进行升序排列:
SELECT
编号,姓名,地址,电话
FROM 例子
ORDER BY 姓名 ASC
/*按照‘姓名’进行升序排列  ASC可省*/
**************************************
实现多列升序排序:
SELECT
编号,姓名,地址,电话
FROM 例子
ORDER BY 姓名,地址
**************************************

**************************************
*           DESC 将序排列            *
**************************************

将查询结果进行将序排列:
SELECT
编号,姓名,地址,电话
FROM 例子
ORDER BY 姓名 DESC
**************************************
多列先升序后降序排列:
SELECT *
FROM 例子
ORDER BY 姓名 ASC,地址 DESC
**************************************
多列先降序后升序排列:
SELECT *
FROM 例子
ORDER BY 姓名 DESC,地址 ASC
**************************************

**************************************
*         GROUP BY 分组查询          *
**************************************

将查询结果进行分组:
SELECT 科目,SUM(各科成绩) AS '各科总成绩'
FROM 成绩单
GROUP BY 科目
/*将各科成绩求和作为‘各科总成绩’的数据*/
**************************************
将分组数据升序排序:
SELECT 科目,SUM(各科成绩) AS '各科总成绩'
FROM 成绩单
GROUP BY 科目
ORDER BY 科目
**************************************
将分组数据降序排序:
SELECT 科目,SUM(各科成绩) AS '各科总成绩'
FROM 成绩单
GROUP BY 科目
ORDER BY 科目 DESC
**************************************

**************************************
*     HAVING 对查询结果进行限制      *
**************************************

HAVING子句的应用:
SELECT 科目,SUM(各科成绩) AS '各科总成绩'
FROM 成绩单
GROUP BY 科目
HAVING SUM(各科成绩)<200
**************************************

**************************************
*           WHERE 条件查询           *
**************************************

单条件查询:
SELECT 编号,姓名,性别
FROM 例子
WHERE 性别='女'
**************************************

**************************************
*         算术关系运算符查询         *
**************************************

使用运算符进行条件查询:
SELECT 姓名,性别,编号
FROM student
WHERE 年龄>20
/*
=   等于
>   大于 例:生日>'1990-10-01'
>=  大于等于
<   小于
<=  小于等于
<>  不等于(除条件以外的)
!=  不等于()
!>  不大于
!<  不小于
*/

**************************************
*         BETWEEN 范围筛选           *
**************************************

使用BETWEEN运算符查询数值区间的数据:
SELECT *
FROM 例子
WHERE 编号 BETWEEN 1002 AND 1004
ORDER BY 编号
**************************************

**************************************
*     TOP 指定查询结果中返回的行数   *
**************************************

使用TOP子句查询数据表中前三条记录:
SELECT TOP 3 *
FROM 例子
**************************************
在TOP子句中使用PERCENT关键字:
SELECT TOP 3 PERCENT *
FROM 例子
执行后:查询前百分之3条记录
**************************************
使用IS NOT NULL 运算符查询数据:
SELECT *
FROM 例子
WHERE 职务 IS NOT NULL
ORDER BY 编号
**************************************
使用IS NULL 运算符查询数据:
SELECT *
FROM 例子
WHERE 职务 IS NULL
ORDER BY 编号
**************************************

**************************************
*            LIKE 模糊查询           *
**************************************

SQL中的通配符:
'_'    一个字符
%      任意长度的字符
[]     括号内所指定范围内的一个字符
[^]    不在括号内中指定范围内的任意一个字符
**************************************
使用LIKE进行查询:
SELECT *
FROM 例子
WHERE 地址 LIKE '山西'
**************************************
使用NOT LIKE进行查询:
SELECT *
FROM 例子
WHERE 地址 NOT LIKE '山西'
**************************************
使用'_'通配符进行查询:
SELECT *
FROM 例子
WHERE 地址 LIKE '山_'
/*'_'表示一个字符,结果中只有和'山_'字节数相同且满足LIKE数据*/
**************************************
将“_”放在与其一起作为匹配字符的前面:
SELECT *
FROM 例子
WHERE 地址  LIKE '_南'
**************************************
全部使用“_”通配符查询数据信息:
SELECT *
FROM 例子
WHERE 地址  LIKE '__'
执行后:结果中的“地址”列字节数与“_”个数相同
**************************************
使用“%”通配符:
SELECT *
FROM 例子
WHERE 地址  LIKE '%西'
/*%可以再前/中/后使用*/
**************************************
使用“[]”通配符:
SELECT *
FROM 例子
WHERE 地址  LIKE '[山]%'
注意:条件的字符数
**************************************
使用[^]通配符:
SELECT *
FROM 例子
WHERE 地址  LIKE '[^河]%'
执行后:结果中只有“地址”列以“河”开头以外的数据
**************************************

**************************************
*           逻辑运算查询             *
**************************************

使用AND运算符实现条件查询:
SELECT *
FROM 例子
WHERE 性别='女'
AND 编号>'1002'
**************************************
使用多个AND运算符实现条件查询:
SELECT *
FROM 例子
WHERE 性别='女'
AND 编号>'1002'
AND 地址 LIKE '山%'
**************************************
使用OR运算符实现条件查询:
SELECT *
FROM 例子
WHERE 性别='女'
OR 地址 LIKE '山%'
**************************************
使用多个OR运算符实现条件查询:
SELECT *
FROM 例子
WHERE 性别='女'
OR 地址 LIKE '河%'
OR 姓名='赵六'
**************************************
运算符AND OR 的组合使用:
SELECT *
FROM 例子
WHERE 性别='男'
AND 地址 LIKE '河%'
OR 地址='山西'
**************************************
多个AND OR 运算符的组合使用:
SELECT *
FROM 例子
WHERE 性别='男'
AND 地址 LIKE '河%'
OR 地址='山西'
OR 姓名 LIKE '刘%'
**************************************
使用IN 运算符进行查询:
SELECT *
FROM 例子
WHERE 性别 IN ('男')
**************************************
使用IN 运算符进行查询:
SELECT *
FROM 例子
WHERE 地址 IN ('河南','湖北')
**************************************
使用NOT IN 运算符进行查询:
SELECT *
FROM 例子
WHERE 地址 NOT IN ('河南','湖北')
**************************************
NOT 运算符查询:
SELECT *
FROM 例子
WHERE NOT 地址='河南'
**************************************
使用NOT 运算符实现查询:
SELECT *
FROM 例子
WHERE NOT 编号>1004
**************************************
NULL 的取反:
SELECT *
FROM 例子
WHERE NOT 职务 IS NULL
**************************************
NOT 的取反查询:
SELECT *
FROM 例子
WHERE NOT 职务<>'无'
**************************************
NOT 与BETWEEN 的组合使用:
SELECT *
FROM 例子
WHERE 编号 NOT BETWEEN '1003' AND '1005'
**************************************

**************************************
*          数学运算符的应用          *
**************************************

使用“+”运算符:
SELECT 货物编号,货物名称,数量,单价,货物运输单价,单价+货物运输单价 AS 实际单价
FROM 货物信息表
**************************************
使用“*”运算符:
SELECT 货物编号,货物名称,数量,单价,货物运输单价,数量*单价 AS 总价
FROM 货物信息表
**************************************
+   加
-   减
*   乘
/   除
%   取余
**************************************

**************************************
*            集合查询运算符          *
**************************************

************************
*      UNION 并集      *
************************
UNION 运算符的应用:
SELECT 编号,姓名 FROM 员工信息表
UNION
SELECT 编号,姓名 FROM 学生信息表
执行后:将量表中的相关数据组合在一起
**************************************
组合带限制条件的数据表信息:
SELECT 编号,姓名 FROM 员工信息表
WHERE 姓名 LIKE '刘%'
UNION
SELECT 编号,姓名 FROM 学生信息表
**************************************
对多表进行UNION运算:
SELECT 编号,姓名 FROM 员工信息表
WHERE 编号<='1003'
UNION
SELECT 编号,姓名 FROM 学生信息表
WHERE 编号<='98002'
UNION
SELECT 编号,姓名 FROM 教师信息表
WHERE 编号<='99004'
**************************************
将使用UNION运算符将查询的结果进行排序:
SELECT 编号,姓名 FROM 员工信息表
WHERE 编号<='1003'
UNION
SELECT 编号,姓名 FROM 学生信息表
WHERE 编号<='98002'
UNION
SELECT 编号,姓名 FROM 教师信息表
WHERE 编号<='99004'
ORDER BY 编号
**************************************

************************
*    INTERSECT 交集    *
************************
INTERSECT运算符的使用:
SELECT 姓名 FROM 员工信息表
INTERSECT
SELECT 姓名 FROM 学生信息表
**************************************
多个INTERSECT运算符的使用:
SELECT 姓名 FROM 员工信息表
INTERSECT
SELECT 姓名 FROM 学生信息表
INTERSECT
SELECT 姓名 FROM 教师信息表
**************************************
逻辑运算符与IN运算符的组合使用:
SELECT *
FROM 员工部门表
WHERE 部门 IN('生产部','营销部','财务部')
AND 姓名 LIKE '赵%'
**************************************
逻辑运算符与NOT运算符组合使用:
SELECT *
FROM 员工部门表
WHERE 性别='女'
AND
NOT 生日 BETWEEN '1980-01-01' AND '1982-12-31'
**************************************
逻辑运算符与数学运算符组合使用:
SELECT 货物编号,货物名称,数量,单价,数量*单价 AS 总价
FROM 货物信息
WHERE 数量*单价>100 AND 数量>50
**************************************
逻辑运算符与集合运算符的组合使用:
SELECT 编号,姓名 FROM 员工信息表
WHERE 编号>1003 AND 姓名 LIKE '刘%'
UNION
SELECT 学生编号,学生姓名 FROM 学生信息表
WHERE 学生编号>98002 OR 学生姓名 LIKE '赵%'
**************************************
数学运算符与NOT运算符组合使用:
SELECT 货物编号,货物名称,数量,单价,数量*单价 AS 总价,产地
FROM 货物信息表
WHERE NOT 产地='吉林长春'
**************************************
算术运算符与IN运算符组合使用:
SELECT 货物编号,货物名称,数量,单价,数量*单价 AS 总价,产地
FROM 货物信息表
WHERE 数量*单价>100 AND 产地 IN ('辽宁锦州','吉林长春')
**************************************
数学运算符与集合算符的组合使用:
SELECT 货物名称,数量*单价 AS 总价 FROM 货物信息表
UNION
SELECT 货物名称,数量*单价 AS 总价 FROM 采购信息表
**************************************

**************************************
*         CAST 改变数据类型          *
**************************************

使用CAST 表达式转换日期数据类型:
SELECT 编号,姓名,性别,CAST(birthday AS CHAR(11)) AS '出生日期'
FROM 学生信息表
ORDER BY 编号
**************************************
使用CAST 表达式转换数值数据类型:
SELECT 货物编号,货物名称,CAST(数量 AS VARCHAR(3)) + '个' AS 货物数量,
CAST(单价 AS VARCHAR(6)) + '元' AS 货物单价,
FROM 货物信息表
ORDER BY 货物编号
**************************************
使用CAST 表达式转换数值与日期数据类型:
SELECT 货物编号,货物名称,CAST(数量 AS VARCHAR(3)) + '个' AS 货物数量,
CAST(单价 AS VARCHAR(6)) + '元' AS 货物单价,
CAST(运输日期 AS CHAR(11)) AS 货物运输日期
FROM 货物信息表
ORDER BY 货物编号
**************************************

**************************************
*         CASE                       *
**************************************

CASE 表达式的应用:
SELECT 编号,姓名,性别,生日,娱乐分组=
CASE
    WHEN 生日>'1981-01-01' AND 生日<'1989-01-01' THEN '青年组'
    WHEN 生日>'1970-01-01' AND 生日<'1981-01-01' THEN '中年组'
    WHEN 生日>'1955-01-01' AND 生日<'1970-01-01' THEN '老年组'
END
FROM 员工信息表
ORDER BY 编号
**************************************

原文地址:https://www.cnblogs.com/gaorui/p/2134680.html