SQLServer数据库学习笔记
1,exists和in的理解(参考/article/)
exists:如果子查询中包括某一行,那么就为TRUE
in:如果操作数为TRUE等于表达式列表中的一个,那么就为TRUE
exists总是搞得不太明白
select 。。。from。。。where 。。。
where就相当于一个判断条件,只有where后面的表达式运算结果为TRUE,前面的才能select出来
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
1: SELECT omerId, CompanyName 2: FROM Customers c 3: WHERE EXISTS( 4: SELECT OrderID FROM Orders o 5: WHERE omerID = omerID)
像这样的EXISTS子查询中的SELECT什么根本不重要,因为子查询只是检查这个表中有没有满足WHERE后条件的行, 有就返回TRUE,没有就FALSE,所以很多EXISTS后都是SELECT的*
一行行的去判定,EXISTS返回的是TRUE,就是存在,则把这行的相关信息输出
1: select distinct 姓名 from xs 2: where not exists ( 3: select * from kc 4: where not exists ( 5: select * from xs_kc 6: where 学号=xs.学号 and 课程号=kc.课程号 )
分析下上面的查询语句:
把最外层的xs表里的记录一行一行的同中层一行一的笛卡尔乘积后拿到里面去检验
在最里层,如果xs_kc表里的某行有拿来检验的这行的学号,同时有中层拿来检验的.课程号
就返回TRUE,说明这个这个学生选了这门课
中层如果某门课程没有收到返回的TRUE信息,说明这个名字和课程的搭配在xs_kc表中没有,或者说中层select出来的是没有被这个学生选择的课程信息,如果有这样的课程,就向最外层返回个TRUE
最外层在返回信息上加了not,即最外层找的是这样的一种学生:
他选择了所有的课程
最外层一行行的去检测,如果他满足这个条件,就输出他的姓名且只输出一次
我这是一层层的分析,还有么有什么别的办法?
2,select。。。into @。。。
和select @。。。 = 。。。应该是相同的吧
3,用AS为列重命名似乎比=更好点,和赋值区分开
4,用compute汇总的时候,如果是根据某列汇总的,先要order by此列,然后在compute相应信息,最后by此列
group或者compute的时候,如果by了某列,select里都要出现相同的列
区别是group的聚合函数在select行中(称为选择列表),而compute的聚合函数在compute行中,同时compute可以不带by,对所有行汇总
-
w7系统的本地连接在哪
本地连接是指电脑中不同网络创建的链接,当创建家庭或小型办公网络时,运行Windows的计算机将连接到局域网(LAN)本文是小编精心编辑的w7系统的本地连接在哪,希望能帮助到你!w7系统的'本地连接在哪win7系统中的本地连接相比XP隐藏的深一些,那我们怎么快速把他找出来了...
-
电力系统岗前培训总结
岗前培训是公司为员工准备的手段,那么关于岗前培训总结应该要怎么写呢?下面是小编为大家搜集整理出来的有关于电力系统岗前培训总结,希望可以帮助到大家!电力系统岗前培训总结【1】为期xx天的xx新员工岗前培训已经结束了,但我的心久久不能平静。回想起局领导在开班...
-
四轮转向系统图解
不知道大家有没有想过这样一个问题,汽车转向轮为什么是前轮?为什么不是后轮或者四轮?当然,工程师们早就想到这个问题了!并且早在一个世纪以前就已经成功研制出了四轮转向技术。四轮转向系统图解考德威尔谷卡车和客车公司是一个澳大利亚的汽车制造商,该公司早在1907年...
-
酒店门锁系统图解
导语:积极的人在每一次忧患中都看到一个机会,而消极的人则在每个机会中都看到某种忧患。以下小编为大家介绍酒店门锁系统图解文章,欢迎大家阅读参考!酒店门锁系统图解酒店智能门锁系统——酒店智能门锁系统简介酒店智能门锁系统是电子锁的其中一部分系列产品,他与...