SQL Server数据库入门教程之多表查询

 更新时间:2023年06月27日 09:58:28   作者:M malloc  
这篇文章主要给大家介绍了关于SQL Server数据库入门教程之多表查询的相关资料,多表查询是SQL数据库里的高级查询语句,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下

SQL_Server的前情介绍

😁大家好呀,今天是我第三次写sql_server,也是最近才学习sql_server,也想着记录一下自己的学习过程,并且分享给大家尼!

一、sql_server技术介绍

SQL Server 是由微软公司(Microsoft)开发的关系型数(RDBMS)。RDBMS 是 SQL 以及所有现代数据库系统的基础,比如 MS SQL Server,IBM DB2,Oracle,MySQL 以及微软的 Microsoft Access。

二、学习前的准备工作

编程软件:SQL Server Management Studio 2012
带好你的小板凳,我们一起扬帆起航!

SQL_Server之多表查询

笛卡尔乘积的讲解

在数据库中有一种叫笛卡尔乘积其语法如下:

select * from People,Department

此查询结果会将People表的所有数据和Department表的所有数据进行依次排列组合形成新的记录。例如People表有10条记录,Department表有3条记录,则排列组合之后查询结果会有10*3=30条记录.

多表查询

接下来我们来看几个例子吧!

1.查询员工信息,显示部门信息

select * from People,department where People.DepartmentId = department.DepartmentId 

2.查询员工信息,显示职级名称

select * from People,s_rank where People.RankId = s_rank.RankId

3.查询员工信息,显示部门名称,显示职级名称

select * from People,department,s_rank 
	where People.departmentId = department.DepartmentId and People.RankId = s_rank.RankId 

内连接查询

在数据库的查询过程中,存在有内连接查询,这个时候,我们就需要用到inner这个关键字,下面我们来看几个例子吧!

1.查询员工信息,显示部门信息

select * from People inner join department on People.departmentId = department.DepartmentId

2.查询员工信息,显示职级名称

select * from People inner join s_rank on People.RankId = s_rank.RankId

3.查询员工信息,显示部门名称,显示职级名称

select * from People inner join department on People.departmentId = department.DepartmentId
inner join s_rank on People.RankId = s_rank.RankId

外连接查询(左外连,右外连,全外连)

1.查询员工信息,显示部门信息(左外连)

select * from People left join department on People.departmentId = department.DepartmentId

2.查询员工信息,显示职级名称(左外接)

select * from People left join s_rank on People.RankId = s_rank.RankId

3.查询员工信息,显示部门名称,显示职级名称(左外连)

select * from People left join department on People.departmentId = department.DepartmentId
inner join s_rank on People.RankId = s_rank.RankId

4.右外连

A left join B = B right join A

select * from People right join department on People.departmentId = department.DepartmentId

全外连查询(无论是否符合关系,都要显示数据)

1.select * from People full join department on People.departmentId = department.DepartmentId

多表查询的主要例子

1.查询出武汉地区所有的员工信息,要求显示部门名称,以及员工的详细资料(显示中文别名)

select PeopleId 员工编号,DepartmentName 部门名称,PeopleName 员工姓名,PeopleSex 员工性别,
PeopleBirth 员工生日,PeoPleSalary 月薪,PeoplePhone 电话,PeopleAddress 地址
from People,department where People.departmentId = department.DepartmentId

2.查询出武汉地区所有员工的信息,要求显示部门名称,职级名称以及员工的详细资料

select PeopleId 员工编号,DepartmentName 部门名称,RankName 职级名称, PeopleName 员工姓名,PeopleSex 员工性别,
PeopleBirth 员工生日,PeoPleSalary 月薪,PeoplePhone 电话,PeopleAddress 地址
from People,department,s_rank where People.departmentId = department.DepartmentId 
and People.RankId = s_rank.RankId and PeopleAddress = '武汉'

3.根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资

select DepartmentName 部门名称, count(*) 员工人数,sum(PeopleSalary) 工资总和,avg(PeopleSalary) 平均工资,max(PeopleSalary) 最高工资,min(PeopleSalary) 最低工资 
from People,department
	where People.departmentId = department.DepartmentId
		group by department.DepartmentId,DepartmentName

4.根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资平均工资在10000元以下的不参与排序。根据平均工资降序排序

