網絡數據庫全部課件_第1頁
網絡數據庫全部課件_第2頁
網絡數據庫全部課件_第3頁
網絡數據庫全部課件_第4頁
網絡數據庫全部課件_第5頁
已閱讀5頁,還剩128頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

網絡數據庫主講教師:李永勝——數學與計算機科學學院Tel-mail:lyshlh@163.com課程與上機安排總課時:20學時,5周,4節/周其中:2節理論課,2節上機課課程性質:通選課考核方式:考查,筆試,安排在第五次課進行,地點:逸夫樓7樓。教材:自編,即上課所使用的課件。推薦教材:《網絡數據庫SQLServer2000》杜佰林主編,清華大學出版社出版,2007年9月版價格27元前言數據庫軟件是應用軟件中最基礎、最低層的支持全球數據庫目前每年有超過80億美元的市場規模由于數據庫涉及高端技術,門檻很高,使得數據庫市場的競爭僅在有限的選手之間進行主流的大型數據庫產品OracleSQLServerSybaseDB2InformixSQLServer2000簡介MicrosoftSQLServer2000中文版(以后簡稱為SQLServer2000或SQLServer),是基于客戶機/服務器(Client/Server)模型的新一代大型關系型數據庫管理系統(DBMS)。SQLServer2000是專為配合.NET體系結構而設計的。它所提供的工具和支持系統能夠幫助客戶建立活動服務器頁面和COM+對象,從而實現商務邏輯并訪問由SQLServer進行管理的數據。目前的最新版本是SQLServer2005SQLServer的官方網站:/china/sql1.1.1SQLServer2000的體系結構與運行環境

SQLServer2000是一個基于客戶機/服務器(C/S)模式的關系數據庫管理系統。客戶端應用程序

SQLServer2000

提交SQL語句

查詢結果返回前臺

客戶端

服務器端

圖1.1SQLServer2000客戶機/服務器結構示意圖

1.2.1SQLServer環境需求SQLServer2000常見的版本企業版(EnterpriseEdition)標準版(StandardEdition)個人版(PersonalEdition)開發版(DeveloperEdition)SQLServer2000各版本簡介企業版:作為生產數據庫服務器使用。是各個版本中功能最為強大、齊全而又最為復雜的版本。它包含了SQLServer數據庫以及分析服務的所有功能。標準版:作為小工作組或部門的數據庫服務器使用。對于中小型組織在可擴展性、可用性、性能以及分析服務方面的要求不是特別高的情況下,是一個更好的選擇。個人版:供移動的用戶使用。其功能與標準版相當,但在某些方面會有所區別。開發版:供程序員用來開發將SQLServer2000用作數據存儲的應用程序,只能將開發版作為開發和測試系統使用,不能作為生產服務器使用。安裝、運行SQLServer2000的硬件需求(1)計算機Inter及其兼容計算機,Pentium166Mz或者更高處理器或DECAlpha和其兼容系統。(2)內存(RAM)企業版最少64MB內存,其他版本最少需要32MB內存,建議使用更多的內存。(3)硬盤空間完全安裝(Full)需要180MB的空間,典型安裝(Typical)需要170MB的空間,最小安裝(Minimum)需要65MB的空間。2、安裝、運行SQLServer2000的軟件需求SQLServer2000企業版必須運行于安裝WindowsNTServerEnterpriseEdition4.0或者Windows2000AdvancedServer以及更高版本的操作系統下。SQLServer2000標準版必須運行于安裝WindowsNTServerEnterpriseEdition4.0、WindowsNTServer4.0、Windows2000Server以及更高版本的操作系統下。SQLServer2000個人版可在多種操作系統下運行,如可運行于Windows9x,WindowsNT4.0或Windows2000的服務器版或工作站版的操作系統下。SQLServer2000開發者版可運行于上述Windows9x以外的所有操作系統下。1.2.2SQLServer2000的安裝SQLServer2000的安裝過程與其它MicrosoftWindows系列產品類似。用戶可根據向導提示,選擇需要的選項一步一步地完成。1.3SQLServer工具和實用程序1.3.1企業管理器1.3.2服務管理器1.3.3查詢分析器1.3.1企業管理器企業管理器是基于一種新的被稱為微軟管理控制臺(MicrosoftManagementConsole)的公共服務器管理環境,它是SQLServer中最重要的一個管理工具。企業管理器不僅能夠配置系統環境和管理SQLServer,而且由于它能夠以層疊列表的形式來顯示所有的SQLServer對象,因而所有SQLServer對象的建立與管理都可以通過它來完成。利用企業管理器可以完成的操作管理SQLServer服務器;建立與管理數據庫;建立與管理表、視圖、存儲過程、觸發程序、角色、規則、默認值等數據庫對象,以及用戶定義的數據類型;備份數據庫和事務日志、恢復數據庫;復制數據庫;設置任務調度;設置警報;提供跨服務器的拖放控制操作;管理用戶帳戶;建立Transact-SQL命令語句以及管理和控制SQLMail。圖1-20SQLServer企業管理器(EnterpriseManager)界面1.3.2服務管理器(ServiceManager)SQLServer服務管理器是在服務器端實際工作時最有用的實用程序,其界面如圖1-21所示。服務管理器用來啟動、暫停、繼續和停止數據庫服務器的實時服務,其提供的服務包括:SQLServer、SQLServerAgent、MSDTC(MicrosoftDistributedTransactionCoordinator,微軟分布式事務協調器)。圖1-21SQLServer服務管理器(ServiceManager)界面1.3.3查詢分析器(QueryAnalyzer)SQLServer2000新的圖形化查詢分析器用于輸入和執行Transaction-SQL語句,并且迅速查看這些語句的結果,以分析和處理數據庫中的數據。這是一個非常實用的工具,對掌握SQL語言,深入理解SQLServer的管理工作有很大幫助。第2章服務器管理2.2服務器注冊2.3服務器啟動、暫停和停止2.4服務器連接與斷開2.5服務器配置選項設置上一章返回目錄2.2服務器注冊所謂服務器注冊是指將網絡系統中的其它SQLServer服務器注冊到企業管理器中,以便于管理。注冊過程1.在企業管理器中,右鍵單擊“SQLServer組,選擇“新建SQLServer注冊”,就會出現如圖3-3所示的注冊SQLServer向導對話框。圖2-3注冊服務器向導對話框

