《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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...