數(shù)據(jù)庫課程操作指導(dǎo)2.0_第1頁
數(shù)據(jù)庫課程操作指導(dǎo)2.0_第2頁
數(shù)據(jù)庫課程操作指導(dǎo)2.0_第3頁
數(shù)據(jù)庫課程操作指導(dǎo)2.0_第4頁
數(shù)據(jù)庫課程操作指導(dǎo)2.0_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一 概述:1 SQL Server 2000 組成圖1 SQL Server的體系結(jié)構(gòu)示意圖。SQL Server 是可縮放的高性能基于SQL和客戶/服務(wù)器體系結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)服務(wù)器軟件包,是由Microsoft 公司推出的 SQL Server數(shù)據(jù)庫管理系統(tǒng)的最新版本。從圖1 SQL Server的體系結(jié)構(gòu)示意圖中看出,SQL Server 2000由4部分組成,在實(shí)驗(yàn)中,我們要求掌握基于SQL Server 2000的服務(wù)器的使用,也就是數(shù)據(jù)庫管理員DBA的主要操作。2 SQL Server 2000的安裝SQL Server 2000的常見版本有:企業(yè)版、標(biāo)準(zhǔn)版、個人版、開發(fā)人員

2、版等。對軟硬件的最低需求為:CPU Pentium 166MHz,內(nèi)存64MB,硬盤180 MB。SQL Server 2000企業(yè)版和標(biāo)準(zhǔn)版只能在windows2000 Server版和Professional版操作系統(tǒng)下運(yùn)行。下面介紹SQL Server 2000 企業(yè)版在本地機(jī)上的安裝過程。1)插入SQL Server 2000光盤,自動安裝程序啟動,屏幕上出現(xiàn)如圖2所示畫面,按圖2所示選擇SQL Server 2000組件;2) 選擇安裝數(shù)據(jù)庫服務(wù)器,如圖3所示,進(jìn)入SQL Server2000 企業(yè)版安裝向?qū)В粓D3 選擇SQL Server 2000安裝組件對話框圖2 SQL Ser

3、ver 2000安裝過程對話框3)在安裝向?qū)υ捒蛑悬c(diǎn)擊下一步,進(jìn)入計算機(jī)名對話框;4)選擇本地安裝,點(diǎn)擊下一步,進(jìn)入安裝選擇對話框;5)選擇創(chuàng)建新的SQL Server實(shí)例,點(diǎn)擊下一步,進(jìn)入用戶信息對話框;圖4 選擇服務(wù)帳號對話框6)輸入用戶信息,點(diǎn)擊下一步,進(jìn)入安裝定義對話框;7)選擇服務(wù)器和客戶端工具,點(diǎn)擊下一步,進(jìn)入實(shí)例名對話框;8)輸入實(shí)例名,點(diǎn)擊下一步,進(jìn)入安裝類型選擇對話框; 圖5 身份驗(yàn)證模式對話框9)選擇典型安裝,進(jìn)入服務(wù)帳號設(shè)置對話框,如圖4 所示;10)選擇對每一個用戶使用同一個帳號,自動啟動服務(wù)器,點(diǎn)擊下一步,進(jìn)入選擇身份驗(yàn)證模式選擇對話框,如圖5所示; 11)選擇Wi

4、ndows 身份驗(yàn)證模式。點(diǎn)擊下一步,進(jìn)入開始復(fù)制文件對話框,點(diǎn)擊下一步,進(jìn)入選擇許可模式對話框,選擇處理器許可證,點(diǎn)擊繼續(xù),開始復(fù)制文件。12)文件復(fù)制完畢后,進(jìn)入安裝完畢對話框,點(diǎn)擊完成。系統(tǒng)安裝完畢。圖6 Server Manager 窗口3 SQL Server 2000的工具1) 服務(wù)管理器(Server Manager)圖7 服務(wù)管理器在任務(wù)欄中的狀態(tài)在進(jìn)行任何數(shù)據(jù)庫操作前,都必須啟動服務(wù)器,Server Manager可以方便啟動、停止、暫停本地或遠(yuǎn)程服務(wù)器。圖6 是打開的Server Manager 窗口。適當(dāng)配置窗口中的選項(xiàng),點(diǎn)擊“啟動”按鈕即可啟動SQL Server服務(wù)器

5、。SQL Server 2000 安裝以后,每次開機(jī)時,Windows都會自動啟動服務(wù)管理器。在任務(wù)欄上有一個圖標(biāo)表示服務(wù)管理器的狀態(tài)。如圖7所示。2) SQL Server 2000 企業(yè)管理器(Enterprise Mamager)l 企業(yè)管理器的啟動圖8 企業(yè)管理器進(jìn)入SQL Server2000的企業(yè)管理器 從Program > SQL Server -> Enterprise Manager, 圖8為企業(yè)管理器界面。企業(yè)管理器是DBA管理數(shù)據(jù)庫的重要工具,使用Enterprise Manager可以管理用戶賬號、登錄服務(wù)器、備份和恢復(fù)數(shù)據(jù)庫、啟動和停止SQL Server

