SQL_Server_2005基礎教程.ppt_第1頁
SQL_Server_2005基礎教程.ppt_第2頁
SQL_Server_2005基礎教程.ppt_第3頁
SQL_Server_2005基礎教程.ppt_第4頁
SQL_Server_2005基礎教程.ppt_第5頁
已閱讀5頁,還剩121頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、SQL Server 2005基礎教程,廣西欽州學院數(shù)計學院 肖寶,2020年7月29日星期三,廣西欽州學院數(shù)計系,2/126,第一章 SQL Server 2005概述和安裝,1. 數(shù)據庫的定義,2. 幾種數(shù)據庫產品的介紹,4. SQL Server 2005的安裝,5. SQL Server的安全性,3. SQL Server 發(fā)展,2020年7月29日星期三,廣西欽州學院數(shù)計系,3/126,數(shù)據庫定義,數(shù)據庫是對象的容器,它不僅可以存儲數(shù)據,而且能夠使數(shù)據存儲和檢索以安全而可靠的方式進行。 數(shù)據一般包括以下對象: 數(shù)據表 視圖 函數(shù) 存儲過程 索引 觸發(fā)器,2020年7月29日星期三,廣

2、西欽州學院數(shù)計系,4/126,幾種數(shù)據庫產品介紹,SQL Server 只能在windows上運行,沒有絲毫的開放性,操作系統(tǒng)的系統(tǒng)的穩(wěn)定對數(shù)據庫是十分重要的。Windows9X系列產品是偏重于桌面應用,NT server只適合中小型企業(yè)。而且windows平 臺的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是在處理大數(shù)據。 Oracle 能在所有主流平臺上運行(包括 windows)。完全支持所有的工業(yè)標準。采用完全開放策略??梢允箍蛻暨x擇最適合的解決方案。對開發(fā)商全力支持。 Sysbase 能在所有主流平臺上運行(包括 windows)。 但由于早期Sybase與O

3、S集成度不高,因此VERSION 11.9.2以下版本需要較多OS和 DB級補丁。在多平臺的混合環(huán)境中,會有一定問題。,2020年7月29日星期三,廣西欽州學院數(shù)計系,5/126,DB2 能在所有主流平臺上運行(包括windows)。最適于海量數(shù)據。DB2在企業(yè)級的應用最為廣泛,在全球的500家最大的企業(yè)中,幾乎85%以上用DB2數(shù)據庫服務器,而國內到97年約占5%。 MySql 可以說這是中小企業(yè)網站Linux平臺的首選自由數(shù)據庫系統(tǒng)。它是一個跨平臺數(shù)據庫系統(tǒng),一個真正的多用戶、多線程的SQL數(shù)據庫系統(tǒng),同時是具有客戶機/服務器體系結構的分布式數(shù)據庫管理系統(tǒng)。同時,也是Linux系統(tǒng)中使用最

4、為簡單的數(shù)據庫系統(tǒng),安裝簡單、使用簡單、管理也簡單,且數(shù)據庫系統(tǒng)的穩(wěn)定性也很不錯。,2020年7月29日星期三,廣西欽州學院數(shù)計系,6/126,SQL Server的發(fā)展,SQL Server是Microsoft公司的一個關系數(shù)據庫管理系統(tǒng),但說起它的歷史,卻得從Sybase開始的。SQL Server從20 世紀80年代后期開始開發(fā),最早起源于1987年的Sybase SQL Server。SQL Server最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同開發(fā)的,1988年,Microsoft公司、Sybase公司和Aston-Tate公司把該產品移植到OS/

5、2上。后來Aston-Tate公司退出了該產品的開發(fā),而Microsoft公司、Sybase公司則簽署了一項共同開發(fā)協(xié)議,這兩家公司的共同開發(fā)結果是發(fā)布了用于Windows NT操作系統(tǒng)的SQL Server,1992年,將SQL Server移植到了Windows NT平臺上。 在SQL Server 4版本發(fā)行以后,Microsoft公司和Sybase公司在SQL Server的開發(fā)方面分道揚鑣,取消了合同,各自開發(fā)自己的SQL Server。Microsoft公司專注于Windows NT平臺上的SQL Server開發(fā),而Sybase公司則致力于UNIX平臺上的SQL Server的開