2.在注冊服務器向導對話框中不選擇復選框,單擊“下一步”按鈕,就會出現選擇或創建服務器名稱對話框,如圖3-5所示。在可用服務器中選擇本機的服務器,如“702-12”,或者將本機右下角的服務器名稱復制到可用服務器中,并添加到右邊的方框中,然后單擊“下一步”。圖3-5選擇或創建服務器名稱3.出現選擇身份驗證模式對話框,即選擇WindowsNT身份驗證或SQLServer身份驗證。WindowsNT身份驗證可以使用戶只需維護、使用一個WindowsNT登錄帳戶和口令,而使用SQLServer身份驗證,則必須維護WindowsNT登錄帳戶和SQLServer登錄帳戶及口令。如圖3-6和圖3-7所示。我們上機時應該選擇WindowsNT身份驗證圖3-6選擇身份驗證模式4.單擊“下一步”按鈕,就會出現選擇服務器組或創建服務器組對話框,如圖3-8所示圖3-8選擇服務器組或創建服務器組5.服務器組確定后,單擊“下一步”按鈕,就會出現確定注冊對話框,單擊“完成”按鈕,則企業管理器將注冊服務器,如下圖3-9所示。6.接著出現注冊SQLServer消息對話框,注冊成功后,按“關閉”按鈕結束設置。圖3-10注冊SQLServer消息2.3服務器啟動、暫停和停止啟動服務器,下面介紹常用的兩種方法:1.自動啟動服務器2.用企業管理器(EnterpriseManager)啟動暫停和關閉服務器的方法與啟動服務器的方法類似,只需在相應的窗口中選擇“暫停(Pause)”或“停止(Stop)”選項即可。為了保險起見,我們通常會在停止運行SQLServer之前先暫停SQLServer。其主要原因在于,一旦暫停SQLServer,將不再允許任何新的上線者,然而原先已聯機到SQLServer的用戶仍然能繼續作業,這樣可以確保原來正在進行中的作業不會中斷,而可以持續進行并加以完成。暫停和關閉服務器2.4網絡服務器的連接在企業管理器中,從操作(Action)菜單中選擇新建SQLServer注冊,然后單擊下一步。稍作等待后,出現“注冊SQL向導對話框”。如下圖。2.4網絡服務器的連接3、在對話框的左邊列表中選擇需要連接的網絡服務器的名稱(也可以輸入其IP地址),然后將其添加到右邊的“添加服務器”列表中。4、在出現的對話框中選擇“SQL身份驗證登錄”。5、單擊“下一步”,進入登錄對話框,并輸入用戶名:sa,密碼為空(機房的密碼已經設為空),然后單擊“下一步”,“下一步”…直到完成。圖3-12連接SQLServer時的輸入登錄名和口令窗口2.5服務器配置選項設置使用SQLServer企業管理器配置服務器的操作方法為:在企業管理器的SQLServer組(Group)中用右鍵單擊所要進行配置的服務器,從快捷菜單中選擇“屬性(Properties)”選項,就會出現如圖3-13所示的對話框,其中可以進行服務器的屬性(配置選項)的設置。(注意:一般不用對其進行配制,按默認即可)圖3-13服務器屬性設置對話框第3章數據庫管理3.1數據庫的存儲結構3.2創建、修改和刪除數據庫3.3數據庫備份3.4恢復數據庫3.5數據庫的維護上一章返回目錄3.2.1創建數據庫每個數據庫都由以下幾個部分的數據庫對象所組成:關系圖、表、視圖、存儲過程、用戶、角色、規則、默認、用戶自定義數據類型和用戶自定義函數。每個SQLServer實例有四個系統數據庫(master、model、tempdb和msdb)以及一個或多個用戶數據庫,這些數據庫不能隨意刪除。記錄SQLServer系統的所有系統級別信息保存所有的臨時表和臨時存儲過程用作在系統上創建的所有數據庫的模板供代理程序調度警報和作業以及記錄操作員時使用創建數據庫的方法使用企業管理器(EnterpriseManager)創建數據庫使用Transact-SQL語言創建數據庫。(2)使用企業管理器創建數據庫(1)在企業管理器中,單擊工具欄中的圖標,或在數據庫文件夾或其下屬任一數據庫圖標上單擊右鍵,選擇新建數據庫選項,就會出現如圖4-9所示的對話框。(2)在常規(General)頁框中,要求用戶輸入數據庫名稱以及排序規則名稱,上機時輸入數據庫名:Stu_db,排序規則按默認即可。(3)點擊數據文件(DataFiles)頁框,從該頁框可以看到數據庫文件的邏輯名稱、存儲位置、初始容量大小和所屬文件組名稱,如圖4-10所示。(4)點擊事務日志(TransactionLog)頁框,該頁框用來設置事務日志文件信息,如圖4-11所示。(5)單擊圖4-11中的“確定”按鈕,則開始創建新的數據庫。圖4-9創建數據庫對話框中的常規頁框圖4-10創建數據庫對話框中的數據文件頁框圖4-11創建數據庫對話框中的事務日志頁框(3)使用Transact-SQL語言創建數據庫,語法如下:在查詢分析器中輸入以下語句:CREATEDATABASEdatabase_name[設置日志文件、默認規則等的語句]3.2.2修改數據庫利用企業管理器修改數據庫右鍵單擊要修改的數據庫,選擇“屬性”,然后在屬性中修改即可。3.2.3刪除數據庫1.利用企業管理器刪除數據庫2.利用Drop語句刪除數據庫Drop語句可以從SQLServer中一次刪除一個或多個數據庫。其語法如下:Dropdatabasedatabase_name[,…n](在查詢分析器中輸入語句)3.3數據庫備份與還原右鍵單擊所要備份的數據庫選擇“所有任務”,選擇“備份”或“還原”即可。第4章數據庫對象的操作4.1數據類型4.2表操作4.3視圖操作4.4索引操作4.5存儲過程4.6觸發器4.7圖表上一章返回目錄4.1數據類型4.1.1系統數據類型4.1.2自定義數據類型4.1.1系統數據類型1.整型數據類型2.浮點數據類型3.字符數據類型4.日期和時間數據類型5.文本和圖形數據類型6.貨幣數據類型7.位數據類型8.二進制數據類型9.特殊數據類型10.新增數據類型1.整型數據類型整型數據類型是最常用的數據類型之一,它主要用來存儲數值,可以直接進行數據運算,而不必使用函數轉換。int(integer):int(或integer)數據類型可以存儲從-231(-2,147,483,648)到231-1(2,147,483,647)范圍之間的所有正負整數。Smallint:可以存儲從-215(-32,768)到215-1范圍之間的所有正負整數。Tinyint:可以存儲從0到255范圍之間的所有正整數。2.浮點數據類型浮點數據類型用于存儲十進制小數。Real:可以存儲正的或者負的十進制數值,最大可以有7位精確位數。Float:可以精確到第15位小數,其范圍從-1.79E-308到1.79E+308。3.字符數據類型字符數據類型可以用來存儲各種字母、數字符號和特殊符號。Char:其定義形式為char(n),每個字符和符號占用一個字節的存儲空間。Varchar:其定義形式為varchar(n)。用char數據類型可以存儲長達255個字符的可變長度字符串。4.日期和時間數據類型Datetime:用于存儲日期和時間的結合體。它可以存儲從公元1753年1月1日零時起到公元9999年12月31日23時59分59秒之間的所有日期和時間。Smalldatetime:與datetime數據類型類似,但其日期時間范圍較小,它存儲從1900年1月1日到2079年6月6日內的日期。5.文本和圖形數據類型