6、、創(chuàng)建和管理數(shù)據(jù)庫對象和任務(wù)、處理訪問控制列表、檢查數(shù)據(jù)庫的一致性等。其中數(shù)據(jù)庫Master、Model、Msdb、Tempdb是系統(tǒng)數(shù)據(jù)庫。Pubs、Northwind是SQL Server自帶的樣本數(shù)據(jù)庫,其中有大量的Test數(shù)據(jù),可以作為SQL語言實(shí)驗(yàn)的基礎(chǔ)數(shù)據(jù)。圖9企業(yè)管理器中的數(shù)據(jù)庫對象l 數(shù)據(jù)庫文件夾數(shù)據(jù)庫文件夾中顯示SQL Server服務(wù)器管理的所有數(shù)據(jù)庫信息。例如SQL Server 提供的樣本數(shù)據(jù)庫Pubs 的展開如圖9所示。每個數(shù)據(jù)庫均由這些項(xiàng)目來分別描述數(shù)據(jù)庫的屬性。其中關(guān)系圖為SQL Server根據(jù)用戶對數(shù)據(jù)庫的定義,自動繪制的數(shù)據(jù)庫關(guān)系示意圖( ER圖)。圖10為

7、Pubs的關(guān)系圖,表示出基本表之間的引用關(guān)系,參照完整性定義的圖示化表示。圖10 Pubs的關(guān)系圖表為數(shù)據(jù)庫中包含的表的信息。表分為兩類,一類為用戶創(chuàng)建的表,另一類為系統(tǒng)創(chuàng)建的表。用戶表由用戶使用DDL語言創(chuàng)建,系統(tǒng)表存放DBMS對用戶數(shù)據(jù)庫的管理信息。其它對象包含了與當(dāng)前數(shù)據(jù)庫有關(guān)的信息。3) SQL Server 2000 查詢分析器(Query Analyzer)圖11 查詢分析器查詢分析器是一個重要工具,實(shí)驗(yàn)中的所有SQL語言命令均需在查詢分析器中輸入、編輯運(yùn)行。從Program > SQL Server -> Query Analyzer 可以打開查詢分析器,如圖11所示

8、。它是一個多文檔程序,在其上可以同時打開多個查詢程序(窗口),在查詢分析器的工具欄中的綠色4按鈕為執(zhí)行當(dāng)前窗口中SQL語句按鈕。點(diǎn)擊它即可逐行執(zhí)行。二 DDL使用方法 Transact-SQL是SQL Server內(nèi)置的SQL語言,它支持標(biāo)準(zhǔn)SQL語言,但在許多方面進(jìn)行了擴(kuò)充,其定義能力更為強(qiáng)大。Transact-SQL對使用 Microsoft® SQL Server 非常重要。與 SQL Server 通訊的所有應(yīng)用程序都通過向服務(wù)器發(fā)送 Transact-SQL 語句來進(jìn)行通訊,而與應(yīng)用程序的用戶界面無關(guān)。在此我們不對Transact-SQL的語法作詳細(xì)介紹,大家可以參考查詢分

9、析器中提供的幫助。 1 數(shù)據(jù)庫創(chuàng)建在查詢分析器中執(zhí)行下列語句即可在默認(rèn)的設(shè)備上創(chuàng)建新的數(shù)據(jù)庫ems。CREATE DATABASE database_name 例1:創(chuàng)建名為ems的數(shù)據(jù)庫:CREATE DATABASE ems 這是一個簡單的人事管理數(shù)據(jù)庫。本例中的所用數(shù)據(jù)庫對象均為ems 建立。執(zhí)行結(jié)果如圖12所示。圖12 創(chuàng)建數(shù)據(jù)庫命令及其執(zhí)行結(jié)果執(zhí)行按鈕當(dāng)前數(shù)據(jù)庫SQL語句執(zhí)行結(jié)果顯示窗口2 基本表的建立創(chuàng)建基本表的命令為:CREATE TABLE table_name,在該命令中定義主碼和外碼時,可以使用列約束(Column Constraint)或表約束(Table Constra

10、int)子句。例2:在ems中創(chuàng)建employee(職員)表和dept(部門)表:employee(eno,ename,manager,salary,deptno);主碼:eno 外碼:manager、deptnodept(deptno,dname,location)主碼:deptno 注:employee中的manager 為相應(yīng)雇員的直接領(lǐng)導(dǎo)或上司的eno。創(chuàng)建基本表時,應(yīng)先選擇包含表的數(shù)據(jù)庫,本例中選擇當(dāng)前數(shù)據(jù)庫為ems。 查詢分析器啟動時的當(dāng)前數(shù)據(jù)庫為pubs,如圖12所示。改變當(dāng)前數(shù)據(jù)庫可以直接點(diǎn)擊當(dāng)前數(shù)據(jù)庫列表框,選中所需數(shù)據(jù)庫,也可使用 USE databasename 命令。圖

