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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 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
目录
相关文章
|
3月前
|
SQL 数据库
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
600 0
|
5月前
|
SQL 运维 监控
SQL Server 运维常用sql语句(二)
SQL Server 运维常用sql语句(二)
51 3
|
5月前
|
SQL XML 运维
SQL Server 运维常用sql语句(三)
SQL Server 运维常用sql语句(三)
47 1
|
5月前
|
Java 应用服务中间件 Maven
从零到英雄:一步步构建你的首个 JSF 应用程序,揭开 JavaServer Faces 的神秘面纱
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的 Java EE 标准,用于构建企业级 Web 应用。它提供了丰富的组件库和声明式页面描述语言 Facelets,便于开发者快速开发功能完善且易于维护的 Web 应用。本文将指导你从零开始构建一个简单的 JSF 应用,包括环境搭建、依赖配置、Managed Bean 编写及 Facelets 页面设计。
120 0
|
5月前
|
SQL 关系型数据库 MySQL
【超全整理】SQL日期与时间函数大汇总会:MySQL与SQL Server双轨对比教学,助你轻松搞定时间数据处理难题!
【8月更文挑战第31天】本文介绍了在不同SQL数据库系统(如MySQL、SQL Server、Oracle)中常用的日期与时间函数,包括DATE、NOW()、EXTRACT()、DATE_ADD()、TIMESTAMPDIFF()及日期格式化等,并提供了具体示例。通过对比这些函数在各系统中的使用方法,帮助开发者更高效地处理日期时间数据,满足多种应用场景需求。
687 0
|
5月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
644 0
|
4月前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
126 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
14天前
|
数据库 Windows
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
121 4
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
144 1