国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

sqlserver 數據庫學習筆記

2024-08-31 00:45:28
字體:
來源:轉載
供稿:網友
1,exists和in的理解(參考)

exists:如果子查詢中包括某一行,那么就為TRUE

in:如果操作數為TRUE等于表達式列表中的一個,那么就為TRUE

exists總是搞得不太明白

select 。。。from。。。where 。。。

where就相當于一個判斷條件,只有where后面的表達式運算結果為TRUE,前面的才能select出來

EXISTS用于檢查子查詢是否至少會返回一行數據,該子查詢實際上并不返回任何數據,而是返回值True或False

1: 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,對所有行匯總
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雷州市| 滦平县| 民和| 迁安市| 五华县| 宁晋县| 新乡县| 遂宁市| 资兴市| 蒙城县| 盈江县| 顺义区| 德安县| 漳浦县| 威海市| 辽宁省| 镇原县| 大兴区| 乐至县| 青海省| 长顺县| 高陵县| 堆龙德庆县| 抚州市| 阿拉善右旗| 桐庐县| 乐亭县| 海盐县| 株洲市| 江华| 新竹市| 固镇县| 济南市| 临泽县| 镇赉县| 安丘市| 南通市| 泰顺县| 阿城市| 洛隆县| 濉溪县|