Sqlserver 学习笔记

by:授客 QQ1033553122

-----------------------接Part 2-------------------

13. 使用compute对查询结果集中的所有记录进行汇总统计,并显示所有参加汇总的记录的详细信息。

格式:

COMPUTE 聚合函数[列名]  --聚合函数,例如SUM (),AVG (),COUNT ()等

结合GROUP BY使用

示例:

SELECT * FROM std_table

GROUP BY 专业方向

COMPUTE SUM(高考分数)

SELECT 专业方向, COUNT(*) 系部总人数

FROM std_table

GROUP BY 专业方向

COMPUTE COUNT(专业方向)

SELECT 专业方向, COUNT(*) 系部总人数

FROM std_table

GROUP BY 专业方向

COMPUTE SUM(COUNT(*))

SELECT 专业方向, AVG(高考分数) 高考平均分

FROM std_table

GROUP BY 专业方向

COMPUTE AVG(AVG(高考分数))

EXEC
SP_RENAME '专业.系部名称',

'系部代码'

14.
UNION
操作

UNION
操作符用于合并两个或多个
SELECT
语句的结果集。

请注意,UNION

内部的
SELECT
语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条
SELECT
语句中的列的顺序必须相同。【原因:sql
union只是将两个结果联结起来一起显示,并不是联结两个表】


注释:
默认地,UNION

操作符选取不重复的记录。如果允许重复的值,请使用
UNION ALL。

另外,UNION

结果集中的列名总是等于
UNION
中第一个
SELECT
语句中的列名。

--UNION
和NNION
ALL

--UNION操作符用于合并两个或多个SELECT语句的结果集

SELECT
学号
FROM 学生

UNION

SELECT
专业代码
FROM 专业

SELECT
学号
FROM 学生

UNION ALL

SELECT
专业代码
FROM 专业

--对比:NNION
ALL保留了重复值

SELECT
专业代码
FROM 专业

UNION ALL

SELECT
学号
FROM 学生

15
复合连接条件查询
(多表查询)

SELECT
学生.学号,

学生.姓名,

班级.班级名称

FROM
学生

JOIN
班级
ON 学生.班级代码

= 班级.班级代码

SELECT
学生.学号,

学生.姓名,

班级.班级名称,

专业.专业名称,

系部.系部名称

FROM
学生

JOIN
班级
ON 学生.班级代码

= 班级.班级代码

JOIN
专业
ON 学生.专业代码

= 班级.专业代码

JOIN
系部
ON 系部.系部代码

= 班级.系部代码

--先建立如下表

CREATE
TABLE person

(

id INT PRIMARY KEY,

lastNAME VARCHAR(10)
NOT NULL,

firstName VARCHAR(10)
NOT NULL,

addr VARCHAR(20)
NOT NULL,

city VARCHAR(10)

)

CREATE
TABLE orders

(

id INT PRIMARY KEY,

orderNo CHAR(6)
NOT NULL,

idP INT FOREIGN KEY
REFERENCES person(id)

)

INSERT
INTO person

VALUES(1,
'Lai', 'fy',
'none', 'none')

INSERT
INTO person

VALUES(2,
'Lai', 'll',
'none', 'none')

INSERT
INTO person

VALUES(3,
'Lai', 'zy',
'none', 'none')

INSERT
INTO person

VALUES(4,
'Lai', 'fj',
'none', 'none')

INSERT
INTO orders

VALUES(1,
'111', 1)

INSERT
INTO orders

VALUES(2,
'zzz', 2)

INSERT
INTO orders

VALUES(3,
'zzz', NULL)

INSERT
INTO orders

VALUES(4,
'zzz', NULL)

--给上述两个表中插入数据后,做如下查询语句

--left join
可以写成left
outer join,,,其它的以此类推

--
列出所有人的订购(INNER
JOIN --->内连接)

SELECT
person.lastName, person.firstName,
orders.orderNo

FROM
person

INNER
JOIN orders

ON
person.id = orders.idp

ORDER
BY person.lastName

--注:INNER
JOIN
和JOIN效果一样,只要表中有一个匹配,则返回记录行

--列出所有的人,以及他们的订购,如果有的话(LEFT
OUTER JOIN-->左外连接)

SELECT
person.lastName, person.firstName,
orders.orderNo

FROM
person

LEFT
OUTER JOIN orders

ON
person.id = orders.idp

--注:LEFT
OUTER JOIN会返回左表所有的行,即使在右表中没有匹配值的行

--列出所有的订单,以及订购他们的人,如果有的话(RIGHT
OUTER JOIN-->右外连接)

