sql知識整理(1)

2022-08-23 22:06:07 字數 2527 閱讀 3271

儲存過程概念,優點

what:儲存過程是資料庫物件,用於儲存用t-sql編寫的程式

why:1)更好的效能。因為sqlserver在它第一次執行時就生成並快取了儲存過程的執行計畫。

2)更好的維護和訪問。它集中在乙個地方,能夠使三層架構的實現更加簡單(儲存過程將組成資料層)

3)安全。sqlserver可以為每乙個儲存過程設定不同的安全許可;而在c#**中建立的sql查詢,更容易受到sql注入攻擊

檢視what:是虛擬表,實際是一組查詢,而不是物理存在的資料表。所以檢視巢狀或和檢視聯接使用可能會造成效能瓶頸

why:1)增加**重用。特別是聯接查詢會很方便

2)可以對不同的檢視賦予不同的許可權

檢視是一組查詢,因此比起普通查詢沒有效能優勢,主要是為了**復用

檢視不能索引,也不能有關聯的觸發器或預設值

許多dbms禁止在檢視查詢中使用order by子句

有的dbms要求命名返回所有列,如果列是計算字段,則需要使用別名

有的dbms把檢視視為唯讀的查詢,這表示可以從檢視檢索資料,但不能將資料寫回底層表

索引概念,優點

what 索引

索引是一種特殊的資料庫物件,用來提高資料庫操作的整體速度。它通過維護特殊的資料結構來對映已索引表的內容,這將大大加速該錶的查詢操作

why 索引以及它的弊端

優點:

索引將能夠提高從表中讀取資料的速度,

缺點:

1)但會降低插入,刪除,更新操作的速度,因為使用這些操作,資料伺服器不僅需要修改該錶,還要修改索引建立的額外的資料結構。在實際的應用程式中,絕大多數的資料庫操作都是讀取操作,因此使用索引將會明顯提高效能

2)占用空間多一些

在乙個表中可以建立多個索引,每個索引可以包含乙個或多個列。當乙個表按某個列建立了索引後,不是行被索引,就是根據該列的值和索引型別被物理索引

對於索引,應該注意以下內容:

unique和primary key的異同

共同點

1)都用來確保資料資料的唯一性

2)unique和primary key都會自動建立索引

不同:1)不同於主鍵,unique不能應用於多字段

2)每個資料表可以有多個unique約束

3)unique允許null值,但只允許乙個null值

。.net和sql server中「空值」辨析

初學資料庫程式設計我們可能會有一些對「空值」的疑問,比如通過程式設計新建的乙個表中所有資料皆顯示為,手動新增並刪除文字後又 變成了空白;乙個字串型別的字段,明明沒有填值,卻不等於"";用ado.net從資料庫中取值,每遇到有的就出錯……這需要 我們正確認識.net和sql server中幾種不同的「空值」。

1、真正的空值,也就是「沒有輸入的值」,可以出現在大多數型別的字段中(如果沒有別的約束條件),sql server中表示為null,顯示為,手工在sql server企業管理器中輸入的方法是按ctrl+0。它在.net中對應system.dbnull.value。在t-sql命令中,判斷乙個值是不 是空值,要用「is null」而不是「= null」;處理空值有個isnull函式,它使用指定的值替換null。用ado.net從資料庫得到的空值無法自動轉化為空字串或nothing, 須手動檢測:如果得到system.dbnull.value,則賦給資料物件nothing或其它自定義的有意義的值。

2、空字串(零長度字串),只出現在字串型別(如nvarchar)的字段中,sql server中表示為''",顯示為空白,手工在sql server企業管理器中輸入時清空乙個單元格即可。它在.net中對應system.string.empty,也就是我們常用的""。在t-sql命 令中處理空字串和處理一般的字串沒什麼區別。用ado.net從資料庫得到的空字串也和一般的字串沒什麼區別。

相關的概念還有vb.net中的nothing和對應於c#.net中的null(注意這個null是c#.net中的null而非sql server中null),它們在.net中是表示不引用任何物件的空引用的值,在傳入sql server時,根據不同的上下文環境,可能存為真正的空值(比如在更新乙個字串型別的字段值時),也可能呼叫在sql server中自定義的預設值(比如傳給乙個有預設值的儲存過程引數),也可能因為無法進行型別轉換而引發.net異常。因此在用ado.net向sql server中儲存資料時要慎用nothing。

null表示「未定義」或「沒有任何輸入」,與空字串(零長度字串)是兩個不同的概念。在t-sql中用is null來判斷,在.net中用dbnull.value來判斷

寫一條sql查詢語句將表中年齡為空的值更新為25。不使用(update)

select isnull(age, 25)

SQL知識整理

select top 子句用於規定要返回的記錄的數目。select top 子句對於擁有數千條記錄的大型表來說,是非常有用的。select top number percent column name s from table name like 操作符用於在 where 子句中搜尋列中的指定模式。...

知識整理1

c 的深拷貝和淺拷貝 淺拷貝也叫位拷貝 bitwise assignment 意思就是將乙個物件的記憶體映像按位原封不動的複製給另乙個物件。如果欄位是值型別的,則對該字段執行逐位複製 如果欄位是引用型別,則複製引用但不複製引用的物件。如果改變目標物件中引用型字段的值他將反映在原是物件中,也就是說原始...

SQL語句整理1

case 的用法,以及as select case regtype when 1then 月卡 when 0then 周卡 when 2then 季度卡 when 3then 年卡 else 未知卡型別 endas 卡型別 from sl register info left join用法 left...