SQL Server 数据库学习笔记
2022-11-12 09:46:37
内容摘要
这篇文章主要为大家详细介绍了SQL Server 数据库学习笔记,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!1,exists和in的理解(参考//www.512
文章正文
这篇文章主要为大家详细介绍了SQL Server 数据库学习笔记,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
1,exists和in的理解(参考//www.512pic.com/article/28922.htm)exists:如果子查询中包括某一行,那么就为TRUEin:如果操作数为TRUE等于表达式列表中的一个,那么就为TRUEexists总是搞得不太明白select 。。。from。。。where 。。。where就相当于一个判断条件,只有where后面的表达式运算结果为TRUE,前面的才能select出来EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False1: SELECT c.CustomerId, CompanyName 2: FROM Customers c 3: WHERE EXISTS( 4: SELECT OrderID FROM Orders o 5: WHERE o.CustomerID = cu.CustomerID)像这样的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,对所有行汇总注:关于SQL Server 数据库学习笔记的内容就先介绍到这里,更多相关文章的可以留意
代码注释