關于sqlserver數據庫的詳細講解



《關于sqlserver數據庫的詳細講解》由會員分享,可在線閱讀,更多相關《關于sqlserver數據庫的詳細講解(182頁珍藏版)》請在裝配圖網上搜索。
1、 第1章 SQL Server 關系數據庫簡介 4 1.1 SQL Server 特點 4 1.2 SQL Server的安裝和配置 4 1.2.1 SQL Server 環(huán)境需求 4 1.2.2 SQL Server 2000的安裝 5 1.2.3 SQL Server 升級 5 1.2.4 SQL Server 系統(tǒng)數據庫簡介 5 1.2.5 SQL Server 系統(tǒng)表簡介 6 1.3 SQL Server 工具和實用程序 7 1.3.1 企業(yè)管理器 7 1.3.2 服務管理器(Service Manager) 7 1.3.3 查詢
2、分析器(Query Analyzer) 8 1.3.4 分布式事務處理協調器(Distributed Transaction Coordinator 8 第2章 Transact-SQL語言 10 2.1 數據定義語言(DDL) 10 2.2 數據操縱語言(DML) 11 2.3 數據控制語言(DCL) 13 2.4 系統(tǒng)存儲過程 15 2.5 其它語言元素 15 2.5.1 注釋 15 2.5.2 變量 15 2.5.3 運算符 16 2.5.4 函數 17 2.5.5 流程控制語句 20 第3章 服務器管理 23 3.1 創(chuàng)建服
3、務器組 23 3.2 服務器注冊 24 3.3 服務器啟動、暫停和停止 28 3.4 服務器連接與斷開 29 3.5 服務器配置選項設置 29 第4章 數據庫管理 31 4.1 數據庫的存儲結構 31 4.1.1 數據庫文件 31 4.1.2 數據庫文件組 31 4.2 創(chuàng)建、修改和刪除數據庫 31 4.2.1 創(chuàng)建數據庫 31 4.2.2 修改數據庫 39 4.2.3 刪除數據庫 40 4.3 數據庫備份 40 4.3.1 備份概述 40 4.3.2 創(chuàng)建備份設備 40 4.3.3 備份的執(zhí)行 42 4.4
4、 恢復數據庫 46 4.4.1 恢復概述 46 4.4.2 恢復數據庫 47 4.4.3 恢復系統(tǒng)數據庫 47 4.5 數據庫的維護 47 第5章 數據庫對象的操作 56 5.1 數據類型 56 5.1.1 系統(tǒng)數據類型 56 5.1.2 自定義數據類型 57 5.2 表操作 58 5.2.1 創(chuàng)建表 58 5.2.2 增加、刪除和修改字段 59 5.2.3 創(chuàng)建、刪除和修改約束 60 5. 外部鍵約束 62 5.2.4 查看表格 63 5.2.5 刪除表 64 5.3 視圖操作 64 5.3.1 創(chuàng)建視圖 65
5、5.3.2 修改和重命名視圖 73 5.3.4 通過視圖修改記錄 77 5.4 索引操作 77 5.4.1 創(chuàng)建索引 78 5.4.2 查看、修改和刪除索引 90 5.5 存儲過程 91 5.5.1 創(chuàng)建存儲過程 91 5.5.3 查看和修改存儲過程 97 5.5.4 重命名和刪除存儲過程 98 5.6 觸發(fā)器 98 5.6.1 創(chuàng)建觸發(fā)器 98 5.6.2 查看、修改和刪除觸發(fā)器 100 5.6.3 觸發(fā)器的應用 101 5.7 圖 表 101 第6章 SQL Server權限管理 104 6.1 SQL Se
6、rver權限管理策略 104 6.1.1 安全帳戶認證 104 6.2 用戶權限管理 104 6.2.1 服務器登錄帳號和用戶帳號管理 105 6.2.2 許可(權限)管理 110 6.2.3 角色管理 112 第7章 SQL Server代理服務 115 7.1 SQL Server代理服務配置 115 7.2 定義操作員 118 7.3 作業(yè)管理 118 7.3.1 作業(yè)步定義 118 7.3.2 創(chuàng)建作業(yè) 119 7.3.3 創(chuàng)建作業(yè)時間表 121 7.3.4 作業(yè)執(zhí)行狀態(tài)通知 122 7.4 警報管理 123 第8章
7、 SQL Server數據復制 125 8.1 復制概述 125 8.2 配置服務器 126 8.3 創(chuàng)建發(fā)布出版物 129 8.4 訂購出版物 140 8.5 管理復制選項 145 8.6復制代理程序和監(jiān)視器 154 8.7復制代理程序 154 第9章 SQL Server 數據轉換 155 9.1 數據的導入和導出 155 9.1.1 數據的導入 155 9.1.2 數據的導出 169 9.2 使用DTS設計器 180 第1章 SQ
8、L Server 關系數據庫簡介 SQL Server 關系數據庫簡介 SQL Server是由Microsoft開發(fā)和推廣的關系數據庫管理系統(tǒng)(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)的,并于1988年推出了第一個OS/2版本。 SQL Server近年來不斷更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用戶見面;SQL Server 2000是Microsoft公司于2000年推出的最新版本。 1.1 SQL Server 特點 1.真正的
9、客戶機/服務器體系結構。 2.圖形化用戶界面,使系統(tǒng)管理和數據庫管理更加直觀、簡單。 3.豐富的編程接口工具,為用戶進行程序設計提供了更大的選擇余地。 4.SQL Server與Windows NT完全集成,利用了NT的許多功能,如發(fā)送和接受消息,管理登錄安全性等。SQL Server也可以很好地與Microsoft BackOffice產品集成。 5.具有很好的伸縮性,可跨越從運行Windows 95/98的膝上型電腦到運行Windows 2000的大型多處理器等多種平臺使用。 6.對Web技術的支持,使用戶能夠很容易地將數據庫中的數據發(fā)布到Web頁面上。 7.SQL Serv
10、er提供數據倉庫功能,這個功能只在Oracle和其他更昂貴的DBMS中才有。 SQL Server 2000與以前版本相比較 又具有以下新特性 1.支持XML(Extensive Markup Language,擴展標記語言) 2.強大的基于Web的分析 3.支持OLE DB和多種查詢 4.支持分布式的分區(qū)視圖 1.2 SQL Server的安裝和配置 SQL Server 環(huán)境需求 SQL Server 2000常見的版本 企業(yè)版(Enterprise Edition) 標準版(Standard Edition) 個人版(Personal Edit
11、ion) 開發(fā)者版(Developer Edition) 1、安裝、運行SQL Server 2000的硬件需求 (1)計算機 Inter及其兼容計算機,Pentium 166Mz或者更高處理器或DEC Alpha和其兼容系統(tǒng)。 (2)內存(RAM) 企業(yè)版最少64MB內存,其他版本最少需要32MB內存,建議使用更多的內存。 (3)硬盤空間 完全安裝(Full)需要180MB的空間,典型安裝(Typical)需要170MB的空間,最小安裝(Minimum)需要65MB的空間。 2、安裝、運行SQL Server 2000的軟件需求 SQL Server 2000
12、企業(yè)版必須運行于安裝Windows NT Server Enterprise Edition 4.0或者Windows2000 Advanced Server以及更高版本的操作系統(tǒng)下。 SQL Server 2000標準版必須運行于安裝Windows NT Server Enterprise Edition 4.0、Windows NT Server 4.0、Windows 2000 Server以及更高版本的操作系統(tǒng)下。 SQL Server 2000 個人版可在多種操作系統(tǒng)下運行,如可運行于Windows 9x, Windows NT 4.0或Windows 2000的服務器版或工作
13、站版的操作系統(tǒng)下。 SQL Server 2000 開發(fā)者版可運行于上述Windows 9x以外的所有操作系統(tǒng)下。 SQL Server 2000的安裝 SQL Server 2000的安裝過程與其它Microsoft Windows系列產品類似。 用戶可根據向導提示,選擇需要的選項一步一步地完成。 SQL Server 升級 如果計算機中安裝有舊的SQL Server版本,那么安裝SQL Server 2000時需要做以下工作,以確保系統(tǒng)能退回到升級前的狀態(tài)。 1. 檢查操作系統(tǒng)是否滿足安裝要求。 2. 檢查磁盤空間是否足夠安裝新的SQL Server 2000版
14、本。 3. 備份包括系統(tǒng)數據庫在內的所有數據庫。 4. 備份操作系統(tǒng)的注冊表,用于恢復原有的SQL Server。 5. 關閉任何與舊的SQL Server相關的應用程序。 6. 安裝SQL Server 2000數據庫管理系統(tǒng)。 SQL Server 系統(tǒng)數據庫簡介 SQL Server 2000有6個系統(tǒng)數據庫 1. Master數據庫是SQL Server系統(tǒng)最重要的數據庫,它記錄了SQL Server系統(tǒng)的所有系統(tǒng)信息。這些系統(tǒng)信息包括所有的登錄信息、系統(tǒng)設置信息、SQL Server的初始化信息和其它系統(tǒng)數據庫及用戶數據庫的相關信息。 2. Model數據庫
15、是所有用戶數據庫和Tempdb數據庫的模板數據庫,它含有Master數據庫所有系統(tǒng)表的子集,這些系統(tǒng)數據庫是每個用戶定義數據庫需要的。 3. Msdb數據庫是代理服務數據庫,為其警報、任務調度和記錄操作員的操作提供存儲空間。 4. Tempdb是一個臨時數據庫,它為所有的臨時表、臨時存儲過程及其它臨時操作提供存儲空間。 5. Pubs和Northwind數據庫是兩個實例數據庫,它們可以作為SQL Server的學習工具。 SQL Server 系統(tǒng)表簡介 系統(tǒng)目錄是由描述SQL Server 系統(tǒng)的數據庫、基表、視圖和索引等對象的結構的系統(tǒng)表組成。SQL Server
16、經常訪問系統(tǒng)目錄,檢索系統(tǒng)正常運行所需的必要信息。 幾個最重要的系統(tǒng)表 1. Sysobjects表 SQL Server 的主系統(tǒng)表sysobjects出現在每個數據庫中,它對每個數據庫對象含有一行記錄。 2. Syscolumns表 系統(tǒng)表syscolumns出現在master數據庫和每個用戶自定義的數據庫中,它對基表或者視圖的每個列和存儲過程中的每個參數含有一行記錄。 3. Sysindexes表 系統(tǒng)表sysindexes出現在master數據庫和每個用戶自定義的數據庫中,它對每個索引和沒有聚簇索引的每個表含有一行記錄,它還對包括文本/圖像數據的每個表含有一行記錄。
17、 4. Sysusers表 系統(tǒng)表sysusers出現在master數據庫和每個用戶自定義的數據庫中,它對整個數據庫中的每個Windows NT用戶、Windows NT用戶組、SQL Server 用戶或者SQL Server 角色含有一行記錄。 5. Sysdatabases表 系統(tǒng)表sysdatabases對SQL Server 系統(tǒng)上的每個系統(tǒng)數據庫和用戶自定義的數據庫含有一行記錄,它只出現在master數據庫中。 6. Sysdepends表 系統(tǒng)表Sysdepends對表、視圖和存儲過程之間的每個依賴關系含有一行記錄,它出現在master數據庫和每個用戶自定義的數據庫中
18、。 7. Sysconstraints表 系統(tǒng)表sysconstraints對使用CREATE TABLE或者ALTER TABLE語句為數據庫對象定義的每個完整性約束含有一行記錄,它出現在master數據庫和每個用戶自定義的數據庫中。 1.3 SQL Server 工具和實用程序 企業(yè)管理器 企業(yè)管理器是基于一種新的被稱為微軟管理控制臺(Microsoft Management Console)的公共服務器管理環(huán)境,它是SQL Server中最重要的一個管理工具。企業(yè)管理器不僅能夠配置系統(tǒng)環(huán)境和管理SQL Server,而且由于它能夠以層疊列表的形式來顯示所有的SQL S
19、erver對象,因而所有SQL Server對象的建立與管理都可以通過它來完成。 利用企業(yè)管理器可以完成的操作有 管理SQL Server 服務器;建立與管理數據庫;建立與管理表、視圖、存儲過程、觸發(fā)程序、角色、規(guī)則、默認值等數據庫對象,以及用戶定義的數據類型;備份數據庫和事務日志、恢復數據庫;復制數據庫;設置任務調度;設置警報;提供跨服務器的拖放控制操作;管理用戶帳戶;建立Transact-SQL命令語句以及管理和控制SQL Mail。 圖1-20 SQL Server 企業(yè)管理器(Enterprise Manager)界面 服務管理器(Service Manag
20、er) SQL Server 服務管理器是在服務器端實際工作時最有用的實用程序,其界面如圖1-21所示。服務管理器用來啟動、暫停、繼續(xù)和停止數據庫服務器的實時服務,其提供的服務包括:SQL Server、SQL Server Agent、MSDTC(Microsoft Distributed Transaction Coordinator,微軟分布式事務協調器)。 圖1-21 SQL Server 服務管理器(Service Manager)界面 查詢分析器(Query Analyzer) SQL Server 2000新的圖形化查詢分析器用于輸入和執(zhí)行Transac
21、tion-SQL語句,并且迅速查看這些語句的結果,以分析和處理數據庫中的數據。這是一個非常實用的工具,對掌握SQL語言,深入理解SQL Server的管理工作有很大幫助。 分布式事務處理協調器(Distributed Transaction Coordinator 用于提供和管理不同服務器之間的分布式事務處理,這些服務器必須是基于Windows NT或Windows 9x/2000系列操作系統(tǒng)的服務器。 性能監(jiān)視器(Performance Monitor) 它將Windows NT操作系統(tǒng)的性能監(jiān)視器和SQL Server集成起來,使用它可以查看和統(tǒng)計SQL Serv
22、er系統(tǒng)的運行情況,查找影響系統(tǒng)性能的主要因素,從而為改進和優(yōu)化系統(tǒng)、提高系統(tǒng)性能提供依據。 導入和導出數據(Imput and Export Data) 導入和導出數據采用DTC 導入/導出向導來完成。此向導包含了所有的DTC(Data Transformation Services)工具,提供了在OLE DB數據源之間復制數據的最簡捷的方法。 SQL Server 分析器(Profiler) 是一個圖形化的管理工具,用于監(jiān)督、記錄和檢查SQL Server 數據庫的使用情況。對系統(tǒng)管理員來說,它是一個連續(xù)實時地捕獲用戶活動情況的間諜。 服務器網絡實用工具
23、(Server Network Utility) 用來配置服務器端網絡連接和設置相關參數等。 客戶端網絡實用工具(Client Network Utility) 用來配置客戶端的網絡連接、管理和測定客戶端的網絡庫等。 聯機幫助文檔(Books Online) SQL Server 2000提供了大量的聯機文檔,它具有索引和全文搜索能力,可根據關鍵詞來快速查找用戶所需信息。 第2章 Transact-SQL語言 Transact-SQL語言主要組成部分
24、 數據定義語言(DDL,Data Definition Language) 數據操縱語言(DML,Data Manipularion Language) 數據控制語言(DCL,Data Control Language) 系統(tǒng)存儲過程(System Stored Procedure) 一些附加的語言元素 2.1 數據定義語言(DDL) 數據定義語言是指用來定義和管理數據庫以及數據庫中的各種對象的語句,這些語句包括CREATE、ALTER和DROP等語句。在SQL Server 2000中,數據庫對象包括表、視圖、觸發(fā)器、存儲過程、規(guī)則、缺省、用戶自定義的數據類型等。這些對象的創(chuàng)建
25、、修改和刪除等都可以通過使用CREATE、ALTER、DROP等語句來完成。 程序清單2-1:創(chuàng)建數據庫表的一個例子 CREATE TABLE publishers ( pub_id char(4) NOT NULL CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756') OR pub_id LIKE '99[0-9][0-9]'), pub_name varchar(40
26、) NULL, city varchar(20) NULL, state char(2) NULL, country varchar(30) NULL DEFAULT('USA') ) 程序清單2-2:修改視圖的一個例子 USE pubs GO ALTER VIEW yourview AS SELECT title, mycount= @@ ROWCOUNT, ytd_sales FROM titles WHERE type = 'mod_cook' GO SELECT * FROM yourview
27、 GO 程序清單2-3:刪除觸發(fā)器的一個例子 /*下面的例子將刪除觸發(fā)器employee_insupd。*/ USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = 'employee_insupd' AND type = 'TR') DROP TRIGGER employee_insupd GO 2.2 數據操縱語言(DML) 數據操縱語言是指用來查詢、添加、修改和刪除數據庫中數據的語句,這些語句包括SELECT、INSERT、UPDATE、DELETE等。在默認情況下,只有sysadmi
28、n、dbcreator、db_owner或db_datawriter等角色的成員才有權利執(zhí)行數據操縱語言。 1、SELECT語句 SELECT語句的語法形式如下: SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] [COMPUTE
29、clause] [FOR BROWSE] 幾種常用語句的用法 SELECT子句用于指定所選擇的要查詢的特定表中的列,它可以是星號(*)、表達式、列表、變量等。 INTO子句用于指定所要生成的新表的名稱。 FROM子句用于指定要查詢的表或者視圖,最多可以指定16個表或者視圖,用逗號相互隔開。 WHERE子句用來限定查詢的范圍和條件。 GROUP BY子句是分組查詢子句。 HAVING子句用于指定分組子句的條件。 GROUP BY子句、HAVING子句和集合函數一起可以實現對每個組生成一行和一個匯總值。 ORDER BY子句可以根據一個列或者多個列來排序查詢結果,在該子句中,既
30、可以使用列名,也可以使用相對列號。 ASC表示升序排列,DESC表示降序排列。 COMPUTE子句使用集合函數在查詢的結果集中生成匯總行。 COMPUTE BY子句用于增加各列匯總行。 SELECT子句的語法形式如下所示: SELECT [ ALL | DISTINCT ] ????[ TOP n [ PERCENT ] [ WITH TIES ] ] ????< select_list > < select_list > ::= {????* ????????| { table_name | view_name | table_alias }.* ????????|
31、????{ column_name | expression | IDENTITYCOL | ROWGUIDCOL } ????????????[ [ AS ] column_alias ] ????????| column_alias = expression ????}????[ ,...n ] 程序清單2-4:顯示居住在加利福尼亞州且姓名不為 McBadden 的作者列。 USE pubs SELECT au_fname, au_lname, phone AS Telephone FROM authors WHERE state = 'CA' and au_lnam
32、e <> 'McBadden' ORDER BY au_lname ASC, au_fname ASC 程序清單2-5:使用兩個相關子查詢查找作者姓名,這些作者至少參與過一本受歡迎的計算機書籍的創(chuàng)作。 USE pubs SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE title_id IN (SELECT title_id FROM titles WHERE type = 'popular_comp')
33、) 程序清單2-6:顯示含有本年度截止到現在的當前銷售額的行,然后按type以遞減順序計算書籍的平均價格和預付款總額。 USE pubs SELECT CAST(title AS char(20)) AS title, type, price, advance FROM titles WHERE ytd_sales IS NOT NULL ORDER BY type DESC COMPUTE AVG(price), SUM(advance) BY type COMPUTE SUM(price), SUM(advance) 程序清單2-7:先刪除表T1,然后又創(chuàng)建一個帶有四個
34、列的表T1。最后利用INSERT 語句插入一些數據行,這些行只有部分列包含值。 IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T1') DROP TABLE T1 GO CREATE TABLE T1 ( column_1 int identity, column_2 varchar(30) CONSTRAINT default_name DEFAULT ('column default'), column_3 int NULL
35、, column_4 varchar(40) ) INSERT INTO T1 (column_4) VALUES ('Explicit value') INSERT INTO T1 (column_2,column_4) VALUES ('Explicit value', 'Explicit value') INSERT INTO T1 (column_2,column_3,column_4) VALUES ('Explicit value',-44,'Explicit value') SELECT * FROM T1 程序清單2-8:一個簡單的
36、修改語句。 UPDATE publishers SET city = 'Atlanta', state = 'GA‘ 程序清單2-9:一個帶有WHERE條件的修改語句。 UPDATE authors SET state = 'PC', city = 'Bay City' WHERE state = 'CA' AND city = 'Oakland' 程序清單2-10:通過 UPDATE 語句使用來自另一個表的信息,其修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新銷售記錄。 UPDATE titles SET
37、ytd_sales = titles.ytd_sales + sales.qty FROM titles, sales WHERE titles.title_id = sales.title_id AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales) 2.3 數據控制語言(DCL) 數據控制語言(DCL)是用來設置或者更改數據庫用戶或角色權限的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認狀態(tài)下,只有sysadmin、dbcreator、db_owner或db_
38、securityadmin等角色的成員才有權利執(zhí)行數據控制語言。 1、GRANT語句 GRANT語句是授權語句,它可以把語句權限或者對象權限授予給其他用戶和角色。 授予語句權限的語法形式為: GRANT {ALL | statement[,...n]} TO security_account [ ,...n ] 授予對象權限的語法形式為: GRANT ????{ ALL [ PRIVILEGES ] | permission [ ,...n ] } ????{ ????????[ ( column [ ,...n ] ) ] ON { table | view
39、 } ????????| ON { table | view } [ ( column [ ,...n ] ) ] ????????| ON { stored_procedure | extended_procedure } ????????| ON { user_defined_function } ????} TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ] 2、DENY語句 DENY語句用于拒絕給當前數據庫內的用戶或者角色授予權限,并防止用戶或角色通過其組或角色
40、成員繼承權限。 否定語句權限的語法形式為: DENY { ALL | statement [ ,...n ] } TO security_account [ ,...n ] 否定對象權限的語法形式為: DENY ????{ ALL [ PRIVILEGES ] | permission [ ,...n ] } ????{ ??????[ ( column [ ,...n ] ) ] ON { table | view } ??????| ON { table | view } [ ( column [ ,...n ] ) ] ??????| ON { stored_
41、procedure | extended_procedure } ??????| ON { user_defined_function } ????} TO security_account [ ,...n ] [ CASCADE ] 3、REVOKE語句 REVOKE語句是與GRANT語句相反的語句,它能夠將以前在當前數據庫內的用戶或者角色上授予或拒絕的權限刪除,但是該語句并不影響用戶或者角色從其他角色中作為成員繼承過來的權限。 收回語句權限的語法形式為: REVOKE { ALL | statement [ ,...n ] } FROM security_acc
42、ount [ ,...n ] 收回對象權限的語法形式為: REVOKE [ GRANT OPTION FOR ] ????{ ALL [ PRIVILEGES ] | permission [ ,...n ] } ????{ ????????[ ( column [ ,...n ] ) ] ON { table | view } ????????| ON { table | view } [ ( column [ ,...n ] ) ] ????????| ON { stored_procedure | extended_procedure } ????????| ON
43、{ user_defined_function } ????} { TO | FROM } ????security_account [ ,...n ] [ CASCADE ] [ AS { group | role } ] 2.4 系統(tǒng)存儲過程 系統(tǒng)存儲過程是SQL Server系統(tǒng)創(chuàng)建的存儲過程,它的目的在于能夠方便地從系統(tǒng)表中查詢信息,或者完成與更新數據庫表相關的管理任務或其它的系統(tǒng)管理任務。系統(tǒng)存儲過程可以在任意一個數據庫中執(zhí)行。系統(tǒng)存儲過程創(chuàng)建并存放于系統(tǒng)數據庫master中,并且名稱以sp_或者xp_開頭。 系統(tǒng)存儲過程的部分示例如下: sp_a
44、ddtype:用于定義一個用戶定義數據類型。 sp_configure:用于管理服務器配置選項設置。 xp_sendmail:用于發(fā)送電子郵件或尋呼信息。 sp_stored_procedures:用于返回當前數據庫中的存儲過程的清單。 sp_help:用于顯示參數清單和其數據類型。 sp_depends:用于顯示存儲過程依據的對象或者依據存儲過程的對象。 sp_helptext:用于顯示存儲過程的定義文本。 sp_rename:用于修改當前數據庫中用戶對象的名稱。 2.5 其它語言元素 注釋 注釋是程序代碼中不執(zhí)行的文本字符串(也稱為注解)。在SQL Serve
45、r中,可以使用兩種類型的注釋字符:一種是ANSI標準的注釋符“--”,它用于單行注釋;另一種是與C語言相同的程序注釋符號,即“/* */”。 變量 變量是一種語言中必不可少的組成部分。Transact-SQL語言中有兩種形式的變量,一種是用戶自己定義的局部變量,另外一種是系統(tǒng)提供的全局變量。 1. 局部變量 局部變量是一個能夠擁有特定數據類型的對象,它的作用范圍僅限制在程序內部。局部變量可以作為計數器來計算循環(huán)執(zhí)行的次數,或是控制循環(huán)執(zhí)行的次數。另外,利用局部變量還可以保存數據值,以供控制流語句測試以及保存由存儲過程返回的數據值等。局部變量被引用時要在其名稱前加上標志“@
46、”,而且必須先用DECLARE命令定義后才可以使用。 2. 全局變量 全局變量是SQL Server系統(tǒng)內部使用的變量,其作用范圍并不僅僅局限于某一程序,而是任何程序均可以隨時調用。全局變量通常存儲一些SQL Server的配置設定值和統(tǒng)計數據。用戶可以在程序中用全局變量來測試系統(tǒng)的設定值或者是Transact-SQL命令執(zhí)行后的狀態(tài)值。 使用全局變量時應該注意以下幾點: ①全局變量不是由用戶的程序定義的,它們是在服務器級定義的。 ②用戶只能使用預先定義的全局變量。 ③引用全局變量時,必須以標記符“@@”開頭。 ④局部變量的名稱不能與全局變量的名稱相同,否則會在應用程序中
47、出現不可預測的結果。 運算符 運算符是一些符號,它們能夠用來執(zhí)行算術運算、字符串連接、賦值以及在字段、常量和變量之間進行比較。在SQL Server 2000中,運算符主要有以下六大類:算術運算符、賦值運算符、位運算符、比較運算符、邏輯運算符以及字符串串聯運算符。 1.算術運算符 算術運算符可以在兩個表達式上執(zhí)行數學運算,這兩個表達式可以是數字數據類型分類的任何數據類型。算術運算符包括加(+)、減(—)、乘(*)、除(/)和取模(%)。 2.賦值運算符 Transact-SQL 中只有一個賦值運算符,即等號(=)。賦值運算符使我們能夠將數據值指派給特定的對象。另外,還可以
48、使用賦值運算符在列標題和為列定義值的表達式之間建立關系。 3.位運算符 位運算符使我們能夠在整型數據或者二進制數據(image 數據類型除外)之間執(zhí)行位操作。此外,在位運算符左右兩側的操作數不能同時是二進制數據。 表2-1 位運算符 4.比較運算符 比較運算符用于比較兩個表達式的大小或是否相同,其比較的結果是布爾值,即TRUE(表示表達式的結果為真)、FALSE(表示表達式的結果為假)以及UNKNOWN。除了 text、ntext 或 image 數據類型的表達式外,比較運算符可以用于所有的表達式。 5.邏輯運算符 邏輯運算符可以把多個邏輯表達式連接起來。邏輯運算
49、符包括AND、OR和NOT等運算符。邏輯運算符和比較運算符一樣,返回帶有 TRUE 或 FALSE 值的布爾數據類型。 6.字符串串聯運算符 字符串串聯運算符允許通過加號 (+) 進行字符串串聯,這個加號即被稱為字符串串聯運算符。例如對于語句SELECT ‘abc’+’def’,其結果為abcdef。 運算符的優(yōu)先等級從高到低如下所示 括號:(); 乘、除、求模運算符:*、/、%; 加減運算符:+、- ; 比較運算符:=、>、<、>=、<=、<>、!=、!>、!<; 位運算符:^、&、|; 邏輯運算符:NOT; 邏輯運算符:AND; 邏輯運算符:OR。 函
50、數 在Transact-SQL語言中,函數被用來執(zhí)行一些特殊的運算以支持SQL Server的標準命令。Transact-SQL 編程語言提供了三種函數: ㈠行集函數:行集函數可以在Transact-SQL語句中當作表引用。 ㈡聚合函數:聚合函數用于對一組值執(zhí)行計算并返回一個單一的值。 ㈢標量函數:標量函數用于對傳遞給它的一個或者多個參數值進行處理和計算,并返回一個單一的值。 SQL Server中最常用的幾種函數 字符串函數 日期和時間函數 數學函數 轉換函數 系統(tǒng)函數 聚合函數 其它函數 字符串函數 字符串函數可以對二進制數據、字符串和表達式執(zhí)行不同
51、的運算,大多數字符串函數只能用于char和varchar數據類型以及明確轉換成char和varchar的數據類型,少數幾個字符串函數也可以用于binary和varbinary數據類型。此外,某些字符串函數還能夠處理text、ntext、image數據類型的數據。 字符串函數的分類: 基本字符串函數:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。 字符串查找函數:CHARINDEX、PATINDEX。 長度和分析函數:DATALENGTH、SUBSTRING、RIGHT。 轉換函數:ASCH、CHAR、STR、SOUN
52、DEX、DIFFERENCE。 程序清單2-25: 在選擇價格位于$11和$20之間的書名時,使用 LOWER 函數、UPPER 函數且把 UPPER 函數嵌套在 LOWER 函數內。另外,該程序還使用SUBSTRING函數從字符串中返回指定的字符串。其源程序清單為: 部分函數應用例子 程序清單 2-26 --2-30為: 2.日期和時間函數 日期和時間函數用于對日期和時間數據進行各種不同的處理和運算,并返回一個字符串、數字值或日期和時間值。在SQL Server 2000中,日期和時間函數的類型如表2-5所示;另外,表2-6列出了日期類型的名稱、縮寫形式以及可接受的值。
53、 表2-5 日期和時間函數的類型 程序清單2-33:從GETDATE函數返回的日期中 提取月份數。 SELECT DATEPART(month, GETDATE()) AS 'Month Number' 運行結果為: Month Number ------------ 2 程序清單2-34:從日期 03/12/1998 中返回月份數、天數和年份數。 SELECT MONTH('03/12/1998'), DAY('03/12/1998'),YEAR('03/12/1998') 運行結果為: ----- ------ ------
54、3???? 12????? 1998 3.數學函數 數學函數用于對數字表達式進行數學運算并返回運算結果。數學函數可以對SQL Server提供的數字數據(decimal、integer、float、real、money、smallmoney、smallint 和 tinyint)進行處理。 程序清單2-35: 在同一表達式中使用CEILING()、FLOOR()、ROUND()函數。 select ceiling(13.4), floor(13.4), round(13.4567,3) 運行結果為: --------- --------- ------- 14
55、 13 13.4570 4.轉換函數 一般情況下,SQL Server會自動處理某些數據類型的轉換。例如,如果比較 char 和 datetime 表達式、smallint 和 int 表達式、或不同長度的 char 表達式,SQL Server 可以將它們自動轉換,這種轉換被稱為隱性轉換。但是,無法由SQL Server自動轉換的或者是SQL Server自動轉換的結果不符合預期結果的,就需要使用轉換函數做顯示轉換。轉換函數有兩個:CONVERT和CAST。 CONVERT和CAST函數 CAST ( expression AS data_type
56、 ) CONVERT函數允許用戶把表達式從一種數據類型轉換成另一種數據類型,還允許把日期轉換成不同的樣式。其語法形式為: CONVERT (data_type[(length)],expression [,style]) 程序清單2-36 : USE pubs SELECT title, ytd_sales FROM titles WHERE CAST(ytd_sales AS char(20)) LIKE '15%' AND type = 'trad_cook' 運行結果為: Title???????????????????????????? ytd
57、_sales ------------------------------ Fifty Years in Buckingham Palace Kitchens?15096 5.系統(tǒng)函數 系統(tǒng)函數用于返回有關SQL Server系統(tǒng)、用戶、數據庫和數據庫對象的信息。系統(tǒng)函數可以讓用戶在得到信息后,使用條件語句,根據返回的信息進行不同的操作。與其它函數一樣,可以在SELECT語句的SELECT和WHERE子句以及表達式中使用系統(tǒng)函數。 程序清單2-38 返回 Northwind 數據庫的 Employees 表中的首列的名稱。 USE Northwind SELECT CO
58、L_NAME(OBJECT_ID('Employees'), 1) 運行結果為: EmployeeID 6.聚合函數 聚合函數可以返回整個或者幾個列或者一個列的匯總數據,它常用來計算SELECT語句查詢的統(tǒng)計值。聚合函數經常與 SELECT 語句的 GROUP BY 子句一同使用。常用的聚合函數 應用舉例,程序清單2-41至2-44如下: 流程控制語句 流程控制語句是指那些用來控制程序執(zhí)行和流程分支的命令,在SQL Server 2000中,流程控制語句主要用來控制SQL語句、語句塊或者存儲過程的執(zhí)行流程。 1. IF…ELSE語句 IF…ELSE語句是條件判斷語句
59、,其中,ELSE子句是可選的,最簡單的IF語句沒有ELSE子句部分。IF…ELSE語句用來判斷當某一條件成立時執(zhí)行某段程序,條件不成立時執(zhí)行另一段程序。SQL Server允許嵌套使用IF…ELSE語句,而且嵌套層數沒有限制。 IF…ELSE語句的語法形式 IF Boolean_expression ????{ sql_statement | statement_block } [ ELSE ????{ sql_statement | statement_block } ] 2.BEGIN…END語句 BEGIN…END語句能夠將多個Transact-SQL語句組合成一個語
60、句塊,并將它們視為一個單元處理。在條件語句和循環(huán)等控制流程語句中,當符合特定條件便要執(zhí)行兩個或者多個語句時,就需要使用BEGIN…END語句,其語法形式為: BEGIN ????{ sql_statement ????????| statement_block ????} END 3.CASE函數 CASE函數可以計算多個條件式,并將其中一個符合條件的結果表達式返回。CASE函數按照使用形式的不同,可以分為簡單CASE函數和搜索CASE函數。 1、CASE函數的語法形式 CASE input_expression ????WHEN when_expression
61、THEN result_expression ??????[ ...n ] ??[ ????ELSE else_result_expression ????END 2、搜索 CASE函數的語法形式 CASE ????WHEN Boolean_expression THEN result_expression ???????[ ...n ] ???[ ???ELSE else_result_expression ???END 4. WHILE…CONTINUE…BREAK語句 WHILE…CONTINUE…BREAK語句用于設置重復執(zhí)行 SQL 語句或語句塊的
62、條件。只要指定的條件為真,就重復執(zhí)行語句。其中,CONTINUE語句可以使程序跳過CONTINUE語句后面的語句,回到WHILE循環(huán)的第一行命令。BREAK語句則使程序完全跳出循環(huán),結束WHILE語句的執(zhí)行。 結束WHILE語句的語法形式為: WHILE Boolean_expression ????{ sql_statement | statement_block } ????[ BREAK ] ????{ sql_statement | statement_block } ????[ CONTINUE ] 5. GOTO語句 GOTO語句可以使程序直接跳到指定的標有標
63、識符的位置處繼續(xù)執(zhí)行,而位于GOTO語句和標識符之間的程序將不會被執(zhí)行。GOTO語句和標識符可以用在語句塊、批處理和存儲過程中,標識符可以為數字與字符的組合,但必須以“:”結尾。 GOTO語句的語法形式 GOTO label …… label: 程序清單2-50:利用GOTO語句求出從1加到5的總和。 declare @sum int, @count int select @sum=0, @count=1 label_1: select @sum=@sum+@count select @count=@count+1 if @count<=5 goto
64、 label_1 select @count @sum 6. WAITFOR語句 WAITFOR語句用于暫時停止執(zhí)行SQL語句、語句塊或者存儲過程等,直到所設定的時間已過或者所設定的時間已到才繼續(xù)執(zhí)行。WAITFOR語句的語法形式為: WAITFOR { DELAY 'time' | TIME 'time' } 其中,DELAY用于指定時間間隔,TIME用于指定某一時刻,其數據類型為datetime,格式為‘hh:mm:ss’。 7. RETURN語句 RETURN語句用于無條件地終止一個查詢、存儲過程或者批處理,此時位于RETURN語句之后的程序將不會被執(zhí)行。R
65、ETURN語句的語法形式為: RETURN [ integer_expression ] 其中,參數integer_expression為返回的整型值。存儲過程可以給調用過程或應用程序返回整型值。 第3章 服務器管理 3.1 創(chuàng)建服務器組 在一個網絡系統(tǒng)中,可能有多個SQL Server服務器,可以對這些SQL Server服務器進行分組管理。分組的原則往往是依據組織結構原則。SQL Server分組管理由企業(yè)管理器(Enterprise Manager)來進行。首
66、次啟動企業(yè)管理器時,有一個名字叫“SQL Server 組”的默認服務器組自動被創(chuàng)建,但用戶可以創(chuàng)建新的SQL Server組,在企業(yè)管理器菜單中單擊操作(Action)菜單或者用右鍵單擊SQL Servers組,選擇新建SQL Server 組菜單項,如圖3-1所示。 接著出現服務器組對話框,如圖3-2所示,輸入組的名稱并選擇組的級別,單擊確定即可。 圖3-1 新建SQL Server組 圖3-2 創(chuàng)建服務器組對話框 3.2 服務器注冊 所謂服務器注冊是指將網絡系統(tǒng)中的其它SQL Server服務器注冊到企業(yè)管理器中,以便于管理。 注冊過程 1. 在企業(yè)管理器中,從操作(Action)菜單中選擇新建SQL Server注冊,或從工具菜單中選擇注冊服務器向導選項,或從工具欄中選擇圖標 ,就會出現如圖3-3所示的注冊SQL Server向導對話框。 如果在對話框中選擇“我希望今后在執(zhí)行該任務時不使用向導”復選框,按“下一步”按鈕就會轉換到服務器注冊屬性對話框,如圖3-4所示。 圖3-3 注冊服務器向導對話框
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。