select DepartmentName 部门名称, count(*) 员工人数,sum(PeopleSalary) 工资总和,avg(PeopleSalary) 平均工资,max(PeopleSalary) 最高工资,min(PeopleSalary) 最低工资 
from People,department
	where People.departmentId = department.DepartmentId 
		group by department.DepartmentId,DepartmentName	
			having avg(PeopleSalary) >= 15000 
				order by avg(PeopleSalary) desc

5.根据部门名称,然后根据职位名称分组,统计员工人数,员工工资总和
平均工资,最高工资,和最低工资

select DepartmentName 部门名称,RankName 职级名称, count(*) 员工人数,sum(PeopleSalary) 工资总和,avg(PeopleSalary) 平均工资,max(PeopleSalary) 最高工资,min(PeopleSalary) 最低工资 
from People,department,s_rank
	where People.departmentId = department.DepartmentId and People.RankId = s_rank.RankId
		group by department.DepartmentId,DepartmentName,s_rank.RankId,s_rank.RankName

如何巩固学习

提示:在学习的过程中,我们需要先自行进行思考,而不是一遇到不会的就放弃思考直接看答案,如果最后遇到真的不会的题目,我们可以适当的进行观看答案,看自己的思路是否正确,在作出正确的判断

总结

到此这篇关于SQL Server数据库入门教程之多表查询的文章就介绍到这了,更多相关SQLServer多表查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用SQL语句实现查询排序,顺序和倒序

    使用SQL语句实现查询排序,顺序和倒序

    这篇文章主要介绍了使用SQL语句实现查询排序、顺序和倒序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Sql Server 2016新功能之Row-Level Security(值得关注)

    Sql Server 2016新功能之Row-Level Security(值得关注)

    Sql Server 2016 有一个新功能叫 Row-Level Security 。下面通过实例给大家介绍Sql Server 2016新功能之Row-Level Security,感兴趣的朋友一起看看吧
    2016-11-11
  • SQL Server高级内容之case语法函数概述及使用

    SQL Server高级内容之case语法函数概述及使用

    本文将详细介绍下Case函数的用法感兴趣的你可以参考下,或许对你有所帮助
    2013-03-03
  • SQL Server中聚合函数的用法

    SQL Server中聚合函数的用法

    本文详细讲解了SQL Server中聚合函数的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 使用SqlServer CTE递归查询处理树、图和层次结构

    使用SqlServer CTE递归查询处理树、图和层次结构

    递归CTE是SQL SERVER 2005中重要的增强之一。一般我们在处理树,图和层次结构的问题时需要用到递归查询。本文给大家详解使用sqlserver cte递归查询出来树、图和层次结构,本文介绍的非常详细,感兴趣的朋友一起看看吧
    2015-11-11
  • 通过cmd查看SqlServer版本的代码示例

    通过cmd查看SqlServer版本的代码示例

    这篇文章给大家介绍了如何通过cmd查看SqlServer版本,如果有同学不会查看的SqlServer版本号,可以参考阅读一下本文,对大家的学习或工作有一定的帮助
    2023-10-10
  • sql server 获取系统时间的方法

    sql server 获取系统时间的方法

    Sql Server 中一个非常强大的日期格式化函数,获得当前系统时间,GETDATE
    2012-11-11
  • sql 触发器使用例子

    sql 触发器使用例子

    触发器里没有updated ,只有inserted 和deleted两个临时表。
    2009-07-07
  • 隐藏在SQLServer 字段中的超诡异字符解决过程

    隐藏在SQLServer 字段中的超诡异字符解决过程

    这套系统做了大半年,这个导入导出还是问题不断,我负责的这块导入导出就是夹在网络版和单机版系统之间,只要任何一边对数据库做了改动这个导入导出就会失败。哎,烦心的事不止这些,最近又遇到了一个非常奇怪的问题。
    2009-10-10
  • SQL Server数据库如何查看表的数据内容

    SQL Server数据库如何查看表的数据内容

    查询数据在数据库的操作中相当重要的,在项目实训中查询是经常要用到的,所以掌握数据库的查询是基本要求,这篇文章主要给大家介绍了关于SQL Server数据库如何查看表的数据内容的相关资料,需要的朋友可以参考下
    2023-11-11

最新评论