1、简单笔记

数据库查询语句中,通过UNION组合查询语句,可以将两个或更多查询的结果组合为单个结果集,该结果集包含组合查询中的所有查询的全部行。

利用UNION语句可以实现将不同数据表中符合条件,不同列种的数据信息,显示在另一个表中.

语法格式:

select 语句 union select 语句 where 条件表达式 ;

在使用Union运算符时遵循以下准则:

(1)所有选择列表的表达式的数目必须相同(列名,算术表达式,聚合函数等)

select stu_id as 学号,stu_math as 数学成绩 from Score where stu_english>60
union
select stu_id as 学号,stu_age as 年龄 from Students where stu_sex=0;

(2)在查询结果集中的相应列或个别查询中使用的任意列的子集必须具有相同的数据类型,并且两种数据类型之间必须存在可能的隐性数据转换,或者提供显示数据转换

select 学生姓名 from Students
union
select convert(varchar(20),总分) from Grade where 总分>600
union
select 课程名称 from Course;

(3)用Union运算符组合个各语句中对应的结果集列出现的顺序必须相同,因为Union运算符是按照各个查询给定的顺序逐个比较各列
(4)在Union操作中组合不同的数据类型时,这些数据类型将使用数据类型优先级的规则进行转换。例如int值转换成float,因为float类型的优先权比Int类型高

(5)通过Union生成的表中的列名来自Union语句中的第一个单独的查询,若要用新列名引用结果集中的某列,必须按照第一个select语句中的方式引用该列

2、对组合查询后的结果进行排序

select 年龄 as 信息 from Students
union
select 学分 from Grade
union
select 课程编号 from Scourse
order by 信息 ASC

3、获取组合查询中两个结果集的交集

select 学生编号,学生姓名 from Students
intersect
select 学生编号,学生姓名 from Score;

4、获取组合查询中两个结果集的差集

select 学生编号,学生姓名 from Students
except
select 学生编号,学生姓名 from Score;

等值连接与自然连接的区别:

1. 等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。
2. 等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接
5、简单内连接查询
select Students.stu_id,stu_name,stu_age,stu_sex,stu_birthday,Score.stu_math from Students
inner join Score on Students.stu_id=Score.stu_id;

什么是内连接查询?
内连接是用比较运算符将要连接数据列的值连接,内连接INNER JOIN只返回同时和两个表或结果集匹配的数据行

什么是等值连接?

等值连接是指在连接条件中使用等号(=)运算符比较连接数据列的值,在查询结果中列出本连接表中的所有数据列,包括其中的重复数据列,等值连接用于返回所有连接表中具有匹配值的行,而排除其他的行。

不等连接<>

通常不等连接只有与自然连接同时使用才有意义

select stu1.*  from Students as stu1
inner join stu2 as stu2
on stu1.所在学院<>stu2.所在学院
and stu2。Name='张三';

二、外连接
外连接OUTER JOIN包括左外连接LEFT OUTER JOIN 和 右外连接RIGHT OUTER JOIN。

外连接OUTER JOIN要求数据库系统返回的不仅是和所指定的判断标准匹配的行信息,同时也需要把连接体中的不匹配的信息返回,利用左外连接可以实现统计数据的功能。

左外连接:Left outer join查询--将左外连接左边的数据表的所有数据记录都包含在查询结果集中,而只将右边数据表中有匹配的数据记录添加到结果集

select st.姓名,st.性别,st.年龄,gr.总分 from tb_Student as st
left outer join tb_Grade as gr
on st.学生编号=gr.学生编号;

右外连接:Right outer join查询--将右外连接右边的数据表的所有数据记录都包含在查询结果集中,而只将左边数据表中有匹配的数据记录添加到结果集

select st.姓名,st.性别,st.年龄,gr.总分 from tb_Student as st
Right outer join
tb_Grade as gr
on st.学生编号=gr.学生编号;
 

