SQL基礎3 子查詢

2022-02-10 10:49:27 字數 4321 閱讀 5672

1 --執行插入語句返回剛剛生成的自動編號

2 insert into tblclass output inserted.clsid values('

大一一班

','11

',18)3

4 ------------case函式用法------------

5 --相當於switch 注意then後面的資料型別要一樣

6select * from

tblscore

7select

8tscoreid,

9tenglish,

10 評分=

11case

12 when tenglish>=95 then '優秀'

13 when tenglish>=90 then '良好'

14 when tenglish>80 then '優'

15 when tenglish is

null then '

101'

16else

'賈伯斯'17

end18

from

tblscore

1920 --等值判斷

21select

22tscoreid,

23tenglish,

24 評分=

25case

tenglish

26 when 95 then '優秀'

27 when 90 then '良好'

28 when 80 then '優'

29 when null then '

101'

30else

'賈伯斯'31

end32

from

tblscore

3334

3536 --聚集索引(聚簇索引):

37 -------當資料實際的儲存順序,與索引的順序一致就把該索引叫聚集索引

38 --非聚集索引(非聚簇索引)

39 -------當索引中資料的順序與,資料實際儲存的順序不一致的時候,該索引叫非聚集索引。

40 *****==非聚集索引**********===

41 --在表sales.salesperson中給salesquota, salesytd這兩列建立非聚集索引

42create nonclustered index ix_salesperson_salesquota_salesytd on sales.salesperson (salesquota, salesytd); go

43 ====建立唯一非聚集索引**********===

44create unique index ak_unitmeasure_name on production.unitmeasure(name); go

45 *****==建立聚集索引***************==

46 create table t1 (a int, b int, c as a/b);

47 --建立唯一的聚集索引

48 create unique clustered index idx1 on t1(c); insert into t1 values (1, 0

);49 --刪除索引

50drop index t8.ix_t8_tage

5152

5354 ----------------子查詢--------------------

55 --把乙個查詢結果作為另乙個查詢的查詢源

5657

select * from

58 (select fname,fage,fgender from

mystudent

59where fage between 18 and 24 and fgender='

女') as

tbl60

where fname like '趙%'

6162 --把另外乙個查詢的結果作為當前查詢的where條件來使用。

6364

65select * from tblstudent where tsclassid=

66 (select tclassid from tblclass where tclassname='

高二二班')

6768 ---exists-----

69 --如果exists包含了的查詢,能查到結果,就返回true,否則返回false

70if(exists(select * from tblstudent where tsid<>1

))71

begin

72 print '

有資料'

73end

74else

75begin

76 print '

無查詢結果'77

end78

7980 --查詢所有'

高二二班

'與'高二一班

'的學生的資訊

81 --子查詢中=、!=、<、<=、>、>=之後只能返回單個值,如果多個值就報錯了。

8283 --這個寫法是錯誤的

84select * from tblstudent where tsclassid=85(

86select tclassid from tblclass where tclassname='

高二二班

' or tclassname='

高二一班'87

)88 ---這個寫法是正確的

89select * from tblstudent where tsclassid in90(

91select tclassid from tblclass where tclassname='

高二二班

' or tclassname='

高二一班'92

)939495 ------------------分頁----------------

96 ------desc 降序排序從高到底 asc公升序排序(預設)

9798 -------第一種分頁----------------

99 -----每頁5條資料,找第二頁

100select top 5 * from tblstudent where tsid not in

101(

102select top((2-1)*5) tsid from

tblstudent order by tsid

103) order by tsid

104105 ---第二種分頁--

106select * from

107(

108select *, row_number() over(order by tsid) as number from

tblstudent

109 ) as

t110

where t.number between 6 and 10

111112

113114 --開窗函式與聚合函式一起使用,可以讓聚合函式對每一條資料都計算一次。

115select * ,count(*) over() as

'總條數

'from

tblstudent

116117

118 --------------連線join-----------------

119 --案例3:查詢學生姓名、年齡、班級及成績

120select

121 ts.tsname as

'學生姓名',

122 ts.tsage as'年齡

',123 tc.tclassname '班級'

,124 tb.tenglish '

英語成績',

125 tb.tmath '

數學成績

'126

127from tblstudent as

ts128 inner join tblscore as tb on ts.tsid=tb.tsid

129 inner join tblclass as tc on tc.tclassid=ts.tsclassid

130131

132 --請查詢出所有沒有參加考試(在成績表中不存在的學生)的學生的姓名。

133select

ts.tsname

134from tblstudent as

ts135 left join tblscore as tb on ts.tsid=tb.tsid

136where tb.tenglish is

null and tb.tmath is

null

SQL入門學習(3)子查詢

目錄 普通子查詢 返回乙個值的普通子查詢 返回一組值的普通子查詢 使用any 返回一組值的普通子查詢 使用all 相關子查詢 子查詢分為普通子查詢和相關子查詢。他們執行順序是不一樣的。執行順序 先執行子查詢,子查詢返回結果之後,再執行父查詢。例 查詢與 劉偉 老師職稱相同的教師號 姓名。select...

SQL多條件查詢子查詢SQL多條件查詢子查詢

多條件搜尋時where 1 1並不高效,如果使用這種方法,在資料庫中會做全表查詢 對每行資料都進行掃瞄比對 會無法使用索引等優化查詢的策略,建立的索引會暫時失效。case函式 case必須和end一起使用,下接when then select 數學成績 case when math 100 then...

mysql sql 子查詢語句 SQL子查詢

子查詢或內部查詢或巢狀查詢在另乙個sql查詢的查詢和嵌入式where子句中。子查詢用於返回將被用於在主查詢作為條件的資料,以進一步限制要檢索的資料。子查詢可以在select,insert,update使用,而且隨著運算子如delete語句 in,between 等.這裡有一些規則,子查詢必須遵循 子...