SQLserver2008數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā)教程(第二版)ppt課件匯總(完整版)_第1頁(yè)
SQLserver2008數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā)教程(第二版)ppt課件匯總(完整版)_第2頁(yè)
SQLserver2008數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā)教程(第二版)ppt課件匯總(完整版)_第3頁(yè)
SQLserver2008數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā)教程(第二版)ppt課件匯總(完整版)_第4頁(yè)
SQLserver2008數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā)教程(第二版)ppt課件匯總(完整版)_第5頁(yè)
已閱讀5頁(yè),還剩375頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、SQLserver2008數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā)教程(第二版)1.1 SQL server 2008概述1.1.1 SQL server 2008的體系結(jié)構(gòu)(一)Microsoft SQL Server 2008系統(tǒng)由4個(gè)部分組成(二)這4個(gè)部分被稱為4個(gè)服務(wù)數(shù)據(jù)庫(kù)引擎Analysis ServicesReporting ServicesIntegration Services1.1.2 數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象1. 數(shù)據(jù)庫(kù)的類型和特點(diǎn)Microsoft SQL Server 2008系統(tǒng)提供了兩種類型的數(shù)據(jù)庫(kù)(一)系統(tǒng)數(shù)據(jù)庫(kù) (二)用戶數(shù)據(jù)庫(kù) 1.1 SQL server 2008概述2. 數(shù)據(jù)庫(kù)對(duì)象主

2、要的數(shù)據(jù)庫(kù)對(duì)象包括數(shù)據(jù)庫(kù)關(guān)系圖、表、視圖、同義詞、存儲(chǔ)過(guò)程、函數(shù)、觸發(fā)器、程序集、類型、規(guī)則和默認(rèn)值等。1.1 SQL server 2008概述1.2 SQL server 2008的安裝1.1.3 SQL Server 2008的新增特點(diǎn) (1) 簡(jiǎn)單的數(shù)據(jù)加密 (2) 外鍵管理 (3) 增強(qiáng)了審查 (4) 改進(jìn)了數(shù)據(jù)庫(kù)鏡像 (5) 加強(qiáng)了可支持性 (6) 熱添加CPU 1.2 SQL Server 2008的安裝1.2.1 系統(tǒng)版本SQL Server 2008企業(yè)版SQL Server 2008標(biāo)準(zhǔn)版SQL Server 2008工作組版SQL Server 2008網(wǎng)絡(luò)版SQL Se

3、rver 2008開(kāi)發(fā)版SQL Server 2008系統(tǒng)的Express版本SQL Server 移動(dòng)版1.2.2 SQL Server 2008的運(yùn)行環(huán)境要求硬件環(huán)境要求處理器、內(nèi)存和操作系統(tǒng)要求1.2.3 Microsoft SQL server 2008的安裝1. 安裝SQL server 2008標(biāo)準(zhǔn)版之前應(yīng)該注意的問(wèn)題增強(qiáng)物理安全性使用防火墻隔離服務(wù)禁用 NetBIOS 和服務(wù)器消息塊2. 安裝Microsoft SQL server 2008標(biāo)準(zhǔn)版的步驟1.2.3 Microsoft SQL server 2008的安裝1.3 SQL server 2008的配置1.3.1 注冊(cè)

4、服務(wù)器1. 注冊(cè)服務(wù)器2. 修改服務(wù)器的注冊(cè)3. 刪除服務(wù)器1.3.2 配置服務(wù)器選項(xiàng)1.4.1 SQL Server Management Studio1.4.2 Business Intelligence Development Studio1.4.3 SQL Server Profiler1.4.4 SQL Server Configuration Manager1.4.5 Database Engine Tuning Advisor1.4.6 實(shí)用工具1.4 SQL server 2008常用的管理工具第 2 章數(shù)據(jù)庫(kù)的建立與維護(hù) 在SQL Server 2008中,用戶如何訪問(wèn)及使用

5、數(shù)據(jù)庫(kù),就需要正確了解數(shù)據(jù)庫(kù)中所有對(duì)象及其設(shè)置。數(shù)據(jù)庫(kù)就像一個(gè)容器,它里面除了存放著數(shù)據(jù)的表之外,還有視圖、存儲(chǔ)過(guò)程、觸發(fā)器、約束等數(shù)據(jù)庫(kù)對(duì)象。數(shù)據(jù)庫(kù)管理的核心任務(wù)包括創(chuàng)建、操作和維護(hù)數(shù)據(jù)庫(kù)。 本章的學(xué)習(xí)目標(biāo):了解系統(tǒng)數(shù)據(jù)庫(kù)的作用了解數(shù)據(jù)庫(kù)對(duì)象及構(gòu)成掌握數(shù)據(jù)庫(kù)快照的使用掌握用SSMS和T-SQL創(chuàng)建數(shù)據(jù)庫(kù)的方法掌握用SSMS和T-SQL修改、刪除數(shù)據(jù)庫(kù)的操作掌握如何查看數(shù)據(jù)庫(kù)狀態(tài)熟悉如何對(duì)數(shù)據(jù)庫(kù)中的物理空間進(jìn)行科學(xué)的設(shè)置掌握數(shù)據(jù)庫(kù)的分離和附加2.1 數(shù)據(jù)庫(kù)的組成 在SQL Server 2008中,數(shù)據(jù)庫(kù)是表、視圖、存儲(chǔ)過(guò)程、觸發(fā)器等數(shù)據(jù)庫(kù)對(duì)象的集合,是數(shù)據(jù)庫(kù)管理系統(tǒng)的核心內(nèi)容。為了更好地學(xué)習(xí)

6、并理解數(shù)據(jù)庫(kù),首先來(lái)了解一個(gè)數(shù)據(jù)庫(kù)的組成及其數(shù)據(jù)庫(kù)中的數(shù)據(jù)文件、事務(wù)日志文件及文件組等基本概念。2.1.1 系統(tǒng)數(shù)據(jù)庫(kù) 這些數(shù)據(jù)庫(kù)分別是master、model、msdb、tempdb和resource數(shù)據(jù)庫(kù)。這些系統(tǒng)數(shù)據(jù)庫(kù)對(duì)于用戶來(lái)說(shuō),不要隨意修改它們。1. master數(shù)據(jù)庫(kù)Master數(shù)據(jù)庫(kù)用于記錄SQL Server實(shí)例的所有系統(tǒng)級(jí)信息,是SQL Server的核心,不能對(duì)其進(jìn)行直接修改,應(yīng)當(dāng)對(duì)其定期進(jìn)行備份,如果Master數(shù)據(jù)庫(kù)變得不可用,那么SQL Server數(shù)據(jù)庫(kù)引擎將無(wú)法啟動(dòng)。 2. model數(shù)據(jù)庫(kù)model數(shù)據(jù)庫(kù)用作SQL Server 2008實(shí)例上創(chuàng)建的所有數(shù)據(jù)庫(kù)的

7、模板,若對(duì)model數(shù)據(jù)庫(kù)進(jìn)行修改,都將應(yīng)用于以后創(chuàng)建的用戶數(shù)據(jù)庫(kù)中。3. msdb數(shù)據(jù)庫(kù)msdb數(shù)據(jù)庫(kù)用于SQL Server 2008代理計(jì)劃警報(bào)和作業(yè),是SQL Server中的一個(gè)Windows服務(wù)。4. resource數(shù)據(jù)庫(kù)resource數(shù)據(jù)庫(kù)是一個(gè)只讀和隱藏的數(shù)據(jù)庫(kù),它包含了SQL Server 2008中的所有系統(tǒng)對(duì)象,對(duì)于resource數(shù)據(jù)庫(kù)是唯一沒(méi)有顯示在其中的系統(tǒng)數(shù)據(jù)庫(kù),這是因?yàn)樗趕ys框架中存在。2.1.2 用戶數(shù)據(jù)庫(kù)用戶數(shù)據(jù)庫(kù)是用戶根據(jù)自己的管理需求進(jìn)行創(chuàng)建的數(shù)據(jù)庫(kù),便于自己管理相應(yīng)的數(shù)據(jù)。例如:圖書(shū)館可以針對(duì)圖書(shū)的管理創(chuàng)建圖書(shū)管理數(shù)據(jù)庫(kù),大型超市可以針對(duì)貨品創(chuàng)