Union-SQL Server学习笔记的更多相关文章

  1. 【SQL Server学习笔记】Delete 语句、Output 子句、Merge语句

    原文:[SQL Server学习笔记]Delete 语句.Output 子句.Merge语句 DELETE语句 --建表 select * into distribution from sys.obj ...

  2. SQL server 学习笔记1

    1.查询安装的排序规则选项喝当前的排序规则服务器属性 select * from fn_helpcollations(); 2.查看当前服务器的排序规则 select serverproperty(' ...

  3. sql server 学习笔记 ( backup 备份方案 )

    做个记入就好 USE [master] SELECT bs.database_name AS 'Database Name', bs.backup_start_date AS 'Backup Star ...

  4. 【SQL Server学习笔记】事务、锁定、阻塞、死锁 sys.sysprocesses

    http://blog.csdn.net/sqlserverdiscovery/article/details/7712068 Column name Data type Description   ...

  5. SQL SERVER学习笔记:临时表与表变量

    本文主要摘自徐海蔚的<Microsoft SQL SERVER企业级平台管理实践> 表变量可以作为存储过程的返回参数,而临时表不行.(存疑?表值参数只在SQL SERVER2008才开始支 ...

  6. sql server 学习笔记 (nested transaction 嵌套事务)

    什么时候会用到嵌套事务 ? 为了代码复用,我们会写许多的储蓄过程,而中间如果需要使用到 transaction 难免就会发生嵌套了. sql server 并不直接支持嵌套事务. 但它可以用一些招式来 ...

  7. Sql Server学习笔记

    1.指定路径创建数据库 create database student on--创建库的时候必须写 ( name=student, filename='E:\database\student.mdf' ...

  8. sql server 学习笔记 ( row_number, rank, dense_rank over partition by order by )

    refer : https://blog.csdn.net/winer2008/article/details/4283539 https://www.cnblogs.com/linJie193090 ...

  9. sql server 学习笔记

    1. 修改student表中sdept字段改为varchar类型,长度为30,并且不为空 ) not null 2. 删除student表中的address列 alter table student ...

  10. 【SQL SERVER学习笔记】Sqlserver游标的尝试

    DECLARE @ProName NVARCHAR(50)DECLARE @CityName NVARCHAR(50)DECLARE @ProId INT DECLARE @CityId INT DE ...

随机推荐

  1. word2010忽然无法撤销

    转:http://tieba.baidu.com/p/1115124288     第三楼 关闭正在运行的所有程序. 按Win-R,在运行框中键入regedit,然后单击“确定”. 在注册表编辑器中, ...

  2. 跟我学 NHibernate (三)

    在使用 NHibernate 时,一定要将Mapping 映射文件,也就是 xml 文件的编译方式设置成 嵌入式,这是因为在 NHibernate 启动时,它会主动的到项目的启动目录中寻找 被设置为嵌 ...

  3. BZOJ1002 轮状病毒

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...

  4. 华为OJ平台——计算字符串的相似度

    题目描述: 对于不同的字符串,我们希望能有办法判断相似程度,我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法如下: 1 修改一个字符,如把“a”替换为“b”. 2 增加一个字符,如 ...

  5. shell学习笔记(1):利用IFS打印用户和默认shell

    参考资料为:linux shell脚本攻略 作者sarath Lakshman 人民邮电出版社 shell:读取文件的每一行内容并输出 的写法1 目的:读取passwd文件,获得用户名和其默认的she ...

  6. cordova ios --->OC 调用 js (一)

    1.在HTML中定义一个函数如OCcallJS() function OCcallJS(){ alert("OC 调用js 的 方法"); } 2.当webview 加载完成的时候 ...

  7. HTTP Status 500 - javax.servlet.ServletException

    运行某个jsp页面时提示 type Exception report message javax.servlet.ServletException: java.lang.NoClassDefFound ...

  8. Spring与Quartz的整合实现定时任务调度

    摘自: http://kevin19900306.iteye.com/blog/1397744 最近在研究Spring中的定时任务功能,最好的办法当然是使用Quartz来实现.对于一个新手来说,花了我 ...

  9. .net分页控件webdiyer:AspNetPager

    首先下载:AspNetPager.dll   AspNetPager.xml  放到bin目录下 页面添加<%@ Register Assembly="AspNetPager" ...

  10. Linux ed命令

    $ ed              <- 激活 ed 命令  a                 <- 告诉 ed 我要编辑新文件  My name is Titan. <- 输入第 ...