SQL Server 2012編程入門經典(第4版)

SQL Server 2012編程入門經典(第4版)

《SQL Server 2012編程入門經典(第4版)》是於2014年8月1日出版的一本圖書。

圖書簡介

這本循序漸進的教程介紹如何創建效率更高的管理程式,如何從SQL Server資料庫環境中獲得商務智慧型。本書探討了SQL的基本對象、基本查詢和連線,然後把對象添加到資料庫中,並使用對物理設計非常重要的項。接著研究了SQL Server腳本的編寫。最後討論了如何使用SQLServer 2012的功能為主流應用程式建立主流資料庫。

目錄

第1章 RDBMS基礎:SQL Server數據

庫的構成 1

1.1 資料庫對象概述 2

1.1.1 資料庫對象 2

1.1.2 事務日誌 6

1.1.3 最基本的資料庫對象:表 7

1.1.4 檔案組 8

1.1.5 資料庫關係圖 8

1.1.6 視圖 9

1.1.7 存儲過程 9

1.1.8 用戶自定義函式 10

1.1.9 序列 10

1.1.10 用戶和角色 10

1.1.11 規則 10

1.1.12 默認值 11

1.1.13 用戶自定義數據類型 11

1.1.14 全文目錄 11

1.2 SQL Server數據類型 11

1.3 SQL Server對象標識符 15

1.3.1 需要命名的對象 16

1.3.2 命名規則 16

1.4 本章小結 17

第2章 SQL Server管理工具 19

2.1 使用在線上叢書獲得幫助 20

2.2 SQL Server配置管理器 21

2.2.1 服務管理 21

2.2.2 網路配置 21

2.2.3 協定 23

2.2.4 客戶端 24

2.3 SQL Server Management

Studio 26

2.3.1 啟動Management Studio 27

2.3.2 通過“查詢”視窗互動 30

2.4 SQL Server Data Tools

(以前稱為BIDS) 36

2.5 SQL Server集成服務(SSIS) 37

2.6SQLServerReportingServices

(SSRS) 37

2.7SQLServerAnalysisServices

(SSAS) 38

2.8BulkCopyProgram(bcp) 38

2.9SQLServerProfiler 38

2.10sqlcmd 39

2.11PowerShell 39

2.12本章小結 39

第3章T-SQL基本語句 41

3.1基本SELECT語句 42

3.1.1SELECT語句與

FROM子句 42

3.1.2WHERE子句 46

3.1.3ORDERBY子句 48

3.1.4使用GROUPBY子句

聚合數據 51

3.1.5使用HAVING子句給分組

設定條件 59

3.1.6使用FORXML子句

輸出XML 61

3.1.7通過OPTION子句

利用提示 61

3.1.8DISTINCT和ALL謂詞 61

3.2使用INSERT語句添加數據 64

3.2.1多行插入 69

3.2.2INSERTINTO…

SELECT語句 69

3.3用UPDATE語句更改獲得的

數據 71

3.4DELETE語句 73

3.5本章小結 75

第4章連線 77

4.1連線 78

4.2內部連線 79

4.3使用外部連線檢索更多數據 86

4.3.1簡單的外部連線 86

4.3.2處理更複雜的外部連線 92

4.4完全連線 97

4.5交叉連線 98

4.6JOIN語句的早期語法結構 100

4.6.1內部連線的早期語法結構 100

4.6.2外部連線的早期語法結構 101

4.6.3交叉連線的早期語法結構 102

4.7聯合 103

4.8本章小結 106

第5章創建和修改數據表 109

5.1SQLServer中的對象名 109

5.1.1模式名(也稱為所有權) 110

5.1.2資料庫名 112

5.1.3通過伺服器命名 113

5.1.4回顧默認值 113

5.2CREATE語句 113

5.2.1CREATEDATABASE 114

5.2.2構建資料庫 118

5.2.3CREATETABLE 120

5.3ALTER語句 131

