練習1 eg:
有一張表T_Scores,記錄比賽成績
Date Name Score
2008-8-8 拜仁 勝
2008-8-9 奇才 勝
2008-8-9 湖人 勝
2008-8-10 拜仁 負
2008-8-8 拜仁 負
2008-8-12 奇才 勝
要求輸出下面的格式 <注:在中文字符串前面加N,比如N‘勝’>
Name 勝 負
拜仁 1 2
湖人 1 0
奇才 2 0
代碼:1:
<一步一步慢慢實現>
select Name,
(
case Score
when N'勝' then 1
else 0
end
)as 勝,
(
case Score
when N'負' then 1
else 0
end
) as 負
from Scores
代碼:2
select Name,
SUM(
case Score
when N'勝' then 1
else 0
end
)as 勝,
SUM(
case Score
when N'負'then 1
else 0
end
)as 負
from Scores
group by Name
<實現要求的輸出,如上面的代碼2所示。>
全表掃描:對數據進行檢索(select)效率最差的是全表掃描,一條條的找。
**目錄就是索引。
**創建索引的方式
----表—右鍵--創建索引---添加--在列中選擇索引包含的列--確定。
**使用索引能提高查詢效率但是其占空間,而且添加,更新,刪除數據時需要同步索引,因此
會降低速度。只在經常檢索的字段上面創建索引。
(*)即使創建了索引,有時也需要全表掃描,比如like,函數,類型轉換等。
表連接 <join>
Join用法:
主要有Inner Join 及 Outer Join:
最常用的(默認是Inner):
Select <要選擇的字段> From <主要資料表>
<Join 方式> <次要資料表> [On <Join 規則>]
Inner Join 的主要精神就是 exclusive , 叫它做排他性吧! 就是講 Join 規則不相符的資料就會被排除掉, 譬如講在 PRoduct 中有一項產品的供貨商代碼 (SupplierId), 沒有出現在 Suppliers 資料表中, 那么這筆記錄便會被排除掉
Outer Join:
Select <要查詢的字段> From <Left 資料表>
<Left | Right> [Outer] Join <Right 資料表> On <Join 規則>
語法中的 Outer 是可以省略的, 例如你可以用 Left Join 或是 Right Join, 在本質上, Outer Join 是 inclusive, 叫它做包容性吧! 不同于 Inner Join 的排他性, 因此在 Left Outer Join 的查詢結果會包含所有 Left 資料表的資料, 顛倒過來講, Right Outer Join 的查詢就會包含所有 Right 資料表的資料
子查詢
將一個查詢語句作為一個結果集供其他SQL語句使用,就像使用普通的表一樣,被當作結果集的查詢語句被稱為子查詢. <可以使用表的地方都可以使用子查詢來代替>
select * from
(select * from Student where Age>20)
as 姓名
<只有返回且僅返回一行,一列數據的子查詢才能當成單值子查詢>
select rom_number() over( order by Age DESC) as romnum
Name,Age,Chinese,Math from Student
<rom_number>不能應用在Where語句的查詢中。
********這一階段的數據庫看完了,自己也掌握了很多的數據庫的查詢,建表,更新,刪除等語句,下面應該就是ADO.NET的學習,這個就是要把vs和數據庫連接起來,實現二者的互動。自己對于數據庫的理解還只是處于初級階段,還有更多的知識等著我去學習,不敢在放肆的玩了,要加油,為了我更早的成為大神。
新聞熱點
疑難解答