Text:用于存儲大量文本數據,其容量理論上為1到231-1(2,147,483,647)個字節,但實際應用時要根據硬盤的存儲空間而定。

Ntext:與text數據類型類似,存儲在其中的數據通常是直接能輸出到顯示設備上的字符,顯示設備可以是顯示器、窗口或者打印機。Image:用于存儲照片、目錄圖片或者圖畫,其理論容量為231-1(2,147,483,647)個字節。6.貨幣數據類型Money:用于存儲貨幣值,存儲在money數據類型中的數值以一個正數部分和一個小數部分存儲在兩個4字節的整型值中,存儲范圍為-922337213685477.5808到922337213685477.5808,精度為貨幣單位的萬分之一。Smallmoney:與money數據類型類似,但其存儲的貨幣值范圍比money數據類型小,其存儲范圍為-214748.3468到214748.3467。7.位數據類型Bit:稱為位數據類型,其數據有兩種取值:0和1,長度為1字節。8.二進制數據類型Binary:其定義形式為binary(n),數據的存儲長度是固定的,即n+4字節,當輸入的二進制數據長度小于n時,余下部分填充0。

Varbinary:其定義形式為varbinary(n),數據的存儲長度是變化的,它為實際所輸入數據的長度加上4字節。其它含義同binary。4.2表操作4.2.1創建表4.2.2增加、刪除和修改字段4.2.3創建、刪除和修改約束4.2.4查看表格4.2.1創建表在SQLServer2000中,每個數據庫中最多可以創建200萬個表,用戶創建數據庫表時,最多可以定義1024列,也就是可以定義1024個字段。

SQLServer2000提供了兩種方法創建數據庫表,第一種方法是利用企業管理器(EnterpriseManager)創建表;另一種方法是利用Transact-SQL語句中的create命令創建表。1.利用EnterpriseManager創建表在EnterpriseManager中,展開指定的服務器和數據庫,打開想要創建新表的數據庫,用右鍵單擊表對象,從彈出的快捷菜單中選擇新建表選項,或者在工具欄中選擇圖標,就會出現新建表對話框,在該對話框中,可以定義列的以下屬性:列名稱、數據類型、長度、精度、小數位數、是否允許為空、缺省值、標識列、標識列的初始值、標識列的增量值和是否有行的標識。然后根據提示進行設置。1.利用EnterpriseManager創建表上機練習:利用“企業管理器分別建立表Stu_info、Subject、CJ、SKB注意:表的結構和數據均在Excel文件數據庫表結構.xls中。2.利用CreateTable命令創建表格式:CreateTableTable_Name(字段名1字段類型,(寬度)[Primarykey][notnull],字段名2字段類型,(寬度)[Primarykey][notnull],……)上機練習:利用命令建立表Jsgl_Hpsx注意:其語句和格式均在Excel文件Jsgl_Hpsx.xls中。4.3查詢分析器的使用SQL的查詢分析器是SQL語句輸入和執行的窗口,具有強大的功能,在實際開發中被廣泛的使用。查詢分析器的打開:在“企業管理器”中,單擊“工具”--“SQL查詢分析器”即可打開SQL的查詢分析器。4.4、數據的導入SQL數據庫可以與Access、Excel等文件實現數據導入、導出。4.4.1導入Access數據庫利用DTS導入、導出向導導入Access數據庫的步驟如下:(1)打開EnterpriseManager(企業管理器),選定需導入數據的數據庫,右鍵單擊,選擇“所有任務”---導入數據,啟動數據導入向導工具,就會出現歡迎使用向導對話框。(2)單擊“下一步”按鈕,則出現選擇數據源對話框。(3)按照提示選擇數據源,單擊“下一步”,選擇導入的目的地,單擊“下一步”----下一步----完成。4.4.2、導入Excel文件數據庫(1)啟動企業管理器,展開選定的服務器,用右鍵單擊該服務器圖標,從快捷菜單中選擇所有任務(alltasks),然后再從子菜單中選擇導入數據,啟動數據導入向導工具,就會出現歡迎使用向導對話框,如圖9-1所示。(2)單擊“下一步”按鈕,則出現選擇數據源對話框,如圖9-18所示。(3)按照提示進行相應操作即可。注意:數據類型的轉換和數據的準確性。4.5、數據的導出1.導出數據庫至Access(1)打開企業管理器,展開指定的服務器,用右鍵單擊該服務器圖標,從彈出的快捷菜單中選擇所有任務(alltasks)選項,然后再從子菜單中選擇導出數據選項,則會出現數據轉換服務導入和導出向導對話框,如圖9-28所示,它顯示了該導出向導所能完成的操作。2、其他操作跟數據的導入類似。注意:導出到Access數據庫時,數據庫須先建立。3.4附加數據庫當本機的某數據庫需要“復制”到另一臺計算機中,則通常使用“附加數據庫”的方法。方法:1、在目的計算機的企業管理器中,右鍵單擊“數據庫”項,選擇“所有任務”--“附加數據庫”。2、按彈出窗口的提示進行操作即可。第5章Transact-SQL語言

