sql server 各种查询语句详解left jion,right join,full join ,join,inner join ,union all,union等

原创 2017年01月03日 14:35:54

建库建表

create database testDataBase

create table TStudent
(
    Stuid   int identity (1,1) PRIMARY KEY,
    StuName varchar(50),
    StuClass int FOREIGN KEY REFERENCES TClass(ClassId)
)

create table TClass
(
    ClassId  int identity (100,1) PRIMARY KEY,
    ClassName varchar(50)
)


create table teacher
(
    tid  int identity (10,1) PRIMARY KEY,
    tname varchar(50),
    tage int ,
    CountryName varchar(50) FOREIGN KEY REFERENCES Country(cname)
)

create table Country
(
    Stuname varchar(50) ,
    cname varchar(50) primary key
)

–内连接相关知识
–1.等值连接
–1.1 概念:在连接条件中使用等于号(=)运算符,其查询结果中列出被连接表中的所有列,包括其中的重复列。

select * from  TStudent ts,TClass tc where ts.StuClass = tc.ClassId 

–这条语句可以采用inner join
–等于

select * from TStudent ts inner join TClass tc on ts.StuClass = tc.ClassId 

–2.不等连接
–2.1概念:在连接条件中使用除等于号之外运算符(>、<、<>、>=、<=、!>和!<)
– 各类>、<、<>、>=、<=、!>和!< 都可以试试看

select * from TStudent ts inner join TClass tc on ts.StuClass !> tc.ClassId

–外连接相关知识
–1.左连接 left join
–1.1 概念:返回左表中的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回空值。

select * from TStudent ts left join TClass tc on ts.StuClass = tc.ClassId

–1.2总结:左连接显示左表全部行,和右表与左表相同行。

–2.右连接 right join
–2.1 恰与左连接相反,返回右表中的所有行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回空值。

select * from TStudent ts right join TClass tc on ts.StuClass = tc.ClassId

–2.2总结:右连接恰与左连接相反,显示右表全部行,和左表与右表相同行。

–3.全连接 full join
–3.1概念:返回左表和右表中的所有行。当某行在另一表中没有匹配行,则另一表中的列返回空值

select * from TStudent ts  full join TClass tc on ts.StuClass = tc.ClassId

–3.2总结:返回左表和右表中的所有行。

–4.交叉连接( 笛卡尔积) CROSS JOIN
–4.1 概念:不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积
–(例如:TStudent和TClass,返回4*4=16条记录),如果带where,返回或显示的是匹配的行数。
–不带where 条件写法

select * from TStudent  cross join TClass

–也等于

select * from TStudent , TClass

–4.2有where子句,往往会先生成两个表行数乘积的数据表,然后才根据where条件从中选择。

select * from TStudent ts cross join TClass tc where ts.StuClass = tc.ClassId   

–(注:cross join后加条件只能用where,不能用on)

–5 联合查询 union , union all
–5.1 找到所有的班级编号:

select StuClass from TStudent
union 
select ClassId from TClass 

–5.2
–Union all这个指令的目的也是将两个SQL语句的结果合并起来,不过它与union的不同之处在
–Union all会将所有的结果都列出来,包括重复的结果,这是它与union的不同之处。
–union all规则
–就是把2个具有相同列及数据类型的 结果 放到一起显示,并且不去重。
–select a,b,c from table1 union all select ca,cb,cc from table2

select a,b,c from table1  union all select ca,cb,cc from table2
select StuClass from TStudent
union  all
select ClassId from TClass 

–6.intersect用法和minus用法:
–6.1 intersect用法

select tname as '相同名' from teacher  intersect select Stuname from Country

–6.2 minus用法
–Minus指令是运用在两个SQL语句上,它先找出第一个SQL语句所产生的结果,然后看这些结果
–有没有在第二个sql语句的结果中,如果有的话就去除。还有一点就是如果第二个sql语句所产生
–的结果没有在第一个sql语句所产生的结果内,那么这个数据也去除。

select * from teacher
select tname  from teacher  
minus   
select Stuname from Country
版权声明:本文为博主原创文章,未经博主允许不得转载。

sql语句中left jion、 right jion、 inner join、 full join含义

先看一下left join  http://baike.baidu.com/view/4828677.htm?fr=aladdin 定义 编辑 left join:是SQL语言中的查询...

SQL的inner join、left join、right join、full outer join、union、union all的区别

对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Codin...
  • paul342
  • paul342
  • 2015年03月16日 09:58
  • 391

图解SQL的inner join、left join、right join、full outer join、union、union all的区别

对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Codin...

图解SQL inner join、left join、right join、full outer join、union、union all的区别

转于:http://justcoding.iteye.com/blog/2006487 这是一篇来自Coding Horror的文章。   SQL的Join语法有很多:有inner的...

SQL中的join的详细用法!inner join,full outer join,left join,right jion

-查询分析器中执行: --建表table1,table2: create table table1(id int,name varchar(10)) create table table2(id...

sql优化实战:把full join改为left join +union all(从5分钟降为10秒)

今天收到一个需求,要改写一个报表的逻辑,当改完之后,再次运行,发现运行超时。 因为特殊原因,无法访问客户的服务器,没办法查看sql的执行计划、没办法知道表中的索引情况,所以,尝试从语句的改写上来优化。...
  • yupeigu
  • yupeigu
  • 2016年12月09日 18:18
  • 955

Mysql----Join用法(Inner join,Left join,Right join, Cross join, Union模拟Full join)及---性能优化

前期数据准备 CREATE TABLE  atable( aID int( 1 ) AUTO_INCREMENT PRIMARY KEY , aNum char( 20 )); CREATE TA...

关于sql server中的 jion,inner join, left join ,left outer join, right join,right outer join 的几点使用心得

平时我们做关联,一般都是2~3张表,不太关注这样繁杂的写法,那今天咱们就看看这些写法吧 对将要说的这三种,先说一下要介绍的要点:on后面的条件可以放几个?什么时候结合着where条件一起使用? 大家可...

SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解

相信很多人在刚开始使用数据库的INNER JOIN、LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这三者的区别,希望对大...

SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解

相信很多人在刚开始使用数据库的INNER JOIN、LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这三者的区别,希望对大...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql server 各种查询语句详解left jion,right join,full join ,join,inner join ,union all,union等
举报原因:
原因补充:

(最多只允许输入30个字)