6、發(fā)。,2020年7月29日星期三,廣西欽州學院數(shù)計系,7/126,SQL Server6.0版是第一個完全由Microsoft公司開發(fā)的版本。1996年,Microsoft公司推出了SQL Server 6.5版本,接著在1998年又推出了具有巨大變化的7.0版,這一版本在數(shù)據存儲和數(shù)據庫引擎方面發(fā)生了根本性的變化。又經過兩年的努力開發(fā),Microsoft公司于2000年9月布了SQL Server 2000,其中包括企業(yè)版、標準版、開發(fā)版、個人版四個版本。從SQL Server 7.0到SQL Server 2000的變化是漸進的,沒有從6.5到7.0變化那么大,只是在SQL Server

7、7.0的基礎上進行了增強。2005年,SQL Server 2005,代號“Yukon”,微軟SQL Server產品的最新版本。微軟評論稱,此況產品歷時五年的重大變革,具有里程碑意義的產品。,2020年7月29日星期三,廣西欽州學院數(shù)計系,8/126,SQL Server 2005安裝,SQL Server2005的版本 SQL Server 2005 Enterprise Edition SQL Server 2005 Developer Edition SQL Server 2005 Standard Edition SQL Server 2005 Workgroup Edition S

8、QL Server 2005 Express Edition 具有高級服務的 SQL Server 2005 Express Edition 本書主要是介紹SQL Server 2005 Developer Edition 的使用,因而我們只需要關心標準版本的安裝即可。 硬件與軟件安裝要求 安裝解釋,2020年7月29日星期三,廣西欽州學院數(shù)計系,9/126,SQL Server的安全性,windows服務 Windows服務應用程序是一種需要長期運行的應用程序,它對于服務器環(huán)境特別適合。它沒有用戶界面,并且也不會產生任何可視輸出。任何用戶消息都會被寫進Windows事件日志。計算機啟動時,服

9、務會自動開始運行。它們不要用戶一定登錄才運行,它們能在包括這個系統(tǒng)內的任何用戶環(huán)境下運行。通過服務控制管理器,Windows服務是可控的,可以終止、暫停及當需要時啟動。 Sql Server 2005的服務管理: (1)SQL Server Configuration Manager (2)程序管理工具 服務,2020年7月29日星期三,廣西欽州學院數(shù)計系,10/126,SQL Server的安全性,身份驗證模式 (1)Windows身份驗證模式 客戶機使用Windows操作系統(tǒng)的用戶帳戶和密碼連接數(shù)據庫服務器時,SQL Server 2005使用Windows操作系統(tǒng)來進行身份驗證。 (2)

10、混合模式 客戶機使用用戶帳戶和密碼連接數(shù)據庫服務器時,服務器首先在數(shù)據庫中查詢是否有相同賬戶和密碼的用戶,基有則接受連接。若數(shù)據庫中沒有相應的賬戶和密碼,則向windows操作系統(tǒng)請求驗證客戶機的身份,若兩者都沒有通過,則拒絕連接。,2020年7月29日星期三,廣西欽州學院數(shù)計系,11/126,第二章 SSMS(SQL Server Management Studio),連接服務器選項的設置 對象資源管理器 SSMS的選項 查詢編輯器 外圍應用配置器工具,2020年7月29日星期三,廣西欽州學院數(shù)計系,12/126,第三章 設計和創(chuàng)建數(shù)據庫,1. SQL Server中的數(shù)據庫,2. 數(shù)據庫系

