1. 程式人生 > >資料庫視訊總結(2)

資料庫視訊總結(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() 判斷它的輸入是不是一個數值

 

事務模式

自動提交事務

顯式事務

隱式事務

批處理級事務

 

 

死鎖

相互等待或者互斥