5.3.1ALTERDATABASE 131

5.3.2ALTERTABLE 135

5.4DROP語句 139

5.5使用GUI工具 139

5.5.1使用ManagementStudio

創建資料庫 140

5.5.2回到代碼:使用Management

Studio創建腳本 144

5.6本章小結 145

第6章鍵和約束 147

6.1約束的類型 148

6.1.1域約束 148

6.1.2實體約束 149

6.1.3參照完整性約束 149

6.2約束命名 149

6.3鍵約束 150

6.3.1主鍵約束 150

6.3.2外鍵約束 153

6.3.3獨一的約束 164

6.4CHECK約束 165

6.5DEFAULT約束 166

6.5.1在CREATETABLE語句中

定義DEFAULT約束 167

6.5.2在已存在的表中添加

6.7規則和默認值 172

6.7.1規則 173

6.7.2刪除規則 174

6.7.3默認值 174

6.7.4刪除默認值 175

6.7.5確定哪些表和數據類型使用

給定的規則或默認值 175

6.8用於實現數據完整性的

觸發器 176

6.9如何選擇 176

6.10本章小結 177

第7章更複雜的查詢 179

7.1子查詢的概念 180

7.2關聯子查詢 184

7.2.1關聯子查詢的工作原理 184

7.2.2處理NULL數據——

ISNULL函式 188

7.3派生表 189

7.4使用通用表表達式(CTE) 192

7.4.1使用WITH關鍵字 192

7.4.2使用多個CTE 194

7.4.3遞歸CTE 195

7.5使用EXISTS運算符 195

7.5.1使用EXISTS篩選數據 195

7.5.2以其他方式使用EXISTS 197

7.6混合數據類型:

CAST和CONVERT 199

7.7使用MERGE命令同步數據 202

7.7.1實際使用MERGE命令 202

7.7.2BYTARGET和

BYSOURCE 205

7.8使用OUTPUT子句

收集受影響的行 206

7.9研究視窗化函式 208

7.9.1ROW_NUMBER 208

7.9.2RANK、DENSE_RANK和

NTILE 211

7.10一次一個數據塊:

特殊的查詢分頁 212

7.11性能方面的考慮 213

7.11.1測量性能 214

7.11.2JOIN、子查詢和

CTE的對比 215

7.12本章小結 216

第8章規範化和其他基本設計問題 219

8.1理解表 219

8.2保持數據“規範” 220

8.2.1準備工作 221

8.2.2第一範式 222

8.2.3第二範式 225

8.2.4第三範式 226

8.2.5其他範式 228

8.3理解關係 229

8.3.1一對一關係 229

8.3.2零或一對一關係 230

8.3.3一對一或一對多關係 230

8.3.4一對零、一對一或

一對多關係 231

8.3.5多對多關係 232

8.4資料庫關係圖 234

8.4.1表 236

8.4.2在資料庫關係圖中

創建關係 242

8.5反規範化 245

8.6超出規範化的一些規則 245

8.6.1保持簡單 245

8.6.2選擇數據類型 246

8.6.3儘量進行存儲 246

8.7創建一個快速示例 247

8.7.1創建資料庫 247

8.7.2添加資料庫關係圖和

初始表 247

8.7.3添加關係 251

8.7.4添加一些約束 253

8.8本章小結 253

第9章SQLServer存儲和索引

結構 255

9.1SQLServer存儲機制 255

9.1.1資料庫 255

9.1.2區段 256

9.1.3頁 256

9.1.4行 257

9.1.5稀疏列 257

9.2理解索引 258

9.2.1平衡樹(B-樹) 259

9.2.2SQLServer中的數據

訪問方式 261

9.3創建、修改和刪除索引 269

9.3.1CREATEINDEX語句 269

9.3.2創建XML索引 274

9.3.3隨約束創建的隱含索引 275

9.3.4在稀疏列和地理空間列上