11、統(tǒng)類型,4. 利用命令創(chuàng)建數(shù)據庫,3. 利用SSMS創(chuàng)建數(shù)據庫,2020年7月29日星期三,廣西欽州學院數(shù)計系,13/126,SQL Server中的數(shù)據庫,Master master數(shù)據庫位于Sql Server的核心,如果該數(shù)據庫被損壞,Sql Server將無法正常工作。因此請大家千萬不要對master作任何操作。 Master數(shù)據庫中的內容主要有: 所有的登錄名或用戶ID所屬的角色。 所有的系統(tǒng)配置設置。 服務器中的數(shù)據庫的名稱及相關信息。 數(shù)據庫中的位置。 SQL server如何初始化。 用于存儲系統(tǒng)重要信息的特殊的系統(tǒng)表。,2020年7月29日星期三,廣西欽州學院數(shù)計系,14/1

12、26,SQL Server中的數(shù)據庫,tempdb tempdb數(shù)據庫,是一個臨時性的數(shù)據庫,它存在于Sql Server會話期間,一旦Sql Server關閉,tempdb數(shù)據庫將丟失。當Sqlserver得新啟動時,將重建全新的、空的tempdb數(shù)據庫,以供使用。其作用是保存數(shù)據庫運行過程中生成的臨時數(shù)據以供用戶使用。 對于tempdb,我們只需關注其大小的設置。,2020年7月29日星期三,廣西欽州學院數(shù)計系,15/126,SQL Server中的數(shù)據庫,model 模板數(shù)據庫,作為其它數(shù)據庫的模板數(shù)據庫。 msdb 當創(chuàng)建備分或執(zhí)行還原等作業(yè)時,存儲有關這些任務的信息的數(shù)據庫。,202

13、0年7月29日星期三,廣西欽州學院數(shù)計系,16/126,數(shù)據庫系統(tǒng)類型,OLTP 聯(lián)機事務處理系統(tǒng) OLAP 聯(lián)機分析處理系統(tǒng),2020年7月29日星期三,廣西欽州學院數(shù)計系,17/126,SSMS創(chuàng)建數(shù)據庫,MDF 文件:所有的數(shù)據庫都必須有一個主數(shù)據庫文件。其主要存不僅用來為數(shù)據庫保存數(shù)據,也存儲了構成數(shù)據庫的所有其他文件的位置。 NDF 文件:可以有多個,主要是保存數(shù)據,但不保存系統(tǒng)數(shù)據。 LDF 文件:建議創(chuàng)建一個以上文件,主要是保存用戶對數(shù)據庫的操作,可用于恢復數(shù)據。,2020年7月29日星期三,廣西欽州學院數(shù)計系,18/126,利用查詢編輯器創(chuàng)建數(shù)據庫,格式: CREATE DAT

14、ABASE database_name ON PRIMARY ,.n , ,.n LOG ON ,.n COLLATE collation_name WITH ;,2020年7月29日星期三,廣西欽州學院數(shù)計系,19/126,A. 創(chuàng)建未指定文件的數(shù)據庫 CREATE DATABASE mytest; B. 創(chuàng)建指定數(shù)據和事務日志文件的數(shù)據庫 CREATE DATABASE Sales ON ( NAME = Sales_dat, FILENAME = c:saledat.mdf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ),2020年7月29日星期三,

15、廣西欽州學院數(shù)計系,20/126,LOG ON ( NAME = Sales_log, FILENAME = c:salelog.ldf, SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ); GO,2020年7月29日星期三,廣西欽州學院數(shù)計系,21/126,第4章 安 全,在SQL Server中,有很多的方法來強制安全.可以通過windows驗證來讓windows自己設置安全性;可以通過視圖來限制用戶對敏感數(shù)據的訪問;或是通過特定的的創(chuàng)建用戶、登錄名,以及角色來明確訪問的級別。 本章將要介紹 登錄名 角色 架構 你將能利用這windows和sql

16、Server的安全設置讓你的數(shù)據庫,從而達到安全的目的。,2020年7月29日星期三,廣西欽州學院數(shù)計系,22/126,登錄名,要連接到SqlServer中,我們必須采用以下方式之一 Windows登錄名 如果用戶名屬于某個特定的windows組,并在Sql Server中包含該組,那么該用戶帳戶就能夠訪問Sql Server。 Sql Server登錄名 例:在windows中創(chuàng)建一個用戶組(operator_DB_group)和一個用戶名(xiaobao),并使用戶名為用戶組的一個成員。同時使之登錄指定的用戶數(shù)據庫。,2020年7月29日星期三,廣西欽州學院數(shù)計系,23/126,角 色,S

