1. 數(shù)據(jù)庫管理系統(tǒng)(DateBase Management System )DBMS
- 是專門為管理數(shù)據(jù)庫而設(shè)計的一個電腦軟件系統(tǒng)
- 分為兩種:
(1)關(guān)系數(shù)據(jù)庫:建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,比如 SqlServer , MySQL, Oaracle, Access
? 所以 SqlServer是數(shù)據(jù)庫的一個管理軟件,利用此工具建立一個數(shù)據(jù)庫。
(2)非關(guān)系數(shù)據(jù)庫:與關(guān)系數(shù)據(jù)庫不同點就是,不使用SQL作為查詢語言
-
數(shù)據(jù)庫(DateBase)DB:
按照一定的數(shù)據(jù)結(jié)構(gòu)來組織,存儲和管理數(shù)據(jù)的倉庫。是存儲在一起的相關(guān)的數(shù)據(jù)的一個集合。
-
數(shù)據(jù)庫系統(tǒng):由數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)組成。
2. 打開數(shù)據(jù)庫:
(1)啟動服務(wù):可以使用 SQL SERVER配置管理器
(2)打開 SQL SERVER Management Studio ,使用工具連接到數(shù)據(jù)庫
可以使用Windows身份驗證 :
? 要求必須先登錄Windows,數(shù)據(jù)庫裝到了某個Windows上(本機連接)
? 在 服務(wù)器名稱 :瀏覽更多--》數(shù)據(jù)庫引擎---》選擇創(chuàng)建過的數(shù)據(jù)庫實例
或者
SQL SERVER 身份驗證
? 在建立數(shù)據(jù)庫實例時,要選擇混合模式,設(shè)定 SQL SERVER系統(tǒng)管理員sa賬戶指定密碼
? 當數(shù)據(jù)庫 和 服務(wù)器 分離時(遠程連接),使用此方式; 必須登錄:登錄名和密碼,還有 服務(wù)器名稱 :就是SQL SERVER系統(tǒng)的IP地址
(3)如何自己創(chuàng)建一個登錄名:
首先,以Windows身份驗證登錄,在安全性結(jié)點---》登錄名---》右擊登錄名---》選擇新建登錄名----》設(shè)置登錄名,可以選擇設(shè)置為 SQL Server身份驗證,輸入密碼最重要的是:在左邊選擇”服務(wù)器角色“----》選擇 public 和 sysadmin
相當于給予了它管理的權(quán)限
這樣下次訪問這個數(shù)據(jù)庫時,就可以使用 SQL Server身份驗證,輸入自定義的登錄名和密碼
3. 新建數(shù)據(jù)庫
右擊數(shù)據(jù)庫結(jié)點---》 新建數(shù)據(jù)庫 ---》 自定義數(shù)據(jù)庫名稱,最好是可以代表存儲何種數(shù)據(jù)的名稱,后綴可以是DB,比如StuDB
下方有數(shù)據(jù)庫文件:
有兩行:第一行叫做 數(shù)據(jù)庫組文件(數(shù)據(jù)庫名稱) ; 第一行叫日志文件(數(shù)據(jù)庫名稱_Log)
后面有文件的默認大小,
還有“ 路徑 ” 的設(shè)置:默認是C:\Program Files\Microsoft SQL Server\MSSQL14.SQL01\MSSQL\DATA\
因為以后要將數(shù)據(jù)庫分離,并且要將此文件拷走,所以路徑一般會設(shè)置在一個自定義比較固定的位置上,可以放到專門存放這個數(shù)據(jù)庫的文件夾里。
點擊數(shù)據(jù)庫結(jié)點---》就可以看到我們新建的數(shù)據(jù)庫
4. 數(shù)據(jù)庫文件和文件組的組成
因為數(shù)據(jù)庫最終是在計算機上以文件的形式存在,數(shù)據(jù)庫以文件和文件組 組成。
- 數(shù)據(jù)庫文件:
(1) 主要數(shù)據(jù)文件,存放數(shù)據(jù)和數(shù)據(jù)庫的初始化信息。以.mdf擴展名結(jié)尾,每個數(shù)據(jù)庫有且只有一個主要數(shù)據(jù)文件。
(2)次要數(shù)據(jù)文件,存放除了主要數(shù)據(jù)文件以外的所有數(shù)據(jù)的文件。默認以.ndf擴展名結(jié)尾; 次要數(shù)據(jù)文件并不是每個數(shù)據(jù)庫必須的。有的話,也可以是多個。
(3)事務(wù)日志文件,存放用于恢復(fù)數(shù)據(jù)庫的所有日志信息。(就是對數(shù)據(jù)庫的所有操作信息,包括添加或刪除一條信息等都是存儲在此文件中),默認以.ldf擴展名結(jié)尾,每個數(shù)據(jù)庫至少要有一個事務(wù)日志文件,也可以有多個。
-
數(shù)據(jù)庫文件組:
是數(shù)據(jù)庫文件的一種邏輯管理單位,它將數(shù)據(jù)庫文件分成不同的文件組,方便對文件的分配和管理。
分類:
(1)主文件組:Primary 包含主要數(shù)據(jù)文件和沒有明確指派給其他文件組的文件。
(2)用戶自定義的文件組:在Create DateBase或alter DateBase 使用fileGroup關(guān)鍵字指定的文件組
對文件進行文件組的分類原則:
(1)文件只能是一個文件組的成員。
(2)文件或文件組不能由一個以上的數(shù)據(jù)庫使用。
(3)數(shù)據(jù)和日志信息不能屬于同一個文件或文件組。
(4)日志不能作為文件組的一部分(因為數(shù)據(jù)和日志是分開管理的,在備份時可以分離式進行)
5. 數(shù)據(jù)庫常用對象
-
表:包含數(shù)據(jù)庫中所有數(shù)據(jù)的對象,由行和列組成,用于組織和存儲數(shù)據(jù)。點擊建好的數(shù)據(jù)庫---->右擊表--》新建表---》有三部分:列名,數(shù)據(jù)類型,允許null值
-
字段:就是表中的列,一個表可以有多個列,一個字段有自己的屬性,數(shù)據(jù)類型(決定該字段存儲那種類型的數(shù)據(jù)),大小(長度);
-
視圖:是一個虛表,可以從一張或多張表中導(dǎo)出的表,是用戶查看數(shù)據(jù)的一種方式,結(jié)構(gòu)和數(shù)據(jù)是建立在對表的查詢之上。
-
索引:為了給用戶提供一種快速訪問數(shù)據(jù)的途徑,索引是依賴于表而建立的。使得在檢索數(shù)據(jù)時,不用對整張表進行掃描。
-
存儲過程:是一組為了完成特定功能的SQL語句的集合。(可以有查詢,插入,修改,刪除等)編譯過后,就存儲在數(shù)據(jù)庫中,以后以名稱進行調(diào)用執(zhí)行這些操作。
-
觸發(fā)器:在數(shù)據(jù)庫中屬于用戶定義的SQL食物命令集合,針對于表來說,當對表增,刪,改操作時,指定的命令就會自動觸發(fā)去執(zhí)行。
-
約束:對數(shù)據(jù)表的列進行的一種限制。可以更好地規(guī)范表中的列值。
-
缺省值:對數(shù)據(jù)表的列指定一個默認值。當進行插入時,若沒有為列插入值,就會自動賦予此默認值。
6. 數(shù)據(jù)庫的數(shù)據(jù)類型
1. 數(shù)值型:
(1)整數(shù):bigint( 8字節(jié)) int(4字節(jié)) smallint (2字節(jié)) tinyint (1字節(jié))
(2)浮點型:float(近似值) real(近似值) decimal(精確值,不存在精度的損失,decimal(a,b)a指定數(shù)的總位數(shù),b指定小數(shù)點后的位數(shù))
(3)貨幣類型(可以精確到萬分之一):money( 8字節(jié)) smallmoney(4字節(jié))
二進制數(shù)據(jù)類型:
bit
binary(n):固定長度的二進制數(shù)據(jù),最多8000字節(jié)
varbinary(n):可變長度的二進制數(shù)據(jù),最多8000字節(jié)
varbinary(max):可變長度的二進制數(shù)據(jù),最多8000字節(jié)
2. 字符型:
1.Character字符串:
(若數(shù)據(jù)只有英文建議,因為漢字是占兩個char字符,char(2),而nchar不論是英文還是中文都是占一個字符,nchar(1) )
(1)char(n)固定長度的字符串,若達不到n,就以空格補全,最多8000個字符
(2)varchar(n)可變長度的字符串,最多8000個字符
(3)varchar(max)可變長度的字符串
2.Unicode字符串:(若數(shù)據(jù)有中英文混合建議)
(1)nchar(n)固定長度的Unicode數(shù)據(jù),最多4000個字符
(2)nvarchar(n)可變長度的Unicode數(shù)據(jù),最多4000個字符
(3)nvarchar(max)可變長度的Unicode數(shù)據(jù)
前面帶n,不論是英文還是中文都是占一個字符,存儲大小2個字節(jié),前面不帶n,英文或數(shù)字,存儲1個字節(jié),而中文存儲2個大小(長度)
3. 日期型:
datetime : 精確度高,精確到毫秒
datetime2 : 精確度高,精確到納秒
smalldatetime : 精確到1分鐘,時間范圍小
date : 僅存儲日期
time: 僅存儲時間
4. 其他類型:
uniqueidentifer : 存儲全球標識符(GUID)
7. 創(chuàng)建表及主外鍵
1.工具創(chuàng)建表:
列名 數(shù)據(jù)類型 允許null值(勾選,就是允許為空); 并且對每一個列值,還可以在下方手動設(shè)置默認值: 比如:對于時間,可以設(shè)為getdate() 函數(shù),來獲取當前時間。
按ctr+ s 保存,可以自定義表名
? 因為一個表會有許多記錄(行),需要一個列來唯一標識一條數(shù)據(jù)。就要創(chuàng)建 主鍵(主碼),主鍵的選擇:首先此列的值不可以有重復(fù),且不可為空。
標識列:一旦一個列設(shè)為標識列,它就不能再手動插入,插入時自動生成的;
首先此列必須是不帶小數(shù)的數(shù)值型(可以理解為整形)
標識列包含標識種子(第一條記錄標識列的值)和增量(每增加一條數(shù)據(jù)在原來基礎(chǔ)上增加的值)
2. 創(chuàng)建主鍵:
選擇列名----》右擊---》設(shè)置主鍵,發(fā)現(xiàn)它前面有一個鑰匙的小標記。
有時,會選擇多個列作為主鍵,是指它們組合起來作為一個主鍵,又稱:聯(lián)合主鍵
創(chuàng)建一個主鍵,同時會自動創(chuàng)建一個聚集索引
3. 創(chuàng)建外鍵
外鍵(外碼):一般是在兩個表之間要建立關(guān)聯(lián)的時候創(chuàng)建。
比如:在Stu表中的主碼是UserId, 還有一個列名DeptId, 關(guān)于部門的信息保存在另一張表Dept中,Dept表的主碼是DeptId; 兩個表通過DeptId進行關(guān)聯(lián);
其中Stu表是參照表(外鍵表),Dept表是被參照表(主鍵表),
DeptId稱為參照表的外碼,是被參照表的主碼。
在被參照表中DeptId設(shè)為主鍵,
在參照表中DeptId設(shè)為外鍵:右擊---》選擇“關(guān)系”---》“添加”---》在右側(cè)的“表和列規(guī)范”點擊后面的省略號---》會有主鍵表和外鍵表的選擇,然后下一行是各個表的選擇關(guān)聯(lián)的列 DeptId
8. 數(shù)據(jù)庫約束
想打開新建好的表,在右側(cè)的對象資源管理器---》右擊新建的表---》設(shè)計
就可以繼續(xù)手動插入新的列或者新的約束條件
1. 約束定義:
規(guī)定表中的數(shù)據(jù)規(guī)則;若操作數(shù)據(jù)時違反了約束,就會被阻止;
在使用軟件創(chuàng)建,創(chuàng)建表之后建立約束。
或者
使用腳本創(chuàng)建表,可以在創(chuàng)建過程中,也可以在創(chuàng)建后來建立約束。
2. 約束的分類:
1. 主鍵: Primary Key 約束
唯一性, 非空, 不可修改
2. 外鍵: Foreign Key約束
實現(xiàn)兩個表的一列或多列數(shù)據(jù)之間的連接的。
先建立主鍵表中的主鍵,再定義外鍵表中的外鍵。
主鍵表限制了外鍵表的更新和插入的操作;當刪除主鍵表中的某條數(shù)據(jù),應(yīng)該是先刪除外鍵表中相關(guān)的數(shù)據(jù),再刪除主鍵表中的數(shù)據(jù);
3. Unique約束:唯一性約束(確保表中一列數(shù)據(jù)沒有相同的值)
與主鍵約束相似,但一個表中:主鍵只可以有一個,而Unique約束可以有多個,也可以沒有。
右擊屬性列--->選中 索引/鍵(I)----》添加 ----》看到有以IX開頭的就是唯一性約束,在右側(cè)的列 最右側(cè)的省略號點擊---》選擇此屬性----》確定----》在是唯一的處的后面,選擇是---》關(guān)閉
4. Check 約束:通過邏輯表達式來判斷數(shù)據(jù)的有效性,用來限制輸入一列或多列的值的范圍。
比如:在屬性列 age --->右擊--->CHECK約束--->添加--->在右側(cè)的表達式---》輸入Age>10 and Age<30---》確定---》關(guān)閉
再點進去就會顯示表達式是: ([Age]>(10) AND [Age]<(30))
5. Default 約束: 默認值約束。
當在插入新的數(shù)據(jù)行時,若該行沒有指定數(shù)據(jù),系統(tǒng)就會將默認值賦給該列。
若沒有設(shè)置默認值,系統(tǒng)會默認為null
選中屬性列---》在下方的欄中的默認值或綁定,自己輸入默認值
浙公網(wǎng)安備 33010602011771號