11、 13 為使用SQL建表命令創(chuàng)建上述基本表的源代碼。在查詢分析器中輸入該代碼,點(diǎn)擊執(zhí)行按鈕即可。Use ems;Gocreate table dept(deptno char(3) primary key, deptname char(20) not null, location char(20);create table employee (eno char(4) , ename char(10) not null, manager char(4) , salary int, deptno char(3) , primary key (eno), foreign key (manager)

12、references employee(eno), foreign key (deptno) references dept(deptno);Column ConstraintTable Constraint圖13 SQL建表命令創(chuàng)建上述基本表的源代碼3 視圖的建立視圖是組成數(shù)據(jù)庫體系結(jié)構(gòu)三級模式兩級映像結(jié)構(gòu)中的外模式的基本單元,SQL-Server的視圖定義命令為: CREATE VIEW view-name AS SELECT statement視圖是用于定義終端用戶數(shù)據(jù)來源的。在視圖定義中可以使用復(fù)雜的SELECT命令。例3:在ems中定義能夠查詢雇員年薪的視圖Annualsal和統(tǒng)計雇

13、員下屬人數(shù)的視圖manager。視圖定義為:Annualsal(eno,ename,annualsal);annualsal 為相應(yīng)雇員的年薪。manager(manager,name,clerknum);clerknum為相應(yīng)雇員的直接下屬個數(shù)。在查詢分析器中分別輸入如圖14所示的代碼,即可創(chuàng)建要求的視圖。Use ems;create view manager (manager,name,clerknum) as select e1.manager,e2.ename,e1.clerknum from (select manager , count(*) as clerknum from em

14、ployee group by manager having count(*)>0) e1,employee e2 where e1.manager = e2.enoUse ems ;create view annualsal(eno,ename,annualsal)as select eno,ename,12*salary from employee 圖14 :視圖定義源代碼 其中:在視圖manager定義中的e1 為聯(lián)機(jī)視圖。三 DML使用方法SQL的DML包括插入(INSERT)、刪除(DELETE)、修改(UPDATE)等命令。DML命令的執(zhí)行是可能造成數(shù)據(jù)庫不一致的根源。因此,

15、每一條語句在執(zhí)行前,SQL-Server都要驗(yàn)證語句是否符合完整性要求,包括實(shí)體完整性、參照完整性、用戶定義完整性。1 INSERT命令SQL語言的插入命令:INSERT INTO table-name (column-list) VALUES(values-list),可以完成數(shù)據(jù)輸入功能。例4:在ems中的dept表中輸入表1中的數(shù)據(jù);employee表中輸入表2中的數(shù)據(jù)。表2 基本表employee的數(shù)據(jù)E01 LU null 8000 D01E02 YIN E01 7000 D01E03 XU E01 2000 D01E04 QU E02 2000 D01E05 ZAO null 50

16、00 D02E06 PANA E05 4000 D02E07 PANB E05 3000 D03圖15為數(shù)據(jù)輸入的源代碼。表1 基本表dept的數(shù)據(jù)D01 Computer School South1-405D02 Communication Dept South1-304D03 Management School kejilou-408use ems;go insert into dept values('D01','Computer School','North1-405'); insert into dept values('D02

17、','Communication Dept','Notth1-304'); insert into dept values('D03','Management School','kejilou-408'); insert into employee values('E01','LU',null,8000 ,'D01'); insert into employee values('E02','YIN','E01',

18、7000,'D01'); insert into employee values('E03','XU','E01',2000,'D01'); insert into employee values('E04','QU','E02',2000,'D01'); insert into employee values('E05','ZAO ',null,5000,'D02'); insert into empl

19、oyee values('E06','PANA ','E05',4000,'D02'); insert into employee values('E07','PANB ','E05',3000,'D03');圖15 在基本表中插入數(shù)據(jù)的源代碼注意:在執(zhí)行過程中,如果有一條語句出錯誤,再次執(zhí)行時,在出錯語句前面的語句就會被拒絕執(zhí)行。因?yàn)?,在查詢分析器中的命令在?zhí)行時按順序逐條執(zhí)行,當(dāng)執(zhí)行到出錯語句時停止執(zhí)行,此時,在出錯語句的前面各條語句的結(jié)果已經(jīng)存入表中,故當(dāng)重復(fù)執(zhí)

20、行時,它們違反了實(shí)體完整性。例5:插入可能違反參照完整性的插入命令,驗(yàn)證實(shí)體完整性檢驗(yàn)規(guī)則。在查詢分析器中執(zhí)行如圖16所示的命令,系統(tǒng)將拒絕執(zhí)行。執(zhí)行結(jié)果如圖17所示。use ems;go insert into employee values('E10','WU',E11,8000 ,'D01'); insert into employee values('E02','YIN','E01',7000,'D05'); 圖16 可能被拒絕的命令圖17 執(zhí)行被拒絕命令的結(jié)果顯示圖2 DE

21、LETE命令SQL的刪除命令為:DELETE FROM table-name WHERE condition-expression;執(zhí)行DELETE命令后,系統(tǒng)會刪除滿足命令中條件表達(dá)式的所有元組。這種刪除只是邏輯的。因此,當(dāng)再次插入一個與被刪除的元組具有相同關(guān)鍵字的元組時,被認(rèn)為違反了實(shí)體完整性。例6:刪除姓名=PANB的紀(jì)錄。在查詢分析器中輸入并執(zhí)行如圖18所示的代碼即可完成要求的刪除操作。刪除操作可能會引起參照完整性的破壞,對于這些操作系統(tǒng)會根據(jù)完整性定義執(zhí)行或拒絕執(zhí)行。例如:在沒有刪除PANB紀(jì)錄前,試圖刪除他所在的部門的操作就會引起系統(tǒng)的警告,并拒絕執(zhí)行該操作。use ems;go

22、delete from employeewhere ename='PANB' ; 圖18 刪除記錄PANB的代碼3 UPDATE命令 SQL的修改命令為:UPDATE table-name SET column-name = expression WHERE condition-expression;執(zhí)行UPDATE命令后,系統(tǒng)會按照SET子句修改滿足命令中條件表達(dá)式的所有元組。如果使用修改命令更新關(guān)鍵字的值,而該關(guān)鍵字在其他表中作為外碼存在時,操作可能違反參照完整性。系統(tǒng)將拒絕執(zhí)行。例7:將表employee中所有人的salary 增加10%。UPDATE employee

23、SET salary = salary*1.1;例8:將ENO=E01的ENO更新為E00。該操作結(jié)果如圖18 所示:UPDATE employee SET eno = E00WHERE eno=E01;圖19 例8的執(zhí)行結(jié)果四 SELECT命令SELECT 命令是SQL語言中使用最頻繁的命令,其變化形式繁多,靈活運(yùn)用SELECT 命令可以完成任意復(fù)雜的查詢要求。SELECT 命令的基本語法為:SELECT query_expression|column-list|* FROM table_name_list|view_name_listWHERE condition-expressionGR

