目 錄 第1篇 sql server數(shù)據(jù)庫基礎第1章 初識sql server 2012 31.1 數(shù)據(jù)庫的基本概念 41.1.1 什么是數(shù)據(jù)庫 41.1.2 表 41.1.3 數(shù)據(jù)類型 51.1.4 主鍵 51.2 數(shù)據(jù)庫的技術構成 51.2.1 數(shù)據(jù)庫系統(tǒng) 51.2.2 sql語言 61.2.3 數(shù)據(jù)庫訪問技術 71.3 sql server 2012的優(yōu)勢 81.4 sql server 2012的新功能 81.5 sql server 2012的組成 91.5.1 sql server數(shù)據(jù)庫引擎 91.5.2 分析服務 101.5.3 集成服務 101.5.4 報表服務 101.6 高手甜點 101.7 跟我學上機 11第2章 sql server 2012的安裝與配置 132.1 如何選擇sql server 2012的版本 142.2 安裝sql server 2012 152.2.1 sql server 2012 安裝環(huán)境要求 152.2.2 實例1——安裝sql server 2012 152.2.3 sql server 2012常見實用程序 262.3 ssms基本操作 282.3.1 實例2——ssms的啟動與連接 282.3.2 實例3——使用模板資源管理器、解決方案與腳本項目 302.3.3 實例4——配置sql server服務器的屬性 322.3.4 實例5——查詢設計器 412.4 高手甜點 452.5 跟我學上機 45 第2篇 sql server數(shù)據(jù)庫基本操作第3章 操作數(shù)據(jù)庫 493.1 數(shù)據(jù)庫組成 503.1.1 數(shù)據(jù)文件 503.1.2 日志文件 503.2 系統(tǒng)數(shù)據(jù)庫 513.2.1 master數(shù)據(jù)庫 513.2.2 model數(shù)據(jù)庫 513.2.3 msdb數(shù)據(jù)庫 513.2.4 tempdb數(shù)據(jù)庫 513.3 創(chuàng)建數(shù)據(jù)庫 523.3.1 實例1——使用對象資源管理器創(chuàng)建數(shù)據(jù)庫 523.3.2 實例2——使用transact-sql創(chuàng)建數(shù)據(jù)庫 563.4 管理數(shù)據(jù)庫 593.4.1 實例3——修改數(shù)據(jù)庫 593.4.2 實例4——修改數(shù)據(jù)容量 603.4.3 實例5——增加數(shù)據(jù)庫容量 613.4.4 實例6——縮減數(shù)據(jù)庫容量 633.4.5 實例7——查看數(shù)據(jù)庫信息 643.4.6 實例8——數(shù)據(jù)庫更名 683.4.7 實例9——刪除數(shù)據(jù)庫 693.5 高手甜點 703.6 跟我學上機 70第4章 數(shù)據(jù)表的操作 734.1 數(shù)據(jù)類型 744.1.1 系統(tǒng)數(shù)據(jù)類型 744.1.2 實例1——自定義數(shù)據(jù)類型 794.2 創(chuàng)建數(shù)據(jù)表 824.2.1 創(chuàng)建數(shù)據(jù)表的條件 824.2.2 實例2——使用對象資源管理器創(chuàng)建表 834.2.3 實例3——使用transact-sql創(chuàng)建表 844.3 修改表字段 864.3.1 實例4——增加字段 864.3.2 實例5——修改字段 884.3.3 實例6——刪除字段 904.4 修改表約束 914.4.1 實例7——了解常見的表約束 914.4.2 實例8——增加約束 934.4.3 實例9——刪除約束 964.5 實例10——查看表中有關信息 974.6 實例11——刪除表 994.7 高手甜點 1004.8 跟我學上機 101第5章 transact-sql語言基礎 1035.1 transact-sql概述 1045.1.1 什么是transact-sql 1045.1.2 transact-sql語法的約定 1055.2 如何給標識符起名 1065.3 常量 1075.3.1 數(shù)字常量 1075.3.2 字符串常量 1085.3.3 日期和時間常量 1095.3.4 符號常量 1095.4 變量 1105.4.1 實例1——全局變量 1105.4.2 實例2——局部變量 1125.4.3 實例3——批和腳本 1135.5 運算符和表達式 1155.5.1 算術運算符 1155.5.2 比較運算符 1155.5.3 邏輯運算符 1165.5.4 字符串串聯(lián)運算符 1165.5.5 位運算符 1165.5.6 運算符的優(yōu)先級 1175.5.7 什么是表達式 1175.5.8 transact-sql表達式的分類 1185.6 transact-sql利器——通配符 1195.7 transact-sql語言中的注釋 1195.8 高手甜點 1205.9 跟我學上機 120第6章 transact-sql語句 1216.1 數(shù)據(jù)定義語句 1226.1.1 實例1——創(chuàng)建語句(create) 1226.1.2 實例2——刪除語句(drop) 1256.1.3 實例3——修改語句(alter) 1256.2 數(shù)據(jù)操作語句 1276.2.1 實例4——插入數(shù)據(jù)(insert) 1276.2.2 實例5——更改數(shù)據(jù)(update) 1296.2.3 實例6——刪除數(shù)據(jù)(delete) 1316.2.4 實例7——查詢數(shù)據(jù)(select) 1326.3 數(shù)據(jù)控制語句 1406.3.1 實例8——給用戶授予權限(grant) 1406.3.2 實例9——拒絕權限操作(deny) 1416.3.3 實例10——收回權限操作(revoke) 1416.4 其他基本語句 1416.4.1 實例11——數(shù)據(jù)聲明(declare) 1416.4.2 實例12——數(shù)據(jù)賦值(set) 1426.4.3 實例13——數(shù)據(jù)輸出(print) 1436.5 流程控制語句 1446.5.1 實例14——begin…end語句 1446.5.2 實例15——if…else語句 1456.5.3 實例16——case語句 1466.5.4 實例17——while語句 1486.5.5 實例18——goto語句 1496.5.6 實例19——waitfor語句 1506.5.7 實例20——return語句 1516.6 實例21——批處理語句 1526.7 高手甜點 1536.8 跟我學上機 153第7章 視圖操作 1557.1 視圖概述 1567.1.1 視圖的概念 1567.1.2 視圖分類 1567.1.3 視圖優(yōu)點和作用 1577.2 創(chuàng)建視圖 1577.2.1 實例1——使用視圖設計器創(chuàng)建視圖 1587.2.2 實例2——使用transact-sql命令創(chuàng)建視圖 1597.3 實例3——修改視圖 1617.4 實例4——查看視圖信息 1627.5 使用視圖修改數(shù)據(jù) 1637.5.1 實例5——通過視圖向基本表中插入數(shù)據(jù) 1647.5.2 實例6——通過視圖修改基本表中的數(shù)據(jù) 1657.5.3 實例7——通過視圖刪除基本表中的數(shù)據(jù) 1657.6 實例8——刪除視圖 1667.7 高手甜點 1677.8 跟我學上機 168第8章 數(shù)據(jù)的插入、更新和刪除 1698.1 插入數(shù)據(jù)(insert) 1708.1.1 實例1——插入單行數(shù)據(jù) 1708.1.2 實例2——插入多行數(shù)據(jù) 1728.2 修改數(shù)據(jù)(update) 1748.2.1 實例3——修改單行數(shù)據(jù) 1758.2.2 實例4——修改多行數(shù)據(jù) 1758.3 刪除數(shù)據(jù)(delete) 1778.3.1 實例5——刪除部分數(shù)據(jù) 1778.3.2 實例6——刪除表中所有數(shù)據(jù) 1788.4 高手甜點 1788.5 跟我學上機 179 第3篇 transact-sql查詢語句第9章 sql server函數(shù) 1839.1 sql server函數(shù)簡介 1849.2 字符串函數(shù) 1849.2.1 實例1——ascii()函數(shù) 1849.2.2 實例2——char() 函數(shù) 1859.2.3 實例3——left()函數(shù) 1859.2.4 實例4——right()函數(shù) 1869.2.5 實例5——ltrim()函數(shù) 1869.2.6 實例6——rtrim()函數(shù) 1879.2.7 實例7——str()函數(shù) 1879.2.8 實例8——字符串逆序的函數(shù)reverse(s) 1889.2.9 實例9——計算字符串長度的函數(shù)len(str) 1889.2.10 實例10——匹配子串開始位置的函數(shù)charindex() 1899.2.11 實例11——substring()函數(shù) 1909.2.12 實例12——lower()函數(shù) 1909.2.13 實例13——upper()函數(shù) 1919.2.14 實例14——替換函數(shù)replace(s,s1,s2) 1919.3 數(shù)學函數(shù) 1929.3.1 實例15——絕對值函數(shù)abs(x)和返回圓周率的函數(shù)pi() 1929.3.2 實例16——平方根函數(shù)sqrt(x) 1939.3.3 實例17——獲取隨機數(shù)的函數(shù)rand()和rand(x) 1939.3.4 實例18——四舍五入函數(shù)round(x,y) 1949.3.5 實例19——符號函數(shù)sign(x) 1959.3.6 實例20——獲取整數(shù)的函數(shù)ceiling(x)和floor(x) 1959.3.7 實例21——冪運算函數(shù)power(x,y)、square(x)和exp(x) 1969.3.8 實例22——對數(shù)運算函數(shù)log(x)和log10(x) 1979.3.9 實例?23——角度與弧度相互轉換的函數(shù)radians(x)和degrees(x) 1989.3.10 實例24——正弦函數(shù)sin(x)和反正弦函數(shù)asin(x) 1989.3.11 實例25——余弦函數(shù)cos(x)和反余弦函數(shù)acos(x) 1999.3.12 實例26——正切函數(shù)tan(x)、反正切函數(shù)atan(x)和余切函數(shù)cot(x) 1999.4 實例27——數(shù)據(jù)類型轉換函數(shù) 2019.5 文本和圖像函數(shù) 2019.5.1 實例28——textptr()函數(shù) 2019.5.2 實例29——textvalid()函數(shù) 2029.6 日期和時間函數(shù) 2039.6.1 實例30——獲取系統(tǒng)當前日期的函數(shù)getdate() 2039.6.2 實例31——返回utc日期的函數(shù)utc_date() 2039.6.3 實例32——獲取天數(shù)的函數(shù)day(d) 2049.6.4 實例33——獲取月份的函數(shù)month(d) 2049.6.5 實例34——獲取年份的函數(shù)year(d) 2059.6.6 實例35——獲取日期中指定部分字符串值的函數(shù)datename (dp,d) 2059.6.7 實例36——獲取日期中指定部分的整數(shù)值的函數(shù)datepart(dp,d) 2069.6.8 實例37——計算日期和時間的函數(shù)dateadd(dp,num,d) 2079.7 系統(tǒng)函數(shù) 2079.7.1 實例38——返回表中指定字段的長度值的函數(shù)col_length() 2079.7.2 實例39——返回表中指定字段的名稱的函數(shù)col_name() 2089.7.3 實例40——返回數(shù)據(jù)表達式的數(shù)據(jù)的實際長度函數(shù)datalength() 2089.7.4 實例41——返回數(shù)據(jù)庫的編號的函數(shù)db_id() 2099.7.5 實例42——返回數(shù)據(jù)庫的名稱的函數(shù)db_name() 2099.7.6 實例43——返回當前數(shù)據(jù)庫默認的null值的函數(shù)getansinull() 2109.7.7 實例44——返回服務器端計算機的標識號的函數(shù)host_id() 2119.7.8 實例45——返回服務器端計算機的名稱的函數(shù)host_name() 2119.7.9 實例46——返回數(shù)據(jù)庫對象的編號的函數(shù)object_id() 2129.7.10 實例47——返回用戶的sid(安全標識號)的函數(shù)suser_sid() 2129.7.11 實例48——返回用戶的登錄名的函數(shù)suser_sname() 2139.7.12 實例49——返回數(shù)據(jù)庫對象的名稱的函數(shù)object_name() 2139.7.13 實例50——返回數(shù)據(jù)庫用戶的標識號的函數(shù)user_id() 2149.7.14 實例51——返回數(shù)據(jù)庫用戶名的函數(shù)user_name() 2159.8 高手甜點 2159.9 跟我學上機 215第10章 transact-sql查詢 21710.1 查詢工具的使用 21810.1.1 實例1——編輯查詢 21810.1.2 實例2——查詢結果的顯示方法 21910.2 使用select進行查詢 22010.2.1 實例3——使用星號和列名 22110.2.2 實例4——使用distinct取消重復 22310.2.3 實例5——使用top返回前n行 22310.2.4 實例6——修改列標題 22410.2.5 實例7——在查詢結果集中顯示字符串 22510.2.6 實例8——查詢列表達式 22610.3 使用where進行條件查詢 22710.3.1 實例9——使用關系表達式查詢 22710.3.2 實例10——使用between…and表示范圍 22910.3.3 實例11——使用in關鍵字 22910.3.4 實例12——使用like關鍵字 23010.3.5 實例13——使用is null查詢空值 23310.3.6 實例14——使用exists關鍵字 23510.3.7 實例15——使用order by排序 23610.3.8 實例16——使用group by分組 23810.3.9 實例17——使用having對分組結果過濾 23910.3.10 實例18——使用compute子句對查詢結果小計 24010.3.11 實例19——使用compute by子句分組小計 24110.3.12 實例20——使用union合并查詢結果集 24110.4 使用聚合函數(shù)統(tǒng)計匯總 24310.4.1 實例21——使用sum()函數(shù)求列的和 24410.4.2 實例22——使用avg()函數(shù)求列平均值 24510.4.3 實例23——使用max()函數(shù)求列*大值 24610.4.4 實例24——使用min()函數(shù)求列*小值 24710.4.5 實例25——使用count()函數(shù)統(tǒng)計 24810.5 嵌套查詢 25010.5.1 實例26——使用比較運算符 25010.5.2 實例27——使用in關鍵字 25110.5.3 實例28——使用any、some和all關鍵字 25210.5.4 實例29——使用exists關鍵字 25410.6 多表連接查詢 25610.6.1 實例30——相等連接 25610.6.2 實例31——不等連接 25710.6.3 實例32——帶選擇條件的連接 25710.6.4 自連接 25810.7 外連接 25910.7.1 實例33——左外連接 25910.7.2 實例34——右外連接 26010.7.3 實例35——全外連接 26010.8 使用排序函數(shù) 26110.8.1 實例36——row_number()函數(shù) 26110.8.2 實例37——rank()函數(shù) 26210.8.3 實例38——dense_rank()函數(shù) 26310.8.4 實例39——ntile()函數(shù) 26310.9 實例40——動態(tài)查詢 26410.10 高手甜點 26510.11 跟我學上機 265第11章 存儲過程和自定義函數(shù) 26911.1 存儲過程概述 27011.2 存儲過程分類 27011.2.1 系統(tǒng)存儲過程 27111.2.2 自定義存儲過程 27111.2.3 擴展存儲過程 27111.3 創(chuàng)建存儲過程 27111.3.1 實例1——創(chuàng)建存儲過程 27211.3.2 實例2——存儲過程調用 27511.3.3 實例3——創(chuàng)建帶輸入參數(shù)的存儲過程 27611.3.4 實例4——創(chuàng)建帶輸出參數(shù)的存儲過程 27811.4 管理存儲過程 28011.4.1 實例5——修改存儲過程 28011.4.2 實例6——查看存儲過程 28111.4.3 實例7——重命名存儲過程 28311.4.4 實例8——刪除存儲過程 28411.5 實例9——擴展存儲過程 28511.6 自定義函數(shù) 28611.6.1 實例10——創(chuàng)建標量函數(shù) 28711.6.2 實例11——創(chuàng)建表值函數(shù) 28911.6.3 實例12——刪除函數(shù) 29011.7 高手甜點 29111.8 跟我學上機 291第12章 觸發(fā)器 29312.1 觸發(fā)器概述 29412.1.1 什么是觸發(fā)器 29412.1.2 觸發(fā)器的作用 29412.1.3 觸發(fā)器的分類 29512.2 創(chuàng)建dml觸發(fā)器 29512.2.1 實例1——insert觸發(fā)器 29512.2.2 實例2——delete觸發(fā)器 29812.2.3 實例3——update觸發(fā)器 29912.2.4 實例4——替代觸發(fā)器 30012.2.5 實例5——允許使用嵌套觸發(fā)器 30112.2.6 實例6——遞歸觸發(fā)器 30312.3 創(chuàng)建ddl觸發(fā)器 30412.3.1 創(chuàng)建ddl觸發(fā)器的語法 30412.3.2 實例7——創(chuàng)建服務器作用域的ddl觸發(fā)器 30412.4 管理觸發(fā)器 30612.4.1 實例8——查看觸發(fā)器 30612.4.2 實例9——修改觸發(fā)器 30812.4.3 實例10——刪除觸發(fā)器 30812.4.4 實例11——啟用和禁用觸發(fā)器 30912.5 高手甜點 31012.6 跟我學上機 310第13章 創(chuàng)建和使用索引 31113.1 索引的含義和特點 31213.2 索引的分類 31213.3 索引的設計原則 31313.4 創(chuàng)建索引 31413.4.1 實例1——使用【對象資源管理器】面板創(chuàng)建索引 31413.4.2 實例2——使用transact-sql語句創(chuàng)建索引 31613.5 管理和維護索引 31913.5.1 實例3——顯示索引信息 31913.5.2 實例4——重命名索引 32213.5.3 實例5——刪除索引 32313.6 高手甜點 32413.7 跟我學上機 324第14章 游標 32714.1 認識游標 32814.1.1 游標的概念 32814.1.2 游標的優(yōu)點 32814.1.3 游標的分類 32814.2 游標的基本操作 33014.2.1 實例1——聲明游標 33014.2.2 實例2——打開游標 33114.2.3 實例3——讀取游標中的數(shù)據(jù) 33214.2.4 實例4——關閉游標 33314.2.5 實例5——釋放游標 33414.3 游標的運用 33414.3.1 實例6——使用游標變量 33414.3.2 實例7——用游標為變量賦值 33514.3.3 實例8——用order by子句改變游標中行的順序 33614.3.4 實例9——用游標修改數(shù)據(jù) 33714.3.5 實例10——用游標刪除數(shù)據(jù) 33814.4 使用系統(tǒng)存儲過程管理游標 33914.4.1 實例11——sp_cursor_list存儲過程 33914.4.2 實例12——sp_describe_cursor存儲過程 34114.4.3 實例13——sp_describe_cursor_columns存儲過程 34314.4.4 實例14——sp_describe_cursor_tables存儲過程 34414.5 高手甜點 34614.6 跟我學上機 346 第4篇 sql server數(shù)據(jù)庫高級管理第15章 規(guī)則、默認和完整性約束 34915.1 規(guī)則和默認概述 35015.2 規(guī)則的基本操作 35015.2.1 實例1——創(chuàng)建規(guī)則 35015.2.2 實例2——把自定義規(guī)則綁定到列 35015.2.3 實例3——驗證規(guī)則作用 35115.2.4 實例4——取消規(guī)則綁定 35215.2.5 實例5——刪除規(guī)則 35215.3 默認的基本操作 35315.3.1 實例6——創(chuàng)建默認 35315.3.2 實例7——把自定義默認綁定到列 35415.3.3 實例8——驗證默認作用 35415.3.4 實例9——取消默認綁定 35515.3.5 實例10——刪除默認值 35515.4 完整性約束 35615.4.1 實例11——主鍵約束 35715.4.2 實例12——外鍵約束 36015.4.3 實例13——唯一性約束 36315.4.4 實例14——check約束 36415.4.5 實例15——default約束 36415.4.6 實例16——not null約束 36415.5 高手甜點 36515.6 跟我學上機 365第16章 事務和鎖 36716.1 事務管理 36816.1.1 事務的原理 36816.1.2 事務管理的常用語句 36916.1.3 事務的隔離級別 36916.1.4 實例1——事務的應用 37016.2 鎖 37216.2.1 鎖的內涵與作用 37316.2.2 可鎖定資源與鎖的類型 37416.2.3 死鎖 37516.2.4 實例2——鎖的應用 37616.3 高手甜點 37916.4 跟我學上機 380第17章 sql server 2012的安全機制 38117.1 sql server安全性概述 38217.1.1 sql server 2012的安全機制 38217.1.2 基本安全術語 38317.2 安全驗證方式 38417.2.1 windows身份驗證模式 38517.2.2 混合模式 38517.2.3 實例1——設置驗證模式 38517.3 創(chuàng)建登錄賬戶 38617.3.1 實例2——創(chuàng)建windows登錄賬戶 38717.3.2 實例3——創(chuàng)建sql server登錄賬戶 39117.4 實例4——修改登錄賬戶 39417.5 實例5——刪除登錄賬戶 39517.6 角色管理 39617.6.1 固定服務器角色 39617.6.2 數(shù)據(jù)庫角色 39817.6.3 實例6——自定義數(shù)據(jù)庫角色 39817.6.4 實例7——應用程序角色 40217.6.5 實例8——將登錄指派到角色 40417.6.6 將角色指派到多個登錄用戶 40517.7 權限管理 40717.7.1 實例9——授予權限 40817.7.2 實例10——拒絕權限 40917.7.3 實例11——撤銷權限 40917.8 高手甜點 41017.9 跟我學上機 410第18章 數(shù)據(jù)庫的備份與恢復 41118.1 備份與恢復介紹 41218.1.1 備份類型 41218.1.2 恢復模式 41318.1.3 實例1——配置恢復模式 41318.2 備份設備 41418.2.1 備份設備類型 41418.2.2 實例2——創(chuàng)建備份設備 41518.2.3 實例3——查看設備備份 41618.2.4 實例4——刪除備份設備 41718.3 使用transact-sql語言備份數(shù)據(jù)庫 41718.3.1 實例5——完整備份與差異備份 41718.3.2 實例6——文件和文件組備份 42018.3.3 實例7——事務日志備份 42218.4 在sql server management studio中還原數(shù)據(jù)庫 42318.4.1 還原數(shù)據(jù)庫的方式 42318.4.2 還原數(shù)據(jù)庫前要注意的事項 42318.4.3 實例8——還原數(shù)據(jù)庫備份 42518.4.4 實例9——還原文件和文件組備份 42818.5 用transact-sql語言還原數(shù)據(jù)庫 42918.5.1 實例10——還原完整備份 42918.5.2 實例11——還原差異備份 43118.5.3 實例12——還原事務日志備份 43218.5.4 實例13——還原文件和文件組備份 43218.5.5 實例14——將數(shù)據(jù)庫還原到某個時間點 43318.5.6 實例15——將文件還原到新位置上 43518.6 實例16——建立自動備份的維護計劃 43618.7 高手甜點 44118.8 跟我學上機 441 第5篇 sql server應用案例設計第19章 論壇管理系統(tǒng)數(shù)據(jù)庫設計 44519.1 系統(tǒng)概述 44619.2 系統(tǒng)功能 44619.3 數(shù)據(jù)庫設計和實現(xiàn) 44719.3.1 設計方案圖表 44719.3.2 設計表 44919.3.3 設計索引 45319.3.4 設計視圖 45419.4 本章小結 454第20章 新聞發(fā)布系統(tǒng)數(shù)據(jù)庫設計 45520.1 系統(tǒng)概述 45620.2 系統(tǒng)功能 45620.3 數(shù)據(jù)庫設計和實現(xiàn) 45720.3.1 設計表 45720.3.2 設計索引 46220.3.3 設計視圖 46320.4 本章小結 464