17、QLServer2005中共分為固定服務器的角色、數(shù)據庫角色、應用程序角色。 1、固定服務器的角色 Bulkadmin:運行Bulk Insert語句 Dbcreator:創(chuàng)建、修改或刪除數(shù)據庫,同樣也可以恢復它們。 Diskadmin:管理磁盤文件。 Processadmin:終止一個運行T-SQL代碼的登錄名。 Securityadmin:管理SQL登錄名和登錄權限,包括密碼。 Serveradmin:管理服務器和執(zhí)行任務,如啟動和關閉服務器。 Setupadmin:可以在多個鏈接服務器上工作,并可以管理鏈接服務 器定義。 Sysadmin:執(zhí)行任何活動。,2020年7月29日星期三,廣西

18、欽州學院數(shù)計系,24/126,2、數(shù)據庫角色 Dbo/db_owner:特指數(shù)據庫所在者 Db_accessadmin:可以管理登錄名對數(shù)據庫的訪問 Db_backupoperator:可以備分數(shù)據庫 Db_datareader:可以從所有用戶定義表中讀取數(shù)據。 Db_datawriter:可以對用戶表進行任何寫行為。 Db_ddladmin:可以執(zhí)行數(shù)據定義行為,如創(chuàng)建表。 Db_denydatareader:不能從用戶表寫入數(shù)據。 Db_denydatawriter:不能向用戶表寫入數(shù)據。 Db_securityadmin:不能修改數(shù)據庫角色成員和管理權限。 Public:可以看到任何由公

19、共或完整權力、權限的用戶所創(chuàng)建的數(shù)據庫對象。 例:使創(chuàng)新的用戶只能對某幾個表進行選擇操作。,2020年7月29日星期三,廣西欽州學院數(shù)計系,25/126,3、應用程序角色 數(shù)據庫是為應用程序編寫的,然而,并不是所有的數(shù)據都只為一個應用程序存在。應用程序允許你定義訪問數(shù)據庫的角色。該角色基于所連接到數(shù)據庫的應用程序,而不是擁有安全性的用戶服務組或單一用戶。(在以后的.Net編程學習),2020年7月29日星期三,廣西欽州學院數(shù)計系,26/126,第5章 定義表,表的定義 表的數(shù)據類型 在SSMS中創(chuàng)建表 表中的的列的設置 在查詢分析器中創(chuàng)建表,2020年7月29日星期三,廣西欽州學院數(shù)計系,27

20、/126,表的定義,數(shù)據庫要發(fā)揮作用,至少需要一個表,但數(shù)據庫也能有許多表,并且根據需要建立的解決方案,表的數(shù)量甚至會變得相當龐大,如銀行的客戶表,網上書店的訂單表等。因此我們需要充分的了解表、表的結構、表的內容。 表:是數(shù)據的儲藏地,存儲著特定的信息。表需要一個富有含義的名稱以及定義一個或多個列,每一列應是一個有意義的名稱和數(shù)據類型。如下列的作者表:,2020年7月29日星期三,廣西欽州學院數(shù)計系,28/126,表的數(shù)據類型,用戶在創(chuàng)建表時需要根據數(shù)據的需要進行數(shù)據類型的選擇,從而方便的對數(shù)據進行操作。上述作者表中,作者的名字應為字符(char)型。而成績表中的成績應為浮點型(float)。

21、因而我們應對數(shù)據類型有比較深入的學習和了解。 1、char (nchar存儲unicode格式的字符) ,固定數(shù)據類型。如果定義10個字符長度的字段時,注意如輸入”aaa”時將會變成”aaa ”共10個字符存進硬盤中。最長為8000字符。 2、varchar(nvarchar存儲unicode格式的字符),可變數(shù)據類型。如果定義10個字符長度的字段時,注意如輸入”aaa”時將會以3個字符共存進硬盤中。最長為8000字符。 3、text(ntext存儲unicode格式的字符),最大可存儲2G字符。 4、image,用于存儲任何類型的二進制數(shù)據,包括圖像、視頻、音樂。,2020年7月29日星期三