24、OUP BY HAVING condition-expressionORDER BY order_expression| column ASC|DESC,n;由于SELECT 命令非常復(fù)雜,上面的語法描述還無法完全表達(dá),請參考Transaction SQL 的幫助。從海量數(shù)據(jù)庫中得到自己所希望看到的信息,是學(xué)習(xí)SQL語言的重要任務(wù)。下面只舉幾個典型例子。1簡單查詢例9:列出ems中的所有員工的信息。 SELECT * FROM employee;2使用謂詞的查詢謂詞有IN、 LIKE、 NULL、 EXISTS、 BETWEEN 等,在查詢時WHERE子句中可以使用。SELECT ename,

25、salary,deptno FROM employee WHERE salary BETWEEN 2000 AND 3000ORDER BY salary DESC; 例10:列出工資在2000-3000之間的所有員工的姓名及他們所在的部門號碼,將結(jié)果按工資從高到低的順序排列。在查詢分析器中輸入并執(zhí)行圖20 中的代碼即可得到所要的結(jié)果。 圖20 例10 的檢索命令3連接查詢連接查詢通過表間的關(guān)聯(lián)字段實(shí)現(xiàn)相關(guān)查詢,連接查詢分為等值聯(lián)接查詢、不等值連接查詢、外聯(lián)接查詢、自我連接查詢等。在書寫較為復(fù)雜的查詢命令時,建議使用別名來提高效率。例11:查詢雇員PANA所在的部門及其辦公地點(diǎn);SELECT

26、e.deptno,d.location FROM employee e,dept d WHERE e.deptno = d.deptno AND e.ename = 'PANA'/*This is a Equijoin*/圖21 例11的連接查詢代碼例12:列數(shù)辦公地點(diǎn)在South1的所有雇員名單;SELECT eno,ename, e.deptnoFROM employee e, dept dWHERE e.deptno = d.deptno AND d.location LIKE 'South1%' ;圖22 例12 的代碼例13:列出每個雇員的間接上司(M

27、anager的Manager)的姓名。SELECT e1.eno, e1.ename,e3.eno, e3.ename as manager_of_managerFROM employee e1, employee e2 ,employee e3WHERE e1.manager = e2.eno and e2.manager = e3.eno 圖23 例13的代碼4復(fù)雜查詢例14:查詢部門D01中薪水介于部門D02的最高和最低值之間的雇員及他們的薪水。use ems;SELECT eno,ename,salaryFROM employeeWHERE (salary BETWEEN (SELEC

28、T MIN(salary) FROM employee WHERE deptno='D02') AND (SELECT MAX(salary) FROM employee WHERE deptno='D02') AND deptno='D01'圖24 例14的代碼五 DCL 的使用方法1 SQL Server 登錄認(rèn)證圖26新建登陸對話框圖25 SQL Server 認(rèn)證模式的設(shè)置對任何用戶來說,數(shù)據(jù)庫的安全性都是至關(guān)重要的。由于數(shù)據(jù)是面向所有合法用戶的,因此,對任何DBMS,良好的用戶管理功能是確保數(shù)據(jù)庫安全性的重要保障。SQL Server

29、2000的安全性建立在認(rèn)證和訪問許可兩種機(jī)制上的。認(rèn)證機(jī)制確保登錄的用戶帳號和密碼是正確的,通過認(rèn)證的用戶獲得數(shù)據(jù)庫的訪問授權(quán)后才能對服務(wù)器上的數(shù)據(jù)進(jìn)行授權(quán)許可下的各種操作。在SQL Server 2000的安全模式中包括:SQL Server 登錄、數(shù)據(jù)庫用戶、權(quán)限、角色等。SQL Server 2000有兩種安全模式,即WINDOWS認(rèn)證模式和混合模式。WINDOWS模式只要求用戶通過WINDOWS操作系統(tǒng)的認(rèn)證。如果用戶登錄SQL Server 2000時未給出用戶的登錄名,SQL Server 自動使用該模式,在前面各種操作時均使用該模式?;旌险J(rèn)證模式下,可以使用WINDOWS認(rèn)證或S

30、QL Server 認(rèn)證。使用SQL Server 認(rèn)證時,用戶在連接SQL Server 時必須提供登錄名和密碼,這些登錄信息存放在系統(tǒng)表syslogins中,與操作系統(tǒng)無關(guān)。1) SQL Server 認(rèn)證模式的設(shè)置在對登錄進(jìn)行增加、刪除操作前,必須設(shè)置SQL Server 認(rèn)證模式。設(shè)置步驟:啟動企業(yè)管理器è選擇要進(jìn)行認(rèn)證模式設(shè)置的服務(wù)器è右擊該服務(wù)器,在彈出菜單中選擇屬性,彈出如圖25所示的對話框,點(diǎn)擊安全性選擇欄,選擇身份驗(yàn)證為SQL Server和Windows(S)選項(xiàng)。任選一種審核級別,在啟動服務(wù)器帳戶選項(xiàng)中選擇系統(tǒng)帳戶。點(diǎn)擊確定。確認(rèn)設(shè)置。2)企業(yè)管理器管

31、理登錄在SQL Server認(rèn)證模式下可以新建登錄和管理登錄,其操作步驟如下:啟動企業(yè)管理器è展開控制臺根目錄,選擇安全性并展開è右擊登錄,在彈出菜單中選擇新建登錄,彈出如圖26所示的對話框,在常規(guī)選擇欄中,輸入登錄用戶的信息,身份驗(yàn)證選擇SQL Server驗(yàn)證,并輸入密碼。選擇該登錄的數(shù)據(jù)庫,確認(rèn)后點(diǎn)擊確定按鈕,新的登錄即創(chuàng)建成功。3) Transact_SQL 存儲過程管理登錄在SQL Server中,有一些存儲過程提供了管理SQL Server登錄的功能,使用他們可以在查詢分析器中,用命令的方式管理登錄。包括:sp_grantlogin sp_revokelogin

