SQL Server數(shù)據(jù)庫基本概念、組成、常用對象與約束
二、基本概念
1、數(shù)據(jù)庫
數(shù)據(jù)庫(DB):即DataBase的縮寫,是按照一定的數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的一個倉庫。是存儲在一起的相關(guān)數(shù)據(jù)的一個集合。可以把數(shù)據(jù)庫想象成一個文件柜,文件柜里面又包含有多個文件夾,而文件夾里面又包含有多個文件。
數(shù)據(jù)庫根據(jù)作用的不同,又可以分為兩種:
- 關(guān)系型數(shù)據(jù)庫。是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合、數(shù)學等觀念和方法來處理數(shù)據(jù)庫的數(shù)據(jù)。比如SQL Server、MySQL、Access等。
- 非關(guān)系型數(shù)據(jù)庫。非關(guān)系型數(shù)據(jù)庫也被稱為NoSQL數(shù)據(jù)庫,NoSQL的本意是“Not Only SQL”,指的是非關(guān)系型數(shù)據(jù)庫,而不是“NO SQL”的意思。非關(guān)系型數(shù)據(jù)庫的產(chǎn)生不是要徹底否定關(guān)系型數(shù)據(jù)庫,而是作為傳統(tǒng)數(shù)據(jù)庫的一個有效補充。
2、數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(DBMS):即DataBase Management System的縮寫,是為了管理數(shù)據(jù)庫而設(shè)計的一個電腦軟件系統(tǒng)。是用來操作和管理數(shù)據(jù)庫的大型軟件,用于建立、使用和維護數(shù)據(jù)庫。它對數(shù)據(jù)庫進行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。用戶可以通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也可以通過DBMS進行數(shù)據(jù)庫的維護工作。它可以支持多個應(yīng)用程序和用戶用不同的方法在同時或不同時刻去建立、修改和詢問數(shù)據(jù)庫。大部分DBMS提供數(shù)據(jù)定義語言DDL(Data Definition Language)和數(shù)據(jù)操作語言DML(Data Manipulation Language),供用戶定義數(shù)據(jù)庫的模式結(jié)構(gòu)與權(quán)限約束,實現(xiàn)對數(shù)據(jù)的追加、刪除等操作。
3、數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫系統(tǒng)是由數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)組成的。
二、數(shù)據(jù)庫的組成
數(shù)據(jù)庫是以文件的形式存在,由文件和文件組組成的。
1、文件
數(shù)據(jù)庫文件分為以下幾種類型:
- 主要數(shù)據(jù)文件:主要數(shù)據(jù)文件里面存放的是數(shù)據(jù)和數(shù)據(jù)庫的一些初始化信息。每個數(shù)據(jù)庫有且只有一個主要數(shù)據(jù)文件。主要數(shù)據(jù)文件以.mdf為擴展名。
- 次要數(shù)據(jù)文件:次要數(shù)據(jù)文件里面存放的是除了主要數(shù)據(jù)文件之外的所有數(shù)據(jù)。次要數(shù)據(jù)文件不是必須的,可以沒有。如果有次要數(shù)據(jù)文件,可以有一個或者多個。假如數(shù)據(jù)庫的數(shù)據(jù)非常大,這時候可以把一些數(shù)據(jù)放到次要數(shù)據(jù)文件里面。次要數(shù)據(jù)文件是以.ndf為擴展名。
- 事務(wù)日志文件:事務(wù)日志文件存放的是對數(shù)據(jù)庫進行操作的所有日志信息。每個數(shù)據(jù)庫至少要有一個日志文件,也可以有多個。事務(wù)日志文件是以.ldf為擴展名。
2、文件組
文件組是數(shù)據(jù)庫文件的一種邏輯管理單位,它將數(shù)據(jù)庫文件分成不同的文件組,方便我們對文件的分配和管理。文件組分為以下兩種類型:
- 主文件組(Primary):主要包含主要數(shù)據(jù)文件和沒有明確指派給其它文件組的文件。
- 用戶自定義文件組:我們在使用腳本創(chuàng)建數(shù)據(jù)庫或者修改數(shù)據(jù)庫的時候,使用fileGroup關(guān)鍵字指定的文件組。
一個文件只能屬于一個文件組。
文件組的設(shè)計原則:
- 文件只能是一個文件組的成員。
- 文件或文件組只能屬于一個數(shù)據(jù)庫,不能同時屬于多個數(shù)據(jù)庫。
- 數(shù)據(jù)和日志信息不能屬于同一個文件或文件組。
- 日志文件不能作為文件組的一部分。因為數(shù)據(jù)和日志是分開在管理的,所以我們備份的時候可以只備份數(shù)據(jù)文件或日志文件,恢復(fù)的時候也可以只恢復(fù)數(shù)據(jù)文件或日志文件,而不用備份整個數(shù)據(jù)庫。
三、數(shù)據(jù)庫常用對象
這篇文章主要講解數(shù)據(jù)庫中的常用對象。
1、表
表是包含數(shù)據(jù)庫中所有數(shù)據(jù)的對象,由行和列組成,用于組織和存儲數(shù)據(jù)。
2、字段
字段就是表中的列。一個表中可以有多個列,也可以只有一個。
字段也有自己的屬性:列名、數(shù)據(jù)類型(決定了該字段存儲哪種類型的數(shù)據(jù))。
3、視圖
數(shù)據(jù)庫里面可以多張表,表里面可以有多個字段。表與表之間可能也存在著關(guān)系。視圖也可以認為是一張表,但是視圖不是真實存在的表,是虛擬表。它可以從一張表或者多張表進行關(guān)聯(lián)查詢,把需要的字段提取出來,這些字段就會組合成一種虛擬表。是用戶查看數(shù)據(jù)的一種方式。結(jié)構(gòu)和數(shù)據(jù)都是建立在對表的查詢上的。
4、索引
建立索引是為了給用戶提供一種快速訪問數(shù)據(jù)的途徑,索引是依賴于表建立的。我們創(chuàng)建索引是針對于表創(chuàng)建的。創(chuàng)建索引之后,使得我們在遍歷數(shù)據(jù)的時候,無需對整張表進行全面的查詢,而可以通過索引進行快速的定位查詢。可以理解為Word文檔里面的目錄。
5、存儲過程
存儲過程是一組為了完成特定功能的SQL語句的集合,存儲過程里面可以只有一條查詢語句也可以有多條,可以是批量的插入操作,還可以有插入、修改、查詢等語句。建立好存儲過程之后,需要對其進行生成和編譯,編譯之后就會存儲在數(shù)據(jù)庫之中了。以后使用的時候,直接對其進行調(diào)用即可。存儲過程只需要進行一次編譯。
6、觸發(fā)器
屬于用戶自定義的一種SQL事務(wù)命令的集合,可以執(zhí)行多種操作。數(shù)據(jù)庫是針對于表的。當對表執(zhí)行增刪改操作時,會自動執(zhí)行觸發(fā)器。
7、約束
約束可以理解為對數(shù)據(jù)表中列值進行的一種限制??梢允歉袷缴?、也可以是值范圍的約束。當我們對數(shù)據(jù)表的某列定義了這種限制,如果我們在對表進行插入數(shù)據(jù)操作的時候,插入的值不符合這種限制就會阻止插入數(shù)據(jù)??梢愿玫囊?guī)范表中的列。
8、缺省值
缺省值相當于對表中的列指定一個默認值。當進行插入數(shù)據(jù)時,如果沒有為這個列插入值,那么就會自動以預(yù)先設(shè)置的默認值進行填充。
四、數(shù)據(jù)庫約束
一、定義
約束:規(guī)定表中的數(shù)據(jù)規(guī)則。如果存在違反約束的數(shù)據(jù)行為,行為就會被阻止。
如果是使用DBMS工具創(chuàng)建表,那么約束必須在創(chuàng)建表之后才能被創(chuàng)建。如果是使用腳本創(chuàng)建表,則可以在腳本中就創(chuàng)建約束。
二、分類
1、主鍵約束
Primary key約束:主鍵約束,具有唯一性、非空,不能被修改。
2、外鍵約束
Foreign key約束:用來加強兩個表的一列或者多列數(shù)據(jù)之間的連接。首先需要建立主表中的主鍵,然后在定義外鍵表中的外鍵。
注意:只有主表中的主鍵列才能被從表作為外鍵來使用,其它列不可以作為外鍵使用。從表中外鍵的值必須是主表中主鍵的值,主表限制了從表的更新和插入。當刪除主表中的某條數(shù)據(jù)時,如果該條數(shù)據(jù)的主鍵在從表中存在引用,那么必須先刪除從表中的引用數(shù)據(jù),然后才能刪除主表中的數(shù)據(jù)。如果該條數(shù)據(jù)在從表中沒有引用,那么可以直接刪除。
3、Unique約束
Unique:唯一性約束。確保表中的一列數(shù)據(jù)沒有相同的值。與主鍵約束相似,但又不同。一個表的主鍵約束只能有一個,唯一性約束可以有多個,也可以沒有。而且唯一性約束并非是主鍵的一列或多列的組合。唯一鍵可以為null,但主鍵不可以。
4、Check約束
Check約束:我們可以通過邏輯表達式來判斷數(shù)據(jù)的有效性,用來限制輸入一列或多列的值的范圍。
5、Default約束
Default約束:即默認值約束。用戶在插入新的數(shù)據(jù)行時,如果該行沒有指定數(shù)據(jù),那么系統(tǒng)將默認值賦給該列。如果沒有設(shè)置默認值,系統(tǒng)就會把該列設(shè)置為null值。
到此這篇關(guān)于SQL Server數(shù)據(jù)庫基本概念、組成、常用對象與約束的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- SqlServer數(shù)據(jù)庫遠程連接案例教程
- SQL Server 2014 數(shù)據(jù)庫中文版安裝圖文教程
- SQL Server2012數(shù)據(jù)庫備份和還原的教程
- sqlserver建立新用戶及關(guān)聯(lián)數(shù)據(jù)庫教程
- Windows Server 2016 MySQL數(shù)據(jù)庫安裝配置詳細安裝教程
- SQL Server附加數(shù)據(jù)庫報錯無法打開物理文件,操作系統(tǒng)錯誤5的圖文解決教程
- SQL SERVER數(shù)據(jù)庫表記錄只保留N天圖文教程
- SQL Server 2005恢復(fù)數(shù)據(jù)庫詳細圖文教程
- sql server 2000數(shù)據(jù)庫備份還原的圖文教程
- sql server 2005數(shù)據(jù)庫備份還原圖文教程
- sql server 2008數(shù)據(jù)庫無法啟動的解決辦法(圖文教程)
相關(guān)文章
數(shù)據(jù)庫觸發(fā)器DB2和SqlServer有哪些區(qū)別
大部分數(shù)據(jù)庫語句的基本語法是相同的,但具體到的每一種數(shù)據(jù)庫,又有些不一樣,例如觸發(fā)器,DB2和SQL Server兩種很大的不同。對數(shù)據(jù)庫觸發(fā)器DB2和SqlServer有哪些區(qū)別感興趣的朋友一起看看本文吧2015-11-11
sql server實現(xiàn)在多個數(shù)據(jù)庫間快速查詢某個表信息的方法
這篇文章主要介紹了sql server實現(xiàn)在多個數(shù)據(jù)庫間快速查詢某個表信息的方法,結(jié)合實例形式分析了SQL Server多個數(shù)據(jù)庫查詢的相關(guān)操作技巧,代碼備有詳盡的注釋,需要的朋友可以參考下2017-03-03
SQL Server Alwayson創(chuàng)建代理作業(yè)的注意事項詳解
在工作中有時為了避免數(shù)據(jù)庫增長太大所以需要定時來刪除某段時間前的數(shù)據(jù),所以使用代理作業(yè)的方式來實現(xiàn)定時刪除的功能,下面這篇文章主要給大家介紹了關(guān)于SQL Server Alwayson創(chuàng)建代理作業(yè)的注意事項,需要的朋友可以參考下。2017-09-09
SQL SERVER數(shù)據(jù)庫表記錄只保留N天圖文教程
本篇向大家介紹SQL Server 2008 R2數(shù)據(jù)庫中數(shù)據(jù)表保留10天記錄,需要的朋友可以參考下2015-09-09
利用ROW_NUMBER() OVER函數(shù)給SQL數(shù)據(jù)庫中每一條記錄分配行號的方法
這篇文章主要介紹了利用ROW_NUMBER() OVER函數(shù)給SQL數(shù)據(jù)庫中每一條記錄分配行號的方法,需要的朋友可以參考下2015-10-10
快速實現(xiàn)SQL Server數(shù)據(jù)庫恢復(fù)備份
這篇文章主要為大家詳細介紹了如何快速實現(xiàn)SQL Server數(shù)據(jù)庫恢復(fù)備份的兩種方法,感興趣的小伙伴們可以參考一下2016-05-05
Sql Server 索引使用情況及優(yōu)化的相關(guān)Sql語句分享
Sql Server 索引使用情況及優(yōu)化的相關(guān) Sql 語句,非常好的SQL語句,記錄于此,需要的朋友可以參考下2012-05-05
SQL Server內(nèi)存遭遇操作系統(tǒng)進程壓榨案例分析
最近一臺DB服務(wù)器偶爾出現(xiàn)CPU報警,我的郵件報警閾值設(shè)置的是15%,開始時沒當回事,以為是有什么統(tǒng)計類的查詢,后來越來越頻繁2014-03-03