22、,廣西欽州學院數(shù)計系,29/126,5、int數(shù)據類型用于存儲沒有小數(shù)點的數(shù)字值,從-2147483648至2147483647之間的數(shù)據。 6、bigint數(shù)據類型與int數(shù)據類型相似,不同的是能存更大的數(shù)據-9223372036854775808至9223372036854775807。 7、smallint數(shù)據類型與以上兩個數(shù)據差不多,只是存儲的數(shù)相對比較小-32768至32767。 8、tinyint數(shù)據類型比smallint的數(shù)據類型更小,只能存儲0至255的數(shù)據。 9、decimal/numeric數(shù)據類型用于存儲相同精度和范圍的數(shù)據-1038到1038-1的數(shù)據。 10、floa

23、t數(shù)據類型用于存儲小數(shù)點不固定的數(shù)值,能存儲-1.79E+308至1.79E+308的數(shù)據。,2020年7月29日星期三,廣西欽州學院數(shù)計系,30/126,11、real數(shù)據類型跟float數(shù)據類型,存儲的數(shù)值范圍是 -3.40E+38至3.40E+38的數(shù)值。 12、money數(shù)據類型存儲的范圍是-922337203685477.5808至922337203685477.5807的數(shù)值。 13、smallmoney與money相似,其存儲的數(shù)值范圍是 -214 748.3648至214 748.3647。 14、datetime日期類型用于存儲1753年1月1日至9999年12月31日的時間

24、。 15、smalldatetime與datetime相類似,其存儲范圍是從1900年1月1日至2079年6月6日. 16、binary以二進制數(shù)據存儲數(shù)據。主要存儲作為標記或標記組合的數(shù)據。 17、varbinary,與binary相似,主要存儲類似圖像的數(shù)據。,2020年7月29日星期三,廣西欽州學院數(shù)計系,31/126,在SSMS中創(chuàng)建表,在學生信息管理系統(tǒng)中建立學生表。,2020年7月29日星期三,廣西欽州學院數(shù)計系,32/126,表的列的設置,Null值 null值表示沒有數(shù)據要輸入系統(tǒng),跟0和“”不一樣。 默認(default)值 設為默認值的的某列,如果用戶輸入數(shù)據時,不向其輸入

25、數(shù)據,則會以用戶設定的值輸入。 Identity值 自動編號,當希望給行一個唯一而又容易確定的ID號,則可將之設置identity值。該值由系統(tǒng)自動生成。 例:將上述學生表的學號設置為identity值,為學生的年齡設置默認值。,2020年7月29日星期三,廣西欽州學院數(shù)計系,33/126,通過查詢窗格定義表,創(chuàng)建表的基本語法 create table 表名 (列名 數(shù)據類型數(shù)據長度 identity(增長的初始值,增長的長度) null/not null) 例:創(chuàng)建客戶表 Create table Customer ( CustomerId bigint IDENTITY(1,1) NOT

26、NULL, ClearedBalance money NOT NULL, CustomerTitleId int NOT NULL, CustomerFirstName nvarchar(50) not null, CustomerLastName nvarchar(50) not null, Address nvarchar(50) not null, ProductId bigint not null, ProductDetail nvarchar(200) not null ),2020年7月29日星期三,廣西欽州學院數(shù)計系,34/126,更改表,通過SSMS更改表 通過查詢窗格更改表

27、語法: Alter table 表名 Add 列名 數(shù)據類型長度 null/not null drop column 列名 Alter Column列名 數(shù)據類型長度 null/not null 例:alter table student add birthday smalldate null, alter column name varchar(10) null, drop column address,2020年7月29日星期三,廣西欽州學院數(shù)計系,35/126,設置主鍵,主鍵是記錄唯一的標識,也稱為關鍵字,往往是設置某列上不可能有相同的值的列。如學生表中學號,書籍的ISBN號等等。 在S