32、 sp_decnylogin sp_addlogin sp_droplogin sp_helplogins。· 新登錄的創(chuàng)建use ems go EXEC sp_addlogin qbb,qbb圖27 創(chuàng)建登陸qbb的代碼新的登錄者可以是WINDOWS的用戶或用戶組,也可以是使用SQL Server認(rèn)證模式的登錄帳號,設(shè)定WINDOWS的用戶為SQL Server登錄者時使用sp_grantlogin。創(chuàng)建新的使用SQL Server認(rèn)證模式的登錄帳號時使用sp_addlogins。圖27 是使用sp_addlogin創(chuàng)建使用SQL Server認(rèn)證模式的登錄qbb的代碼,在具有權(quán)限

33、的sa登錄連接的查詢分析器中輸以下代碼即可創(chuàng)建一個ems的登錄qbb用戶,該登錄的密碼為qbb。· 登錄的刪除use ems go EXEC sp_droplogin qbb圖28 刪除登陸qbb的代碼刪除基于使用SQL Server認(rèn)證模式的SQL Server的登錄可以使用sp_droplogin。但是,如果與該登錄匹配的數(shù)據(jù)庫用戶仍存在sysuser表中,則不能刪除該登錄賬號。刪除WINDOWS的用戶或用戶組時,使用sp_revokelogin,拒絕WINDOWS的用戶或用戶組連接到SQL Server時,使用sp_decnylogin。圖28為刪除了新建登錄bbb的代碼。us

34、e emsgoEXEC sp_helplogins圖29 查看登陸的代碼· 登陸的查看sp_helplogins可以用來顯示SQL Server的所有登錄者的信息。如圖29是顯示數(shù)據(jù)庫ems 的所有登錄者信息的代碼。2 用戶管理1)用戶的概念在SQL Server中,數(shù)據(jù)庫用戶帳號與登錄帳號是兩個不同的概念,一個合法的登錄帳號,只表明該帳號通過了認(rèn)證,但不表明其可以對數(shù)據(jù)庫進(jìn)行操作,所以,一個登錄帳號總是和一個或多個數(shù)據(jù)庫用戶帳號相對應(yīng),這樣才可以訪問數(shù)據(jù)庫。在系統(tǒng)初始安裝時,系統(tǒng)自動與默認(rèn)的用戶相關(guān)聯(lián),所以我們在前面的操作才能進(jìn)行。例如,登錄帳號sa自動與每一個用戶dbo相關(guān)聯(lián)。這

35、就是為什么我們先前建立的數(shù)據(jù)庫的所有者均為dbo的原因。通常數(shù)據(jù)庫帳號總是與某一個登錄帳號相關(guān)聯(lián)。但guest例外,在安裝系統(tǒng)時,guest用戶被加入到master、pubs、tempdb、和northwind中。這使初次使用SQL Server 的用戶能夠訪問到SQL Server自帶的數(shù)據(jù)庫,并且對于沒有建立安全性防范機(jī)制的數(shù)據(jù)庫,均可以使用該用戶來訪問。圖30 新建用戶對話框2) 企業(yè)管理器管理數(shù)據(jù)庫用戶· 創(chuàng)建新數(shù)據(jù)庫用戶啟動企業(yè)管理器è展開控制臺根目錄;打開數(shù)據(jù)庫文件夾è選擇要創(chuàng)建用戶的數(shù)據(jù)庫(如本例中的ems),右擊用戶,在彈出菜單中選擇新建數(shù)據(jù)庫用戶

36、,彈出如圖30所示的對話框,在常規(guī)選擇欄中,輸入登錄名和用戶名。在數(shù)據(jù)庫角色成員列表框中選擇public,確認(rèn)后點(diǎn)擊確定按鈕,新的數(shù)據(jù)庫用戶即創(chuàng)建成功。· 查看、刪除數(shù)據(jù)庫用戶在SQL Server企業(yè)管理器中,選擇用戶圖標(biāo),則在右邊的窗格中顯示當(dāng)前數(shù)據(jù)庫的所用用戶,選擇關(guān)心的用戶,點(diǎn)擊右鍵即可查看用戶信息或刪除該用戶。3) Transact_SQL存儲過程管理數(shù)據(jù)庫用戶SQL Server利用下列系統(tǒng)過程管理數(shù)據(jù)庫用戶:sp_adduser sp_grangdbaccess sp_dropuser Sp_dropuser sp_revokedbaccess sp_helpuser

37、。其中sp_adduser Sp_dropuser 是為了保持與以前版本相兼容,因此不主張使用,在SQL Server 2000中,建議使用sp_grangdbaccess sp_revokedbaccess 。· 創(chuàng)建新數(shù)據(jù)庫用戶use ems go EXEC sp_grantdbaccess 'qbb','qbb'已存在登錄名新建用戶名圖31 創(chuàng)建新用戶的代碼所有的數(shù)據(jù)庫用戶(除了guest)均必須與某一登錄賬號相匹配,因此在使用系統(tǒng)過程創(chuàng)建新數(shù)據(jù)庫用戶時,不但要指出新數(shù)據(jù)庫用戶的名稱,還必須指出一個已經(jīng)存在的登錄賬號。系統(tǒng)過程sp_grantdb