8、建超市管理數(shù)據(jù)庫(kù)等。2.1.3 示例數(shù)據(jù)庫(kù) 示例數(shù)據(jù)庫(kù)是系統(tǒng)為了讓用戶學(xué)習(xí)和理解SQL Server而設(shè)計(jì)的。Northwind和pubs示例數(shù)據(jù)庫(kù)是SQL Server 2000中的示例數(shù)據(jù)庫(kù);Adventure Works示例數(shù)據(jù)庫(kù)是SQL Server2005中的示例數(shù)據(jù)庫(kù)。2.1.4 數(shù)據(jù)庫(kù)文件及其文件組在SQL Server 2008 中,一個(gè)數(shù)據(jù)庫(kù)至少需要有一個(gè)數(shù)據(jù)文件和一個(gè)事務(wù)日志文件。也可以有多個(gè)數(shù)據(jù)文件和多個(gè)事務(wù)日志文件。數(shù)據(jù)庫(kù)中的數(shù)據(jù)文件用于存放數(shù)據(jù)庫(kù)的數(shù)據(jù)和各種對(duì)象,而事務(wù)日志文件用于存放事務(wù)日志。數(shù)據(jù)庫(kù)中存放數(shù)據(jù)文件和日志文件的默認(rèn)位置為:C:Program Files

9、Microsoft SQL Server MSSQL10.MSSQLSERVER MSSQL DATA的文件夾下。 數(shù)據(jù)庫(kù)的文件組成:(通常可以由三類文件組成) 主數(shù)據(jù)文件:默認(rèn)的擴(kuò)展名為.mdf 輔助數(shù)據(jù)文件:默認(rèn)的擴(kuò)展名為.ndf 事務(wù)日志文件:默認(rèn)的擴(kuò)展名為.ldf 配置事務(wù)日志: 建立好數(shù)據(jù)庫(kù)之后,在進(jìn)行具體的操作之前應(yīng)當(dāng)首先配置事務(wù)日志。事務(wù)日志文件記錄SQL Server 對(duì)這個(gè)數(shù)據(jù)庫(kù)的操作,以便于在系統(tǒng)出現(xiàn)故障時(shí)恢復(fù)數(shù)據(jù)庫(kù)。 存儲(chǔ)數(shù)據(jù)的方法:日志文件: .ldf數(shù)據(jù)文件:.mdf or .ndf區(qū): 8 個(gè)連續(xù)的 8 KB 頁(yè)頁(yè): 8 KB文件組: 文件組就是文件的邏輯集合。文件

10、組也分為主要文件組、用戶定義文件組和默認(rèn)文件組。文件組可以把一些指定的文件組合在一起,方便管理和分配數(shù)據(jù)。數(shù)據(jù)庫(kù)對(duì)象: 數(shù)據(jù)庫(kù)對(duì)象是存儲(chǔ)、管理和使用數(shù)據(jù)不同結(jié)構(gòu)形式,主要包括表、視圖、存儲(chǔ)過(guò)程、觸發(fā)器、索引等。 使用SSMS圖形界面創(chuàng)建數(shù)據(jù)庫(kù) 在SQL Server 2008 中,通過(guò)SQL Server Management Studio 創(chuàng)建數(shù)據(jù)庫(kù)使用Transact-SQL 語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)該命令的語(yǔ)法如下: CREATE DATABASE database_name ON PRIMARY ,n , ,n LOG ON ,n FOR RESTORE :=(NAME=logical_file

11、_name, FILENAME=os_file_name ,SIZE=size ,MAXSIZE=max_size|UNLIMITED ,F(xiàn)ILEGROWTH=growth_increment ) ,n :=FILEGROUP filegroup_name ,n數(shù)據(jù)庫(kù)的查看和修改 用SSMS圖形界面進(jìn)行查看和修改在【對(duì)象資源管理器】窗口中,展開(kāi)【數(shù)據(jù)庫(kù)】節(jié)點(diǎn),用右鍵單擊目標(biāo)數(shù)據(jù)庫(kù)(如:學(xué)生信息StuInfo數(shù)據(jù)庫(kù)或Test數(shù)據(jù)庫(kù)等)從彈出的快捷菜單中選擇【屬性】命令,彈出【數(shù)據(jù)庫(kù)屬性StuInfo】的“常規(guī)”窗口 使用T-SQL語(yǔ)句進(jìn)行修改數(shù)據(jù)庫(kù) 使用ALTER DATABASE語(yǔ)句修改數(shù)據(jù)庫(kù)

12、語(yǔ)法格式如下:ALTER DATABASE database ADD FILE ,.,n TO FILEGROUP filegroup_name | ADD LOG FILE ,.,n | REMOVE FILE logical_file_name | ADD FILEGROUP filegroup_name| REMOVE FILEGROUP filegroup_name| MODIFY FILE 刪除數(shù)據(jù)庫(kù) 使用SQL Server Management Studio圖形化界面刪除數(shù)據(jù)庫(kù)使用Transact-SQL語(yǔ)句刪除數(shù)據(jù)庫(kù)使用Transact-SQL語(yǔ)句刪除數(shù)據(jù)庫(kù)的語(yǔ)法如下:DROP

13、 DATABASE database ,n2.2.5 數(shù)據(jù)庫(kù)操作通過(guò)前面的介紹,可以掌握數(shù)據(jù)庫(kù)的創(chuàng)建方法,如何修改數(shù)據(jù)庫(kù)大小、名稱和屬性,如何刪除數(shù)據(jù)庫(kù)和查看數(shù)據(jù)庫(kù)狀態(tài)及信息,這些都是針對(duì)數(shù)據(jù)庫(kù)進(jìn)行的操作。除了這些,常見(jiàn)的操作還包括本節(jié)介紹的分離數(shù)據(jù)庫(kù)和附加數(shù)據(jù)庫(kù)2.2.6 復(fù)制和移動(dòng)數(shù)據(jù)庫(kù)SQL Server具有強(qiáng)大的復(fù)制功能,除了將數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象從一個(gè)數(shù)據(jù)庫(kù)復(fù)制并準(zhǔn)確分發(fā)的另一個(gè)數(shù)據(jù)庫(kù)中,還要實(shí)行數(shù)據(jù)庫(kù)之間的同步。SQL Server的復(fù)制分為三種:1. 快照復(fù)制2. 事務(wù)復(fù)制3. 合并復(fù)制第3章 表的建立與維護(hù)本章的學(xué)習(xí)目標(biāo):掌握用SSMS和T-SQL創(chuàng)建表熟悉各種列數(shù)據(jù)類型掌握列的各

