內容簡介
SQL是英文Structured Query Language的縮寫,中文通常稱為“結構化查詢語言”。按照ANSI(American National Standards Institute,美國國家標準協會)的規定,SQL是關系型數據庫系統的標準語言。使用SQL語句可以執行各種各樣的操作,如更新數據庫中的數據、從數據庫中提取數據等。
SQL Server 2016在SQL Server 2012版本的基礎上,又推出了許多新的特性和關鍵的改進,使得它成為迄今為止的最強大和最全面的SQL Server版本。《SQL Server 2016 數據庫入門與應用》將對SQL Server 2016進行介紹,從實用和實際的角度,深入淺出地分析它的各個要點。
《SQL Server 2016 數據庫入門與應用》共分為14章,第1~13章的主要內容包括:SQL Server 2016發展史、SQL Server 2016新特性、SQL Server 2016如何安裝、sqlcmd工具的使用、系統數據庫、自定義數據庫、數據庫的組成、創建和修改數據庫、數據庫快照、數據表的創建和修改、管理數據表、操作表數據、SELECT語法、簡單查詢、條件查詢、模糊查詢、分組查詢、排序查詢、子查詢、多表連接、內連接、外連接、交叉連接、聯合查詢、T-SQL語言分類、變量、常量、運算符、表達式、流程控制語句、系統函數、自定義函數、SQL注釋、XML數據類型、XML查詢模式、XML索引、XML DML操作、視圖、游標、存儲過程、觸發器、索引、事務、鎖定、安全機制分類、賬戶管理、角色管理、權限管理、數據庫備份、數據庫恢復、壓縮數據庫、附加數據庫等,第14章將各章介紹的主要知識點結合起來,開發一個醫院預約掛號系統。
《SQL Server 2016 數據庫入門與應用》可以作為高等院校計算機相關專業SQL Server數據庫設計課程的教材,也可以作為SQL Server設計的培訓教材,還可以作為自學者的參考書。
前言
Microsoft SQL Server 2016是微軟公司發布的新一代數據平臺產品,全面支持云技術與平臺,并且能夠快速構建相應的解決方案,實現私有云與公有云之間數據的擴展與應用的遷移。全新一代的SQL Server 2016為用戶帶來更好的體驗,獨特的產品優勢定能使用戶獲益良多。
為了使廣大學生和工作者能真正掌握SQL Server 2016技術,作者根據多年的程序開發和SQL Server授課經驗,精心編寫了本書。本書并不單純從知識角度來講解SQL Server數據庫設計,而是從實踐和解決開發問題的角度來介紹SQL Server數據庫,在編寫的過程中,注重把SQL Server數據庫的重點、難點、要點和編程中常見的問題融合在一起進行講解。
本書編寫思路清晰、內容翔實、案例實用,詳細介紹使用SQL Server數據庫開發設計的方方面面。本書可作為計算機軟件以及其他計算機相關專業的教材,也可以作為SQL Server數據庫編程人員的參考書。
本書內容
全書共分14章,主要內容如下。
第1章 數據庫和SQL Server 2016。本章從數據庫的概念開始,簡要介紹關系數據庫及其范式。然后介紹SQL Server的發展史,并講解SQL Server 2016的新特性和安裝過程以及安裝后的簡單應用,最后介紹sqlcmd工具的使用。
第2章 管理SQL數據庫。本章詳細介紹如何管理SQL Server 2016數據庫,如數據庫的創建、數據庫名稱的修改、數據庫的刪除、數據庫的組成部分等內容。在介紹這些內容前,首先需要了解SQL Server 2016的系統數據庫。
第3章 管理SQL數據表。本章詳細介紹SQL數據表的管理,主要介紹表的概念、特點,如何創建、刪除、修改表結構,以及如何為表添加各種約束、鍵等內容。
第4章 SQL數據簡單查詢。本章介紹如何通過SELECT語句針對數據表的數據簡單查詢。
第5章 SQL高級查詢。本章為讀者介紹SQL Server的高級查詢語句,首先從子查詢開始介紹,然后再介紹如何實現多表連接查詢、內連接查詢、外連接查詢、交叉連接查詢等內容。第6章 T-SQL語言編程基礎。本章詳細介紹T-SQL語言編程基礎的有關內容,首先從T-SQL的特點、語言分類開始介紹,接著依次介紹常量、變量、運算符、表達式、流程控制語句、內置函數、自定義函數、SQL注釋等內容,最后以一個綜合的實踐案例結束本章。
第7章 XML查詢技術。本章詳細介紹SQL Server 2016中如何通過XML技術查詢數據,主要內容包含XML數據類型、XML類型方法、XQuery技術、XML高級查詢等。
第8章 視圖和游標。本章詳細介紹視圖和游標,例如視圖的分類、優缺點,以及如何創建、修改、刪除和查看視圖,游標的聲明、打開、讀取、關閉等內容。
第9章 存儲過程。本章詳細介紹存儲過程的知識,例如存儲過程的分類、常用的系統存儲過程、無參存儲過程和有參存儲過程的創建與使用等。
第10章 觸發器。本章主要介紹SQL Server 2016觸發器,包含觸發器的概念、分類、執行環境、創建語法、修改以及刪除等多項內容。
第11章 SQL Server高級特性。本章詳細介紹索引、事務、鎖定的有關知識,包含索引作用、索引分類、創建索引、復合索引、修改索引、刪除索引、事務的ACID屬性、事務分類、事務處理語句、事務隔離級別、鎖定粒度、鎖定模式等多項內容。
第12章 數據庫安全機制。SQL Server 2016提供了非常強大的內置安全性和數據庫保護來實現數據安全,數據庫安全機制涉及用戶、角色、權限等多個與安全性有關的概念,本章將詳細介紹這些知識。
第13章 數據庫的備份和恢復。本章詳細介紹數據庫文件的備份和恢復操作,除此之外,還將提到數據附加和數據庫復制操作。
第14章 醫院預約掛號系統數據庫設計。本章以醫院網上預約系統為背景進行需求分析,然后在SQL Server 2016中實現。包括數據庫的創建、創建表和視圖,并在最后模擬實現常見業務的辦理。
本書特色
本書中大量內容來自真實的程序范例,使讀者更容易掌握SQL Server數據庫的開發。本書難度適中,內容由淺入深,實用性強,覆蓋面廣,條理清晰。
知識點全
本書緊密圍繞SQL Server數據庫展開講解,具有很強的邏輯性和系統性。
實例豐富
書中各實例均經過作者的精心設計和挑選,它們都是根據作者在實際開發中的經驗總結而來,涵蓋了實際開發中遇到的各種問題。
應用廣泛
對于精選案例,給出了詳細步驟,結構清晰簡明,分析深入淺出,而且有些程序能夠直接在項目中使用,避免讀者進行二次開發。
基于理論,注重實踐
在講述過程中,不僅介紹理論知識,而且在合適位置安排綜合應用實例,或者小型應用程序,將理論應用到實踐中,來增強讀者的實際應用能力,鞏固學到的知識。
貼心的提示
為了便于讀者閱讀,全書還穿插著一些技巧、提示等小貼士,體例約定如下。
提示:通常是一些貼心的提醒,讓讀者加深印象或取得建議,或獲得解決問題的方法。
注意:提出學習過程中需要特別注意的一些知識點和內容,或相關信息。
技巧:通過簡短的文字,指出知識點在應用時的一些小竅門。
讀者對象
本書適合作為軟件開發入門者的自學用書,也適合作為高等院校相關專業的教學參考書,還可供開發人員查閱、參考。
● SQL Server 數據庫開發入門者。
● SQL Server 數據庫的初學者以及在校學生。
● 各大中專院校的在校學生和相關授課老師。
● 準備從事與SQL Server 數據庫技術相關的人員。
本書由李艷麗、靳智良編著,其他參與編寫的人員還有鄭志榮、侯艷書、劉利利、侯政洪、肖進、李海燕、侯政云、祝紅濤、崔再喜、賀春雷等,在此表示感謝。在本書的編寫過程中,我們力求精益求精,但難免存在一些不足之處,敬請廣大讀者批評指正。
編 者
目錄
第1章 數據庫和SQL Server 20161.1 什么是數據庫 21.1.1 數據庫概述 21.1.2 數據庫模型 21.2 了解關系型數據庫 31.2.1 數據庫組成 31.2.2 常見術語 41.2.3 完整性規則 51.3 范式理論和E-R模型 51.3.1 范式理論 61.3.2 E-R模型 71.4 SQL Server 2016概述 81.4.1 SQL Server 2016發展史 91.4.2 SQL Server 2016的功能 91.5 安裝和運行SQL Server 2016 121.5.1 安裝SQL Server 2016 121.5.2 運行SQL Server 2016 181.6 驗證SQL Server 2016安裝 191.6.1 查看服務 191.6.2 注冊服務器 201.6.3 配置身份驗證模式 211.7 實踐案例:使用sqlcmd工具執行SQL查詢 221.8 練習題 23第2章 管理SQL數據庫2.1 SQL Server 2016數據庫概述 262.1.1 SQL系統數據庫 262.1.2 文件和文件組 272.1.3 數據庫狀態和文件狀態 282.2 數據庫的組成 292.2.1 表 292.2.2 視圖 292.2.3 存儲過程 302.2.4 觸發器 302.2.5 其他組成部分 302.3 創建數據庫 312.3.1 圖形界面創建 312.3.2 T-SQL語句創建 332.4 管理數據庫 342.4.1 查看數據庫信息 342.4.2 修改數據庫名稱 362.4.3 修改數據庫大小 372.4.4 刪除數據庫 382.4.5 收縮數據庫 392.5 數據庫快照 402.5.1 快照概述 402.5.2 創建快照 402.5.3 數據庫快照的限制 412.6 實踐案例:創建超市會員管理系統數據庫 412.7 練習題 43第3章 管理SQL數據表3.1 表概述 463.1.1 什么是表 463.1.2 系統表和臨時表 473.1.3 表的數據類型 483.1.4 表結構設計 523.2 圖形界面創建表 523.2.1 創建表 533.2.2 修改表結構 543.2.3 刪除表 553.3 命令語句創建表 563.3.1 CREATE TABLE語句 563.3.2 ALTER TABLE語句 593.3.3 為表創建約束 603.3.4 DROP TABLE語句 643.4 操作表數據 643.4.1 添加數據 643.4.2 修改數據 673.4.3 刪除數據 683.4.4 實踐案例:界面方式操作數據 703.5 實踐案例:完善超市管理系統的商品數據表 713.6 練習題 74第4章 SQL數據簡單查詢4.1 簡單查詢 784.1.1 SELECT語句 784.1.2 查詢全部行和列 784.1.3 查詢部分列 794.1.4 為列指定別名 804.1.5 查詢前幾行 804.1.6 查詢不重復數據 814.1.7 實踐案例:查詢數據時使用計算列 824.2 條件查詢 834.2.1 比較條件 834.2.2 邏輯條件 844.3 模糊查詢 854.3.1 LIKE查詢 854.3.2 IS NULL查詢 864.3.3 BETWEEN查詢 874.3.4 IN查詢 884.4 分組查詢 894.4.1 單列分組查詢 894.4.2 多列分組查詢 914.4.3 HAVING條件 924.4.4 條件比較排序 934.5 實踐案例:查詢用戶信息 954.6 練習題 96第5章 SQL高級查詢5.1 子查詢 1005.1.1 簡單子查詢 1005.1.2 IN(NOT IN)子查詢 1015.1.3 EXISTS子查詢 1025.1.4 實踐案例:嵌套子查詢 1035.2 多表連接 1045.2.1 連接語法 1045.2.2 使用別名 1055.2.3 使用JOIN關鍵字連接查詢 1065.3 內連接查詢 1065.3.1 語法格式 1065.3.2 等值連接 1075.3.3 非等值連接 1085.4 外連接查詢 1095.4.1 外連接介紹 1095.4.2 左外連接 1095.4.3 右外連接 1105.4.4 全外連接 1115.5 交叉連接 1125.6 聯合查詢 1135.7 實踐案例:自連接查詢 1155.8 實踐案例:查詢超市商品的具體信息 1155.9 練習題 117第6章 T-SQL語言編程基礎6.1 了解T-SQL語言編程 1206.1.1 什么是T-SQL 1206.1.2 T-SQL語言分類 1206.2 常量和變量 1216.2.1 常量 1216.2.2 變量 1226.3 運算符和表達式 1256.3.1 運算符 1256.3.2 運算符優先級 1296.3.3 表達式 1296.4 流程控制語句 1306.4.1 BEGIN-END語句塊 1306.4.2 IF-ELSE條件語句 1306.4.3 CASE多重分支語句 1326.4.4 GOTO語句 1346.4.5 常用循環語句 1356.4.6 RETURN語句 1366.4.7 延遲語句 1366.4.8 異常處理語句 1376.5 系統函數 1386.5.1 系統函數分類 1386.5.2 數學函數 1396.5.3 字符串函數 1406.5.4 數據類型轉換函數 1416.5.5 日期和時間函數 1426.6 用戶自定義函數 1446.6.1 創建語法 1446.6.2 標量值函數 1456.6.3 表值函數 1466.6.4 實踐案例:創建切割字符串的表值函數 1486.7 SQL注釋 1496.7.1 單行注釋 1506.7.2 多行注釋 1506.8 實踐案例:通過流程控制語句輸出菱形 1506.9 練習題 151第7章 XML查詢技術7.1 XML數據類型 1547.1.1 了解XML數據類型 1547.1.2 使用XML數據類型 1547.1.3 XML類型限制 1557.1.4 XML類型方法 1557.2 XQuery簡介 1597.3 XML查詢模式 1607.3.1 RAW模式 1607.3.2 AUTO模式 1627.3.3 EXPLICIT模式 1637.3.4 PATH模式 1657.4 實踐案例:嵌套查詢 1677.5 XML高級查詢 1687.5.1 XML索引 1687.5.2 OPENXML()函數 1707.5.3 XML DML 1727.6 練習題 174第8章 視圖和游標8.1 視圖 1788.1.1 了解視圖 1788.1.2 視圖優點 1788.1.3 視圖分類 1798.2 SQL語句操作視圖 1818.2.1 創建視圖 1818.2.2 查看視圖 1838.2.3 修改視圖 1848.2.4 命名視圖 1858.2.5 刪除視圖 1858.3 SQL語句操作數據 1868.3.1 插入數據 1868.3.2 修改數據 1888.3.3 刪除數據 1898.4 實踐案例:圖形界面工具操作視圖 1908.5 SQL語句操作游標 1928.5.1 聲明游標 1938.5.2 打開游標 1948.5.3 讀取游標 1958.5.4 關閉游標 1978.5.5 刪除游標 1988.6 實踐案例:利用游標更新和刪除數據 1998.7 練習題 201第9章 存儲過程9.1 什么是存儲過程 2049.1.1 存儲過程的優點 2049.1.2 存儲過程的分類 2049.1.3 系統存儲過程 2059.2 調用存儲過程 2069.2.1 調用語法介紹 2069.2.2 常用系統存儲過程 2079.3 創建存儲過程 2089.3.1 創建語法和限制 2089.3.2 普通存儲過程 2099.3.3 加密存儲過程 2109.3.4 臨時存儲過程 2119.3.5 實踐案例:嵌套存儲過程 2119.4 管理存儲過程 2129.4.1 查看存儲過程 2129.4.2 修改存儲過程 2139.4.3 刪除存儲過程 2149.5 使用存儲過程參數 2159.5.1 參數的定義 2159.5.2 指定輸入參數 2159.5.3 為參數設置默認值 2169.5.4 指定輸出參數 2179.6 實踐案例:以界面方式操作存儲過程 2189.7 實踐案例:SQL存儲過程實現分頁查詢 2209.8 練習題 222第10章 觸發器10.1 什么是觸發器 22610.1.1 了解觸發器 22610.1.2 觸發器的類型 22610.1.3 觸發器的執行環境 22710.2 DML觸發器 22810.2.1 創建語法 22810.2.2 INSERT觸發器 22910.2.3 UPDATE觸發器 23010.2.4 DELETE觸發器 23110.2.5 INSTEAD OF觸發器 23210.3 DDL觸發器 23410.3.1 DDL創建語法 23410.3.2 數據庫觸發器 23410.3.3 服務器觸發器 23510.4 管理觸發器 23610.4.1 修改觸發器 23610.4.2 刪除觸發器 23710.4.3 禁用和啟用觸發器 23810.5 遞歸觸發器 23810.5.1 遞歸觸發器注意事項 23810.5.2 遞歸觸發器分類 23910.5.3 禁用或啟用遞歸觸發器 23910.6 嵌套觸發器 24010.6.1 嵌套觸發器注意事項 24010.6.2 啟用或禁用嵌套觸發器 24010.6.3 實踐案例:嵌套觸發器實現職工的增刪 24110.7 練習題 243第11章 SQL Server高級特性11.1 了解索引 24611.1.1 索引的作用 24611.1.2 索引的分類 24611.1.3 聚集索引 24611.1.4 非聚集索引 24711.1.5 聚集索引和非聚集索引的區別 24811.2 管理索引 24811.2.1 確定索引列 24811.2.2 創建索引的SQL語法 24911.2.3 復合索引 25111.2.4 查看索引 25211.2.5 修改索引 25411.2.6 刪除索引 25411.2.7 實踐案例:通過數據測試有無索引的區別 25411.3 實踐案例:圖形界面工具操作索引 25511.4 事務 25811.4.1 什么是事務 25811.4.2 ACID屬性 25811.4.3 事務分類 25911.4.4 處理語句 25911.4.5 事務隔離級 26111.4.6 實踐案例:事務機制實現轉賬功能 26311.5 鎖定 26411.5.1 為什么使用鎖 26511.5.2 鎖定粒度 26511.5.3 鎖定模式 26511.5.4 獲取與鎖有關的信息 26611.6 練習題 268第12章 數據庫安全機制12.1 安全機制概述 27212.1.1 安全機制分類 27212.1.2 SQL身份驗證模式 27212.1.3 SQL Server安全性機制 27312.1.4 數據庫安全驗證過程 27412.2 賬戶管理 27412.2.1 創建Windows賬戶登錄 27412.2.2 創建SQL Server登錄賬戶 27712.2.3 創建數據庫用戶 27812.2.4 刪除用戶和登錄賬戶 28012.2.5 guest用戶 28012.3 角色管理 28112.3.1 固定服務器角色 28112.3.2 固定數據庫角色 28212.3.3 應用程序角色 28412.3.4 自定義數據庫角色 28512.4 管理數據庫權限 28612.4.1 分配權限 28612.4.2 拒絕權限 28812.4.3 撤銷權限 28812.5 數據庫架構 28812.5.1 界面方式創建架構 28912.5.2 命令語句創建架構 28912.5.3 刪除架構 29012.6 實踐案例:為用戶分配權限并進行測試 29012.7 練習題 292第13章 數據庫的備份和恢復13.1 數據庫備份 29613.1.1 備份概述 29613.1.2 何時備份 29613.1.3 備份方法 29713.2 備份設備 29813.2.1 命令語句創建備份設備 29813.2.2 界面創建備份設備 29813.2.3 查看備份設備 29913.2.4 刪除備份設備 30013.3 SQL命令備份數據庫 30013.3.1 完整備份 30013.3.2 差異備份 30113.3.3 備份文件或文件組 30213.3.4 備份事務日志 30313.4 實踐案例:圖形界面備份數據庫 30313.5 實踐案例:圖形界面實現壓縮備份 30413.6 數據庫恢復 30513.6.1 前期準備工作 30513.6.2 恢復整個數據庫 30613.6.3 恢復事務日志 30613.6.4 實踐案例:通過圖形界面恢復數據庫 30713.7 附加和實踐案例:圖形界面附加數據庫 30813.8 實踐案例:數據庫收縮功能的實現 30913.9 練習題 309第14章 醫院預約掛號系統數據庫設計14.1 系統概述 31214.1.1 開發背景 31214.1.2 開發意義 31214.1.3 功能概述 31314.2 數據庫設計 31414.2.1 創建數據庫 31514.2.2 創建數據表 31514.2.3 創建視圖 32014.2.4 模擬簡單業務邏輯 32114.2.5 創建存儲過程 32314.3 常見業務辦理 32614.3.1 更新患者姓名 32614.3.2 修改密碼 32614.3.3 更改醫生表 32714.3.4 查詢預約信息 32814.4 備份和恢復數據庫 329練習題答案