38、access用于為SQL Server 登錄用戶或NT用戶或用戶組建立相匹配的數(shù)據(jù)庫用戶帳號。圖31是為數(shù)據(jù)庫ems的登錄qbb創(chuàng)建了一個名稱為 qbb的數(shù)據(jù)庫用戶。· 刪除數(shù)據(jù)庫用戶use ems go EXEC sp_revokedbaccess 'qbb'圖32 刪除數(shù)據(jù)庫用戶的代碼系統(tǒng)過程sp_revokedbaccess用于將數(shù)據(jù)庫用戶從當(dāng)前數(shù)據(jù)庫中刪除,刪除后與其匹配的登錄即無法再訪問該數(shù)據(jù)庫了。圖32所示的代碼刪除了數(shù)據(jù)庫ems的用戶qbb。use emsgoEXEC sp_helpuser圖33 顯示數(shù)據(jù)庫用戶的代碼· 查看數(shù)據(jù)庫用戶信息sp

39、_helpuser可用來顯示當(dāng)前數(shù)據(jù)庫的指定用戶信息。圖33為顯示數(shù)據(jù)庫ems用戶的代碼。在查詢分析器中輸入并執(zhí)行即可列出ems的所有用戶信息。3 用戶授權(quán)管理對于登錄到SQL Server的合法數(shù)據(jù)庫用戶,必須獲得對數(shù)據(jù)庫操作的授權(quán)。在SQL Server中包括兩種類型的權(quán)限,即對象權(quán)限和語句權(quán)限。1)對象權(quán)限對象權(quán)限總是針對表、視圖、存儲過程而言,它決定了能對這些對象執(zhí)行哪些操作(如UPDATE DELETE INSERT SELECT EXECUTE)。不同類型的對象支持不同類型的操作,表3為各種對象的可能操作列舉。表3 :對象權(quán)限總結(jié)表對 象操 作表SELECT UPDATE DELE

40、TE INSERT REFERENCE 視圖SELECT UPDATE DELETE INSERT 存儲過程EXECUTE列UPDATE SELECT 例15為ems的用戶qbb 授予表employee 查詢權(quán)限。Use emsGo Grant select on employee to qbb圖35 連接到服務(wù)器對話框圖34 為用戶授權(quán)的代碼以系統(tǒng)分析員身份進(jìn)入查詢分析器,輸入并執(zhí)行如圖34的代碼。然后,在打開查詢分析器中文件下拉菜單,點(diǎn)擊連接選項(xiàng),在彈出菜單(如圖35)輸入qbb的信息,新打開的窗口即為qbb 用戶的窗口,在該窗口中輸入并執(zhí)行 SELECT * FROMemployee 即

41、可得到查詢結(jié)果,此時若輸入SELECT * FROMdept,可以發(fā)現(xiàn)語句被拒絕執(zhí)行。因?yàn)閝bb沒有得dept表得操作權(quán)限。同樣,可以使用REVOKE SELECT ON employee FRPM qbb 命令可以收回qbb對employee的操作權(quán)限。大家可以參考教材中命令,對自己的數(shù)據(jù)庫的安全性進(jìn)行全面管理。2)語句權(quán)限表4 語句權(quán)限總結(jié)表語句含義CREATE DTATBASE創(chuàng)建數(shù)據(jù)庫CREATE TABLE創(chuàng)建表CREATE VIEW創(chuàng)建視圖CREATE RULE創(chuàng)建規(guī)則CREATE DEFAULT創(chuàng)建缺省CREATE PROCEDURE創(chuàng)建存儲過程BACKUP DATABASE備份

42、數(shù)據(jù)庫BACKUP LOG創(chuàng)建事務(wù)日志語句權(quán)限指數(shù)據(jù)庫用戶執(zhí)行某種語句的操作權(quán),如創(chuàng)建數(shù)據(jù)庫、表、存儲過程等。這些語句雖然(如CREATE 命令)包含有操作對象,但這些對象在操作前并不存在于數(shù)據(jù)庫中。表4為所有權(quán)語句清單。例16使用語句權(quán)限設(shè)置命令,授予用戶qbb在數(shù)據(jù)庫ems 上建立新表的權(quán)限。完成該功能的代碼如圖36。Use emsGo GRANT CREATE TABLE TO qbb圖36 為用戶qbb授予創(chuàng)建基表的權(quán)限在SQL Server 2000中有角色的概念,角色的設(shè)置可以降低權(quán)限管理的繁雜性,在大的系統(tǒng)中,雖然有很多數(shù)據(jù)庫用戶,但可以將這些用戶進(jìn)行分類,每類定義一種角色,只要

43、對角色進(jìn)行權(quán)限設(shè)置,就可以簡單管理用戶了。角色的設(shè)置在此不贅述了。六 游標(biāo)的使用SQL 語言有兩種使用方式,即交互式和嵌入式。前面我們在查詢分析器中執(zhí)行的命令均使用交互式方式。但是在應(yīng)用程序開發(fā)時往往需要在其他程序開發(fā)語言中使用嵌入式的SQL命令處理數(shù)據(jù)庫中的數(shù)據(jù),這時程序開發(fā)語言稱為主語言,SQL語言稱為子語言。由于主語言與SQL語言處理數(shù)據(jù)的方式不同,因?yàn)殛P(guān)系數(shù)據(jù)庫的處理結(jié)果為集合,而大多數(shù)程序開發(fā)語言使用記錄或線性處理。所以必須在兩者之間實(shí)現(xiàn)溝通,使集合數(shù)據(jù)也可以一次一條記錄的處理。解決的辦法是使用游標(biāo)。游標(biāo)是一個很重要的概念,它提供了一種對從表中檢索結(jié)果進(jìn)行操作手段。能從包括多條記錄的