14、種屬性掌握用SSMS和T-SQL修改、刪除表熟悉保持?jǐn)?shù)據(jù)完整性的各種約束掌握根據(jù)完整性規(guī)則的要求使用SSMS和 T-SQL設(shè)置表的主鍵、外鍵和約束等3.1 表概述在使用數(shù)據(jù)庫(kù)的過(guò)程中,接觸最多的莫過(guò)于表。表是存儲(chǔ)數(shù)據(jù)的地方,是一種結(jié)構(gòu)化的文件,可用來(lái)存儲(chǔ)一些特定數(shù)據(jù)類型的數(shù)據(jù),是數(shù)據(jù)庫(kù)中最重要的部分。3.1.1 什么是表在關(guān)系數(shù)據(jù)庫(kù)中,每一個(gè)關(guān)系都表現(xiàn)為一張表。表是用來(lái)存儲(chǔ)數(shù)據(jù)和操作數(shù)據(jù)的邏輯結(jié)構(gòu),關(guān)系數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)都表現(xiàn)為表的形式,由列和行組成,如圖3-1所示。關(guān)系數(shù)據(jù)庫(kù)由表、具體查詢等對(duì)象組成,而查詢等對(duì)象又是通過(guò)表來(lái)呈現(xiàn)的。表的數(shù)據(jù)類型 種類數(shù)據(jù)類型 數(shù)字整數(shù)int, bigint,

15、 smallint, tinyint精確數(shù)值decimal, numeric近似數(shù)值float, real貨幣money, smallmoney日期和時(shí)間 datetime, smalldatetime字符Non-Unicodechar, varchar, varchar(max), textUnicodenchar, nvarchar, nvarchar(max), ntext二進(jìn)制 binary, varbinary, varbinary(max)圖像 image全局標(biāo)識(shí)符 uniqueidentifierXMLxml特殊 bit, cursor, timestamp, sysname,

16、table, sql_variant使用SQL Server Management Studio創(chuàng)建表 使用T-SQL 語(yǔ)句創(chuàng)建表 CREATE TABLE database_name.owner.|owner. table_name ( |column_name AS computed_column_expression | ,n) ON filegroup | DEFAULT TEXTIMAGE_ON filegroup|DEFAULT := column_name data_type DEFAULT constant_expression |IDENTITY(seed,increment

17、 ) .n 3.2 列數(shù)據(jù)類型在計(jì)算機(jī)中,按照數(shù)據(jù)描述信息的含義,將數(shù)據(jù)分為不同的種類,稱之為數(shù)據(jù)類型。3.2.1 數(shù)據(jù)類型的分類SQL Server提供兩類數(shù)據(jù)類型:一類是用戶定義數(shù)據(jù)類型,用戶可以根據(jù)需要?jiǎng)?chuàng)建自己的數(shù)據(jù)類型,會(huì)對(duì)數(shù)據(jù)組織帶來(lái)一定的好處。一類是基本數(shù)據(jù)類型,是SQL Server系統(tǒng)提供的數(shù)據(jù)類型。本書(shū)只介紹基本數(shù)據(jù)類型。種 類數(shù) 據(jù) 類 型數(shù)字?jǐn)?shù)據(jù)類型int,bigint,smallint,tinyint,decimal,numeric,float,real,money,smallmoney,bit字符數(shù)據(jù)類型char, varchar, nchar, nvarchar,

18、ntext text日期和時(shí)間datetime, smalldatetime,date,time,datetime2,datetimeoffset二進(jìn)制數(shù)據(jù)類型binary, varbinary,image其他數(shù)據(jù)類型uniqueidentifier,xml, timestamp, sql_variantSQL Server中常用的數(shù)據(jù)類型3.2.2 數(shù)字?jǐn)?shù)據(jù)類型數(shù)字?jǐn)?shù)據(jù)類型表示符號(hào)用途精確數(shù)字類型整數(shù)數(shù)據(jù)類型int、bigint、smallint、tinyint存儲(chǔ)數(shù)字?jǐn)?shù)據(jù),直接進(jìn)行數(shù)據(jù)運(yùn)算位數(shù)據(jù)類型bit用于一些條件邏輯判斷貨幣數(shù)據(jù)類型money、smallmoney存儲(chǔ)貨幣數(shù)據(jù)近似數(shù)字類

19、型十進(jìn)制小數(shù)型decimal、numeric存儲(chǔ)帶固定精度和位數(shù)的小數(shù)浮點(diǎn)數(shù)據(jù)類型float、real存儲(chǔ)范圍非常大的數(shù)字,用于表示指定數(shù)的大致數(shù)據(jù)值3.2.3 字符數(shù)據(jù)類型字符類型表示符號(hào)用法ANSI字符char存儲(chǔ)指定長(zhǎng)度的字符串varchar存儲(chǔ)可變長(zhǎng)度字符text存儲(chǔ)大量非Unicode字符Unicode字符nchar用于存儲(chǔ)Unicode字符nvarchar與varchar類似,存儲(chǔ)可變長(zhǎng)度Unicode字符ntext與text類似,存儲(chǔ)大量Unicode字符數(shù)據(jù)3.2.4 日期時(shí)間數(shù)據(jù)類型日期時(shí)間數(shù)據(jù)類型用于存儲(chǔ)日期和時(shí)間信息。在SQL Server 2008之前的版本中,日期時(shí)間

20、類型只包括datetime和smalldatetime兩種類型。它們的差別在于其表示的日期和時(shí)間范圍不同、時(shí)間精確度也不同。其中最常用的是datetime型數(shù)據(jù)。3.2.5 二進(jìn)制數(shù)據(jù)類型二進(jìn)制數(shù)據(jù)類型用于表示位數(shù)據(jù)流,包括binary(固定長(zhǎng)度)、varbinary(可變長(zhǎng)度)和image三種。binary用于存儲(chǔ)固定長(zhǎng)度的二進(jìn)制數(shù)據(jù);varbinary用于存儲(chǔ)可變長(zhǎng)度的二進(jìn)制數(shù)據(jù),若存儲(chǔ)的二進(jìn)制大于8000字節(jié),就必須使用varbinary(max)數(shù)據(jù)類型;image數(shù)據(jù)類型用于存儲(chǔ)圖像信息,在SQL Server 2008中,只有在數(shù)據(jù)的字節(jié)數(shù)超過(guò)了8KB的情況下,才使用image數(shù)據(jù)

21、類型,其他情況應(yīng)使用varbinary(max)代替,其中max最大可以達(dá)到231-1字節(jié);3.2.6 其他數(shù)據(jù)類型除了上述數(shù)據(jù)類型外,SQL Server還提供了其他幾類常用數(shù)據(jù)類型,使用這些數(shù)據(jù)類型可以完成特殊數(shù)據(jù)對(duì)象的定義、存儲(chǔ)和使用:timestampsql_variant類型uniqueidentifier唯一標(biāo)識(shí)符類型3.2.7 數(shù)據(jù)類型的選擇數(shù)據(jù)的使用情況:數(shù)據(jù)是用于數(shù)學(xué)運(yùn)算?表示日期或者時(shí)間?存儲(chǔ)文本信息?不同的使用情況決定了不同數(shù)據(jù)類型的選擇;數(shù)據(jù)的大?。哼x擇的數(shù)據(jù)類型能否存放期望存儲(chǔ)的最大值。例如,選擇整型數(shù)據(jù),要根據(jù)數(shù)據(jù)的取值決定使用INT型數(shù)據(jù)還是BIGINT型數(shù)據(jù);選

22、擇字符型數(shù)據(jù),需要考慮實(shí)際需要的最大字符長(zhǎng)度;正確的存儲(chǔ)信息:例如使用integer數(shù)據(jù)類型存儲(chǔ)貨幣值,將造成小數(shù)部分丟失,這將導(dǎo)致不正確的值;非英語(yǔ)字符:在SQL Server 2008系統(tǒng)中,如果某些列需要存儲(chǔ)非英語(yǔ)字符(如中文字符),建議最好使用NCHAR、NVARCHAR數(shù)據(jù)類型。3.3 列的其他屬性3.3.1 默認(rèn)約束默認(rèn)約束指用戶在進(jìn)行插入操作時(shí),沒(méi)有顯示地為列提供數(shù)據(jù),那么系統(tǒng)將把默認(rèn)值賦給該列。默認(rèn)值約束所提供的默認(rèn)值可以為常量、函數(shù)、系統(tǒng)函數(shù)、空值等,表中的每一列只能定義一個(gè)默認(rèn)約束,對(duì)于具有IDENTITY屬性和timestamp數(shù)據(jù)類型的字段,不能使用默認(rèn)約束,同時(shí),定義

