《SQL Server 從入門到精通》學習筆記

来源:http://www.cnblogs.com/shandianmao110/archive/2016/10/29/6010148.html
-Advertisement-
Play Games

《SQL Server 從入門到精通》 第1章 資料庫基礎 1.2 資料庫的體繫結構 1.2.1 資料庫三級模式結構 1. 模式 模式也稱邏輯模式或概念模式,它是資料庫中 ,是所有用戶的公共數據視圖。一個資料庫只有一個模式,模式處於三級結構的中間層。 2. 外模式 外模式也稱用戶模式,它是 ,`是數 ...


《SQL Server 從入門到精通》

第1章 資料庫基礎

1.2 資料庫的體繫結構

1.2.1 資料庫三級模式結構

  1. 模式
    模式也稱邏輯模式或概念模式,它是資料庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖。一個資料庫只有一個模式,模式處於三級結構的中間層。
    定義模式時不僅要定義數據的邏輯結構,而且要定義數據之間的聯繫,定義與數據有關的安全性完整性要求
  2. 外模式
    外模式也稱用戶模式,它是資料庫用戶(包括應用程式員和最終用戶)能夠看見和使用的局部數據的邏輯結構和特征的描述是資料庫用戶的數據視圖是與某一應用有關的數據的邏輯表示。外模式是模式的子集。一個資料庫可以有多個外模式。
    外模式是保證數據安全性的一個有力措施。
  3. 內模式
    內模式也稱存儲模式,一個資料庫只有一個內模式。它是數據物理結構和存儲方式的描述,是數據在資料庫內部的表示方式

    1.2.2 三級模式之間的映射

    為了能夠在內部實現資料庫的3個抽象層次的聯繫和轉換,資料庫管理系統在三級模式之間提供了兩層映射。

  4. 外模式/模式映射
    對應於同一個模式可以有任意多個外模式。對於每一個外模式,資料庫系統都有一個外模式/模式映射。當模式改變時,由資料庫管理員對各個外模式/模式映射作相應的改變,可以使外模式保持不變。依據數據外模式編寫的應用程式就不用修改,保證數據與程式的邏輯獨立性
  5. 模式/內模式映射
    模式/內模式映射唯一,定義了資料庫的全局邏輯結構與存儲結構之間對應關係。當資料庫的存儲結構改變時,由資料庫管理員對模式/內模式映射作相應改變,可以使模式保持不變,應用程式相應地也不做變動。保證數據與程式的物理獨立性

    1.3 數據模型

    數據模型是一種對客觀事物抽象化的表現形式。它對客觀事物加以抽象,通過電腦來處理現實世界中的具體事物。它客觀地反映了現實世界,易於理解,與人們對外部事物描述的認識相一致。

    1.3.1 數據模型的概念

    數據模型由數據結構、數據操作、完整性約束組成。
    數據結構:是對系統靜態特征的描述。描述對象包括數據的類型、內容、行政和數據之間的相互關係。
    數據操作:是對系統動態特征的描述,是對資料庫中各種對象實例的操作。
    完整性約束:是完整性規則的集合。他定義了給定數據模型中數據及其聯繫所具有的制約和依存規則。

    1.3.2 常見的數據模型

  6. 層次模型:用樹形結構表示實體類型及實體間聯繫的數據模型成為層次模型。
  • 每棵樹有且僅有一個無雙親節點,稱為根。
  • 樹中除根外所有節點有且僅有一個雙親。
  1. 網狀模型:用有向圖結構表示實體類型及實體間聯繫的數據模型成為網狀模型。用網狀模型編寫應用程式及其複雜,數據的獨立性較差。
  2. 關係模型:以二維表來描述數據。在關係模型中,每個表有多個欄位列和記錄行,每個欄位列有固定的屬性(數字、字元、日期等)。關係模型數據結構簡單、清晰、具有很高的數據獨立性,因此是目前主流的資料庫數據模型。
  • 關係:二維表
  • 元組:二維表一行,表中的記錄
  • 屬性:二維表一列,用類型和值表示
  • :每個屬性取值的變化範圍,如性別的域為{男,女}

關係模型中的數據約束:

  • 實體完整性約束:約束關係的主鍵屬性值不能為空
  • 參照完整性約束:關係之間的基本約束
  • 用戶定義的完整性約束:反應具體應用中數據的語義要求

    1.3.3 關係資料庫的規範化

    第一範式(1NF)、2NF、3NF、鮑依斯-科得範式(BCNF)、4NF、5NF。其中,NF是Normal Form的縮寫。一般情況下,只要把數據規範到第三範式標準即可滿足需要。
  • 1NF:在一個關係中,消除重覆欄位,且各欄位都是最小的邏輯存儲單位。
  • 2NF:1NF基礎上,消去非主屬性對鍵的部分函數依賴
  • 3NF:2NF基礎上,消去非主屬性對鍵的傳遞函數依賴
  • BCNF:3NF基礎上,消去主屬性對鍵的傳遞函數依賴
  • 4NF:BCNF基礎上,消去表中的多值依賴
    詳細說明

    1.3.4 關係資料庫的設計原則

  1. 資料庫內文件的數據組織應獲得最大限度的共用、最小的冗餘度,消除數據及數據依賴關係中的冗餘部分,使依賴於同一個數據模型的數據達到有效的分離。
  2. 保證輸入、修改數據時數據的一致性與正確性。
  3. 保證數據與使用數據的應用程式之間獲得高度獨立性。

    1.3.5 實體與關係

    實體是指客觀存在並可相互區別的事物,也可以是抽象的概念或關係。實體之間有三種關係。

  4. 一對一關係:表A中的一條記錄確實在表B中有且只有一條相匹配的記錄。在一對一關係中,大部分相關信息都在一個表中。
    學生與學生的身份證號
  5. 一對多關係:表A中的行可以在表B中有許多匹配行,但是表B中的行只能在表A中有一個匹配行。
    一個學生只屬於一個班,一個班有多名學生
  6. 多對多關係:關係中的每個表的行在相關表中具有多個匹配行。在資料庫中,多對多關係的建立是依靠第3個表(稱作連接表)實現的,連接表包含相關的兩個表的主鍵列,然後從兩個相關表的主鍵列分別創建與連接表中的匹配列的關係。
    一個學生可以選擇多門課,一門課也有多名學生

詳細說明

1.4 常見關係資料庫

Oracle在並行處理、實時性、數據處理速度方面都有較好的性能。

第4章 創建與管理資料庫

4.1 認識資料庫

4.1.1 資料庫基本概念

關係資料庫
關係資料庫是支持關係模型的資料庫。關係模型由關係數據結構、關係操作集合和完整性約束3部分組成。

  1. 關係數據結構:在啊關係模型中數據結構單一,現實世界的實體以及實體間的聯繫均用關係來表示,實際上關係模型中數據結構就是一張二維表
  2. 關係操作集合:關係操作分為關係代數、關係演算、具有關係代數和關係演算雙重特點的語言(SQL語言)
  3. 完整性約束

    4.1.2 資料庫常用對象

  • :表是包含資料庫中所有數據的資料庫對象,由行和列組成,用於組織和存儲數據。
  • 欄位:表中每列成為一個欄位,欄位具有自己的屬性,如欄位類型、欄位大小等。其中,欄位類型是欄位最重要的屬性,它決定了欄位能夠存儲哪種數據。
  • 索引:索引是一個單獨的、無力的資料庫結構。它是依賴於表建立的,在資料庫中索引是資料庫程式無需對整個表進行掃描,就可以在其中找到所需的數據。
  • 視圖:視圖是從一張或多張表中導出的表(也稱虛擬表),是用戶查看數據表中數據的一種方式。表中包括幾個被定義的數據列與數據行,其結構和數據建立在對錶的查詢基礎上。
  • 存儲過程:存儲過程是一組為了完成特定功能的SQL語句集合(包含查詢、插入、刪除和更新等操作),經編以後以名稱的形式儲存在SQL Server伺服器端的資料庫中,由用戶通過制定存儲過程更的名字來執行。當這個存儲過程被調用執行時,這些操作也會被同時執行。

    4.2 SQL Server的命名規範

    4.2.1 標識符

  1. 標識符格式
  • 標識符的首字元必須是Unicode所定義字元,'_' '@' '#'。
    '@'開始的標識符表示局部變數或參數
    '#'開始的標識符表示臨時表或過程
    '##'開始的標識符表示全局臨時對象
  • 標識符後的後續字元
    Unicode 2.0 標準中所定義的字母。
    來自拉丁字母或其他國家/地區腳本的十進位數字。
    '@' '$' '#' '_'
  • 標識符不允許是Transact-SQL的保留字
    微軟官方文檔
  • 不允許嵌入空格或其他特殊字元
  1. 標識符分類
  • 常規標識符:符合標識符的格式規則
  • 分隔標識符:包含在“”[]內的標識符。該標識符可以不符合標識符的格式規則。

    4.2.2 對象命名規則

    在一個資料庫中創建了一個資料庫對象後,資料庫對象的完整名稱應該由伺服器名、資料庫名、擁有者名和對象名4部分組成
    [[[server.][database].][owner_name].]object_name
    伺服器、資料庫和所有者的名稱即所謂的對象名稱限定符。當引用一個對象時,不需要指定伺服器、資料庫和所有者,可以利用句號標出他們的位置,從而省略限定符。
    指定了所有4哥部分的對象名稱被稱為完全合法名稱。

    4.3.3 使用管理器刪除資料庫

    刪除資料庫時必須滿足以下條件

  • 如果資料庫設計日誌傳輸操作,在刪除資料庫之前必須取消日誌傳送操作
  • 若要刪除為事務複製發佈的資料庫,或刪除為合併複製發佈或訂閱的資料庫,必須首先從資料庫中刪除複製。如果資料庫已損壞,不能刪除複製,可以先將資料庫設置為離線狀態,然後再刪除資料庫。
  • 如果資料庫中存在資料庫快照,必須首先刪除資料庫快照。
    系統資料庫(msdb、model、master、tempdb)無法刪除,刪除資料庫後應立即備份master資料庫,因為刪除資料庫將更新master資料庫中的信息。

    第5章 操作數據表與視圖

    5.1 數據表基礎知識

    5.1.1 基本數據類型

    基本數據類型詳情
    char、varchar、nchar、nvarchar的區別:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如今,隨著信息技術的不斷發展,很多公司採用微信企業號來進行企業與員工之間的聯繫。其實微信企業號中右很多獨立的應用。 那麼如何可以將報表系統集成到微信中呢?這裡分享一下在微信企業號中創建獨立的報表應用,並且將微信賬號單點登錄到帆軟報表軟體FineReport的許可權對接。 ...
  • 現在大部分應用程式都把業務邏輯處理,數據調用等功能封裝成了服務的形式,應用程式只需要調用這些web服務就好了,在這裡就不贅述web服務的優點了。本文總結如何在android中調用Web服務,通過傳遞基類型和複雜類型對比調用.NET平臺發佈的WCF服務和WebService服務之間的區別。 0 寫在前 ...
  • 前言 學習ios這幾天來,總結下,函數的定義,調用。跟其他語言都有一定的區別; 幾個特別重要的就是對象的迭代的使用和判斷、取隨機數、動畫的實現及數組的深入研究等等 之前的總結地址 ios開發 學習積累20161024~20161026: http://www.cnblogs.com/jasonxu1 ...
  • 鏈接 ...
  • 前言 學習本系列內容需要具備一定 HTML 開發基礎,沒有基礎的朋友可以先轉至 "HTML快速入門(一)" 學習 本人接觸 React Native 時間並不是特別長,所以對其中的內容和性質瞭解可能會有所偏差,在學習中如果有錯會及時修改內容,也歡迎萬能的朋友們批評指出,謝謝 文章第一版出自簡書,如果 ...
  • 1.添加載入更多佈局 1_初始化和隱藏代碼在RefreshListView構造方法中調用 2_佈局文件refresh_listview_footer.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android= ...
  • 創建表 插入數據 查詢結果顯示,如下截圖: 問題: 1.計算每個人的總成績併排名(要求顯示欄位:姓名,總成績) select name,SUM(score) as allscore from dbo.stuscore group by name order by allscore; View Cod ...
  • 今天在思考postgresql裡面鎖是怎麼實現的,討論了暫時認為是master進程維護一張表,在各個語句獲取鎖的時候,查詢該表能獲取對應的鎖就繼續,否則就等待,執行完成後釋放鎖。 後面我再去研究到底怎麼實現的,今天先實現怎麼查看某表當前有哪些鎖在上面。 會話1: 事物不提交,在事物2中查詢表test ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...