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. tomcat下部署可以访问的文件夹

    项目名#文件夹名#文件夹名.xml <Context docBase="D:\文件夹名\r文件夹名"/> 例如: test#zhang#test1.xml <Co ...

  2. Vim与GCC和gdb完美组合

    一.vim vim修改一下配置文件后,如果你稍微会点vim的命令使用,那可比一般的编辑器好用啊,如果一点不会vim的命令使用,就跟一般编辑器一样使用. 打开etc/vim/vimrc文件 这里的引号是 ...

  3. [JFinal 1] JFinal和SSH中使用拦截器的对比

    导读:先前在做.NET项目时,拦截的功能主要是依靠缓存session来实现.当需要跳转到某个页面,使用某个功能查询一些数据时,会根据session中的用户值来判断是否已经正常登录,如果没有,则重定向到 ...

  4. c++ 实现百度自动搜索

    void CAttendanceRobotDlg::DocumentCompleteExplorer4(LPDISPATCH pDisp, VARIANT* URL) { // TODO: Add y ...

  5. webstorm & phpstorm破解

    webstorm: http://idea.qinxi1992.cn/ http://idea.goxz.gq http://v2mc.net:1017 http://idea.imsxm.com h ...

  6. JB for iOS 9.3

    令人期待已久的JB再度现世,真是望穿秋水,千呼万唤始出来~ http://www.pangu.io/?flag=cn JB的过程顺利不卡关. 完成后就可以看到心爱的Cydia出现在桌面上了. 还需要A ...

  7. SQL笔记-第二章,数据表的创建和管理

    数据类型 分5类:整数.数值.字符相关.日期时间以及二进制 1.整数 数据库系统 类型 说明 MYSQL tinyint [unsigned] 一个很小的整数.有符号的范围是-128 到127,无符号 ...

  8. Linux日志

    一.Linux 常見的日志文件 /var/log/cron:你的 crontab 排程有没有实际被进行? 进行过程有没有发生错误?你的 /etc/crontab 是否撰写正确?在这个登录档内查询看看. ...

  9. .NET中的IO操作之文件流

    读操作 //1.创建文件流 FileStream fsRead =new FileStream("1.txt",FileMode.Open); //2.创建缓冲区,正常情况下,是不 ...

  10. div模拟下拉框

    1.模拟下拉框.点击文本框在文本框下面显示一个层divList,点击divList以外的任何地方,关闭divList层 document.body.onclick = function (e) { e ...