Transact-SQL是Microsoft公司對SQL(結構化數據查詢語言)最新標準的擴展,是SQLServer2000核心組件之一。程序設計人員要編寫具有實際意義的C/S或B/S模式下的數據庫應用程序,必須借助于Transact-SQL語言。返回目錄Transact-SQL語言主要組成部分Transact-SQL(T-SQL)是SQLServer的編程語言,是結構化查詢語言SQL的增強版本,它主要包括:數據定義語言(DDL,DataDefinitionLanguage)數據操縱語言(DML,DataManipularionLanguage)數據控制語言(DCL,DataControlLanguage)系統存儲過程(SystemStoredProcedure)一些附加的語言元素5.1數據定義語言(DDL)數據定義語言是指用來定義和管理數據庫以及數據庫中的各種對象的語句,這些語句包括CREATE、ALTER和DROP等語句。在SQLServer2000中,數據庫對象包括表、視圖、觸發器、存儲過程、規則、缺省、用戶自定義的數據類型等。這些對象的創建、修改和刪除等都可以通過使用CREATE、ALTER、DROP等語句來完成。程序清單5-1:創建數據庫的一個例子CREATEDATABASEJsgl_Hpsx程序清單5-2:修改視圖的一個例子ALTERVIEWyourviewASSELECTtitle,ytd_salesFROMtitlesWHEREtype='mod_cook'GOSELECT*FROMyourviewGO

5.2數據操縱語言(DML)數據操縱語言是指用來查詢、添加、修改和刪除數據庫中數據的語句,這些語句包括SELECT、INSERT、UPDATE、DELETE等。這是在實際的開發中,用得最多的一種語言。一、SELECT語句SELECT語句的語法形式如下:SELECTselect_list

[INTOnew_table]

FROMtable_source

[WHEREsearch_condition]

[GROUPBYgroup_by_expression]

[HAVINGsearch_condition]

[ORDERBYorder_expression[ASC|DESC]]幾種常用語句的用法SELECT子句用于指定所選擇的要查詢的特定表中的列,它可以是星號(*)、表達式、列表、變量等。INTO子句用于指定所要生成的新表的名稱。FROM子句用于指定要查詢的表或者視圖,最多可以指定16個表或者視圖,用逗號相互隔開。WHERE子句用來限定查詢的范圍和條件。GROUPBY子句是分組查詢子句。HAVING子句用于指定分組子句的條件。Select、From、Into子句的用法SELECT子句用于指定所選擇的要查詢的特定表中的列,它可以是星號(*)、表達式、列表、變量等。FROM子句用于指定要查詢的表或者視圖,最多可以指定16個表或者視圖,用逗號相互隔開。例1:從Stu_info表中查詢所有同學的“學號、姓名、性別和年齡信息。Select學號,姓名,性別,年齡fromstu_ifnoSelect*fromstu_infoINTO子句用于指定所要生成的新表的名稱。例3:從Stu_info表中查詢所有同學的“學號、姓名、性別和年齡信息,并保存到新表stu_part中.Select學號,姓名,性別,年齡intostu_partfromStu_infoWhere子句的用法

Where子句用來限定查詢的范圍和條件。形式:Select….From….Where條件1、用于表示Where條件的關系運算符號有:=、>、<、>=、<=、<>等例1:從Stu_info表中查詢所有男同學信息。Select*fromstu_infoWhere性別=‘男’2、用于表示Where條件的邏輯運算符號有:OR、AND、NOT例2:從Stu_info表中查詢所有年齡大于20的女同學。Select*fromstu_infoWhere性別=‘女’and年齡>20例3:從Stu_info表中查詢所有軟件2班和會計1班的同學。、Select*fromstu_infoWhere所在班級=‘軟件2班’or所在班級=‘會計1班’Where子句的用法

3、用于表示Where條件的特殊運算符號有:%(代表任意字符)、Between(介于)、Like(象)等例1:從Stu_info表中查詢所有姓李的同學信息。Select*fromstu_infoWhere姓名Like‘李%’例2:從CJ表中查詢所有成績介于80到90分之間的同學信息。Select*fromCJWhere成績Between80and90例3:從Stu_info表中查詢所有1班的同學信息。Select*fromstu_infoWhere班級名Like‘%1班’Groudby、Having、Orderby子句的用法

