久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何淺述SQL Server的語句類別、數據庫范式及系統數據庫組成

131次閱讀
沒有評論

共計 2520 個字符,預計需要花費 7 分鐘才能閱讀完成。

如何淺述 SQL Server 的語句類別、數據庫范式及系統數據庫組成,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

終于等到這一天,我要開始重新系統學習數據庫了,關于數據庫這塊,不出意外的話,每天會定時更新一篇且內容不會包含太多,簡短的內容,深入的理解。

SQL 語句類別

SQL 語句包括以下三個類別

(1)數據定義語言(Data Definnition Language)即 DDL,我們數據最終從何而來,當然首先必須得建立表,所以它包括 CREATE、ALTER、DROP 表。

(2)數據操作語言(Data Manipulation Language)即 DML,我們對數據需要進行什么操作,當然無非就是增刪改查,所以它包括 SELECT、INSERT、UPDATE、DELETE,其中還包括 TRUNCATE、MERGE。

(3)數據控制語言(Data Control Language)即 DCL,我們操作數據庫時針對不同的用戶會授予不同權限。

數據庫范式

范式是什么玩意,它意指規范化規則,通俗易懂一點講則是定義的規范、規則,需要我們去遵守,那么為何要定這一套規則呢?我們反過來想,肯定是前人遇到過,若不定義這一套規則,則出現這樣或那樣的問題,為了規避這樣問題的出現則出了這一套規則,主要是為了解決如下兩點問題。

(1)避免在數據修改過程中出現異常。

(2)保持數據最低限度的冗余。

數據庫范式最基礎的范式為第一范式(1NF)、第二范式(2NF)、第三范式(3NF),還有更高層次的范式,但太過于復雜我們不做探討,大部分書籍都這樣說,我們就這樣去了解。

第一范式(1NF)

定義:關系表中行必須是唯一且屬性是原子性的。

太晦澀,太抽象,不太懂,我們一一來分析,我們看看上述定義中重點在于行【唯一】,屬性【原子性】。

那么到底什么情況下才算是行唯一呢?

第一:既然是唯一,那么行中某一標識必須是已知而非未知即不能為空

第二:唯一也就是說不能重復諾

第三:怎么保證行唯一呢?通過定義一個唯一鍵來實現唯一行。

那么到底什么是原子性呢?

第一看到原子這個詞語是不是會立馬聯想到中國獨立研制的原子彈爆發,又或者是上化學課遇到的第一個化學式 2H2+O2=2H2O,2 個氫氣即 4 個氫原子與 1 個氧氣即 2 個氧原子集合生成 1 個水分子,哦,回顧一下,分子是由原子組成,原子由原子核和核外電子組成,原子核又由質子和中子組成,還有什么夸克之類的,無論是程序語言還是數據庫中都一直在講原子性,為什么沒有講質子性和夸克性呢,因為原子已經算是比較小的,所以一直用原子性來強調并劃分,為了方便理解,可以這么思考,后面的就不用在敘述,到了這里還沒明白么,就相當于原子組成分子,將原子作為最小的粒度即不能再分,那么我們反過來想屬性的原子性即屬性不可再劃分,這又是什么意思,比如在表中有一個地址屬性,如果我們存如(湖南省,岳陽市,華容縣)這樣就違背了第一范式,這個屬性還是可以再劃分為省、城市、縣。

到這里我們可以作出總結第一范式滿足的條件:

(1)唯一標識的鍵

(2)鍵不能為空

(3)鍵不能重復

(4)屬性不可再劃分

第二范式(2NF)

定義:在滿足第一范式的前提下,每一個非鍵屬性必須滿足對整個候選鍵的完全函數依賴即非鍵屬性不能是對候選鍵某部分的完全函數依賴。

好了,我們繼續入上述解釋第一范式來解釋第二范式晦澀難懂的定義。我們看下如下表

上述定義候選鍵都是指的主鍵。上述給出表中 OrderId 和 ProductId 都是作為候選鍵即主鍵,但是此時我們可以通過部分候選鍵(主鍵)比如 OrderId 得到 OrderDate、CustomerId 和 CompanyName 等列,此時是僅僅是 OderId 的部分依賴而非對 OderId 和 ProductId 二者的完全依賴。此時為了表現出對候選鍵的完全依賴應該劃分成如下兩個表。

所以將上述定義通俗講則是:屬性對主鍵應該屬于完全依賴而非部分依賴,否則違反第二范式。

第三范式(3NF)

同樣第三范式是在滿足第一和第二范式的前提下來看第三范式。

定義:所有非鍵屬性必須依賴于非傳遞的候選鍵,也就是非鍵屬性相互之間必須相互獨立,進一步講非鍵屬性之間不能形成依賴關系。

我們看看上述經過修改滿足第二范式的兩個表,此時訂單表中 OrderId 為主鍵,客戶 Id 即 CustomerId 和公司名稱即 CompanyName 對 OrderId 是完全依賴,我們可以通過訂單 Id 得到客戶 Id,也可以通過訂單 Id 得到公司名稱,同時我們也可以通過客戶 Id 得到客戶公司名稱,也就是說此時 CustomerId 和 CompanyName 是一種傳遞關系,而非相互之間獨立。此時若需要滿足第三范式則應該是如下表示:

我們可以看出第三范式著重強調的是非鍵屬性與非鍵屬性之間獨立,而第二范式著重強調的是非鍵屬性與候選主鍵的完全依賴。所以第二范式和第三范式我們統一概括為:非鍵屬性必須是對鍵的依賴,而非相互之間依賴,并且是對整個鍵的依賴。

系統數據庫組成

當打開數據庫中后在數據庫下默認會有個系統數據庫,里面的內容如下:

master

master 數據庫存儲實例范圍的元數據信息、服務器配置、實例中的所有數據庫信息和初始化信息。

Resource

Resource 數據庫是一個隱藏、只讀數據庫,存儲所有系統對象的定義。

model

model 數據庫是創建新數據庫的模板,創建的每個新數據庫都是有 model 的副本初始化創建的。

tempdb

tempdb 數據庫是 SQL Server 存儲臨時數據的地方,如工作表、排序空間、行版本控制信息。同時 SQL Server 允許我們創建我們自己使用的臨時表,并且這些臨時表的位置是 tempdb,但是我們需要注意的是每當重新啟動 SQL Server 實例時,該數據庫將會被破壞掉,并由 model 副本創建。

msdb

msdb 數據庫是 SQL Server 代理的服務存儲數據的地方,SQL Server 代理負責自動操作,包括作業、計劃和警報,同時也負責復制服務等等。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-17發表,共計2520字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 武宣县| 阳春市| 建水县| 万州区| 南投市| SHOW| 会同县| 富宁县| 清新县| 衢州市| 交口县| 山丹县| 开封县| 扎鲁特旗| 伊宁县| 南漳县| 汽车| 孝感市| 墨竹工卡县| 苍溪县| 闸北区| 惠水县| 庄河市| 孝感市| 阜康市| 五寨县| 昌邑市| 梅州市| 千阳县| 板桥市| 疏勒县| 岑溪市| 昂仁县| 毕节市| 临洮县| 城口县| 徐闻县| 济宁市| 延庆县| 年辖:市辖区| 子洲县|