28、SMS中設置主鍵,2020年7月29日星期三,廣西欽州學院數(shù)計系,36/126,約束,約束本質上是SQL Server放置在列上的一種檢查,用以確保輸入到列中的數(shù)據滿足特定條件。如學生年齡在20歲到100歲之間。設置約束主要是避免用戶輸入數(shù)據不一致。從而保證數(shù)據的完整性。 在SSMS中創(chuàng)建約束。 利用命令創(chuàng)建約束。 Alter table 表名 Add Constraint 約束名 Check 約束表達式 在約束表達式中多個條件可用and,or,in等關鍵字。,2020年7月29日星期三,廣西欽州學院數(shù)計系,37/126,關系,關系是兩個表之間的邏輯,可以用它來強制數(shù)據的完整性。換句話來說,如

29、果由于數(shù)據在某個表中而希望另一個表中也有這樣的數(shù)據,就可以在兩個表中放置這樣的關系。 關系的類型 一對一關系 一對多關系 多對多關系,2020年7月29日星期三,廣西欽州學院數(shù)計系,38/126,一對一關系,兩個數(shù)據表中的記錄各自只有一條記錄中的一個字段的數(shù)據相匹配。這種關系在數(shù)據庫比較少見。如,2020年7月29日星期三,廣西欽州學院數(shù)計系,39/126,一對多,是數(shù)據庫中最常見的一種關系。這就是一條記錄與子表中0條、1條或多條記錄相關聯(lián)(即數(shù)據相同)的情形。,2020年7月29日星期三,廣西欽州學院數(shù)計系,40/126,多對多的關系,主表中0條、1 條、甚到多條與子表中0條、1 條、甚到多

30、條記錄有關(即數(shù)據相同)。,2020年7月29日星期三,廣西欽州學院數(shù)計系,41/126,外鍵,外鍵是子表上的鍵,定義在該鍵中列(一個或一組)能正好與主表中的列在信息和數(shù)量完全匹配,使用外鍵,主要是想通過關系返回兩個表中的數(shù)據。 在SSMS中創(chuàng)建關系 在查詢分析器中創(chuàng)建關系 alter table 子表名 add constraint 關系名 foreign key(子表中的字段) references 主表(主表中的字段),2020年7月29日星期三,廣西欽州學院數(shù)計系,42/126,第8章 操作數(shù)據,對數(shù)據庫中操作主要是對表的操作,而對表的操作主要是向表插入數(shù)據、刪除數(shù)據、更新數(shù)據和查詢數(shù)

31、據。但是對這些數(shù)據的操作我們很少在SSMS中進行操作,主要的工作都是在查詢窗口中使用命令操作。對這些命令的熟練的操作能為以后的數(shù)據庫應用打下良好的基礎。 打開查詢窗口,以待進一步輸入命令。,2020年7月29日星期三,廣西欽州學院數(shù)計系,43/126,T-SQL的INSERT命令的語法,Insert語法: INSERT INTO 表名 (列名1,列名2,列名3,列名n) Values (表達式1,表達式2,表達式3,表達式n) 注意:(1)插入數(shù)據時,表達式的個數(shù)與列名的個數(shù)要一致。 (2)表達式的類型與列名的類型要一致。 (3)如果省略列名時,表達式的值順序必須要與創(chuàng)建表時的順序一致。 (4

32、)如果某列的值可為空,可將之設置為null。 (5)在創(chuàng)建的外鍵的表中插入數(shù)據時,一定要注意只有在主鍵表有你需要插入的值才能插入數(shù)據。,2020年7月29日星期三,廣西欽州學院數(shù)計系,44/126,(6)如果某列上設置了identity(),則不需要插入數(shù)據,忽略之即可。 (7)如果是設置有默認值,而在插入數(shù)據時又不想在這列上插入數(shù)據,則把表達式設置為”default”即可。 (8)如果設置了約束,要求所輸入的內容要與約束的條件一致,否則出錯 (9)插入多行數(shù)據,2020年7月29日星期三,廣西欽州學院數(shù)計系,45/126,檢索數(shù)據,檢索數(shù)據:從數(shù)據庫中找出滿足條件的數(shù)據.在SQL中有兩中方法