GROUPBY子句可以將查詢結果按照指定的字段分組,它常常與一些統計函數共用。統計函數:Count(*):計數,Sum(求和字段)求和,Avg(求平均值字段)求平均值。HAVING子句可以實現對分組后的結果按照某種條件進行篩選。例1:統計Stu_info表中男女同學的人數和平均年齡。Select性別Count(*)as人數,avg(年齡)as平均年齡fromstu_infoGroupby性別例2:從成績表中篩選出選修了一門以上課程的學生學號及其選修門數。Select學號,Count(*)as選修門數FromCJGroupby學號HavingCount(*)>1注意:as用于重新指定查詢的列標題Groudby、Having、Orderby子句的用法

ORDERBY子句可以根據一個列或者多個列來排序查詢結果,在該子句中,既可以使用列名,也可以使用相對列號。ASC表示升序排列,DESC表示降序排列,默認是升序排列例1:將Stu_info

表中的同學按照年齡從高到低降序排列。Select*fromStu_infoOrderby年齡Desc在實際的開發過程中,一個SQL查詢語句一次往往使用到多個表。在關系型數據庫中,一個涉及到多個表的查詢稱為連接查詢,連接查詢是關系型數據庫中最重要的操作。我們主要介紹最簡單的自然連接,為了區別列來源,可以在連接中對表指定別名。例1、列出所有選修了課程的學生的學號、課程名稱、課程號、成績。selecta.學號,a.課程號,a.成績,b.課程名fromCja,subjectbwhere(a.課程號=b.課程號)(b.課程號=c.課程號)例2:列出所有選修了課程的學生的學號、姓名、課程號、成績。selecta.學號,a.課程號,a.成績,b.姓名fromCja,Stu_infobwhere(a.學號=b.學號)二、基于多表的連接查詢。

例3、列出所有學生的學習成績,要求輸出姓名、課程名稱、課程號、成績。selecta.姓名,c.課程名,b.成績,b.課程號fromstu_infoa,cjb,subjectcwhere(a.學號=b.學號)and(b.課程號=c.課程號)帶條件的多表查詢:例4、列出選修了“C801”課程且成績在90分以上的所有學生清單。(包括學號,姓名,性別,年齡,所在院系,課程號)selecta.學號,姓名,性別,年齡,所在院系,b.課程號fromstu_infoa,cjbwherea.學號=b.學號andb.課程號='C801'and成績>90

在SQL語言中,一個“Select查詢塊”可以嵌套在另一個查詢塊的Where字句中,則稱這種查詢為嵌套查詢。嵌套查詢可以用多個簡單查詢構成十分復雜的查詢,從而大大增強SQL的查詢能力。嵌套查詢處理過程:先處理內層查詢,在處理外層查詢。例1:查詢“沈香娜”同學所在班級的所有學生名單。select學號,姓名,性別,年齡,所在院系,班級名fromstu_infowhere班級名=(select班級名fromstu_infowhere姓名='沈香娜')三、嵌套查詢。例2:列出與“劉成鍇”同學在同一個系的所有女學生的名單。select學號,姓名,性別,年齡,所在院系,班級名fromstu_infowhere所在院系=(select所在院系fromstu_infowhere姓名=‘劉成鍇’)and性別=‘女’例3:列出年齡最大的學生信息(在Where字句中使用集合函數)Select*fromstu_infoWhere年齡=(selectmax(年齡)fromstu_info)三、嵌套查詢。

在嵌套查詢中,由于一個子查詢的結果往往是一個集合,因此IN子句經常被用來確定某個列值是否在內部查詢的結果集中。例1:列出學習“C801”、“C804”的學生學號、姓名、課程名和成績。Selecta.學號,姓名,b.成績,c.課程名FromStu_infoa,cjb,SubjectcWherea.學號=b.學號andb.課程號=c.課程號andc.課程號In('C801','C804')四、帶IN的子查詢

例2:列出所有選修了“高等數學”的同學學號、姓名和所在院系。Select學號,姓名,所在院系FromStu_infoWhere學號In(Select學號fromCjWhere課程號In(Select課程號fromSubjectWhere課程名='高等數學'))四、帶IN的子查詢

在SQL語言中,關鍵字Exists代表“存在”的含義,它只查找滿足條件的那些記錄,一旦找到一個匹配的記錄則馬上停止查找。例1:列出所有選修了課程“C801”的學生清單Select學號,姓名,性別,所在院系FromStu_infoWhereExists(Select*From成績表Where學號=Stu_info.學號and課程號=‘C801’)語句處理過程:首先從Stu_info取出第一條記錄,看其學號是否與內循環的相關字段(學號)相匹配,若是則將該記錄放入結果集,然后繼續取Stu_info的下一條記錄,重復這一過程,直到Stu_info表的記錄全部檢查完為止。五、帶Exists的子查詢

[UNION]關鍵字可以將兩個或多個結果表進行邏輯聯合,列出在各個結果表中返回記錄。注意:1、參加[UNION]操作的各個結果表的字段個數必須相同,對應的數據類型也必須相同。2、使用[UNION]將結果表進行邏輯聯合時,系統將會自動去掉重復的記錄。例1:顯示計算機系的學生以及性別為女的學生名單。Select*fromstu_infoWhere所在院系=‘計算機’UNIONSelect*fromstu_infoWhere性別=‘女’六、聯合查詢

例2:顯示講授了“C801”課程或者講授了“C803”課程的教師的姓名、講授課程號和班級名Select教師名,課程號,班級名fromskbWhere課程號='C801'UNIONSelect教師名,課程號,班級名fromskbWhere課程號='C803'六、聯合查詢

有些問題使用子查詢解決會更簡單,有些問題使用連接查詢可以變得簡單,因此要根據實際情況進行選擇:1、當需要頻繁地計算統計函數的值并將其用在外查詢中作比較時,應該使用子查詢。2、當SELECT中的列來自于多于一個表時,則應該使用連接查詢。