44、結(jié)果集中每次提取一條記錄。游標(biāo)的定義定義游標(biāo)的命令為:DECLARE cursor_name INSENSITIVE SCROLL CURSORFOR select_statementFOR READ ONLY|UPDATEOF column_name ,n可選項(xiàng)INSENSITIVE表明游標(biāo)的操作對應(yīng)一個內(nèi)部臨時表,在游標(biāo)的生命周期內(nèi),對基本表的修改操作不影響游標(biāo)的內(nèi)容,即游標(biāo)是靜態(tài)的。否則游標(biāo)的內(nèi)容將動態(tài)地與基表保持一致??蛇x項(xiàng)SCROLL表示游標(biāo)可以使用所有的提取操作,如 FIRST、LAST、PRIOR、RELATIVE、ABSOLUTE等,否則只能使用NEXT提取操作。READ ON

45、LY表示游標(biāo)內(nèi)的數(shù)據(jù)不允許更新。UPDATE OF column_name ,n定義在游標(biāo)中可以修改的列。2游標(biāo)的操作· 打開游標(biāo)游標(biāo)在定義以后,存儲在系統(tǒng)數(shù)據(jù)庫中,如果從游標(biāo)中讀取數(shù)據(jù),則必須打開游標(biāo),打開游標(biāo)的命令為:OPEN GLOBALcursor_name由于游標(biāo)的作用域僅在其所在的批處理中,當(dāng)建立游標(biāo)的批處理文件執(zhí)行結(jié)束后,游標(biāo)會被自動釋放。因此在此打開操作前,要重新定義一次,因前面定義的游標(biāo)已經(jīng)被釋放。如果要保留游標(biāo)的作用域,可以在定義時指定其作用域?yàn)镚LOBAL。否則為LOCAL。· 讀取游標(biāo)中的數(shù)據(jù)當(dāng)游標(biāo)成功打開后,就可以從游標(biāo)中逐行讀取數(shù)據(jù)。使用FETC

46、H命令。語法為:FETCH NEXT|PRIOR|FIRST|LAST FROM cursor_name INTO v_name,nFETCH命令執(zhí)行后,變量FETCH_STATUS返回被 FETCH 語句執(zhí)行后游標(biāo)的狀態(tài)。如表5所示。表5 Fetch命令執(zhí)行后FETCH_STATUS變量的值與狀態(tài)返回值描述0FETCH 語句成功。-1FETCH 語句失敗或此行不在結(jié)果集中。-2被提取的行不存在。· 游標(biāo)的關(guān)閉與釋放在處理完游標(biāo)中的數(shù)據(jù)后必須關(guān)閉游標(biāo)釋放數(shù)據(jù)結(jié)果。使用CLOSE命令關(guān)閉游標(biāo),但不釋放定義的數(shù)據(jù)機(jī)構(gòu),釋放數(shù)據(jù)機(jī)構(gòu)應(yīng)使用DEALLOCATE命令。語法分別為:CLOSE c

47、ursor_nameDEALLOCATE cursor_name例17 定義一個游標(biāo),逐行顯示employee表中的信息。對游標(biāo)進(jìn)行操作,最后關(guān)閉游標(biāo)。在查詢分析器中輸入并執(zhí)行圖37所示的代碼即可完成要求。use ems;godeclare cursor_emp cursor globalfor select * from employeefor read only; /* 定義游標(biāo)*/declare v_eno varchar(40),v_ename varchar(10), v_manager varchar(40),v_salary int, v_deptno varchar(30);

48、/* 定義變量*/open cursor_emp; /* 打開游標(biāo)*/print 'S*S'fetch next from cursor_emp into v_eno,v_ename, v_manager,v_salary,v_deptno; /*從游標(biāo)中讀取數(shù)據(jù)*/while fetch_status = 0 /*循環(huán)處理從游標(biāo)中讀取的數(shù)據(jù)*/begin/*select v_eno,v_ename,v_manager,v_salary,v_deptno; */ print v_eno + v_ename + v_manager; fetch next from cursor_

49、emp into v_eno,v_ename, v_manager,v_salary,v_deptno; endprint 'E*E'close global cursor_emp;deallocate global cursor_emp;圖37 例17 的代碼七 數(shù)據(jù)庫的備份和恢復(fù)備份是指對SQL Server 數(shù)據(jù)庫或事務(wù)日志進(jìn)行拷貝,如果數(shù)據(jù)庫因意外而損壞,備份文件可以用來恢復(fù)數(shù)據(jù)庫。SQL Server 2000 中有四種備份類型,分別是:數(shù)據(jù)庫備份、事務(wù)日志備份、差異備份、文件和文件組備份。在使用是可以根據(jù)實(shí)際情況選擇一種或幾種的混合應(yīng)用。1備份設(shè)備在進(jìn)行備份以前必須

50、創(chuàng)建備份設(shè)備。備份設(shè)備是用來存儲數(shù)據(jù)庫、事務(wù)日志、文件和文件組備份的存儲介質(zhì)??梢允谴疟P、磁帶或管道。圖38 創(chuàng)建備份設(shè)備對話框1)用企業(yè)管理器管理備份設(shè)備· 創(chuàng)建備份設(shè)備啟動企業(yè)管理器,登錄到要增加備份設(shè)備的服務(wù)器,打開管理文件夾,右擊備份,在彈出菜單中選擇新建備份設(shè)備選項(xiàng),彈出備份設(shè)備屬性新設(shè)備對話框,如圖38 所示。在名稱欄中輸入設(shè)備的名稱,選擇設(shè)備類型,可以選擇磁盤、磁帶或管道,如果選擇文件名,則表示使用磁盤做備份,輸入文件名后,點(diǎn)擊確定按鈕,新的備份設(shè)備即可創(chuàng)建。由于軟盤的容量小不適合作為備份設(shè)備,通常都選擇硬盤,但在本此實(shí)習(xí)中,由于數(shù)據(jù)庫ems的數(shù)據(jù)很少,也可以將A:盤作