SELECT
person.lastName, person.firstName,
orders.orderNo

FROM
person

RIGHT
OUTER JOIN orders

ON
person.id = orders.idp

--注:RIGHT
OUTER JOIN会返回右表所有的行,即使在左表中没有匹配值的行

--列出所有的人,以及他们的定单;同时列出所有的定单,以及定购它们的人(FULL
JOIN--->完全连接)

SELECT
person.lastName, person.firstName,
orders.orderNo

FROM
person

FULL
JOIN orders

ON
person.id = orders.idp

16嵌套查询

SELECT
* FROM
学生

WHERE
班级代码
IN

(

SELECT
班级代码
FROM 班级

WHERE 专业代码

IN

(

SELECT
专业代码
FROM 专业

WHERE 系部代码

IN

(

SELECT
系部代码
FROM 系部

WHERE 系部代码

IN(1, 2,
5)

)

)

)

SQLServer 学习笔记之超详细基础SQL语句 Part 3的更多相关文章

  1. SQLServer 学习笔记之超详细基础SQL语句 Part 12(The End)

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 11------------------- 现在,我们希望从 " ...

  2. SQLServer 学习笔记之超详细基础SQL语句 Part 11

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 10------------------- DECLARE @myavg ...

  3. SQLServer 学习笔记之超详细基础SQL语句 Part 10

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 9------------------- 删除约束的语法 ALTER T ...

  4. SQLServer 学习笔记之超详细基础SQL语句 Part 9

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 8------------------- 3 范式的概念 第一范式的目标 ...

  5. SQLServer 学习笔记之超详细基础SQL语句 Part 8

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 7------------------- --触发器str_trigge ...

  6. SQLServer 学习笔记之超详细基础SQL语句 Part 7

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 6------------------- 29 存储过程和触发器 存储过 ...

  7. SQLServer 学习笔记之超详细基础SQL语句 Part 6

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 5------------------- 28 聚合函数 --求平均分 ...

  8. SQLServer 学习笔记之超详细基础SQL语句 Part 5

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 4------------------- 21使用默认 默认(也称默认值 ...

  9. SQLServer 学习笔记之超详细基础SQL语句 Part 4

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 3------------------- 17 带比较运算符的嵌套查询 ...

随机推荐

  1. Vim实用技巧系列 - tab和空格的转换

    有时候,我们会修改一些代码,而这些代码中的tab设定和我们自己的设定不一样.例如,我们自己的设定是以两个空格来代替tab,而要修改的代码则是使用tab.那么,我们应该怎样快速的将又有的tab转换为空格 ...

  2. 06-02 Java值传递、数据加密

    值传递: /* 思考题1:看程序写结果,然后分析为什么是这个样子的.并画图讲解.最后总结Java中参数传递规律. Java中的参数传递问题: 基本类型:形式参数的改变对实际参数没有影响.基本类型传递的 ...

  3. FireFox浏览器-xpath快速定位插件:Xpath Checker

    FireFox浏览器-xpath快速定位插件:Xpath Checker 插件截图:

  4. 五、CLR加载程序集代码时,JIT编译器对性能的产生的影响

    1.CLR首次加载代码造成的性能损失 四.CLR执行程序集中代码介绍了CLR在首次执行一个类的时,会初始化一个内部结构,然后当目标方法被首次调用时,JITComplier函数(JIT编译器)会验证IL ...

  5. [转]网页实时聊天之js和jQuery实现ajax长轮询 PHP

    网页实时聊天之js和jQuery实现ajax长轮询 众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的 ...

  6. sizeof()与Marshal.SizeOf()的不同

    在.NET中一般都是通过sizeof()或Marshal.SizeOf()来获取数据类型的大小,来简要地看一下它们二者有何不同. sizeof() sizeof()在MSDN中的介绍是,在编译时获得一 ...

  7. Elasticsearch基本原理分析

    最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearch的基础理论知识,整理了一下,希望能对Elastic ...

  8. Kafka消费异常处理

    org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group ...

  9. Shell脚本 | 一键卸载安卓App

    在平时工作的过程中,很多重复性内容可以通过运行脚本文件来代替.一次编写,就能带来很大的效率提升. 今天跟大家分享一个简单的 Shell 脚本,只有区区 20 行左右的代码. 因为有时候我们测试某个应用 ...

  10. es-07-head插件-ik分词器插件

    5.x以后, es对head插件的支持并不是特别好 而且kibana的功能越来越强大, 建议使用kibana 1, head插件安装 在一台机器上安装head插件就可以了 1), 更新,安装依赖 su ...