七、子查詢和連接查詢的選擇1、添加記錄。格式:Insertinto表名(字段列表)values(值列表)如:為stu_info表插入一條新記錄Insertintostu_info(學號,姓名,性別,年齡,所在院系,班級名)values(‘200203004’,‘陳動’,‘男’,20,‘計算機’,‘軟件2班’)注意:字段名和它的值必須一一對應,字符型字段的值必須用單引號引起來。八、更新操作語句。2、修改記錄。格式:Update表名Set字段名1=新值1,字段名2=新值2,……[Where條件]如:將學號為‘200203001’的同學所選修的課程號為“C801”的課程成績調整為95分。UpdateCjset成績=95where學號='200203001'and課程號='C801'思考:將所有同學的年齡都增加1,怎么編寫其SQL語言。Updatestu_infoset年齡=年齡+13、刪除記錄。格式:DeleteFrom表名[Where條件]如:刪除表stu_info中學號為‘200203004’的同學信息。deletefromstu_infowhere學號=‘200203004’思考:若要刪除該表的所有記錄,SQL語句該怎樣編寫?deletefromstu_info4、復制表。方法:insertinto新表名select*from舊表完成數據的復制。例:復制授課表SKB5、刪除表DropTable表名一、視圖簡介視圖是從一個或多個表導出的虛表。視圖不是實際上的表,它僅僅定義了有關的數據關系,只是將表中的數據按一定的關系聯系在一起,并將其顯示出來的一個“虛表”,所以視圖所對應的數據不進行實際存儲,數據庫中只存儲視圖的定義。視圖常用于集中、簡化和定制顯示數據庫中的信息。視圖象是一個過濾器,對于一個或多個基表中的數據進行篩選、引用。一般對于視圖的查詢不受任何限制,但要通過視圖來修改基表的數據則有一些限制。第六章視圖

視圖的優點:為用戶集中信息,簡化用戶的數據查詢和處理屏蔽數據庫的復雜性簡化用戶權限的管理便于數據共享可以重新組織數據以便輸出到其他應用程序中第六章視圖

二、視圖的創建。

在Microsoft

SQLServer2000中創建視圖主要有以下3種方法:使用向導、使用企業管理器、使用Transact-SQL命令。1、使用企業管理器創建視圖。(1)啟動企業管理器,展開要使用的數據庫(如Stu_db)。(2)鼠標右擊該數據庫中的【視圖】圖標,在彈出的菜單中選擇【新建視圖】命令,彈出新視圖對話框,右鍵單擊圖標窗格打開【添加表】對話框。(3)基表或視圖選擇完成之后,表books的結構出現在視圖創建/修改窗口的數據表顯示區。在表中選擇需要在視圖中顯示的列,此時在窗口下邊的視圖定義列顯示表格中和SQL語句區中也會相應地出現所選擇的列和SQL語句,如需加入限制條件、函數或計算列,可以手動在SQL語句區輸入。(4)單擊工具欄按鈕運行所定義的視圖,在視圖執行結果顯示區顯示出這個視圖的查詢結果。用戶可以發現當定義了WHERE子句時,視圖執行之后,在基表相應列的右邊會出現一個圖標,并且在視圖定義列的表格中出現相應的列名與準則,即視圖的查詢條件。2、使用Transact-SQL命令格式:

