设为首页 收藏本站
查看: 772|回复: 0

[经验分享] SQL Server 2012

[复制链接]

尚未签到

发表于 2017-7-14 07:35:02 | 显示全部楼层 |阅读模式
-- 交叉连接产生笛卡尔值 (X*Y)
SELECT  *
FROM    Student
cross Join dbo.ClassInfo  
--另外一种写法
SELECT  *
FROM    Student , ClassInfo  
-- 内连接 (Inner 可以省略)
SELECT  *
FROM    Student
JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID;
-- Inner Join
SELECT  *
FROM    Student
INNER  JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID;
-- on 条件,通常是 主外键,但是不限于主外键
-- on 条件,允许有多个,而且可能是针对某个表的
SELECT  *
FROM    Student
INNER  JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID
AND dbo.Student.Class IN (1,2)  -- 针对Student表增加查询条件
-- 不等于 (笛卡尔值减去 相等的值)
SELECT  *
FROM    Student
INNER  JOIN dbo.ClassInfo ON dbo.Student.Class <> dbo.ClassInfo.ID;
--自连接  从Class表中查询到Class所在的系
SELECT T1.* ,T2.ClassName FROM dbo.ClassInfo AS T1
INNER JOIN dbo.ClassInfo AS T2 ON T1.PID=T2.ID
-- Left Join
SELECT  *
FROM    Student
Left  JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID;
-- Right Join
SELECT  *
FROM    Student
RIGHT   JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID;
-- 全外连接
SELECT  *
FROM    Student
FULL OUTER  JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID;
-- 外连接和内连接的区别是:
-- 内连接,on条件不符合的话,会过滤掉数据
-- 外连接,以保留表为主,on条件成立显示数据,否则显示NULL
--Union 纵向连接
SELECT  StuID,StuName,StuEnName,StuAge,StuBirthday
FROM    Student WHERE StuID<=2
UNION
SELECT StuID,StuName,StuEnName,StuAge,StuBirthday
FROM dbo.Student WHERE StuID>2
--Union 去重复
SELECT  StuSex
FROM    Student WHERE StuID<=2
UNION
SELECT StuSex
FROM dbo.Student WHERE StuID>2
--Union 显示全部
SELECT  StuSex
FROM    Student WHERE StuID<=2
UNION ALL
SELECT StuSex
FROM dbo.Student WHERE StuID>2
--Except 差集,排除
SELECT  StuID,StuName,StuEnName,StuAge,StuBirthday
FROM    Student
Except
SELECT StuID,StuName,StuEnName,StuAge,StuBirthday
FROM dbo.Student WHERE StuID<=2
--Intersect 交集
SELECT  StuID,StuName,StuEnName,StuAge,StuBirthday
FROM    Student  WHERE StuID>=2
Except
SELECT StuID,StuName,StuEnName,StuAge,StuBirthday
FROM dbo.Student WHERE StuID<=3

  Union纵向查询的几个说明:



--Union
--1,列的数目必须相同,对于没有的列,可以给默认的值,如NULL
SELECT StuID,StuName,StuSex,Class,Height FROM dbo.Student WHERE StuID<2
UNION
SELECT  StuID,StuName,StuSex,Class,180 AS Height  FROM dbo.Student WHERE StuID=2
UNION
SELECT  StuID,StuName,StuSex,Class,NULL  FROM dbo.Student WHERE StuID>2
--2,查询结果呈现的列名称是以第一列为准,如下面学生身高StuHeight
SELECT StuID,StuName,StuSex,Class,Height AS StuHeight FROM dbo.Student WHERE StuID<2
UNION
SELECT  StuID,StuName,StuSex,Class,180 AS Height  FROM dbo.Student WHERE StuID=2
UNION
SELECT  StuID,StuName,StuSex,Class,NULL AS hei FROM dbo.Student WHERE StuID>2
--3, 纵向对应的列的数据类型之间可以相互转换,如下 StuID和Height之间可以转换,可以纵向连接
SELECT StuID,StuName,StuSex,Class,Height AS StuHeight FROM dbo.Student WHERE StuID<2
UNION
SELECT  Height,StuName,StuSex,Class,NULL AS hei FROM dbo.Student WHERE StuID>2
--4,对Union的查询结果进行排序,Order 写在最后
SELECT StuID,StuName,StuSex,Class,Height AS StuHeight FROM dbo.Student WHERE StuID<2
UNION
SELECT  StuID,StuName,StuSex,Class,180 AS Height  FROM dbo.Student WHERE StuID=2
UNION
SELECT  StuID,StuName,StuSex,Class,NULL AS hei FROM dbo.Student WHERE StuID>2
ORDER BY Class

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393651-1-1.html 上篇帖子: SQL Server中JOIN的用法 下篇帖子: SQL Server中存储过程的创建命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表