23、的默認(rèn)值長(zhǎng)度不允許大于對(duì)應(yīng)字段所允許的最大長(zhǎng)度。DEFAULT 約束 使用SSMS圖形化界面創(chuàng)建默認(rèn)約束 用Transact-SQL語(yǔ)句創(chuàng)建默認(rèn)約束。其語(yǔ)法形式如下: CONSTRAINT constraint_name DEFAULT constraint_expression FOR column_name 3.3.2 空值約束空值約束即是否允許該字段的值為NULL,即空值。主鍵列不允許為空值,否則就失去了唯一標(biāo)識(shí)的意義。NULL 約束 使用SSMS圖形化界面設(shè)置空值約束。用Transact-SQL語(yǔ)句創(chuàng)建空值約束。其語(yǔ)法形式如下:直接在相應(yīng)的語(yǔ)句后書(shū)寫(xiě) NULL | NOT NULL 3

24、.3.3 IDENTITY 的應(yīng)用 identity表示的是最近一次向具有identity屬性(即自增列)的表插入數(shù)據(jù)時(shí)對(duì)應(yīng)的自增列的值,是系統(tǒng)定義的全局變量。比如有個(gè)表A,它的自增列是id,當(dāng)向A表插入一行數(shù)據(jù)后,如果插入數(shù)據(jù)后自增列的值自動(dòng)增加至101,則通過(guò)select identity得到的值就是101。3.4 向表中添加數(shù)據(jù)首先在需要添加數(shù)據(jù)的表上單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“打開(kāi)表”命令,出現(xiàn)如圖3-8所示的“表”對(duì)話框,在其中可向打開(kāi)的表添加數(shù)據(jù)。本節(jié)向各個(gè)表中添加的數(shù)據(jù)如表3-53-7所示。3.5 查看表 3.5.1 查看表中的有關(guān)信息打開(kāi)指定的數(shù)據(jù)庫(kù),在需要查看的表上

25、單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“屬性”命令,將打開(kāi)“表屬性”對(duì)話框,如圖3-10所示?!俺R?guī)”選項(xiàng)頁(yè)中顯示了該表格的定義,包括存儲(chǔ)結(jié)構(gòu)、當(dāng)前的連接及名稱等屬性,該選項(xiàng)頁(yè)中顯示的屬性不能修改。3.5.2 查看表中存儲(chǔ)的數(shù)據(jù)在表“課程表”上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“打開(kāi)表”命令,顯示“課程表”中的數(shù)據(jù),如圖3-11所示。3.5.3 查看表與其他數(shù)據(jù)對(duì)象的依賴關(guān)系在要查看的表上單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“查看依賴關(guān)系”命令,打開(kāi)“對(duì)象依賴關(guān)系”對(duì)話框,該對(duì)話框顯示了該表依賴的其他數(shù)據(jù)對(duì)象和依賴于此表的依賴對(duì)象。例如,查看“選課表”的依賴對(duì)象,如圖3-12所示的對(duì)話框顯示了

26、選課表依賴于課程表與學(xué)生表。3.6 修改表3.6.1 使用SSMS圖形化界面修改表在“對(duì)象資源管理器”窗口中,展開(kāi)“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),再展開(kāi)具體選擇的數(shù)據(jù)庫(kù),然后展開(kāi)“表”節(jié)點(diǎn),用右鍵單擊要修改的表,從彈出的快捷菜單中選擇“設(shè)計(jì)”命令,打開(kāi)“表設(shè)計(jì)器”,即可對(duì)表的定義進(jìn)行修改,方法同創(chuàng)建表。3.6.2 使用T-SQL語(yǔ)句修改表 ALTER TABLE 表名 (ALTER COLUMN 列名 列定義, ADD 列名 數(shù)據(jù)類型 約束, DROP 列名, ADD CONSTRAINT 約束名 約束, )例【3-2】:在AdventureWorks數(shù)據(jù)庫(kù)中,在 Sales下創(chuàng)建名為 CustomerOrd

27、ers 的表;創(chuàng)建OrderID、OrderDate、CustomerID、Notes 列,并定義其數(shù)據(jù)類型為int、datetime、int、nvarchar(200)和可空性(Notes列為空),指定OrderID列為標(biāo)志列。T-SQL語(yǔ)句如下:CREATE TABLE Sales.CustomerOrders ( OrderID int identity(1,1), OrderDate datetime, CustomerID int, Notes nvarchar(200) NULL );例【3-3】:基于例3-2定義的 Sales.CustomerOrders 表,添加列和更改列的可

28、空性。- 修改 Sales.CustomerOrders 表的定義- 在表中添加名為SalesPersonID 的列,并定義其數(shù)據(jù)類型為int,指其不可空 ALTER TABLE Sales.CustomerOrders ADD SalesPersonID int NOT NULL GO - 修改 Sales.CustomerOrders 表的定義 - 修改 Notes 列,并定義其數(shù)據(jù)類型為nvarchar(200),指定其不可空 ALTER TABLE Sales.CustomerOrders ALTER COLUMN Notes nvarchar(200) NOT NULL GO3.6.

29、3 使用INSERT SELECT語(yǔ)句INSERT SELECT語(yǔ)句可以將其他數(shù)據(jù)源中的行添加到數(shù)據(jù)庫(kù)中現(xiàn)有的表當(dāng)中。這種方法用于插入的數(shù)據(jù)是不確定(一般都多于一條)。具體方法是:通過(guò)SELECT語(yǔ)句生成的結(jié)果集,再結(jié)合INSERT語(yǔ)句,就可以把結(jié)果集插入到指定的表中。例【3-4】:求每個(gè)學(xué)生的平均成績(jī),并按學(xué)號(hào)、姓名、平均成績(jī)存入學(xué)生信息數(shù)據(jù)庫(kù)。首先創(chuàng)建一個(gè)表:CREATE TABLE AG( 學(xué)號(hào) CHAR(8)PRIMARY KEY, 姓名 CHAR(8),平均成績(jī) SMALLINT)GO;3.6.4 使用SELECT INTO語(yǔ)句SELECT INTO語(yǔ)句與INSERT SELECT語(yǔ)

30、句不同的是:它可以將其他數(shù)據(jù)源中的任何查詢結(jié)果或?qū)氲臄?shù)據(jù)都添加到數(shù)據(jù)庫(kù)的新表當(dāng)中。例【3-5】:統(tǒng)計(jì)每個(gè)學(xué)生未通過(guò)課程的門數(shù),將其保存到臨時(shí)表#stuexam表。顯示系名、學(xué)號(hào)、姓名、未通過(guò)門數(shù),并按系名排序。T-SQL語(yǔ)句如下:SELECT MIN(系名), SC.學(xué)號(hào), MIN(姓名), COUNT(*) 未通過(guò)門數(shù)INTO #stuexamFROM Student, SCWHERE Student.學(xué)號(hào)=SC.學(xué)號(hào) AND 成績(jī) 60GROUP BY SC.學(xué)號(hào)ORDER BY 系名;3.7 刪除表1. 使用SSMS圖形化界面刪除表在“對(duì)象資源管理器”窗口中,展開(kāi)“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),再展開(kāi)