CREATEVIEWview_name[(column[,…n])[WITHENCRYPTION]ASSelect_statement[WITHCHECKOPTION]命令中的參數含義如下:WITHENCRYPTION:給系統表syscomments中視圖定義的SELECT命令加密。AS:說明視圖要完成的操作。Select_statement:定義視圖的SELECT命令。

需要特別注意,視圖中的SELECT命令不能包括INTO、ORDERBY等子句。另外,臨時表也不能在查詢中引用。WITHCHECKOPTION:強制所有通過視圖修改的數據滿足select_Statement語句中指定的選擇條件。例:使用語句創建視圖VIEW_Student2,查詢學生的學號、姓名、性別、年齡、課程號、成績等信息。CREATEVIEWVIEW_Student2ASSELECTStu_Info.學號,Stu_Info.姓名,Stu_Info.性別,Stu_Info.年齡,CJ.課程號,CJ.成績FROMStu_InfoINNERJOINCJONStu_Info.學號=CJ.學號三、使用企業管理器修改視圖視圖建立之后,由于某種原因(如基表中的列發生了改變或需要在視圖中增/刪若干列等),需要對視圖進行修改。利用企業管理器修改視圖的步驟如下:(1)展開服務器,展開數據庫。(2)單擊【視圖】圖標,在窗口右邊顯示出當前數據庫中的所有視圖。(3)右鍵單擊要修改的視圖名,在彈出的快捷菜單中選擇【設計視圖】命令,便可進入視圖設計窗口,用戶可以在這個窗口中對視圖進行修改。還有一種利用視圖屬性對話框修改視圖的方法,用鼠標雙擊要修改的視圖名,彈出視圖屬性對話框,在這個對話框中顯示出定義視圖的Transact-SQL命令,用戶可以直接在這個對話框中修改。四、視圖的使用對于視圖的使用主要包括視圖的檢索、通過視圖對基表進行插入、修改、刪除行的操作。對于視圖的檢索幾乎沒有限制,但是對通過視圖實現表的插入、修改、刪除操作則有一定的限制條件。視圖檢索

視圖定義之后,用戶便可以像查詢基本表一樣查詢視圖。視圖的查詢總是轉換為對它所依賴的基表的等價查詢。利用Transact-SQL的SELECT命令和企業管理器都可以對視圖查詢,其使用方法與基本表的查詢完全一樣,這里不再贅述。例:檢索視圖VIEW_Student2中學號為‘200203001’的學生信息。五、利用視圖更新表數據視圖也可以使用INSERT命令插入行,當執行更新操作命令時,實際上是向視圖所引用的基表中執行了相應的更新操作。視圖更新命令與基本表中使用的命令格式完全一樣。注意:如果視圖中有下面所述屬性,則插入、更新或刪除基表將失敗。更新所影響的列來自于兩個以上的表。視圖的列是從集合函數派生的。視圖中的SElECT命令包含GROUPBY子句或DISTINCT選項。視圖的列是從常量或表達式派生的。

例1:在視圖View_Student2中插入一條記錄。InsertintoView_Student2(學號,姓名,性別,年齡)values(‘200203005’,‘陳動’,‘男’,20)執行語句后,我們可以在表Stu_info中看到結果。

六、刪除視圖視圖創建后,隨時都可以刪除。刪除操作很簡單,通過企業管理器或DROPVIEW命令都可以完成。利用企業管理器刪除視圖操作步驟如下:(1)在當前數據庫中單擊視圖圖標。(2)在右邊視圖列表窗口內單擊需刪除的視圖。(3)單擊工具欄上的刪除圖標,彈出刪除視圖對話框,如圖5-24所示。(4)單擊【全部除去】按鈕,將選中的視圖刪除。

利用DROPVIEW命令刪除視圖語法格式為DROPVIEW{view}[,...n]DROPVIEW命令可以刪除多個視圖,各視圖名之間用逗號分隔。視圖刪除后,在系統表中存儲的關于視圖的信息也會被隨之刪除,對視圖的權限同樣被刪除。刪除視圖View_Student2DropViewView_Student2一、什么是存儲過程?應用程序與SQLServer數據庫交互執行某些操作有兩種方法:一種是存儲在本地的應用程序記錄操作命令,應用程序向SQLServer發送每一個命令,并對返回的數據進行處理;另一種是在SQLServer中定義某個過程,其中記錄了一系列的操作,每次應用程序只需調用該過程就可完成該操作。這種在SQLServer中定義的過程被稱為存儲過程。所以,存儲過程就是T-SQL語句的預編譯集合,是一組T-SQL語句構成的代碼塊。第七章SQL的存儲過程。

二、存儲過程的功能SQLServer中的存儲過程類似于編程語言中的過程和函數,它具有以下功能:接受輸入參數并返回多個輸出值。包含T-SQL語句用以完成特定的SQLServer操作。返回一個指示成功與否及失敗原因的狀態代碼給調用它的過程。

第七章SQL的存儲過程。

三、存儲過程的優點存儲過程有以下幾個優點:允許模塊化編程,增強代碼的重用性和共享性使用存儲過程可以加快運行速度使用存儲過程可以減少網絡流量。存儲過程可以作為安全性機制。四、存儲過程的種類存儲過程有以下幾種類型:系統存儲過程、用戶存儲過程、臨時存儲過程、擴展存儲過程、遠程存儲過程。

第七章SQL的存儲過程。

系統存儲過程是由系統提供的過程,可以作為命令直接執行。系統存儲過程存儲在master數據庫中,其前綴為sp_。系統存儲過程可以在任意一個數據庫中執行。用戶存儲過程是創建在用戶數據庫中的存儲過程。其名稱前面一般不加sp_前綴。主要在應用程序中使用,以完成特定的任務。臨時存儲過程屬于用戶存儲過程。如果用戶存儲過程前面加上符號“#”,則該存儲過程稱為局部臨時存儲過程,只能在一個用戶會話中使用;如果用戶存儲過程前面加上符號“##”,則該過程稱為全局存儲過程,可以在所有用戶會話中使用。擴展存儲過程是在SQLServer環境之外執行的動態鏈接庫DLL,其前綴為xp_。盡管這些動態鏈接庫在SQLServer環境之外,但它們可以被加載到SQLServer系統中,并且按照存儲過程的方式執行。遠程存儲過程是指從遠程服務器上調用的存儲過程,或者是從連接到另外一個服務器上的客戶機上調用的存儲過程。

在SQLServer中創建存儲過程主要有以下3種方法:使用向導、使用企業管理器、使用Transact-SQL命令。使用企業管理器創建存儲過程1、利用企業管理器創建存儲過程步驟如下:(1)展開要在其中創建存儲過程的數據庫。(2)右擊【存儲過程】圖標,在快捷菜單中選擇【新建存儲過程...】命令,打開新建存儲過程對話框。(3)在新建存儲過程對話框的文本框中書寫存儲過程定義。【檢查語法】按鈕用于檢查存儲過程語法的正確性。定義完存儲過程后,單擊【確定】按鈕保存存儲過程。注意:[OWNER].[PROCEDURENAME]指存儲過程的所有者和名字,一般所有者可以省略,但名字不能省。例1:創建一個簡單的存儲過程,查詢學生的相關信息。

四、創建存儲過程2、利用語句創建存儲過程簡單的語句格式:CreateProc存儲過程名asSQL語句。例1:創建一個簡單的存儲過程,查詢學生的相關信息。CREATEPROCEDUREStu_info_Proc2AsSELECT*FROMStu_info

第四章SQL的存儲過程。

1、使用企業管理器進行修改修改存儲過程只需在相應數據庫的存儲過程對象項中找到要修改的存儲過程,雙擊存儲過程打開存儲過程屬性窗口,在窗口中直接進行修改,完成后單擊【確定】按鈕。2、使用查詢分析器進行修改打開查詢分析器,按F8鍵(或單擊工具欄上的對象瀏覽器按鈕),在對象瀏覽器窗口中,打開存儲過程所在的數據庫,打開[存儲過程]文件夾,右擊要修改的存儲過程名(如test),在彈出的菜單中選擇【編輯】(如圖7-13所示),則存儲過程出現在查詢分析器的編輯窗口中,修改完畢保存即可。

五、存儲過程的修改。

簡單存儲過程的執行:Exec存儲過程名

六、存儲過程的執行。1、使用企業管理器刪除存儲過程展開數據庫后,單擊存儲過程圖標,在右邊窗口中出現的存儲過程中選擇要刪除的過程,單擊右鍵,在彈出的快捷菜單中單擊【刪除】選項,即將存儲過程刪除。2、使用T-SQL命令刪除存儲過程利用DROPPROCEDURE命令刪除存儲過程,其語法結構如下:DROPPROCEDURE{procedure}[,...n]例:刪除存儲過程Stu_info_Proc2七、刪除存儲過程。

8.1數據庫技術概述

8.2數據模型

8.3數據庫設計

第八章:補充知識(數據庫技術概述)8.1數據庫技術概述8.1.1數據庫基本概念1、數據(Data)

數據是描述現實世界事物的符號記錄,是用物理符號記錄的可以鑒別的信息。2、數據庫(DataBase,簡記為DB)數據庫是長期存儲在計算機內、有組織的、可共享的數據集合。這種集合具有如下特點:最小的冗余度應用程序對數據資源共享數據獨立性高統一管理和控制3、數據庫管理系統(DataBaseManagementSystem,簡記為DBMS)數據庫管理系統的基本功能數據庫管理系統是位于用戶與操作系統之間的一個數據管理軟件,它的基本功能包括以下幾個方面:數據定義功能用戶通過數據定義語言(DDL,DataDefinitionLanguage)它可以方便地對數據庫中的數據對象進行定義。數據操縱功能用戶可以使用數據操縱語言(DML,DataManipulationLanguage)操縱數據,實現對數據的基本操作。如查詢、插入、刪除和修改。數據庫的運行管理功能數據庫在建立、運行和維護時由數據庫管理系統統一管理和控制,以保證數據的安全性、完整性,對并發操作的控制以及發生故障后的系統恢復等。數據庫的建立和維護功能它包括數據庫初始數據的輸入、轉換功能,數據庫的轉儲、恢復功能,數據庫的重組織功能和性能監視、分析功能等。數據庫系統(DataBaseSystem,簡記為DBS)

數據庫系統一般由數據庫、操作系統、數據庫管理系統(及其開發工具)、應用系統、數據庫管理員(DBA)和用戶構成。4、數據庫系統8.1.2數據庫技術的產生與發展

數據管理技術經歷了如下三個階段:人工管理階段、文件系統階段和數據庫系統階段。1、人工管理階段這一階段是指20世紀50年代中期以前,計算機主要用于科學計算,當時的計算機硬件狀況是:外存只有磁帶、卡片、紙帶,沒有磁盤等直接存取的存儲設備;軟件狀況是:沒有操作系統,沒有管理數據的軟件,數據處理方式是批處理。人工管理階段的特點是:數據不保存、數據無專門軟件進行管理、數據不共享、數據不具有獨立性、數據無結構。2、文件系統階段這一階段從20世紀50年代后期到60年代中期,計算機硬件和軟件都有了一定的發展。計算機不僅用于科學計算,還大量用于管理。這時硬件方面已經有了磁盤、磁鼓等直接存取的存儲設備。在軟件方面,操作系統中已經有了數據管理軟件,一般稱為文件系統。處理方式上不僅有了文件批處理,而且能夠聯機實時處理

文件階段的數據管理特點是:數據可以長期保存、由文件系統管理數據、程序與數據有一定的獨立性、數據共享性差、數據獨立性差、記錄內部有結構。3、數據庫系統階段從20世紀60年代后期以來,計算機硬件和軟件技術得到了飛速發展,為了解決多用戶、多應用共享數據,使數據為盡可能多的應用服務,文件系統已不能滿足應用需求,一種新的數據管理技術--數據庫技術應運而生。數據庫系統階段具有以下的特點:數據結構化在描述數據時不僅描述數據本身,還描述數據之間的聯系。數據共享性高、冗余度小、易擴充數據可以被多個應用共享。這不僅大大減小了數據的冗余度、節約存儲空間、減少存取時間,而且可以避免數據之間的不相容性和不一致性。數據獨立性高數據獨立性包括物理獨立性和邏輯獨立性。數據的物理獨立性是指當數據的物理存儲改變時,應用程序不用改變。數據的邏輯獨立性是指當數據的邏輯結構改變時,用戶應用程序不用改變。統一的數據管理和控制數據庫對系統中的用戶是共享資源。計算機的共享一般是并發的,即多個用戶可以同時存取數據庫中的數據,甚至可以同時存取數據庫中同一個數據。因此,數據庫管理系統必須提供以下幾個方面的數據控制保護功能。數據的安全性(security)保護數據的完整性(integrity)控制數據庫恢復(recovery)并發(concurrency)控制8.1.3數據庫系統的體系結構1、集中式系統DBMS和應用程序以及與用戶終端進行通信的軟件等都運行在一臺宿主計算機上,所有的數據處理都是在宿主計算機中進行。宿主計算機一般是大型機、中型機或小型機。應用程序和DBMS之間通過操作系統管理的共享內存或應用任務區來進行通信,DBMS利用操作系統提供的服務來訪問數據庫。終端通常是非智能的,本身沒有處理能力。集中系統的主要優點是:具有集中的安全控制,以及處理大量數據和支持大量并發用戶的能力。集中系統的主要缺點是:購買和維持這樣的系統一次性投資太大,并且不適合分布處理。2、個人計算機系統與大型系統不同,通常個人計算機(微機)上的DBMS功能和數據庫應用功能是結合在一個應用程序中的,這類DBMS(如FoxPro、Acssce)的功能靈活,系統結構簡潔,運行速度快,但這類DBMS的數據共享性、安全性、完整性等控制功能比較薄弱。3、客戶/服務器系統

溫馨提示

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

評論

0/150

提交評論