創建索引 275

9.4明智地選擇——在何時何地

使用何種索引 276

9.4.1選擇性 276

9.4.2注意成本:少即是多 279

9.4.3選擇群集索引 279

9.4.4列順序問題 281

9.4.5覆蓋索引 282

9.4.6過濾索引 282

9.4.7修改索引 283

9.4.8刪除索引 286

9.4.9從查詢計畫中獲取提示 286

9.4.10索引未被使用的原因 286

9.4.11使用資料庫引擎

調整嚮導 287

9.5維護索引 287

9.5.1碎片 288

9.5.2確定碎片和頁拆分的

可能性 288

9.6本章小結 292

第10章視圖 295

10.1創建簡單的視圖 295

10.2使用T-SQL編輯視圖 307

10.3刪除視圖 307

10.4在ManagementStudio中

創建和編輯視圖 307

10.4.1在ManagementStudio

中創建視圖 308

10.4.2在ManagementStudio中

編輯視圖 310

10.5審查:顯示現有的代碼 311

10.6保護代碼:加密視圖 312

10.7關於模式綁定 314

10.8使用VIEW_METADATA使

視圖看起來像表一樣 314

10.9索引(物化)視圖 314

10.10索引聚集視圖 317

10.11本章小結 320

第11章編寫腳本和批處理 323

11.1腳本的基礎知識 324

11.1.1使用USE語句選擇

資料庫環境 324

11.1.2聲明變數 325

11.1.3設定變數中的值 326

11.1.4系統函式回顧 328

11.1.5檢索標識值 329

11.1.6生成序列 333

11.1.7使用@@ROWCOUNT 336

11.2將語句分組到批處理中 337

11.2.1自成一行 338

11.2.2每個批處理單獨傳送到

伺服器 338

11.2.3GO不是T-SQL命令 339

11.2.4批處理中的錯誤 339

11.2.5何時使用批處理 339

11.3從命令提示符運行:

sqlcmd 343

11.4動態SQL:用EXEC命令

動態生成代碼 347

11.4.1動態生成代碼 347

11.4.2理解動態SQL的

危險性 349

11.5使用控制流語句 353

11.5.1IF…ELSE語句 353

11.5.2CASE語句 357

11.5.3用WHILE語句

進行循環 362

11.5.4WAITFOR語句 364

11.5.5使用TRY/CATCH塊

處理錯誤 364

11.6本章小結 367

第12章存儲過程 369

12.1創建存儲過程:

基本語法 370

12.2使用ALTER修改

存儲過程 371

12.3刪除存儲過程 372

12.4參數化存儲過程 372

12.4.1聲明參數 372

12.4.2通過返回值確認成功或

失敗 378

12.4.3如何使用RETURN 378

12.5錯誤處理 380

12.5.1處理內聯錯誤 381

12.5.2利用@@ERROR 382

12.5.3在存儲過程中使用

@@ERROR 383

12.5.4在錯誤發生前

處理錯誤 386

12.5.5手動引發錯誤 392

12.5.6重新拋出錯誤 396

12.5.7添加自定義的

錯誤訊息 397

12.6存儲過程的優點 399

12.6.1創建可調用的進程 399

12.6.2為了安全性而使用

存儲過程 399

12.6.3存儲過程和性能 400

12.7擴展存儲過程(XP) 402

12.8遞歸簡介 402

12.9調試 404

12.9.1啟動調試器 405

12.9.2調試器的組成 405

12.9.3使用斷點進行中斷 408

12.9.4使用調試器 410

12.10理解.NET程式集 413

12.11使用存儲過程的時機 413

12.12本章小結 414

第13章用戶自定義函式 417

13.1UDF的定義 417

13.2返回標量值的UDF 418

13.3返回表的UDF 424

13.3.1內聯UDF 424

13.3.2理解確定性 430

13.4調試用戶自定義函式 433

13.5資料庫中的.NET 433

