萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mssql數據庫 >> sql server投影查詢、選擇查詢

sql server投影查詢、選擇查詢

   --簡單查詢

  --投影查詢

  /*

  簡單查詢關鍵字說明:

  all :指定顯示所有的記錄,包括重復行。all是默認設置。

  distinct :指定顯示所有的記錄,但不包括重復行。

  top n [percent]:指定從結果中返回前n行,或者前n%的數據記錄

  * : 表示所有記錄

  */

  --選擇一個表中指定的列

  --查詢學生表中“姓名”,“年齡”

  select Sname , Sage from Student

  --查詢學生表中的所有記錄

  select * from Student --用*表示所有的列

  --查詢學生表中所有學生的姓名,去掉重復行

  select distinct Sname from Student

  /*

  用distinct關鍵字可以過濾掉查詢結果中重復行

  */

  --查詢學生表中前三行的記錄

  select top 3 * from Student

  /*

  用top n 可以指定查詢表中的前n行記錄

  */

  --查詢學生表中前50%的記錄

  select top 50 percent * from Student

  /*

  用top n percent可以指定查詢表中前n%的記錄

  */

  --修改查詢結果中的列標題

  /*

  修改查詢列名的常用方法

  方法一:在列表達式後面直接給出列名

  方法二:用as關鍵字來連接列表達式和指定的列名

  */

  --將查詢結果中的Sname給成“姓名”,Sno改成“學號”,Sage改成“年齡”

  --方法一:

  select Sno 學號,Sname 姓名,Sage 年齡 from Student

  --方法二:

  select Sno as 學號,Sname as 姓名,Sage as 年齡 from Student

  --計算列值

  select 100-Sage as 壽命 from Student

  --選擇查詢

  /*

  選擇查詢語法:

  select select_list from table_list

  where search_condition

  //其中有多種語句可以做為條件表達式

  分別是“關系表達式”、“邏輯表達式”、“between語句”、“in語句”、“like語句”、“is [not] null語句”、“復合語句”

  */

  --使用“關系表達式”做為查詢條件。。。。。。

  select * from SC

  --查詢所有成績大於等於90分的記錄

  select * from SC Student where Grade>=90

  --使用“邏輯表達式”做為查詢條件。。。。。。

  /*

  SQL 中的邏輯表達式:

  not :非

  and :與

  or :或

  */

  select * from Student

  --在學生表中查詢年齡是19歲的男學生

  select * from Student where Sage = 19 and Ssex = '男'

  --在學生表中查詢年齡是19或20歲的學生

  select * from Student where Sage = 19 or Sage = 20

  --在學生表中查詢年齡不是19歲的學生

  select * from Student where not Sage = 19

  --使用between關鍵之做為查詢條件。。。。。。。

  /*

  between 語法:

  表達式 [not] between 表達式1 and 表達式2

  使用between關鍵字可以方便的控制查詢結果數據的范圍

  注意使用between形成搜索范圍是一個“閉區間”

  */

  --查詢所有年齡"大於等於"18歲且"小於等於"20歲的學生

  select * from Student where Sage between 18 and 20

  --查詢所有年齡不在18到19歲之間的學生

  select * from Student where Sage not between 18 and 19

  --使用in(屬於)關鍵字做為條件表達式......。。。。。

  /*

  同between關鍵字一樣,in關鍵字的引入也是為了更加方便的限制檢索數據的范圍

  */

  /*

  in關鍵字的語法如下:

  表達式 [not] in (表達式1,表達式2,...)

  */

  select * from Student

  --查詢所有年齡為18和19歲的學生

  select * from Student where Sage in (18,19)

  --使用like關鍵字語句做為條件語句。。。。。。

  /*

  like 關鍵字搜索與指定模式匹配的字符串

  */

  /*

  通配符介紹:

  % :包括零個或多個字符的任意字符串

  _ : 任何單個字符

  []: 代表指定范圍內的單個字符,[]中可以是單個字符(如[acef]),也可以是字符范圍(如[a-f])

  [^]: 表示不在指定范圍內的單個字符,[^]中可以是單個字符(如[^abef]),也可以是字符范圍[^a-f]

  */

  /*

  通配符的示例

  like 'AB%' 返回以AB開始的任意字符串

  like 'Ab%' 返回Ab開始的任意字符串

  like '%abc'返回以abc結尾的任意字符串

  like '%abc%'返回包含abc的任意字符串

  like '_ab'返回以ab結尾的任意三個字符的字符串

  like '[ACK]%'返回以A、C或K開始的任意字符串

  like '[A-T]ing' 返回四個字符的字符串,以ing結尾,其首字母的范圍是A到T

  like 'M[^c]%' 返回以M開始且第二個字符不是c的任意長度的字符串

  */

  select * from Student

  --查詢所有姓王的學生

  select * from Student where Sname like '王%'

  insert into Student(Sno,Sname,Sage,Ssex,Sdept)

  values ('008','張四',20,'男','sc')

  --查詢所有名字中帶四字的學生

  select * from Student where Sname like '%四%'

  //

  --使用isnull(是否<不>為空)查詢。。。。。。

  /*

  說明:在where語句中不能使用比較運算符來進行控制判斷,只能使用空值表達式來判斷某個表達式是否為空值

  語法如下:

  表達式 is null

  或

  表達式 is not null

  */

  --查詢所有學生姓名為空的學生。。。。。。。。。

  select * from Student where Sname is not null

  --使用復合條件查詢。。。。。。。。。。。。。。

  /*

  使用復合語句的時候需要使用邏輯運算符把多個條件語句合並

  and

  or

  not

  每個單獨的條件語句可以使用()小括號括起來

  */

  //聚合函數(求記錄數據的處理結果)

  --聚合函數 (求記錄數據的處理結果)

  /*

  聚合函數是在SQL Server 中已經定義好了的一些列函數

  注意:這些函數處理的是一個數據集合,而不是一行單獨的記錄

  */

  /*

  sum()返回一個數字列或計算列的總和

  avg()返回一盒數字列或計算列的平均值

  min()返回最小值

  max()返回最大值

  count() 返回一個數據列中數據項數

  count(*) 返回找到的行數

  */

  select * from SC

  --求SC表中成績的平均值

  select AVG(Grade ) as 成績平均值 from SC

  --求SC表中成績的總和

  select sum(Grade ) as 成績平均值 from SC

  --求SC表中的項數

  select count(Grade ) as 記錄條數 from SC

  select COUNT(*) as 記錄條數 from SC

copyright © 萬盛學電腦網 all rights reserved