31、所選擇的具體數(shù)據(jù)庫(kù)節(jié)點(diǎn),然后展開(kāi)“表”節(jié)點(diǎn),用右鍵單擊要?jiǎng)h除的表,從彈出的快捷菜單中選擇“刪除”命令,打開(kāi)“刪除對(duì)象窗口”,2. 使用T-SQL語(yǔ)句刪除表DROP TABLE 表名例【3-6】:在AdventureWorks數(shù)據(jù)庫(kù)中,刪除CustomerOrders表,它的架構(gòu)是Sales。 USE AdventureWorksGODROP TABLE Sales.CustomerOrders第4章 表數(shù)據(jù)操作本章我們學(xué)習(xí)使用T-SQL語(yǔ)句創(chuàng)建和操作數(shù)據(jù)庫(kù)和表。與圖形用戶界面方式相比,用T-SQL命令方式更為靈活。本章的學(xué)習(xí)目標(biāo):操縱數(shù)據(jù)需要解決的問(wèn)題使用INSERT語(yǔ)句插入數(shù)據(jù)使用UPDAT

32、E語(yǔ)句更新數(shù)據(jù)使用DELETE語(yǔ)句刪除數(shù)據(jù)理解數(shù)據(jù)加密的方式和特點(diǎn)4.1 概述表創(chuàng)建之后,只是一個(gè)空表。如何向表中添加數(shù)據(jù)?如果表中已經(jīng)有了數(shù)據(jù),不合適或不正確,怎么辦?如果表中的數(shù)據(jù)不再需要了,怎么辦?這些都是數(shù)據(jù)操縱問(wèn)題。用戶可以使用INSERT、UPDATE、DELETE等語(yǔ)句來(lái)解決這些問(wèn)題。4.2 界面操作表數(shù)據(jù)與創(chuàng)建數(shù)據(jù)庫(kù)和表一樣,把不直接使用T-SQL語(yǔ)句對(duì)表數(shù)據(jù)的操作稱為界面操作表數(shù)據(jù)。界面操作表數(shù)據(jù)主要在SQL Server Management Studio 中進(jìn)行。在選擇了“打開(kāi)表”后,將進(jìn)入操作所選擇的表數(shù)據(jù)窗口,在此窗口中,表中的記錄按行顯示,每個(gè)記錄占一行。在此界面中

33、,可向表中插入記錄、也可刪除和修改記錄。4.2.1 插入記錄4.2.2 刪除記錄4.2.3 修改記錄4.3 數(shù)據(jù)操縱語(yǔ)言(DML)數(shù)據(jù)操縱語(yǔ)言主要是用于操縱表、視圖中數(shù)據(jù)的語(yǔ)句。當(dāng)我們創(chuàng)建表對(duì)象之后,初始狀態(tài)時(shí)該表是空的,沒(méi)有任何數(shù)據(jù)。這時(shí)需要使用INSERT語(yǔ)句向表中添加數(shù)據(jù)。如何檢索表中數(shù)據(jù)呢?可以使用我們前面介紹的SELECT語(yǔ)句。如果表中數(shù)據(jù)不正確的,那么可以使用UPDATE語(yǔ)句進(jìn)行更新。也可以使用DELETE語(yǔ)句刪除表中的數(shù)據(jù)。DML就是指處理數(shù)據(jù)變更的3種SQL語(yǔ)句:INSERT、UPDATE和DELETE。4.3 命令操作表數(shù)據(jù)對(duì)表數(shù)據(jù)的插入、修改和刪除還可以通過(guò)T-SQL語(yǔ)句來(lái)

34、進(jìn)行,與界面操作表數(shù)據(jù)相比,通過(guò)T-SQL語(yǔ)句操作表數(shù)據(jù)更為靈活,功能更為強(qiáng)大。4.3.1 INSERT語(yǔ)句INSERT語(yǔ)句用于向已經(jīng)存在的表中插入新的數(shù)據(jù)。我們需要聲明向哪個(gè)表中插入數(shù)據(jù)、向那一列插入數(shù)據(jù),以及插入什么數(shù)據(jù)。INSERT語(yǔ)句的語(yǔ)法格式為:INSERT INTO (列1,列2,)VALUES (表達(dá)式1,表達(dá)式2,)【例4-35】 向course表插入一條記錄,課程號(hào)為10,課程名為network,學(xué)分為4,任課教師為Sophie。T-SQL語(yǔ)句為:INSERT INTO course VALUES (10,network,4,Sophie)【例4-36】向student表插入

35、一條學(xué)生記錄,其中學(xué)號(hào)為20090101,學(xué)生姓名為張靜。T-SQL語(yǔ)句為:INSERT INTO student(sno,sname) VALUES (20090101,N張靜)由于只插入student表中的兩列的數(shù)據(jù),因此,使用列表需要指明所要插入的列。執(zhí)行完成后,查看student表,可以看到課程已經(jīng)被添加。4.3.2 UPDATE語(yǔ)句如果表中的數(shù)據(jù)不正確或者已經(jīng)變化,可以使用UPDATE語(yǔ)句更新這些不恰當(dāng)?shù)臄?shù)據(jù)。插入新數(shù)據(jù)和更新已經(jīng)存在的數(shù)據(jù)之間的主要差別在于需要指明要更改哪些記錄。一般需要用WHERE子句來(lái)指明需要更新的記錄所滿足的條件。UPDATE語(yǔ)句的語(yǔ)法格式為:UPDATE S

36、ET 列1=,列2=,F(xiàn)ROM 表名WHERE 【例4-37】將course表中的課程名稱為network的記錄項(xiàng)更改為課程名稱為database。T-SQL語(yǔ)句為:UPDATE course SET cname=Ndatabase WHERE cname=Nnetwork執(zhí)行完成后,使用SELECT語(yǔ)句查詢course表可以看到,對(duì)應(yīng)紀(jì)錄已經(jīng)被修改。4.3.3 DELETE語(yǔ)句使用DELETE語(yǔ)句可以刪除表中的數(shù)據(jù)。一般地,如果在DELETE語(yǔ)句中沒(méi)有刪除條件,那么將刪除表中的所有數(shù)據(jù)。需要注意的是,DELETE語(yǔ)句與DROP語(yǔ)句不同:DELETE語(yǔ)句刪除表中的數(shù)據(jù),但是該表依然存在,而DR

37、OP語(yǔ)句則刪除了表,表中的數(shù)據(jù)自然也不存在了。DELETE語(yǔ)句的語(yǔ)法非常容易,只需要簡(jiǎn)單指定從哪一個(gè)表中刪除了記錄,如果需要,則用WHERE子句指定要?jiǎng)h除哪些記錄。格式為:DELETE FROM WHERE 條件【例4-38】將student表中學(xué)生姓名為張靜的記錄刪除。T-SQL語(yǔ)句為:DELETE FROM student WHERE sname=N張靜執(zhí)行完成后,使用SELECT語(yǔ)句查詢student表可以看到,對(duì)應(yīng)紀(jì)錄已經(jīng)被刪除。第5章 安全與權(quán)限第5章 安全與權(quán)限 5.1 安全與權(quán)限的基礎(chǔ)知識(shí)5.1.1 SQL server 2008安全機(jī)制的總體策略遠(yuǎn)程網(wǎng)絡(luò)主機(jī)通過(guò)Internet

38、訪問(wèn)SQL server 2008服務(wù)器所在的網(wǎng)絡(luò),這由網(wǎng)絡(luò)環(huán)境提供某種保護(hù)機(jī)制。(2) 網(wǎng)絡(luò)中的主機(jī)訪問(wèn)SQL server 2008服務(wù)器,這首先要求對(duì)SQL Server進(jìn)行正確配置,其內(nèi)容將要在下一節(jié)中介紹;其次是要求擁有對(duì)SQL server 2008實(shí)例的訪問(wèn)權(quán) 登錄名。(3) 訪問(wèn)SQL server 2008數(shù)據(jù)庫(kù),這要求擁有對(duì)SQL server 2008數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)數(shù)據(jù)庫(kù)用戶。(4) 訪問(wèn)SQL server 2008數(shù)據(jù)庫(kù)中的表和列,這要求擁有對(duì)表和列的訪問(wèn)權(quán) 權(quán)限。安全對(duì)象Server 角色SQL Server 登錄Windows 組域用戶賬戶本地用戶賬戶用戶數(shù)據(jù)庫(kù)角