33、可以進行檢索。 1.在SSMS界面中進行數(shù)據檢索。這種方式只是針對懂得使用SQL Server數(shù)據庫的人進行使用。 2.在查詢窗口中進行數(shù)據檢索。這種方式針對于數(shù)據庫的開發(fā)者和程序開發(fā)者使用。這種方式最實用,最常用。 示例:在SSMS中進行數(shù)據的查詢。,2020年7月29日星期三,廣西欽州學院數(shù)計系,46/126,Select語句,SELECT ALL | DISTINCT TOP expression PERCENT WITH TIES * | table_name | view_name | table_alias .* | column_name | expression | $IDEN

34、TITY | $ROWGUID AS column_alias | column_alias = expression ,.n FROM table_name | view_name alias_name WHERE filter_Criteria ORDER BY ordering_criteria,2020年7月29日星期三,廣西欽州學院數(shù)計系,47/126,例1:從pubs數(shù)據庫查詢所有的作者的信息。 Select * from authors 例2:從pubs數(shù)據庫查詢前10個作者的信息。 Select top 10 * from authors 例3:從pubs數(shù)據庫中查詢前10%的

35、作者的信息。 Select top 10 percent* from authors 例4:從pubs數(shù)據庫中查詢作者的姓名,電話,地址與郵編號. Select au_lname,au_fname,phone,address,zip From authors 例5:從從pubs數(shù)據庫中查詢作者的所在的居住的州郡 Select all state from authors,2020年7月29日星期三,廣西欽州學院數(shù)計系,48/126,例6:查詢pubs數(shù)據庫中所有作者的姓名(作為一個字段返回),并將中文標識列。 Select au_fname+”,”+au_lname as 姓名 from au

36、thors 例7:查詢pubs數(shù)據庫中所有居住在Oakland的作者。 Select * from authors where city=Oakland 例8:查詢pubs數(shù)據庫中所有居住在Oakland的作者,并以他們的姓氏排列數(shù)據(順序,降序). Select * from authors where city=Oakland order by asc(desc),2020年7月29日星期三,廣西欽州學院數(shù)計系,49/126,SQL運算符,算法運算符: +、*、/、% 比較運算符:、=、=、!=,!、! 位算法符:(包含select,Insert,update, delete語句) End

37、 組成: 頭部:定義了存儲過程的名稱,輸入和輸出參數(shù)以及其他的過程選項。 主體:包含了一條或者多條待執(zhí)行的T-SQL語句。,2020年7月29日星期三,廣西欽州學院數(shù)計系,110/126,例,撰寫一個存儲過程求1*2*3*4*n。 Create procedure sp_Mulity n int, result bigint output As Begin declare i int set i=1 set result=1 while(i=n) begin set result=result*i set i=i+1 end end,2020年7月29日星期三,廣西欽州學院數(shù)計系,111/12

38、6,存儲過程調用,execute 存儲過程名 參數(shù)值 defaultoutput declare result bigint execute sp_Mulity default,result output select result 參數(shù)的后output必須要根據存儲過程中的參數(shù)聲明是否有output,如果有,則調用一定要,如果沒有,則一定不能有。 execute 參數(shù)名=存儲過程名 參數(shù)值 defaultoutput 其中參數(shù)名必須為整數(shù)。,2020年7月29日星期三,廣西欽州學院數(shù)計系,112/126,存儲過程的功能,使用存儲過程的一個主要目的就是從SQL Server上的數(shù)據庫返回有用的

39、信息。有三種方法可以從存儲過程得到信息。 結果集 只需在存儲過程中加入幾條select語句,存儲過程就可以返回幾個結果集。 參數(shù) 存儲過程可以返回輸出參數(shù)給調用程序,但要在數(shù)據參數(shù)后設置關鍵字Output。 返回值 每個存儲過程都可以以一個Return語句結束,Return語句跟一個整數(shù)值,可以被調用程序使用。如果返回值沒有設定,服務器將會返回默認值0.,2020年7月29日星期三,廣西欽州學院數(shù)計系,113/126,默認值,如果存儲過程語句有參數(shù),那么,在Execute中必須為參數(shù)指定值,如果沒有給參數(shù)指定相應值,服務器會報錯,但是,我們可以為參數(shù)定義一個默認值,這樣,用戶就不一定要給參數(shù)賦

