資料庫視訊總結(2)
第四章 SQL Server 2008資料表管理
欄位的資料型別
整數
Bigint、int、smallint、tinyint
小數
decimal、numeric
貨幣
money、smallmoney
浮點型
float、real
二進位制
Bit
字元資料型別
Char()後面跟長度
Nchar
Varchar
Text
nvarchar
ntext
日期和時間資料型別
Datetime:儲存日期從1753年到9999年,時間精度為3.33毫秒
smalldatetime:儲存日期從1900到2079,時間精度為1分鐘
二進位制資料型別
binary、varbinary與char、varchar差別相同
image:儲存影象資訊
建立表
Create table table_name
(
<column_definition>|<table_constraint>|column_name
列名 資料型別 表名
as computed_column_expression
on filegroup |default
檔案組
textimage on filegroup|default
)
臨時表
本地臨時表:以#打頭,僅對當前的使用者連線可見,當用戶斷開連線時自動被刪除
全域性臨時表:以兩個數字符號##打頭,建立後對任何使用者都是可見的,當用戶斷開連線時自動被刪除
(一個使用者就是一個新建查詢)
修改表
Exec sp_rename'表名'
修改列
Alter table 列名
設定列內具體資訊
Alter column
刪除列
Drop 列名
使用者自定義資料型別
必須包括的三個引數:
資料型別的名稱
所基於的系統資料型別
資料型別的可空性
使用規則
一個列只能使用一個規則,但是一個規則可以應用於多列。
一個列可以使用多個check約束,但是一個約束只能應用於一個列
Create rule rule_name
規則名
As
Condition_expression
取值表示式
第五章 操作架構、索引和檢視
建立檢視(檢視某列,進行儲存)
Create view view_name(view_column_name)
檢視名 列名
As query_expression
With check option
修改和刪除檢視
Alter view <view_name><column name list>
As
<select statement>
[With check option]
檢視修改資料
注意事項
Select列表中含有DISTINCT
select列表中含有表示式,如計算列、函式
在FROM子句中引用多個表
引用不可更新的檢視
Group by或者having子句
只能在視圖裡含有的資料進行修改
索引
是一個單獨的物理的資料結構,是某個表中的一列或者若干列的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單表的儲存由兩部分組成,一部分用來存放表的資料頁面,另一部分存放索引頁面。
索引一旦建立,將由資料庫維護和自動管理
優點:
1.保證資料記錄的唯一性
2.加快資料檢索速度(最重要優點)
3.加快表與表之間的連線速度
4.在使用order by和group by子句中進行檢索資料時,減少時間。
5.在檢索資料的過程中使用優化隱藏器,提高系統性能
建立索引
Create
[unique] [clustered][nonclustered]
微型索引 聚集索引 非聚集索引
Index index_name
On
Table_name(column_name)|view_name
一個表可以建立一個聚集索引和多個非聚集索引
刪除索引
Drop index_表名.索引名
全文索引
使用原因:檔案特別大的話,就使用
建立架構
Create schema schema_name_clause [架構許可權]
Authorization owner_name
架構所有者
架構可以賦予架構所有者許可權
聚集索引和非聚集索引
聚集索引:確定表中資料的物理資料,用物理資料來排列資料。
何時使用聚集索引?
1.含有大量非重複的列
2.使用between,>,>=,<,<=返回一個範圍值的列
3.被連續訪問的列
4.返回大型結果集的查詢
5.經常被使用連線或group by子句的查詢訪問的列
非聚集索引:資料儲存在一個位置,索引儲存在另一個位置,索引的專案按索引值的順序儲存,表中的資訊可以不用順序儲存
非聚集索引與聚集索引具有相同的B-Tree結構,但是有重大區別
1.資料行不按非聚集索引鍵的順序排序和儲存
2.非聚集索引的頁層不包含資料頁,相反葉節點包含索引行。
第六章 資料查詢和管理
Select語法格式
Select [all|distinct] select list as 指定列名
消除重複列 列名
From table_source
表名
Where search_conditions
條件
Group by group_by_expression
進行分組進行查詢
Having search_conditions
進行判斷
Order by order_expression
進行排序
排序
Order by 列名 desc/asc
降序 升序
分組
Group by
按照規則分類彙總,進行合併。
Rollup 多出一行平均值
使用函式
Select Top 3 列名 表示前三行資訊
使用having子句
Having 聚合函式+條件
插入資料
Insert [into] table_or_view[(column_list)] values data_values
資料值
Insert select語法格式
Insert table_name(column_list)
表名 (無資料) 列名
Select column_list
From table_list
其他表名(有資料)
Where search_condirions
條件
Select into語句語法
Select<select_list>
需要檢視的列
Into new_table
From<table_source>
Where<search_condition>
Select into與insert select區別
Select Into 是新建一個表不是在原有的表上插入資料
Update語句
Update [top] table_name|view_name
行數
set
Column_name[=expression]
Where [search_conditions]
update語句中使用from子句
delete語句
Delete from table_name
Where search_condition
Top關鍵字和top表示式
Top (expression)[percent]
With ties(如果資料相等,但是大於了相應的百分比,也可以加入進來)
compute子句
Compute
Avg|count|max|min|stdev|stdevp|var|varp|sum
Expression
By expression
第七章 操作查詢
基本連線
內連線
Select select_list
From table1 [inner] join table2 [on join_conditions]
條件
內連線實現效果是一樣的,只是表達形式不同
外連線
返回from子句中提到的至少一個表或者檢視的所有行,只要符合這些行的搜尋條件。
全連線包括左外連線和右外連線
交叉連線
不帶where子句時,返回的是被連線的兩個表所有資料行的笛卡兒積
語法格式
Select select_list
From table1 cross join table2
Where search_conditions
Order by order_expression
聯合查詢
兩個select語句中間用union [all]
有all的話就會把重複的項儲存。
使用子查詢
子查詢是一種常用計算機語言SELECT-SQL語言中巢狀查詢下層的程式模組。當一個查詢是另一個查詢的條件時,稱之為子查詢。
xml查詢
XML是可擴充套件標記語言
是 英文 eXtensible Markup Language 的簡寫
用來傳輸和儲存資料。
For xml子句
能將查詢出的資料轉換成xml格式的資料.
exists關鍵字查詢
判斷子查詢是否有結果
交查詢
兩個select語句中間用intersect
差查詢
兩個select語句中間用except
在一個結果集的基礎上去除第二個結果集上相同的資料
第八章 Transact-SQL程式設計
Transact-SQL
分為三種基本型別
資料定義語言:drop、alter表
資料操縱語言:對資料進行增刪改查
資料控制語言:安全性進行控制
常量與變數
Declare
@local_variable [as] 資料型別
變數名
給宣告的區域性變數賦值
Set @local_variable=expression
Select @local_variable=expression
if條件語句
If Boolean_expression
Else
Case語句
Case input_expression
When when_expression Then result_expression
Else else_expression
End
while語句
While Boolean_expression
Break
跳出整個迴圈
Continue
跳出本次迴圈
waitfor延遲語句
Waitfor
{
Delay time
Time time
}
Try catch錯誤處理語句
Begin try
{}
End try
Begin catch
{}
End catch
數學函式
ABS返回數值表示式絕對值
ceiling返回大於或等於數值表示式的最小整數
floor返回小於或等於數值表示式的最大整數
sing返回表示式的正號、負號或零
square返回表示式平方
sqrt返回表示式平方根
字串函式
日期和時間函式
標量值函式
宣告函式
Create function function_name
Returns scalar_return_data_type
as
Begin
Function_body
Return scalar_expression
End
表值函式
宣告函式
Create function function_name
Returns table
As
return
表值函式與標量值函式不同
表值函式返回的是一張表結果,就和一個select查詢語句一樣,只不過裡面帶入了引數或者很複雜;
標量值函式返回的只是一個值
遊標的宣告
Declare coursor_name [insensitive] [scroll] cursor
使更新不受影響 可以跳躍提取
For select_statement
For {read only|update }
只讀 可修改
釋放遊標
Deallocate coursor_name
操作遊標
步驟
開啟遊標
Open 遊標名稱
檢索遊標
Fetch
[next|prior|first|last|absolute]
檢索標識 指定行
From 遊標名
Into
賦值給
關閉遊標
close
釋放遊標
Deallocate
判斷遊標提取狀態
0 fetch語句成功
-1 fetch語句失敗或者行不在結果集中
-2 提取的行不存在
事務
Begin transaction 開始事務
Commit transaction 提取
Rollback transaction 回滾
Save trasaction 挽救
鎖
就是一個事務向系統提出請求,對被操作的資料加鎖,其他事務必須等到此事務解鎖之後才能訪問該資料。
共享鎖:用於讀操作
獨佔鎖:用於寫操作
更新鎖:
系統與原資料函式
Convert() 將一種資料型別的資料轉換成另一種資料型別的資料
Current user 返回當前使用者的名稱
Isdate() 判斷它的輸入是不是一個有效的日期
Isnull() 用一個指定替換值替換任何空值
Isnumeric() 判斷它的輸入是不是一個數值
事務模式
自動提交事務
顯式事務
隱式事務
批處理級事務
死鎖
相互等待或者互斥