39、色應(yīng)用程序角色組SQL Server數(shù)據(jù)庫(kù)Windows文件密鑰服務(wù)器架構(gòu)數(shù)據(jù)庫(kù)安全對(duì)象權(quán)限主體5.1.2 安全對(duì)象SQL Server2008的安全機(jī)制SQL Server2008的安全機(jī)制可以分為四個(gè)級(jí)別:操作系統(tǒng)的安全性SQL Server2008的登錄安全性數(shù)據(jù)庫(kù)的使用安全性數(shù)據(jù)庫(kù)對(duì)象的使用安全性SQL Server 2008 權(quán)限Server 角色SQL Server 登錄Windows 組域用戶賬戶本地用戶賬戶用戶數(shù)據(jù)庫(kù)角色應(yīng)用程序角色組SQL Server數(shù)據(jù)庫(kù)Windows文件密鑰CREATEALTERDROPCONTROLCONNECTSELECTEXECUTEUPDATED

40、ELETEINSERTTAKE OWNERSHIPVIEW DEFINITIONBACKUP授予/撤銷/拒絕ACL服務(wù)器架構(gòu)數(shù)據(jù)庫(kù)安全對(duì)象權(quán)限主體5.1.3 SQL Server 2008 權(quán)限Windows 身份驗(yàn)證模式 用戶由 Windows 授權(quán),適用于當(dāng)數(shù)據(jù)庫(kù)僅在組織內(nèi)部訪問(wèn)時(shí)。 通過(guò)登錄而被授予 SQL Server 的訪問(wèn)權(quán) 混合身份驗(yàn)證模式 用戶通過(guò)一個(gè)受信任連接連接到 SQL Server 并使用 Windows 身份驗(yàn)證來(lái)訪問(wèn) SQL Server 適用于當(dāng)外界的用戶需要訪問(wèn)數(shù)據(jù)庫(kù)時(shí)或當(dāng)用戶不能使用WINDOWS域時(shí)。SQL Server 身份驗(yàn)證模式5.2.1 SQL Se

41、rver 2008的身份認(rèn)證模式 1Windows 身份驗(yàn)證模式 當(dāng)使用Windows身份驗(yàn)證連接到SQL Server時(shí), Microsoft Windows將完全負(fù)責(zé)對(duì)客戶端進(jìn)行身份驗(yàn)證。在這種情況下,將按其Windows用戶賬戶來(lái)識(shí)別客戶端。當(dāng)用戶通過(guò)Windows用戶賬戶進(jìn)行連接時(shí),SQL Server使用Windows操作系統(tǒng)中的信息驗(yàn)證賬戶名和密碼,這是SQL Server默認(rèn)的身份驗(yàn)證模式,比混合模式安全的多。 5.2.1 SQL Server 2008的身份認(rèn)證模式2混合身份驗(yàn)證模式混合驗(yàn)證模式允許以SQL Server身份驗(yàn)證模式或者Windows身份驗(yàn)證模式來(lái)進(jìn)行驗(yàn)證。使用

42、哪個(gè)模式取決于在最初的通信時(shí)使用的網(wǎng)絡(luò)庫(kù)。如果一個(gè)用戶使用TCP/IP Sockets進(jìn)行登錄驗(yàn)證,則使用SQL Server身份驗(yàn)證模式;如果用戶使用命名管道,則登錄時(shí)將使用Windows驗(yàn)證模式。這種模式能更好地適應(yīng)用戶的各種環(huán)境。 5. 設(shè)置身份驗(yàn)證模式 通過(guò)圖形化界面設(shè)置身份驗(yàn)證模式 第步 :打開(kāi)SQL Server Management studio,使用WINDOWS或SQL SERVER身份驗(yàn)證建立連接。 第2步:對(duì)象資源管理器-服務(wù)器右擊-屬性-服務(wù)器屬性 第3步: 選擇安全性-在此設(shè)置身份驗(yàn)證模式5.3 數(shù)據(jù)庫(kù)賬戶 在SQL Server中,賬號(hào)有兩種:一種是登錄服務(wù)器的登錄

43、賬號(hào),另外一種就是使用數(shù)據(jù)庫(kù)的用戶賬號(hào)。登錄賬號(hào)只是讓用戶登錄到SQL Server中,登錄名本身并不能讓用戶訪問(wèn)服務(wù)器中的數(shù)據(jù)庫(kù)。 要訪問(wèn)特定的數(shù)據(jù)庫(kù),還必須具有用戶名。用戶名在特定的數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建,并關(guān)聯(lián)一個(gè)登錄名(當(dāng)一個(gè)用戶創(chuàng)建時(shí),必須關(guān)聯(lián)一個(gè)登錄名)。通過(guò)授權(quán)給用戶來(lái)指定用戶可以訪問(wèn)的數(shù)據(jù)庫(kù)對(duì)象的權(quán)限。 5.3.1 服務(wù)器的登錄賬號(hào) 創(chuàng)建登錄賬號(hào)時(shí)需要指出該賬號(hào)使用的是Windows身份驗(yàn)證還是使用的SQL Server身份驗(yàn)證。 1使用Windows身份驗(yàn)證的登錄2使用SQL Server身份驗(yàn)證的登錄5.3.2 數(shù)據(jù)庫(kù)用戶賬戶 一般情況下,用戶登錄SQL Server實(shí)例后,還不具備

44、訪問(wèn)數(shù)據(jù)庫(kù)的條件。在用戶可以訪問(wèn)數(shù)據(jù)庫(kù)之前,管理員必須為該用戶在數(shù)據(jù)庫(kù)中建立一個(gè)數(shù)據(jù)庫(kù)賬號(hào)作為訪問(wèn)該數(shù)據(jù)庫(kù)的ID。這個(gè)過(guò)程就是將SQL Server登錄賬號(hào)映射到需要訪問(wèn)的每個(gè)數(shù)據(jù)庫(kù)中,這樣才能夠訪問(wèn)數(shù)據(jù)庫(kù)。如果數(shù)據(jù)庫(kù)中沒(méi)有用戶賬戶,則即使用戶能夠連接到SQL Server實(shí)例也無(wú)法訪問(wèn)到該數(shù)據(jù)庫(kù)。 1默認(rèn)的數(shù)據(jù)庫(kù)用戶2添加數(shù)據(jù)庫(kù)用戶3刪除數(shù)據(jù)庫(kù)用戶創(chuàng)建數(shù)據(jù)庫(kù)用戶的方法創(chuàng)建數(shù)據(jù)庫(kù)用戶可分為兩個(gè)過(guò)程:首先創(chuàng)建數(shù)據(jù)庫(kù)用戶使用的SQL Server2008登錄名,如果使用內(nèi)置的登錄名則可省略這一步。其次為數(shù)據(jù)庫(kù)創(chuàng)建用戶,指定到創(chuàng)建的登錄名。用 SQL Server Management Studio

