一、SQL Server體系結(jié)構(gòu)
1.1 數(shù)據(jù)庫的物理布局
數(shù)據(jù)庫在物理上由數(shù)據(jù)文件和事務日志文件組成,每個數(shù)據(jù)庫必須至少有一個數(shù)據(jù)文件和一個日志文件。
(1)數(shù)據(jù)文件用于保存數(shù)據(jù)庫對象數(shù)據(jù)。數(shù)據(jù)庫必須至少有一個主文件組(Primary),而用戶定義的文件組則是可選的。Primary文件組包括 主數(shù)據(jù)文件(.mdf),以及數(shù)據(jù)庫的系統(tǒng)目錄(catalog)??梢赃x擇性地為Primary增加多個輔助數(shù)據(jù)文件(.ndf)。用戶定義的文件組只能包含輔助數(shù)據(jù)文件。
(2)日志文件則用于保存SQL Server為了維護事務而需要的信息。雖然SQL Server可以同時寫多個數(shù)據(jù)文件,但同一時刻只能以順序方式寫一個日志文件。
.mdf、.ldf和.ndf
.mdf代表Master Data File,.ldf代表Log Data File,而.ndf代表Not Master Data File(非主數(shù)據(jù)文件)
1.2 架構(gòu)(Schema)和對象
一個數(shù)據(jù)庫包含多個架構(gòu),而每個架構(gòu)又包括多個對象??梢詫⒓軜?gòu)看作是各種對象的容器,這些對象可以是表(table)、視圖(view)、存儲過程(stored procedure)等等。
此外,架構(gòu)也是一個命名空間,用作對象名稱的前綴。例如,架設在架構(gòu)Sales中有一個Orders表,架構(gòu)限定的對象名稱是Sales.Orders。如果在引用對象時省略架構(gòu)名稱,SQL Server將采用一定的辦法來分析出架構(gòu)名稱是什么。如果不顯示指定架構(gòu),那么在解析對象名稱時,就會要付出一些沒有意義的額外代價。因此,建議都加上架構(gòu)名稱。
二、查詢
2.1 單表查詢
(1)關(guān)于SELECT子句:使用*號是糟糕的習慣
<