13.6本章小結 434

第14章事務和鎖 435

14.1事務 435

14.1.1ACID事務 436

14.1.2事務操作簡介 436

14.1.3BEGINTRAN 437

14.1.4COMMITTRAN 437

14.1.5ROLLBACKTRAN 437

14.1.6SAVETRAN 437

14.2SQLServer日誌的

工作方式 439

14.2.1失敗和恢復 440

14.2.2激活隱式事務 442

14.3鎖和並發 442

14.3.1鎖的用途 443

14.3.2可以鎖定的資源 446

14.3.3鎖升級和鎖對性能的

影響 446

14.3.4鎖定模式 447

14.3.5鎖的兼容性 448

14.3.6指定一種特有的鎖定

類型——最佳化器提示 449

14.4設定隔離級別 450

14.4.1READCOMMITTED 451

14.4.2READUNCOMM-

ITTED 451

14.4.3REPEATABLEREAD 452

14.4.4SERIALIZABLE 452

14.4.5SNAPSHOT 452

14.5處理死鎖(1205錯誤) 453

14.5.1SQLServer判斷死鎖的

方式 453

14.5.2選擇死鎖犧牲者的

方式 453

14.5.3避免死鎖 453

14.6本章小結 456

第15章觸發器 459

15.1觸發器的概念 460

15.1.1ON子句 461

15.1.2WITHENCRYPTION

選項 461

15.1.3FOR|AFTER 462

15.1.4FOR|AFTER子句與

INSTEADOF子句 463

15.1.5NOTFOR

REPLICATION選項 464

15.1.6AS子句 464

15.2使用觸發器實施數據

完整性規則 464

15.2.1處理來自於其他表的

需求 465

15.2.2使用觸發器來檢查

更新的變化 466

15.2.3將觸發器用於自定義

錯誤訊息 468

15.3觸發器的其他常見用途 468

15.4觸發器的其他問題 468

15.4.1觸發器可以嵌套 469

15.4.2觸發器可以遞歸 469

15.4.3觸發器不能防止體系

結構的修改 469

15.4.4可以在不刪除的情況下

關閉觸發器 470

15.4.5觸發器的激活順序 470

15.5INSTEADOF觸發器 472

15.6性能考慮 472

15.6.1觸發器的被動性 472

15.6.2觸發器與激活的進程

之間不存在並發問題 472

15.6.3使用IFUPDATE()和

COLUMNS_

UPDATED() 473

15.6.4保持觸發器短小精悍 475

15.6.5選擇索引時不要忘記

觸發器 475

15.6.6不要在觸發器中

進行回滾 475

15.7刪除觸發器 476

15.8調試觸發器 476

15.9本章小結 477

第16章初識XML 479

16.1XML基礎 480

16.1.1XML文檔的各個

組成部分 481

16.1.2名稱空間 489

16.1.3元素內容 491

16.1.4有效與格式良好——

架構和DTD 492

16.2SQLServer提供的

XML支持 492

16.2.1將列定義為XML

類型 493

16.2.2XML架構集合 494

16.2.3創建、修改和刪除

XML架構集合 496

16.2.4XML數據類型方法 498

16.2.5強制執行架構集合

之外的約束 504

16.2.6用XML格式檢索

關係數據 505

16.2.7RAW選項 506

16.2.8AUTO選項 509

16.2.9EXPLICIT選項 510

16.2.10PATH選項 512

16.2.11OPENXML函式 517

16.3XSLT簡介 521

16.4本章小結 523

第17章商務智慧型基礎 525

17.1商務智慧型的概念 525

17.1.1BI優於其他方案 526

17.1.2根據數據做出決策 526

17.1.3不同的專家有不同的

觀點 528

17.1.4通過過去的業績預測

未來的行為 528

17.1.5誰使用BI 528

17.2數據倉庫 528

17.2.1數據倉庫的目標 529

17.2.2OLTP與OLAP 529