51、為備份設(shè)備。· 刪除備份設(shè)備在創(chuàng)建備份設(shè)備的第二步,選中備份圖標(biāo)后,在右窗格對話框中右擊要刪除的備份設(shè)備,在彈出菜單中選擇刪除選項(xiàng),即可刪除該備份設(shè)備。2)用系統(tǒng)存儲過程管理備份設(shè)備· sp_addumpdevice (創(chuàng)建備份設(shè)備)。圖 39 創(chuàng)建備份設(shè)備emssUse emsEXEC sp_addumpdevice disk,emss, d:backupdevems.bak例:為數(shù)據(jù)庫ems創(chuàng)建一個邏輯設(shè)備名為emss, 設(shè)備的實(shí)際名稱為c:backupdevems.bak 的備份設(shè)備。代碼如圖39所示。Use emsEXEC sp_dropdevice emss

52、83; sp_dropdevice(刪除備份設(shè)備)圖 40 刪除備份設(shè)備emss例:將數(shù)據(jù)庫ems的邏輯設(shè)備emss, 刪去。代碼如圖40所示2.數(shù)據(jù)庫備份SQL Server 2000 提供了兩種創(chuàng)建備份的途徑,即可視化方式和命令方式。圖41 創(chuàng)建SQL Server備份對話框1) 用企業(yè)管理器管理備份啟動企業(yè)管理器,登錄到要增加備份設(shè)備的服務(wù)器,打開數(shù)據(jù)庫文件夾,右擊要進(jìn)行備份的數(shù)據(jù)庫圖標(biāo),在彈出菜單中選擇所有任務(wù)選項(xiàng),再選擇備份數(shù)據(jù)庫,彈出SQL Server備份對話框,如圖41所示。在常規(guī)頁中的備份選項(xiàng)欄中選擇備份類型,單擊添加按鈕選擇備份設(shè)備,彈出如圖42 所示對話框,在此可以選擇文

53、件名或備份設(shè)備。在重寫選項(xiàng)欄,若選擇追加到媒體,則將備份內(nèi)容添加到當(dāng)前備份之后,若選擇重寫現(xiàn)有設(shè)備,則將原備份覆蓋。(在調(diào)度復(fù)選框,可對備份的時間表進(jìn)行設(shè)置)。S所有設(shè)置完成后,點(diǎn)擊確定按鈕即可開始備份。圖42 選擇設(shè)備對話框2) 用命令備份數(shù)據(jù)庫使用BACKUP 命令進(jìn)行備份操作。l 備份完整數(shù)據(jù)庫例18將數(shù)據(jù)庫ems完全備份到設(shè)備backupdevice_ems上 。在驅(qū)動器D上建立backupdev 子目錄,并執(zhí)行如圖43所示的代碼,即可將數(shù)據(jù)庫ems備份到指定的設(shè)備上,圖中的第二行是創(chuàng)建備份設(shè)備的命令,如果該設(shè)備已經(jīng)存在,則將其注釋掉。use ems/* EXEC sp_addumpd

54、evice 'DISK','backupdevice_ems', 'd:backupdevems.bak'*/BACKUP DATABASE ems TO backupdevice_ems圖43 創(chuàng)建數(shù)據(jù)庫備份l 備份事務(wù)日志use emsBACKUP LOG ems TO backupdevice_ems圖44 創(chuàng)建數(shù)據(jù)庫日志備份例:將數(shù)據(jù)庫ems的日志備份到設(shè)備backupdevice_ems上 。執(zhí)行如圖44所示的代碼,即可將數(shù)據(jù)庫ems備份到指定的設(shè)備上,備份的日志與其他備份組織成一個文件,所以,你在資源管理器中看到在backupdev下

55、只有一個文件。3恢復(fù)數(shù)據(jù)庫圖45 數(shù)據(jù)庫恢復(fù)對話框建立備份的目的是在數(shù)據(jù)庫失敗時能夠盡快恢復(fù)到原來狀態(tài),并要求保持?jǐn)?shù)據(jù)庫的 一致性。當(dāng)數(shù)據(jù)庫的備份存在時,SQL Server提供了將備份數(shù)據(jù)庫恢復(fù)到服務(wù)器的工具。1) 使用企業(yè)管理器恢復(fù)數(shù)據(jù)庫啟動企業(yè)管理器,單擊要登錄的數(shù)據(jù)庫服務(wù)器,從主菜單選擇工具。在菜單中選擇還原數(shù)據(jù)庫,彈出還原數(shù)據(jù)庫對話框,如圖45所示。在常規(guī)頁中的還原為數(shù)據(jù)庫選項(xiàng)欄中選擇要恢復(fù)的數(shù)據(jù)庫,在還原組中選擇相應(yīng)的備份類型(恢復(fù)與備份時的類型可以不同),在參數(shù)欄中,選擇要恢復(fù)的數(shù)據(jù)庫(已經(jīng)備份的數(shù)據(jù)庫在此均有選項(xiàng))和使用的備份,缺省情況下使用最近的一次備份。單擊選項(xiàng)頁設(shè)置其他選項(xiàng)。點(diǎn)擊確定按鈕即可開始恢復(fù)數(shù)據(jù)庫。2) 使用命令恢復(fù)數(shù)據(jù)庫restore database ems from backupdevice_ems數(shù)據(jù)庫恢復(fù)命令為

溫馨提示

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

評論

0/150

提交評論