黑馬程式設計師-------SQLServer資料庫基礎知識
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、
<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------
一、什麼是資料庫?
1、廣義:資料庫(Database)按一定順序分類存放資料的倉庫;
2、狹義:資料庫管理系統(Database Management System):例如DB2(大型資料庫)、Oracle
3、資料庫管理員(DBA)database administrator
4、SQL(語言)、MSSQLServer與SQLServer
SQL是一門專門為資料庫設計的結構化查詢語言(Structrued Query Lanager
而SQLServer與MSSQLServer是不同的資料庫管理軟體。
SQLServer:
MSSQLServer:微軟Sqlserver。
二、DBMS簡介
(1)Windows身份驗證與Sqlserver身份驗證
Windows身份驗證是“信任連線”根據登入到作業系統的使用者的許可權來進行身份驗證,而遠端是無法連線到的,因此比較安全。
而sqlserver身份驗證是“不信任連線”是根據判斷使用者名稱和密碼,而通過遠端只要是輸入正確的使用者名稱和密碼就可以訪問資料庫了。
(2)資料庫的組成:
不同型別的資料應放到不同的資料庫中。我們所說的關係型資料庫中所謂的“關係”指的就是表。
1、表:每一個數據庫都可以由一個或多個表組成。
1)表中的每一行資料稱為一個記錄。
2)表中的每一列稱為一個欄位或列。
物件關係模型:每一個表代表一個類,每一條完整記錄代表類的例項,每一列代表類的欄位。
2、表中的主鍵(PrimaryKey):資料行的唯一標識(不重複的列才能當主鍵)(表都設定主鍵被稱為第一正規化)
主鍵的使用策略:
業務主鍵:主鍵裡的資料與整條記錄的資料地位相同,就是有業務意義的主鍵,即使主鍵,又是記錄裡的一個成員。
邏輯主鍵:沒有實際意義的數字,單獨設定的一列,專門用來唯一標示資料,不與表中的記錄有任何關係。(為保證資料唯一,推薦使用業務主鍵)
聯合主鍵:把表中的兩個欄位的成員聯合起來設定成的主鍵。
3、表間關聯、外來鍵
為了防止表的資料冗餘,可以使用外來鍵。(相對而言,如果一個表有一列資料,這列資料恰好是另一個表的主鍵,則稱為外來鍵。
4、資料庫的完整性
資料庫的完整性是指資料邏輯上的一致性和準確性。
約束:為了防止資料的亂修改,賦值等等一系列的操作,而形成的約束。
1、非空約束:主鍵約束(PK)primary key唯一且不為空
2、唯一約束:(UK)unkque constraint唯一,可以出現一次空
3、預設約束:(DF)default constraint 預設值
4、檢查約束:(CK)check constraint範圍及格式限制
5、外來鍵約束:(FK)foreign key引用表關係的約束
(1)實體完整性:每一條記錄或每一行的完整性
實體完整性的實現:設定主鍵(primary key)或者設定unique屬性或者identity來唯一標識每一行資料。
Primary Key :每一個表中,只能有一個主鍵,但是,可以由一個欄位或多個欄位的值來定義。並且,該列不能出現NULL。
Unique:每一個表中,可以有多個定義為unique的列,可以出現一次NULL值。
Identity:設定自動標識列,不用為該欄位賦值,每次由該欄位自動按照定義的值來一次增加,只需設定初始值和自動增長值即可。
(2)域完整性:每一列的完整性(每一列的有效性)
域完整性的實現:限制資料型別、格式和取值範圍(check、default、not null)等。
資料型別:只能資料指定的資料型別的資料。
Check:檢查資料是否符合標準。
Default :如果沒有為該欄位賦值,則自動為預設的值。
Not null :約束該欄位不能為空值。
(3)參照完整性:引用的完整性
參照完整性的實現:定義外來鍵(foreign key)
外來鍵:該列欄位是另一張表的主鍵欄位。(外來鍵表應用的主鍵表的列一定要設定成主鍵。)
5、用設計器新增約束
(1)主鍵約束:在表的設計模式下,選中要設定主鍵的列,右鍵,選擇“設定主鍵”。在設定主鍵的同時,預設的允許為空也空自動取消。
(2)唯一約束:在表的設計模式下,任意地方點選滑鼠右鍵,選擇“索引/鍵”,彈出對話方塊後,選擇左側“新增”按鈕,在右邊找到“(常規)”下面有個“型別”,把“索引”改成“唯一鍵”,把下面的“列”屬性,改成要設定唯一的列名。
(3)預設約束:在表的設計模式下,選中要新增預設值的列,下面會自動顯示出該列的屬性,在“預設值或繫結”裡面輸入給定的值,如果在插入資料時,不給出該列的值,系統就會自動將預設值加入到資料中,如果給定了值,就新增使用者給定的值。
(4)檢查約束:在表的設計模式下,在任意地方點選滑鼠右鍵,選擇“CHECK約束(O)”
在對話方塊左側選擇“新增”,可以修改名稱,也可是使用預設名稱,在“表示式”後面寫入check約束的表示式。
(5)外來鍵約束:給表新增外來鍵,在表的設計模式下,在任意地方點選滑鼠右鍵,在彈出的對話方塊中,選擇“關係(H)”,在左下角選擇“新增”,在右邊的“表和列規範”中,外來鍵表就是已開啟的要新增外來鍵的表,主鍵表就是要關聯的表,選中該表的主鍵,在外來鍵表中,選擇要建立外來鍵的列,在主鍵表中選擇引用表的主鍵。
三、資料庫的特點
(1)可以儲存大量資料(在資料庫管理系統中有序的儲存大量的資料)
(2)實現迸發問題控制(可以讓多個人同時訪問和修改)
(3)對資料進行快速查詢、更新(利用一系列演算法進行資料查詢)
(4)資料安全(根據許可權進行資料訪問)
(5)資料完整(用主鍵、外來鍵和約束等保護資料的完整性)
四、SQLServer的管理:
在安裝了Visual Studio後,可以通過自帶的SQLserver進行管理,也可以使用SQLServer Management Studio 進行管理。
五、資料庫的基本操作
(1)建立資料庫:
登入到SQLserver Management Studio後,選中資料庫滑鼠右鍵,選擇“新建資料庫”,出現了一個對話方塊,輸入資料庫的名稱,這時就出現了兩個檔案,一個主檔案,一個日誌檔案,這是可以設定檔案的初始大小、自動增長、檔案儲存路徑等屬性,還可以點選新增,加入多個檔案,但是主檔案只能有一個,其他的都是輔助檔案。(建立資料庫時不能直接放入C盤,但是可以放入C盤子目錄中。)
(2)建立表
展開所建立的資料庫,選中表點選滑鼠右鍵,選擇“新建表”,建好表之後,寫出欄位名、資料型別、是否允許為空等屬性。(如果定義欄位與關鍵字衝突,則為了區分關鍵字,將欄位名定義在[]中,例如【char】說明是欄位名,不是關鍵字。)在填入表的欄位資訊是,可以給主鍵定義標識,可以讓主鍵值自動增長。
(3)分離、附加資料庫
如果要一個數據庫斷開連線,則需要分離,方法是選中要分離的資料庫,點選右鍵,選擇任務並點選,再選擇分離,出現對話方塊,點選確定就可以了。
如果再次使用資料庫時,需要附加,選中“資料庫”右鍵附加,彈出“附加資料庫”對話方塊,點選新增按鈕,選擇要新增的資料庫,點選確定。
六、資料庫資料型別
(1)Image:用來儲存影象,屬於二進位制型別
(2)Char :固定長度非Unicode字元資料(ASCII編碼,一個字母佔一個位元組)。屬於文字資料型別,不足的自動補空格
(3)Varchar:可變長度非Unicode資料(ASCII編碼,一個字母佔一個位元組)。屬於文字資料型別
(4)Nchar:固定長度的Unicode資料,屬於文字資料型別(一個字元佔一個位元組),自足的自動補空格。
(5)Nvarchar:可變長度的Unicode資料,屬於文字資料型別(一個字元佔一個位元組)
(6)Text:儲存長文字資訊(Varchar(max)),屬於文字資料型別
(7)Ntext:(Nvarchar(max)),屬於文字資料型別
(8)Datetime:日期和時間
(9)Int :整數
(10)Smallint:整數
(11)Float:數字(浮點數,帶小數點)
(12)Real:數字
(13)Money:貨幣資料型別
(14)Bit:布林資料型別
七、資料庫操作容易出現的問題
(1)設定主鍵時,如果選用標識來定義主鍵的自動增長,該欄位的資料型別不能是字元型別,一定是數字型別。
(2)SQLServer2005與SQLServer2008由於許可權的問題,在SQLServer2008中,如果修改
已存在的表,修改之後,有時會彈出一個對話方塊,儲存不上,這時,在“工具”選項卡
中,選擇“選項”這時中文版的選擇“設計器”英文版的可能是“designer”,這時,
右邊的“表選項”中,有一項“阻止儲存要求重新建立表的更改(S)”把前面的“√”去掉就可以修改了。
(3)SQLserver2008中的資料庫,不能在SQLserver2005中開啟。
(4)資料庫有時因為許可權問題,附加不上去,這是WindowsXP系統,選擇“資料夾選擇”,把“簡單檔案共享”前面的“√”去掉。資料檔案就可以點選滑鼠右鍵,選擇屬性,在“安全”選項卡中,寫入一個Everyone,在選中Everyone,選中“完全控制”就可以附加了。而Windows 7則不會出現這個問題。
(5)一旦給表中的主鍵設定標識列,就在該欄位不能輸入資料了
(6)在編輯表的時候Null 與什麼都不寫的區別:NULL在資料庫中是一個物件,可以進行運算,但是作業系統不知道或不確定該欄位資料,而什麼都不寫代表是一個空字串。
八、系統資料庫檔案
(1)master資料庫:主資料庫,記錄了SQLServer例項的全部資訊。
(2)Model資料庫:模板資料庫。
(3)Msdb資料庫:用於排程任務,和發出警報。
(4)Tempdb資料庫:相當於一個臨時快取。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、
<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------