17.2.3Kimball與Inmon 530

17.3維度建模:為什麼是

規範化的 533

17.3.1度量值和度量指標 533

17.3.2事實 534

17.3.3維度 536

17.4ETL 542

17.4.1提供數據 542

17.4.2強制一致性 543

17.4.3通過定義數據來

解決衝突 544

17.4.42個、3個或

更多個階段 544

17.4.5在ETL過程中

處理並發 545

17.4.6快取提取的內容——

運算元據存儲(ODS) 546

17.5使數據可操作:

BI報表技術 546

17.5.1目標 547

17.5.2關鍵性能指示器 547

17.5.3儀錶盤 549

17.5.4記分卡 549

17.5.5明細表 549

17.5.6下鑽 550

17.5.7鑽取 550

17.5.8臨時報表 551

17.6本章小結 551

第18章BI存儲和報表資源 553

18.1T-SQL中的BI 554

18.1.1AdventureWorks

數據倉庫 554

18.1.2使用T-SQL分析函式 555

18.1.3columnstore索引 563

18.2SQLServerAnalysis

Services 564

18.3建立第一個多維數據集 565

18.3.1數據源 571

18.3.2數據源視圖 572

18.3.3多維數據集 572

18.3.4度量值組 573

18.3.5維度 574

18.3.6多維數據集的

其他內容 576

18.4自助式BI:用戶工具 576

18.4.1報表構建器 577

18.4.2PowerPivot:帶有

SharePoint和Excel的

輕型BI 577

18.4.3PowerView 579

18.5小結 579

第19章ReportingServices 581

19.1ReportingServices101 581

19.2理解SSRS報表的

生命周期 582

19.2.1在SSRS中開發報表 582

19.2.2管理報表 583

19.2.3把報表發布給用戶 583

19.3理解ReportingServices

體系結構 583

19.3.1SSDT:報表設計器 584

19.3.2SSRSWindows服務 584

19.3.3報表管理器 584

19.3.4報表構建器 584

19.3.5報表查看器 584

19.4構建簡單的報表模型 585

19.4.1創建項目 585

19.4.2給數據模型

添加內容 593

19.4.3構建和部署

數據模型 598

19.4.4創建報表 599

19.5報表伺服器項目 607

19.5.1建立報表伺服器項目 607

19.5.2部署報表 612

19.6本章小結 613

第20章使用IntegrationServices

進行集成 615

20.1理解問題 615

20.2使用導入/導出嚮導生成

基本的程式包 616

20.2.1啟動嚮導 616

20.2.2選擇數據源 617

20.2.3完成嚮導 620

20.3程式包基礎知識 622

20.3.1“連線管理器”面板 623

20.3.2程式包編輯器面板 625

20.4執行程式包 632

20.4.1在DevelopmentStudio中

執行程式包 633

20.4.2在SSMS中執行 633

20.4.3使用執行包實用工具 635

20.4.4使用SQLServerAgent

執行程式包 638

20.4.5從程式中執行程式包 638

20.5關於程式包的補充說明 638

20.6本章小結 638

第21章扮演管理員的角色 641

21.1調度作業 642

21.1.1創建操作員 643

21.1.2創建作業和步驟 644

21.2登錄和用戶 651

21.2.1安全模式 652

21.2.2創建登錄和用戶 652

21.2.3許可和擁有權 654

21.3備份和恢復 654

21.3.1創建備份 655

21.3.2恢復模式 658

21.3.3還原 658

21.4索引維護 660

21.5數據歸檔 662

21.6基於策略的管理 663

21.7用POWERSHELL自動完成

管理任務 663

21.7.1PowerShell 663

21.7.2安裝和啟用

PowerShell 664

21.7.3cmdlet和模組 664

21.7.4Sqlps 664

21.7.5部署和執行 666

21.8本章小結 667

附錄A習題答案 669

相關詞條

熱門詞條

聯絡我們