45、 或 CREATE USER 語(yǔ)句創(chuàng)建用戶5.3.1 管理用戶的方法下面通過(guò)SQL Server Management studio工具來(lái)創(chuàng)建數(shù)據(jù)庫(kù)用戶帳戶,然后給用戶授予訪問(wèn)【教務(wù)管理系統(tǒng)】數(shù)據(jù)庫(kù)的權(quán)限。1、展開(kāi)【服務(wù)器】|【數(shù)據(jù)庫(kù)】|【教務(wù)管理系統(tǒng)】節(jié)點(diǎn)。2、再展開(kāi)【安全性】|【用戶】節(jié)點(diǎn)并右擊,選擇【新建用戶】,打開(kāi)【數(shù)據(jù)庫(kù)用戶-新建】3、在【用戶名】文本框中輸入dur_suna來(lái)指定要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)用戶名稱4、單擊【登錄名】文本框旁邊的【選項(xiàng)】,打開(kāi)【選擇登錄名】窗口,然后單擊【瀏覽】按鈕,彈出【查找對(duì)象】對(duì)話框。5、啟用suna旁邊的復(fù)選框,單擊確定按鈕,返回【選擇登錄名】窗口,單擊確

46、定,返回【數(shù)據(jù)庫(kù)用戶-新建】窗口6、用同樣的方式,選擇【默認(rèn)架構(gòu)】為dbo7、單擊確定按鈕8、為了驗(yàn)證是否創(chuàng)建成功,可以展開(kāi)用戶節(jié)點(diǎn)5.4 固定服務(wù)器角色 服務(wù)器角色獨(dú)立于各個(gè)數(shù)據(jù)庫(kù)。如果我們?cè)赟QL Server中創(chuàng)建一個(gè)登錄賬號(hào)后,要賦予該登錄者具有管理服務(wù)器的權(quán)限,此時(shí)可設(shè)置該登錄賬號(hào)為服務(wù)器角色的成員。SQL Server提供了以下固定服務(wù)器角色: 內(nèi)置服務(wù)器角色角色描述sysadmin可執(zhí)行任何操作 dbcreator創(chuàng)建和修改數(shù)據(jù)庫(kù) diskadmin管理磁盤文件 serveradmin配置服務(wù)器級(jí)的設(shè)置 securityadmin管理和審核服務(wù)器登錄 processadmin管理

47、 SQL Server 進(jìn)程 bulkadmin執(zhí)行 BULK INSERT 語(yǔ)句 setupadmin配置和復(fù)制已鏈接的服務(wù)器 5.4.2 服務(wù)器角色管理 通過(guò)圖形化界面實(shí)現(xiàn)服務(wù)器角色管理 第1步 以系統(tǒng)管理員身份登錄到SQL Server服務(wù)器,在登錄圖標(biāo)對(duì)應(yīng)的列表項(xiàng)中,選擇登錄賬號(hào)“zhou”的項(xiàng)目雙擊; 第2步 選擇“服務(wù)器角色” 選項(xiàng)卡,如圖8.9所示,選項(xiàng)卡中列出了SQL Server所有的固定服務(wù)器角色,將“System administrators”服務(wù)器角色前的復(fù)選框選中。圖8.9 SQL Server服務(wù)器角色設(shè)置窗口5.4.2 服務(wù)器角色管理 2. 利用系統(tǒng)存儲(chǔ)過(guò)程實(shí)現(xiàn)服

48、務(wù)器角色管理 利用系統(tǒng)存儲(chǔ)過(guò)程sp_addsrvrolemember可將一登錄賬號(hào)添加到某一固定服務(wù)器角色中,使其成為固定服務(wù)器角色的成員。語(yǔ)法格式: sp_addsrvrolemember login,role 參數(shù)含義: login:添加到固定服務(wù)器角色role的登錄賬號(hào)名, 【例8.6】 將 Windows NT 用戶 dreamzhouym 添加到 sysadmin 固定服務(wù)器角色中。EXEC sp_addsrvrolemember dreamzhouym , sysadmin 5.4.2 服務(wù)器角色管理利用sp_dropsrvrolemember系統(tǒng)存儲(chǔ)過(guò)程可從固定服務(wù)器角色中刪除S

49、QL Server 登錄賬號(hào)或Windows NT用戶或組?!纠?.7】從 sysadmin 固定服務(wù)器角色中刪除登錄 zhou。 EXEC sp_dropsrvrolemember zhou, sysadmin 利用sp_srvrolepermission系統(tǒng)存儲(chǔ)過(guò)程可以瀏覽固定服務(wù)器角色的權(quán)限。5.5 數(shù)據(jù)庫(kù)角色固定數(shù)據(jù)庫(kù)角色 授予了管理公共數(shù)據(jù)庫(kù)任務(wù)的權(quán)限 用戶定義的數(shù)據(jù)庫(kù)角色相同數(shù)據(jù)庫(kù)權(quán)限的多個(gè)用戶 應(yīng)用程序角色包含數(shù)據(jù)庫(kù)中所有用戶5.3.3 數(shù)據(jù)庫(kù)角色5.5.1 固定的數(shù)據(jù)庫(kù)角色 1通過(guò)管理器工具瀏覽固定的數(shù)據(jù)庫(kù)角色 第步 打開(kāi)對(duì)象資源管理器,選擇任意一個(gè)數(shù)據(jù)庫(kù)名。 第2步 展開(kāi)數(shù)據(jù)

50、庫(kù)的節(jié)點(diǎn),選擇【安全性】 第3步 在【安全性】下選擇【角色】,展開(kāi)節(jié)點(diǎn),然后選擇【數(shù)據(jù)庫(kù)角色】,就可以看到系統(tǒng)默認(rèn)的固定數(shù)據(jù)庫(kù)角色了 2.使用系統(tǒng)存儲(chǔ)過(guò)程瀏覽固定的數(shù)據(jù)庫(kù)角色 EXEC SP_HELPdbfixedrole go5.5.1 固定的數(shù)據(jù)庫(kù)角色1. 固定數(shù)據(jù)庫(kù)角色 固定數(shù)據(jù)庫(kù)角色定義在數(shù)據(jù)庫(kù)級(jí)別上,并且有權(quán)進(jìn)行特定數(shù)據(jù)庫(kù)的管理及操作。SQL Server提供了以下固定數(shù)據(jù)庫(kù)角色: (1)db_owner:數(shù)據(jù)庫(kù)所有者,可執(zhí)行數(shù)據(jù)庫(kù)的所有管理操作。 SQL Server 數(shù)據(jù)庫(kù)中的每個(gè)對(duì)象都有所有者,通常創(chuàng)建該對(duì)象的用戶即為其所有者。其他用戶只有在相應(yīng)所有者對(duì)其授權(quán)后,方可訪問(wèn)該對(duì)象

51、。 (2)db_accessadmin:數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限管理者,具有添加、刪除數(shù)據(jù)庫(kù)使用者、數(shù)據(jù)庫(kù)角色和組的權(quán)限。 5.5.1 固定的數(shù)據(jù)庫(kù)角色(3)db_securityadmin:數(shù)據(jù)庫(kù)安全管理員,可管理數(shù)據(jù)庫(kù)中的權(quán)限,如設(shè)置數(shù)據(jù)庫(kù)表的增、刪、修改和查詢等存取權(quán)限。 (4)db_ddladmin:數(shù)據(jù)庫(kù)DDL管理員,可增加、修改或刪除數(shù)據(jù)庫(kù)中的對(duì)象。 (5)db_backupoperator:數(shù)據(jù)庫(kù)備份操作員,具有執(zhí)行數(shù)據(jù)庫(kù)備份的權(quán)限。 (6)db_datareader:數(shù)據(jù)庫(kù)數(shù)據(jù)讀取者。 (7)db_datawriter:數(shù)據(jù)庫(kù)數(shù)據(jù)寫(xiě)入者,具有對(duì)表進(jìn)行增、刪修改的權(quán)限。 (8)db_den

