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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: SQLServer 学习笔记之超详细基础SQL语句 Part 3

Sqlserver学习笔记


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

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

格式:

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

结合GROUP BY使用

示例:

SELECT*FROM std_table

GROUP BY专业方向

COMPUTESUM(高考分数)

 

 

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

FROMstd_table

GROUPBY专业方向

COMPUTECOUNT(专业方向)

 

 

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

FROMstd_table

GROUPBY专业方向

COMPUTESUM(COUNT(*))

 

 

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

FROMstd_table

GROUPBY专业方向

COMPUTEAVG(AVG(高考分数))

 


 

EXECSP_RENAME'专业.系部名称','系部代码'

 

 

14. UNION操作

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

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

注释:默认地,UNION操作符选取不重复的记录。如果允许重复的值,请使用UNION ALL

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

--UNIONNNION 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系部.系部代码=班级.系部代码

 

--先建立如下表

CREATETABLE person

(

   id INTPRIMARYKEY,

   lastNAME VARCHAR(10)NOTNULL,

   firstName VARCHAR(10)NOTNULL,

   addr VARCHAR(20)NOTNULL,

   city VARCHAR(10)

)

 

CREATETABLE orders

(

   id INTPRIMARYKEY,

   orderNo CHAR(6)NOTNULL,

   idP INTFOREIGNKEYREFERENCES person(id)

)

 

INSERTINTO person

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

INSERTINTO person

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

INSERTINTO person

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

INSERTINTO person

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

 

INSERTINTO orders

VALUES(1,'111', 1)

INSERTINTO orders

VALUES(2,'zzz', 2)

INSERTINTO orders

VALUES(3,'zzz',NULL)

INSERTINTO orders

VALUES(4,'zzz',NULL)

 

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

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

 

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

SELECTperson.lastName, person.firstName, orders.orderNo

FROMperson

INNERJOIN orders

ONperson.id = orders.idp

ORDERBY person.lastName

 

 

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

 

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

SELECTperson.lastName, person.firstName, orders.orderNo

FROMperson

LEFTOUTERJOIN orders

ONperson.id = orders.idp

 

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


 

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

SELECTperson.lastName, person.firstName, orders.orderNo

FROMperson

RIGHTOUTERJOIN orders

ONperson.id = orders.idp

 

 

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

 

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

SELECTperson.lastName, person.firstName, orders.orderNo

FROMperson

FULLJOIN orders

ONperson.id = orders.idp

 

 

 

16嵌套查询

SELECT*FROM学生

WHERE班级代码IN

(

   SELECT班级代码FROM班级WHERE专业代码IN

   (

       SELECT专业代码FROM专业WHERE系部代码IN

       (

           SELECT系部代码FROM系部WHERE系部代码IN(1, 2, 5)

       )

   )

)

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
SQL 数据库
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
252 0
|
3月前
|
SQL 运维 监控
SQL Server 运维常用sql语句(二)
SQL Server 运维常用sql语句(二)
36 3
|
3月前
|
SQL XML 运维
SQL Server 运维常用sql语句(三)
SQL Server 运维常用sql语句(三)
27 1
|
3月前
|
Java 应用服务中间件 Maven
从零到英雄:一步步构建你的首个 JSF 应用程序,揭开 JavaServer Faces 的神秘面纱
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的 Java EE 标准,用于构建企业级 Web 应用。它提供了丰富的组件库和声明式页面描述语言 Facelets,便于开发者快速开发功能完善且易于维护的 Web 应用。本文将指导你从零开始构建一个简单的 JSF 应用,包括环境搭建、依赖配置、Managed Bean 编写及 Facelets 页面设计。
97 0
|
3月前
|
SQL 关系型数据库 MySQL
【超全整理】SQL日期与时间函数大汇总会:MySQL与SQL Server双轨对比教学,助你轻松搞定时间数据处理难题!
【8月更文挑战第31天】本文介绍了在不同SQL数据库系统(如MySQL、SQL Server、Oracle)中常用的日期与时间函数,包括DATE、NOW()、EXTRACT()、DATE_ADD()、TIMESTAMPDIFF()及日期格式化等,并提供了具体示例。通过对比这些函数在各系统中的使用方法,帮助开发者更高效地处理日期时间数据,满足多种应用场景需求。
410 0
|
3月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
403 0
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
115 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
61 6
下一篇
无影云桌面