--簡單查詢
--投影查詢
/*
簡單查詢關鍵字說明:
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