52、ydatareader:數(shù)據(jù)庫(kù)拒絕數(shù)據(jù)讀取者,不能讀取數(shù)據(jù)庫(kù)中任何表的內(nèi)容9)db_denydatawriter:數(shù)據(jù)庫(kù)拒絕數(shù)據(jù)寫(xiě)入者,不能對(duì)任何表進(jìn)行增、刪修改操作。 (10)public:是一個(gè)特殊的數(shù)據(jù)庫(kù)角色,每個(gè)數(shù)據(jù)庫(kù)用戶都是public 角色的成員,因此,不能將用戶、組或角色指派為public角色的成員,也不能刪除public角色的成員。通常將一些公共的權(quán)限賦給public角色。5.5.2 用戶自定義數(shù)據(jù)庫(kù)角色1通過(guò)SQL命令創(chuàng)建數(shù)據(jù)庫(kù)角色 1)定義數(shù)據(jù)庫(kù)角色 語(yǔ)法格式: CREATE ROLE role_name AUTHORIZATION owner_name 其中語(yǔ)法中的參數(shù)介

53、紹如下:role_name 將要?jiǎng)?chuàng)建的角色的名稱owner_name 該角色擁有者的名字,默認(rèn)為dbo。其中owner_name必須是當(dāng)前數(shù)據(jù)庫(kù)里的用戶或角色5.5.2 用戶自定義數(shù)據(jù)庫(kù)角色2通過(guò)管理器創(chuàng)建數(shù)據(jù)庫(kù)角色 第步: 展開(kāi)指定的數(shù)據(jù)庫(kù)節(jié)點(diǎn)。 第2步: 選擇【安全性】選項(xiàng),展開(kāi)【安全性】節(jié)點(diǎn),選擇【角色】選項(xiàng); 第3步: 展開(kāi)【角色】選項(xiàng)下的節(jié)點(diǎn),選擇【數(shù)據(jù)庫(kù)角色】選項(xiàng),鼠標(biāo)右鍵單擊,選擇【新建數(shù)據(jù)庫(kù)角色】; 第4步: 輸入數(shù)據(jù)庫(kù)角色的名字,也可以單擊【添加】按鈕添加數(shù)據(jù)庫(kù)成員。 第5步: 單擊【確定】按鈕5.5.3 應(yīng)用程序角色 應(yīng)用程序角色是用戶定義數(shù)據(jù)庫(kù)角色的一種形式,與固定數(shù)據(jù)庫(kù)

54、角色不同。它規(guī)定了某個(gè)應(yīng)用程序的安全性,用來(lái)控制通過(guò)某個(gè)應(yīng)用程序?qū)?shù)據(jù)的間接訪問(wèn)。例如,管理員允許雇員使用雇員處理程序錄入新員工、離職員工和打印統(tǒng)計(jì)報(bào)表等。 5.6 數(shù)據(jù)庫(kù)權(quán)限 權(quán)限提供了一種方法來(lái)對(duì)特權(quán)進(jìn)行分組,并控制實(shí)例、數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象的維護(hù)和實(shí)用程序的操作。用戶可以具有授予一組數(shù)據(jù)庫(kù)對(duì)象的全部特權(quán)的管理權(quán)限,也可以具有授予管理系統(tǒng)的全部特權(quán)但不允許存取數(shù)據(jù)的系統(tǒng)權(quán)限。5.6.1 權(quán)限概述權(quán)限類型:對(duì)象權(quán)限語(yǔ)句權(quán)限隱式權(quán)限 對(duì)于表和視圖,擁有者可以授予數(shù)據(jù)庫(kù)用戶INSERT、UPDATE、DELETE、SELECT和REFERENCES五種權(quán)限。5.6.2 管理權(quán)限 對(duì)于用戶或角色權(quán)限

55、的操作有以下3種狀態(tài):授予、廢除和拒絕。用戶和角色的權(quán)限以記錄的形式存儲(chǔ)在各個(gè)數(shù)據(jù)庫(kù)的sysprotects系統(tǒng)表中。1授予權(quán)限 GRANT2撤銷權(quán)限 REVOKE3拒絕權(quán)限 DENY5.6.2 管理權(quán)限1 授予權(quán)限 利用GRANT語(yǔ)句可以給數(shù)據(jù)庫(kù)用戶或數(shù)據(jù)庫(kù)角色賦予執(zhí)行T-SQL語(yǔ)句的權(quán)限及對(duì)數(shù)據(jù)庫(kù)對(duì)象進(jìn)行操作的權(quán)限。 授予執(zhí)行T-SQL語(yǔ)句的權(quán)限。5.6.2 管理權(quán)限 語(yǔ)法格式: GRANT ALL | statement ,.n TO security_account ,.n 授予對(duì)數(shù)據(jù)庫(kù)對(duì)象操作的權(quán)限。 語(yǔ)法格式: GRANT ALL PRIVILEGES | permission ,

56、.n ( column ,.n ) ON table | view | ON table | view ( column ,.n ) | ON stored_procedure | extended_procedure | ON user_defined_function TO security_account ,.n WITH GRANT OPTION AS group | role 5.6.2 管理權(quán)限例如:在下面的例子中使用GRANT語(yǔ)句,授予角色guest對(duì)“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)中“學(xué)生信息”表的INSERT、UPDATE、DELETE權(quán)限 use 教務(wù)管理系統(tǒng) go grant se

57、lect,update,delete on 學(xué)生信息 to guest go5.6.2 管理權(quán)限2. 拒絕權(quán)限 使用DENY命令可以拒絕給當(dāng)前數(shù)據(jù)庫(kù)內(nèi)的用戶授予的權(quán)限,并防止數(shù)據(jù)庫(kù)用戶通過(guò)其組或角色成員資格繼承權(quán)限。 拒絕語(yǔ)句權(quán)限。 語(yǔ)法格式: DENY ALL | statement ,.n TO security_account ,.n 拒絕對(duì)象權(quán)限。 語(yǔ)法格式: DENY ALL PRIVILEGES | permission ,.n ( column ,.n ) ON table | view | ON table | view ( column ,.n ) | ON stored_p

58、rocedure | extended_procedure | ON user_defined_function TO security_account ,.n CASCADE 5.6.2 管理權(quán)限【例8.18】 首先給 public 角色授予 對(duì)于表XS的SELECT 權(quán)限,然后,拒絕用戶 zhang, wang, Nanjingliu 的特定權(quán)限,這樣,這些用戶就沒(méi)有對(duì)XS表的操作權(quán)限了。 USE XSCJ GO GRANT SELECT ON XS TO public GO DENY SELECT, INSERT, UPDATE, DELETE ON XS TO zhang, wang,

59、 dreamzhou GO【例8.19】首先將在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)的“學(xué)生信息”表中執(zhí)行INSERT操作的權(quán)限授予PUBLIC角色,這樣所有的數(shù)據(jù)庫(kù)用戶都擁有了該項(xiàng)權(quán)限。然后,又拒絕了用戶guest擁有該項(xiàng)權(quán)限 use 教務(wù)管理系統(tǒng) GO GRANT INSERT ON 學(xué)生信息 TO PUBLIC GO DENY INSERT ON 學(xué)生信息 TO GUEST5.6.2 管理權(quán)限3. 撤消權(quán)限 利用REVOKE命令可取消以前給當(dāng)前數(shù)據(jù)庫(kù)用戶授予或拒絕的權(quán)限。 取消以前授予或拒絕的語(yǔ)句權(quán)限。 語(yǔ)法格式: REVOKE ALL | statement ,.n FROM security_ac

60、count ,.n 取消以前授予或拒絕的對(duì)象權(quán)限。 語(yǔ)法格式: REVOKE GRANT OPTION FOR ALL PRIVILEGES | permission ,.n ( column ,.n ) ON table | view | ON table | view ( column ,.n ) | ON stored_procedure | extended_procedure | ON user_defined_function TO | FROM security_account ,.n CASCADE AS group | role 5.6.2 管理權(quán)限【例8.20】取消已授予用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論