40、值了。 Create procedure sp_Mulity n int=3, As Begin declare i int,result bigint set i=1 set result=1 while(i=n) begin set result=result*i set i=i+1 end return result; end,2020年7月29日星期三,廣西欽州學院數(shù)計系,114/126,默認值(續(xù)),存儲過程中還可以接受TSQL通配符的搜索引擎。如在pubs中的authors表中查找字段au_lname以G開頭的所有記錄。 create procedure sp_list_byau_

41、lname au_lname varchar(20)=% as begin select * from authors where au_lname like au_lname end exec sp_list_byau_lname g%,2020年7月29日星期三,廣西欽州學院數(shù)計系,115/126,再論觸發(fā)器,觸發(fā)器是一種特殊的存儲過程,其代碼是在數(shù)據庫中的表發(fā)生了某種具體改變時,觸發(fā)器與該表聯(lián)系并被SQL Server執(zhí)行。這種數(shù)據的改變是由下列更改語句產生的結果。 Insert 當用戶對某個已關聯(lián)觸發(fā)器的表進行數(shù)據插入時。 Update 當用戶對某個已關聯(lián)觸發(fā)器的表進行數(shù)據更新時。 D

42、elete 當用戶對某個已關聯(lián)觸發(fā)器的表進行數(shù)據刪除時。 注意Select并不會引起數(shù)據庫中的數(shù)據的改變,因此其不會觸發(fā),2020年7月29日星期三,廣西欽州學院數(shù)計系,116/126,觸發(fā)器的作用,強制數(shù)據完整性(引用完整性,層疊刪除) 實施復雜的商業(yè)準則(復雜的默認值設定和校驗) 記錄變化并且把通知發(fā)送給管理員(通過電子郵件方式) 維護派生的信息(計算列數(shù)、統(tǒng)計各種總數(shù)),2020年7月29日星期三,廣西欽州學院數(shù)計系,117/126,解發(fā)器的語法,Create Trigger 觸發(fā)器名字 On 表名 | 視圖名 For | After|Instead Of Insert,Update,D

43、elete As begin 觸發(fā)器代碼 end 注意: (1)for|after 表示觸發(fā)器發(fā)生在數(shù)據被修改后運行觸發(fā)器代碼。 (2)Instead Of表示當發(fā)生修改數(shù)據時系統(tǒng)運行觸發(fā)器代碼,但數(shù)據的修改沒有發(fā)生。 (3)Insert,Update,Delete表示當用戶進行數(shù)據的插入、修改或刪除時觸發(fā)。,2020年7月29日星期三,廣西欽州學院數(shù)計系,118/126,級聯(lián)操作,當刪除一個班級表時,自動將該班的學生的班別設置為Null create trigger tr_class_delete on class after delete as begin update student s

44、et classid=null where classid=(select classid from deleted) end,2020年7月29日星期三,廣西欽州學院數(shù)計系,119/126,維護派生的信息,當向表product中插入數(shù)據和更新數(shù)據時,系統(tǒng)能自動的維護和更新總金額和打折扣后的總金額。 create trigger tr_insert_update on product after insert,update as begin update product set total=price*mount; update product set discount=price*0.8*mount end,2020年7月29日星期三,廣西欽州學院數(shù)計系,120/126,兩個虛擬表,在觸發(fā)器的執(zhí)行過程中Sql Server維護兩個臨時虛擬表:Deleted表和Inserted表。 Deleted表:包含了在激發(fā)觸發(fā)器的操作中刪除的記錄。 Inserted表:包含了在激發(fā)觸發(fā)器的操作中插入的記錄。 注意:當用update時,會將數(shù)據庫中待更新

溫馨提示

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

評論

0/150

提交評論