SQL-電子工業(yè)-耿文蘭.ppt
《SQL-電子工業(yè)-耿文蘭.ppt》由會員分享,可在線閱讀,更多相關《SQL-電子工業(yè)-耿文蘭.ppt(564頁珍藏版)》請在裝配圖網(wǎng)上搜索。
SQLServer2000數(shù)據(jù)庫管理與開發(fā),電子工業(yè)出版社,課程要求,考試成績評定考勤及紀律20%課堂測驗及作業(yè)30%期末考試50%本課程學習技巧加強記憶充分思考加強上機實踐理論聯(lián)系實際,2,3,目錄,第01章SQLServer2000概述第02章數(shù)據(jù)庫管理第03章表及其應用第04章數(shù)據(jù)的查詢與更新第05章使用視圖和索引第06章Transact-SQL程序設計第07章使用規(guī)則、默認值與觸發(fā)器第08章SQLServer中的安全管理第09章備份和還原第10章不同數(shù)據(jù)格式的轉換,第01章SQLServer2000概述,1.1SQLServer2000簡介1.2SQLServer2000的安裝1.3啟動和停止SQLServer服務1.4注冊服務器和創(chuàng)建服務器組1.5SQLServer2000管理工具簡介,總結,5,回憶以前學習的知識,生活中遇到的大量數(shù)據(jù),需要解決哪些問題?數(shù)據(jù)保存、查詢、排序、篩選、刪除在Execl中學習的相關內(nèi)容?數(shù)據(jù)清單、自動篩選和高級篩選、分類匯總、數(shù)據(jù)透視圖和透視表Execl數(shù)據(jù)庫,6,計算機化數(shù)據(jù)庫的好處,數(shù)據(jù)結構化數(shù)據(jù)能夠共享數(shù)據(jù)冗余度小,易擴充數(shù)據(jù)與程序的獨立性較高對數(shù)據(jù)實行集中統(tǒng)一控制可以建立和遵循某些標準便于維護數(shù)據(jù)完整性能夠實現(xiàn)數(shù)據(jù)的安全性,7,數(shù)據(jù)庫的發(fā)展史,萌芽階段文件系統(tǒng)使用磁盤文件來存儲數(shù)據(jù)初級階段第一代數(shù)據(jù)庫出現(xiàn)了網(wǎng)狀模型、層次模型的數(shù)據(jù)庫中級階段第二代數(shù)據(jù)庫關系型數(shù)據(jù)庫和結構化查詢語言高級階段新一代數(shù)據(jù)庫“關系-對象”型數(shù)據(jù)庫,8,SQLServer2000,MSSQLServer2000是一個大型的關系型數(shù)據(jù)庫系統(tǒng)是一個多層的客戶/服務器數(shù)據(jù)庫系統(tǒng)采用請求-應答工作方式,9,SQLServer2000的版本,企業(yè)版最大支持32個CPU、64G內(nèi)存的多處理器系統(tǒng),適合大規(guī)模商業(yè)應用標準版最大支持4個CPU、2G內(nèi)存的多處理器系統(tǒng),適合中小規(guī)模商業(yè)應用個人版支持兩個CPU的處理器系統(tǒng),適合個人或小型工作組的實驗應用開發(fā)版適合于開發(fā)人員應用評估版適合于開發(fā)人員體驗SQLServer2000的新功能,安裝SQLServer2000企業(yè)版,11,各版本關系,無縫遷移,100%的兼容性,12,SQLServer2000的新特性,與Internet集成可伸縮性和易用性企業(yè)級數(shù)據(jù)庫功能易于安裝、部署和使用數(shù)據(jù)倉庫,13,安裝SQLServer20004-1,以MicrosoftSQLServer2000Personal版本為例1.插入光盤SQLServer2000自動安裝或雙擊光盤上的AUTORUN.EXE文件2.點擊【安裝SQLServer2000組件(C)】3.點擊【安裝數(shù)據(jù)庫服務器(S)】,14,安裝SQLServer20004-2,4.選中【本地計算機】選項。5.選擇【創(chuàng)建新的SQLSERVER實例】項,15,安裝SQLServer20004-3,6.在姓名后輸入:“王斌”,在公司名稱后輸入:“*計算機工程有限公司”7.接受許可協(xié)議8.選中【服務器和客戶端工具S】,16,安裝SQLServer20004-4,9.選中【典型】安裝方式10.選擇【使用本地系統(tǒng)帳戶】11.選擇【混合模式(Windows身份驗證和SQL身份驗證)】,輸入用戶名“sa”和密碼“sa”12.至此安裝SQLSERVER2000全部結束,17,停止和啟動SQLServer服務,在對SQLServer數(shù)據(jù)庫進行任何操作之前,必須啟動本地或遠程SQLServer服務器使用服務管理器使用命令服務管理運行:NetStartmssqlserver暫停:Netpausemssqlserver繼續(xù):Netcontinuemssqlserver停止:Netstopmssqlserver,18,注冊一個SQLServer4-1,在SQLServer企業(yè)管理器的菜單中選擇操作,從菜單中選擇【新建SQLServer注冊】,進入到【歡迎使用注冊SQLServer向導】對話框,19,注冊一個SQLServer4-2,選擇復選框中你要使用的一個或多個服務器。選擇使用的身份認證方式SQLServer身份認證,20,注冊一個SQLServer4-3,在SQLServer身份認證對話框中輸入登錄名和密碼選擇服務器組或創(chuàng)建服務器組,21,注冊一個SQLServer4-4,整個注冊過程完成,22,管理工具簡介,服務管理器服務啟動、暫停和停止管理企業(yè)管理器可以完成幾乎所有管理工作查詢分析器允許輸入、執(zhí)行SQL語句并返回結果客戶端網(wǎng)絡實用工具客戶端數(shù)據(jù)庫連接工具事件探查器數(shù)據(jù)庫事件管理工具數(shù)據(jù)導入/導出工具用于數(shù)據(jù)的傳遞與轉換,結構化查詢語言SQLStructuredQueryLanguageSQL是RDBMS的標準語言,遵循ANSI(美國國家標準協(xié)會)所制定的標準。SQL分類數(shù)據(jù)查詢語言(DQL):Select*FROMABC數(shù)據(jù)操作語言(DML):UpdateABCSETA=“CH”數(shù)據(jù)控制語言(DCL):RevokeCreateTableFROMU1數(shù)據(jù)定義語言(DDL):CreateTableABC通用命令語言(CCL):DeclareCSCursorFor,SQL的分類,24,第01章總結,掌握概念關系數(shù)據(jù)庫SQLServer2000的版本兩種身份驗證模式管理工具的使用服務管理器企業(yè)管理器查詢分析器,25,早期數(shù)據(jù)保存方式計算機文件,可以以不同的文件格式進行數(shù)據(jù)保存今天人們依然采用文件方式保存一些數(shù)據(jù),26,數(shù)據(jù)庫模型,模型:事物抽象特征或者過程的描述數(shù)據(jù)模型描述用來存儲數(shù)據(jù)的容器在該容器中存儲和檢索數(shù)據(jù)的過程數(shù)據(jù)庫模型分類層次模型網(wǎng)狀模型關系模型,27,75,3,86,2,98,1,成績,學號,劉三陽,3,李東,2,張明,1,姓名,學號,關系模型,記錄和記錄之間通過屬性之間的關系來進行連接保證數(shù)據(jù)獨立性,并形成數(shù)據(jù)集之間的關系,28,基于關系模型的數(shù)據(jù)庫,目前較流行的關系型數(shù)據(jù)庫桌面數(shù)據(jù)庫MSAccess大型網(wǎng)絡數(shù)據(jù)庫MSSQLServer、Oracle和Sybase、DB2等,29,請求-應答工作方式,數(shù)據(jù)庫服務器,響應和提供數(shù)據(jù),應用程序,數(shù)據(jù)庫,操作和查詢,30,SQLServer實例,安裝SQLServer2000數(shù)據(jù)服務器就是安裝SQLServer2000數(shù)據(jù)庫引擎實例一臺計算機上可安裝多個SQLServer數(shù)據(jù)庫引擎實例在單臺計算機上可以運行的實例數(shù)目取決于可用資源,SQLServer2000最多支持16個實例SQLServer實例類型默認實例一臺計算機上只能有一個默認實例默認實例可以是SQLServer的任何版本命名實例,31,SQLServer服務SQLServer代理服務MSDTC服務,每個SQLServer實例都有一個SQLServer服務,默認實例名為MSSQLServer,服務管理器,32,服務管理器的啟動方法,托盤圖標開始菜單程序組執(zhí)行文件Sqlmangr.exe,33,企業(yè)管理器,在服務器節(jié)點上指示燈是綠色的,表示服務器連接成功,34,登錄查詢分析器,35,使用查詢分析器,第02章數(shù)據(jù)庫管理,2.1數(shù)據(jù)庫系統(tǒng)概述2.2SQLServer數(shù)據(jù)庫概念2.3系統(tǒng)數(shù)據(jù)庫2.4創(chuàng)建用戶數(shù)據(jù)庫2.5查看數(shù)據(jù)庫信息2.6設置數(shù)據(jù)庫選項2.7修改數(shù)據(jù)庫2.8刪除數(shù)據(jù)庫2.9數(shù)據(jù)庫的分離與附加,總結,37,數(shù)據(jù)庫概述,數(shù)據(jù)庫就是按照一定的組織結構存儲在計算機存儲介質(zhì)上的相關數(shù)據(jù)的集合數(shù)據(jù)庫具有以下的特點結構化數(shù)據(jù)庫文件及文件內(nèi)部數(shù)據(jù)都有一定的結構獨立性數(shù)據(jù)的邏輯組織與物理存儲方式無關數(shù)據(jù)共享,減少冗余數(shù)據(jù)集中存儲,統(tǒng)一管理安全性與完整性保證數(shù)據(jù)的正確性和可靠性,38,什么是DBMS?,數(shù)據(jù)庫管理系統(tǒng)是用來幫助用戶建立、使用和管理數(shù)據(jù)庫的軟件系統(tǒng),簡稱DBMS數(shù)據(jù)庫管理系統(tǒng)的功能建立:建立數(shù)據(jù)庫結構,并存儲用戶數(shù)據(jù)操作:插入、修改、刪除、檢索、統(tǒng)計匯總、打印等其他:數(shù)據(jù)安全性、數(shù)據(jù)完整性、并發(fā)控制(在網(wǎng)絡環(huán)境下多個用戶同時對同一數(shù)據(jù)庫中的數(shù)據(jù)進行存取的操作)等管理,39,數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)庫系統(tǒng)狹義地講是由數(shù)據(jù)庫管理系統(tǒng)和用戶構成廣義地講是由計算機硬件、操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)以及在它支持下建立起來的數(shù)據(jù)庫、應用程序、用戶和維護人員組成的一個整體,40,數(shù)據(jù)庫系統(tǒng)的組成,計算機基本系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫物理數(shù)據(jù)庫有關應用所需要的工作數(shù)據(jù)的集合,是數(shù)據(jù)庫的主體描述數(shù)據(jù)庫關于各級數(shù)據(jù)結構的描述數(shù)據(jù),通常由一個數(shù)據(jù)詞典系統(tǒng)管理,41,SQLServer數(shù)據(jù)庫,SQLServer2000是一種采用SQL語言的關系數(shù)據(jù)庫管理系統(tǒng),是以文件的形式存儲在磁盤上的(以文件組形式進行組織管理),數(shù)據(jù)庫文件(使用便于管理的規(guī)則命名)根據(jù)作用不同分為三種,42,采用多個數(shù)據(jù)庫文件來存儲數(shù)據(jù)的優(yōu)點,數(shù)據(jù)庫文件可以不斷擴充而不受操作系統(tǒng)文件大小的限制可以將數(shù)據(jù)庫文件存儲在不同的硬盤中,這樣可以同時對幾個硬盤做數(shù)據(jù)存取提高了數(shù)據(jù)處理的效率,對于服務器型的計算機尤為有用,43,數(shù)據(jù)庫對象,數(shù)據(jù)庫中的數(shù)據(jù)按不同形式組織在一起,構成了不同的數(shù)據(jù)庫對象數(shù)據(jù)庫對象在磁盤上沒有對應的文件SQLServer2000中有以下數(shù)據(jù)庫對象:表、視圖、存儲過程、觸發(fā)器、用戶自定義數(shù)據(jù)類型、用戶自定義函數(shù)、索引、規(guī)則、默認、約束等,44,數(shù)據(jù)庫文件組,將多個數(shù)據(jù)文件存放在不同的磁盤上并把多個數(shù)據(jù)文件組成一個或多個文件組數(shù)據(jù)庫根據(jù)組內(nèi)數(shù)據(jù)文件的大小,按比例地寫入組內(nèi)所有數(shù)據(jù)文件,使多個磁盤同時并行工作、提高讀寫速度在一個數(shù)據(jù)庫中可以創(chuàng)建多個文件組,而一個數(shù)據(jù)文件只能屬于一個文件組事務日志文件不能屬于任何文件組一個數(shù)據(jù)文件或文件組只被一個數(shù)據(jù)庫使用,45,數(shù)據(jù)庫文件組示例,46,系統(tǒng)數(shù)據(jù)庫2-1,系統(tǒng)數(shù)據(jù)庫,示例數(shù)據(jù)庫,47,系統(tǒng)數(shù)據(jù)庫2-2,臨時數(shù)據(jù)庫,臨時數(shù)據(jù)可被自動刪除,不需要特殊權限,系統(tǒng)中僅有一個,空間不足可自動擴展,系統(tǒng)數(shù)據(jù)庫,用戶數(shù)據(jù)庫,示例數(shù)據(jù)庫,主控數(shù)據(jù)庫,用于管理其他數(shù)據(jù)庫和保存SQLServer系統(tǒng)信息,模板數(shù)據(jù)庫,當創(chuàng)建一個用戶數(shù)據(jù)庫時其內(nèi)容自動復制到新數(shù)據(jù)庫中,來存儲計劃信息以及與備份和恢復相關的信息,SQLServer代理使用其安排報警、作業(yè)并記錄操作員,48,系統(tǒng)表,SQLServer2000中的每個數(shù)據(jù)庫都包含系統(tǒng)表系統(tǒng)表在創(chuàng)建數(shù)據(jù)庫時自動產(chǎn)生系統(tǒng)表用來記錄SQLServer組件所需的數(shù)據(jù)SQLServer的操作能否成功,取決于系統(tǒng)表中信息的完整性任何用戶都不應直接修改系統(tǒng)表,49,master數(shù)據(jù)庫中的系統(tǒng)表,50,常用數(shù)據(jù)庫系統(tǒng)表,51,創(chuàng)建用戶數(shù)據(jù)庫,一個數(shù)據(jù)庫是包含表、視圖、存儲過程及觸發(fā)器等數(shù)據(jù)庫對象的容器,在數(shù)據(jù)庫中建立的各種數(shù)據(jù)庫對象都保存在數(shù)據(jù)庫文件中創(chuàng)建數(shù)據(jù)庫之前應考慮好數(shù)據(jù)庫的擁有者、數(shù)據(jù)庫的初始容量、最大容量、增長量及數(shù)據(jù)庫文件存放的路徑等因素要創(chuàng)建數(shù)據(jù)庫,用戶必須具有相應的權限可以使用企業(yè)管理器、CREATEDATABASE語句和向導三種方法,52,使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)文件的邏輯名,數(shù)據(jù)文件的物理名,文件組,日志文件不屬于任何文件組,53,使用語句創(chuàng)建數(shù)據(jù)庫,CREATEDATABASE數(shù)據(jù)庫名ONPRIMARY(NAME=數(shù)據(jù)文件的邏輯名稱,FILENAME=數(shù)據(jù)文件的物理名稱,SIZE=數(shù)據(jù)文件的初始大小,MAXSIZE=數(shù)據(jù)文件的最大容量,FILEGROWTH=數(shù)據(jù)文件的增長量),nLOGON(NAME=事務日志文件的邏輯名稱,FILENAME=事務日志文件的物理名稱,SIZE=事務日志文件的初始大小,MAXSIZE=事務日志文件的最大容量,FILEGROWTH=事務日志文件的增長量),n,例2.1,示例,54,使用向導創(chuàng)建數(shù)據(jù)庫,完成后會詢問“是否馬上為新創(chuàng)建的數(shù)據(jù)庫創(chuàng)建維護計劃”。維護計劃就是設置何時自動定期對數(shù)據(jù)庫進行維護。,55,查看數(shù)據(jù)庫信息,數(shù)據(jù)庫信息主要包括三方面基本信息維護信息空間使用情況使用企業(yè)管理器查看數(shù)據(jù)庫信息演示使用企業(yè)管理器查看數(shù)據(jù)庫信息使用sp_helpdb查看數(shù)據(jù)庫信息語法:executesp_helpdb數(shù)據(jù)庫名若省略數(shù)據(jù)庫名,與“select*fromsysdatabases”語句的功能完全相同,56,使用語句查看數(shù)據(jù)庫信息,使用sp_databases查看所有可用數(shù)據(jù)庫信息語法:EXECUTEsp_databases使用sp_helpfile查看當前數(shù)據(jù)庫中某個文件信息語法:EXECUTEsp_helpfile文件名省略文件名則顯示當前數(shù)據(jù)庫中所有文件的信息使用sp_helpfilegroup查看當前數(shù)據(jù)庫中文件組信息語法:EXECUTEsp_helpfilegroup文件組名省略文件組名則顯示當前數(shù)據(jù)庫中所有文件組信息,用法同sp_helpfile,57,設置數(shù)據(jù)庫選項,僅允許特殊用戶訪問數(shù)據(jù)庫,數(shù)據(jù)庫只能讀取,不能修改,當最后一個用戶退出,SQLServer將自動關閉該數(shù)據(jù)庫并釋放其所占的系統(tǒng)資源,數(shù)據(jù)庫文件中未使用空間超過文件大小的25%,將自動縮小空間,縮小后數(shù)據(jù)庫文件的大小不能小于初始大小。設置只讀時,此選項無效,對數(shù)據(jù)庫訪問權限進行設置和修改,58,使用存儲過程配置數(shù)據(jù)庫特性,executesp_dboption數(shù)據(jù)庫名,選項名,選項值,設置數(shù)據(jù)庫為只讀,EXECsp_dboptionpubs,readonly,True,EXECsp_dboptionpubs,autoshrink,true,EXECsp_dboptionstudents,singleuser,true,設置數(shù)據(jù)庫為自動壓縮,設置數(shù)據(jù)庫為單用戶(例2.3),EXECsp_dboptionstudents,查看數(shù)據(jù)庫students所有設置為true的選項(例2.4),使用企業(yè)管理器修改數(shù)據(jù)庫,操作方法和創(chuàng)建數(shù)據(jù)庫大體相同注意問題在修改文件的“分配的空間”項時,所改動的值必須大于現(xiàn)有的空間值若要通過刪除未用空間來縮小數(shù)據(jù)庫文件的容量,先選擇要縮小的數(shù)據(jù)庫,然后在“收縮數(shù)據(jù)庫”對話框中改變其容量值,59,60,使用語句修改數(shù)據(jù)庫,ALTERDATABASE數(shù)據(jù)庫名ADDFILETOFILEGROUP文件組|ADDLOGFILE|REMOVEFILE邏輯文件名|ADDFILEGROUP文件組名|REMOVEFILEGROUP文件組名|MODIFYFILE|MODIFYFILEGROUP文件組名,文件組屬性,例2.5,示例,61,刪除數(shù)據(jù)庫,刪除一個數(shù)據(jù)庫會刪除該數(shù)據(jù)庫中的所有對象,從而釋放出該數(shù)據(jù)庫所占用的磁盤空間注意當數(shù)據(jù)庫處于正在使用、正在被恢復和正在參與復制三種狀態(tài)之一時,不能刪除該數(shù)據(jù)庫若要刪除的數(shù)據(jù)庫正在被其他用戶所使用,則可以先斷開服務器與該用戶的連接,然后刪除該數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫中的master、model和tempdb不能被刪除,msdb雖然可以被刪除,但刪除msdb后很多服務(比如SQLServer代理服務)將無法使用,因為這些服務在運行時會用到msdb,62,使用企業(yè)管理器刪除數(shù)據(jù)庫,63,使用語句刪除數(shù)據(jù)庫,64,關于數(shù)據(jù)庫的命令小結,創(chuàng)建數(shù)據(jù)庫,createdatabase,alterdatabase,dropdatabase,修改數(shù)據(jù)庫,刪除數(shù)據(jù)庫,sp_helpdb,查看數(shù)據(jù)庫定義信息,sp_dboption,查看/修改數(shù)據(jù)庫設置,65,數(shù)據(jù)庫與系統(tǒng)的分離,分離數(shù)據(jù)庫實際上是從SQLServer系統(tǒng)中刪除數(shù)據(jù)庫組成該數(shù)據(jù)庫的數(shù)據(jù)文件和事務日志文件依然完好無損的保存在磁盤上注意只有固定服務器角色成員sysadmin才可執(zhí)行分離操作系統(tǒng)數(shù)據(jù)庫master、model和tempdb數(shù)據(jù)庫無法從系統(tǒng)分離出去,若要執(zhí)行分離操作,必須先單擊“清除”按鈕清除連接,66,將數(shù)據(jù)庫附加到系統(tǒng),使用這些數(shù)據(jù)文件和事務日志文件可以將數(shù)據(jù)庫再附加到任何SQLServer系統(tǒng)中,而且數(shù)據(jù)庫在新系統(tǒng)中的使用狀態(tài)與它分離時的狀態(tài)完全相同附加數(shù)據(jù)庫只需要指定要附加到SQLServer系統(tǒng)的數(shù)據(jù)庫主數(shù)據(jù)文件的路徑與文件名,67,語句實現(xiàn)數(shù)據(jù)庫的分離與附加,分離sp_detach_db數(shù)據(jù)庫名稱,TRUE|FALSE附加sp_attach_db數(shù)據(jù)庫名稱,數(shù)據(jù)庫文件名,16dbname必須是唯一的filename數(shù)據(jù)庫文件的物理名稱,包括路徑最多可以指定16個文件名文件名列表至少必須包括主文件可使用此方法對現(xiàn)有數(shù)據(jù)庫制作多個副本,也可以實現(xiàn)在不同SQLServer服務器之間移動傳遞數(shù)據(jù)的目的,68,第02章總結,掌握概念數(shù)據(jù)庫數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫文件數(shù)據(jù)庫對象文件組系統(tǒng)數(shù)據(jù)庫應用技能用戶數(shù)據(jù)庫的創(chuàng)建、修改、刪除數(shù)據(jù)庫信息的查看、數(shù)據(jù)庫參數(shù)配置數(shù)據(jù)庫與系統(tǒng)的分離與附加,課后作業(yè),69,例2.1,用語句創(chuàng)建一個名為students的數(shù)據(jù)庫,包含一個主數(shù)據(jù)文件和一個事務日志文件。這兩個文件都放在d:data目錄中主數(shù)據(jù)文件邏輯文件名為studentdata,物理文件名為student_data.mdf,初始容量大小為10MB,最大容量為50MB,每次增長量為25%事務日志文件的邏輯文件名為studentlog,物理文件名為student_log.ldf,初始容量大小為10MB,最大容量為不受限制,每次增長量為2MB,CREATEDATABASEstudentsONPRIMARY(NAME=studentdata,FILENAME=d:datastudent_data.mdf,SIZE=10,MAXSIZE=50,FILEGROWTH=25%)LOGON(NAME=studentlog,FILENAME=d:datastudent_log.ldf,SIZE=10MB,MAXSIZE=unlimited,FILEGROWTH=2MB),70,示例,用T-SQL語句在C:DATA與D:DATA文件夾中創(chuàng)建一個教師信息數(shù)據(jù)庫teacher,該數(shù)據(jù)庫包含一個主數(shù)據(jù)文件邏輯名teacherdata1,物理名C:DATAtdata1.mdf,初始容量1MB,最大容量10MB,每次增長量為15%一個輔助數(shù)據(jù)文件邏輯名teacherdata2物理名D:DATAtdata2.ndf,初始容量2MB,最大容量15MB,每次增長量為2MB兩個數(shù)據(jù)文件不單獨創(chuàng)建文件組,即使用默認的PRIMARY組一個事務日志文件邏輯名teacherlog物理名D:DATAteacherlog.ldf,初始容量512KB,最大容量不受限制,每次增長量為512KB,CREATEDATABASEteacherONPRIMARY(NAME=teacherdata1,FILENAME=C:DATAtdata1.mdf,SIZE=1,MAXSIZE=10,FILEGROWTH=15%),(NAME=teacherdata2,FILENAME=D:DATAtdata2.mdf,SIZE=2,MAXSIZE=15,FILEGROWTH=2)LOGON(NAME=teacherlog,FILENAME=D:DATAteacherlog.ldf,SIZE=512kb,FILEGROWTH=512kb),SQL語句在書寫時不區(qū)分大小寫,一條語句可以寫在多行上,但不能將多條語句寫在一行上。,71,文件格式,(NAME=數(shù)據(jù)文件的邏輯名稱,FILENAME=數(shù)據(jù)文件的物理名稱,SIZE=數(shù)據(jù)文件的初始大小,MAXSIZE=數(shù)據(jù)文件的最大容量|unlimited,FILEGROWTH=數(shù)據(jù)文件的增長量),在修改文件的“分配的空間”項時,所改動的值必須大于現(xiàn)有的空間值文件的物理文件名不允許進行修改,所以請勿指定物理名稱,72,例2.5,用語句向students數(shù)據(jù)庫添加一個名為studentsfilegroup的文件組,并將student_dataadd.ndf添加到此文件組中,-添加文件組ALTERDATABASEstudentsADDFILEGROUPstudentsfilegroupgo-添加數(shù)據(jù)文件,并將其加入新文件組ALTERDATABASEstudentsADDFILE(NAME=studentdataadd,FILENAME=d:datastudent_dataadd.ndf)TOFILEGROUPstudentsfilegroupgo-查看數(shù)據(jù)庫信息executesp_helpdbstudentsgo,73,示例,修改students數(shù)據(jù)庫原有主數(shù)據(jù)文件studentsdata初始大小改為2MB按2MB自動增長最大容量20MB,ALTERDATABASEstudentsMODIFYFILE(NAME=studentsdata,SIZE=2,MAXSIZE=20,FILEGROWTH=2),74,CREATEDATABASEtestONPRIMARY(NAME=testdat1,FILENAME=d:datatestdat1.mdf,SIZE=1,MAXSIZE=10,FILEGROWTH=1),(NAME=testdat2,FILENAME=d:datatestdat2.ndf,SIZE=1,MAXSIZE=10,FILEGROWTH=1)LOGON(NAME=testlog1,FILENAME=d:datatestlog1.ldf,SIZE=512KB,MAXSIZE=5,FILEGROWTH=512KB),2.8,第03章表及其應用,3.1表概述3.2創(chuàng)建表3.3查看表信息3.4修改表3.5刪除表,總結,76,表的概念,表是相關聯(lián)的行列集合表是按照行列結構存儲數(shù)據(jù)的描述一個個體屬性的總和稱為一條記錄描述個體的一個屬性稱為一個字段,也稱數(shù)據(jù)項結構和數(shù)據(jù)記錄是表的兩大組成部分,77,表的示例,行/記錄,列/屬性/字段/數(shù)據(jù)項,78,創(chuàng)建表的限制,每個數(shù)據(jù)庫里最多有20億個表每個表上最多可創(chuàng)建一個聚集索引,249個非聚集索引每個表最多可以設置1,024個字段每條記錄最多占8,060B,但不包括text字段和image字段,79,創(chuàng)建表前的考慮,數(shù)據(jù)庫中要存放哪些數(shù)據(jù),這些數(shù)據(jù)如何劃分到表中確定每個表需要哪些列,即決定表所包含的屬性有哪些,80,數(shù)據(jù)類型,數(shù)據(jù)類型是用來表現(xiàn)數(shù)據(jù)的特性的,表中的每列數(shù)據(jù)必須是同一種類型的數(shù)據(jù),列的數(shù)據(jù)類型確定了該列數(shù)據(jù)的取值范圍SQLServer的數(shù)據(jù)類型包括兩類系統(tǒng)定義的數(shù)據(jù)類型用戶定義的數(shù)據(jù)類型(第07章介紹),81,數(shù)據(jù)的完整性,數(shù)據(jù)完整性,正確性,+,一致性,=,表中所有行唯一,即所有記錄都是可以區(qū)分的,表中指定列的數(shù)據(jù)具有正確的數(shù)據(jù)類型、格式和有效的數(shù)據(jù)范圍,有關聯(lián)的兩個或兩個以上表之間數(shù)據(jù)的一致性??梢酝ㄟ^建立主鍵和外鍵約束來實現(xiàn)。,82,約束,對輸入數(shù)據(jù)取值范圍和格式的限制稱為約束約束是用來保證數(shù)據(jù)完整性的六種約束主鍵約束(PRIMARYKEY)唯一約束(UNIQUE)外鍵約束(FOREIGNKEY)檢查約束(CHECK)默認值約束(DEFAULT)空值約束(NULL),83,數(shù)據(jù)庫完整性的實現(xiàn),84,創(chuàng)建表,每個表必須有一個主鍵字段同一表中不允許重名字段每個表必須描述的是一個實體的信息字段必須符合命名規(guī)則表必須是符合數(shù)據(jù)規(guī)范化要求的,85,使用企業(yè)管理器創(chuàng)建表,86,customers表,87,goods表,88,orders表,89,設置約束,主鍵約束唯一約束外鍵約束檢查約束,90,使用語句創(chuàng)建表,CREATETABLE表名(列名列屬性列約束,n|字段名AS計算列),CREATETABLECategories(CategoryIdintIDENTITY(1,1)primarykey,CategoryNamenvarchar(15)NOTNULL,DescriptionntextNULL,PictureimageNULL),例3.1,例3.2,例3.3,表級約束,練習,91,查看表信息,查看表定義信息即查看系統(tǒng)表sysobjects和syscolumns中記錄查看方法通過企業(yè)管理器的“表屬性”窗口executesp_help表名查看表約束通過企業(yè)管理器的“表屬性”窗口查看表中的數(shù)據(jù)查看表之間的依賴關系使用企業(yè)管理器:所有任務顯示相關性,92,修改表,ALTERTABLE表名ADD列名數(shù)據(jù)類型(長度)NULL|NOTNULL|ALTERCOLUMN列名數(shù)據(jù)類型(長度)NULL|NOTNULL|DROPCOLUMN字段名,n|ADDCONSTRAINT約束定義,n|DROPCONSTRAINT約束名,n|NOCHECKCONSTRAINT約束名|CHECKCONSTRAINT約束名,93,使用ADD子句添加列,ALTERTABLE表名ADD列名數(shù)據(jù)類型(長度)NULL|NOTNULL若向已存在記錄的表中添加列,新添加的列可以設置允許為空;若不允許為空,則需指定默認值,例3.4,94,使用ADDCONSTRAINT子句添加約束,ALTERTABLE表名ADDCONSTRAINT約束定義,例3.5,級聯(lián)引用完整性,95,使用DROPCONSTRAINT子句刪除約束,ALTERTABLE表名DROPCONSTRAINT約束名,例3.6,96,使用DROPCOLUMN子句刪除列,ALTERTABLE表名DROPCOLUMN字段名,在刪除列時,必須先刪除基于該列的索引和約束后,才能刪除該列,例3.7,97,使用ALTERCOLUMN子句修改列屬性,ALTERTABLE表名ALTERCOLUMN列名數(shù)據(jù)類型(長度)NULL|NOTNULL在默認狀態(tài)下,列可以被設置為空值,將一個原來允許為空值的列改為不允許為空值時,必須滿足列中沒有存放空值的記錄以及在列上沒有創(chuàng)建索引,例3.8,98,使用NOCHECKCONSTRAINT子句使約束無效,ALTERTABLE表名NOCHECKCONSTRAINT約束名|CHECKCONSTRAINT約束名該子句只對外鍵約束和檢查約束起作用,例3.9,99,刪除表,DROPTABLE表名,ndroptable語句不能刪除系統(tǒng)表如果一個表被其他表通過外鍵約束引用,那么必須先刪除設置了外鍵約束的表,或刪除其外鍵約束,100,第03章總結,掌握概念表數(shù)據(jù)類型數(shù)據(jù)完整性約束應用企業(yè)管理器操作創(chuàng)建表、修改表結構、刪除表查看表數(shù)據(jù)查看表約束命令CreatetableAltertableDroptable,課后作業(yè),上機作業(yè),101,系統(tǒng)定義的數(shù)據(jù)類型,統(tǒng)一字符型,精確小數(shù),近似數(shù)值,char(2)nchar(2),decimal(5,2),0/1以外的任何值都會作為1來處理,字符型需用引號引起來,需用引號引起來,存儲圖像等數(shù)據(jù),帶有4位小數(shù)的decimal類型的數(shù)據(jù),102,主鍵約束,每個表僅能定義一個主鍵主鍵值是表中記錄的標識主鍵列可以有一個或多個列組合而成主鍵值不可為空(null)主鍵值不能重復image和text類型的列不能做主鍵,103,唯一約束,是一列或幾列的組合用于保證非主鍵的不可重復字段可以為表定義多個唯一約束只能為表定義一個主鍵約束該列允許為空值唯一約束可以定義在允許空值的列上主鍵約束只能定義在不允許為空值的列上唯一約束不改變字段的物理存儲位置記錄按主鍵值的指定順序存儲,104,外鍵約束,設置外鍵約束字段的表稱為子表,它所引用的表稱為父表外鍵可以是單一字段,也可以是多個字段的組合外鍵所引用父表中的字段必須是創(chuàng)建了主鍵約束或唯一約束的列子表中外鍵字段添加的新數(shù)據(jù),必須在父表存在子表中引用父表數(shù)據(jù)的記錄未刪除,父表中被引用數(shù)據(jù)不能被刪除,105,外鍵約束示例,子表,記錄,如果數(shù)據(jù)項不在父表中,添加,父表,如果導致子表產(chǎn)生孤立記錄,刪除,106,檢查約束,用指定的條件檢查限制輸入數(shù)據(jù)的取值范圍是否正確用于保證數(shù)據(jù)的參照完整性和域完整性如:成績必須0,107,默認值約束,默認值約束是給某個字段綁定一個默認的初始值輸入記錄時若沒有給出該字段的數(shù)據(jù),則自動填入默認值以保證數(shù)據(jù)的域完整性對設置了默認值約束的字段若輸入數(shù)據(jù)時則以輸入的數(shù)據(jù)為準可為常量、內(nèi)置函數(shù)或表達式,108,空值約束,空值NULL是不知道或不能確定的特殊數(shù)據(jù)不等同于數(shù)值0和字符的空格空值約束就是設置某個字段是否允許為空用以保證數(shù)據(jù)的實體完整性和域完整性,109,數(shù)據(jù)規(guī)范化,從關系型數(shù)據(jù)庫的表中除去冗余數(shù)據(jù)的過程規(guī)范化是得到高效的關系型數(shù)據(jù)庫表的邏輯結構最好和最容易的方法規(guī)范化數(shù)據(jù)時,應執(zhí)行以下操作將數(shù)據(jù)庫的結構精簡為最簡單的形式從表中刪除冗余列標識所有依賴于其他數(shù)據(jù)的數(shù)據(jù),110,范式,構造數(shù)據(jù)庫必須遵循一定的規(guī)則,在關系數(shù)據(jù)庫中,這種規(guī)則就是范式公認的規(guī)范化等級有五種1NF2NF3NF等只要符合第三范式的數(shù)據(jù)就可以稱為完全規(guī)范化的數(shù)據(jù),111,1NF,所有屬性必須只有一個值修正方法示例:運動隊(標識、隊名、隊員),112,2NF,任何非主屬性都必須依賴于完整的主屬性特別適用于復合主屬性的情況修正方法示例:產(chǎn)品供應情況(供應商編號、產(chǎn)品編號、購買價格、供應商名稱),113,3NF,非主屬性不能依賴于另一非主屬性修正方法示例:城市(城市標識、城市名稱、所在省份、省長姓名),114,列屬性,數(shù)據(jù)類型(長度)NULL|NOTNULLIDENTITY(初始值,步長值),115,列約束,CONSTRAINT約束名PRIMARYKEY(列名)CONSTRAINT約束名UNIQUE(列名)CONSTRAINT約束名FOREIGNKEY(外鍵列)REFERENCES引用表名(引用列)ONDELETECASCADE|NOACTIONONUPDATECASCADE|NOACTIONCONSTRAINT約束名CHECK(檢查表達式)CONSTRAINT約束名DEFAULT默認值,116,列約束說明,約束名為以后修改管理時使用,省略為系統(tǒng)默認的約束名字段約束也可以在創(chuàng)建表結構以后另外單獨設置定義字段時同時定義所綁定的約束時,可以省略列名,117,計算列示例,createtableorders1(訂單號intidentity(1,1)primarykey,貨品名稱varchar(20)notnullreferencesgoods(貨品名稱),客戶編號intforeignkeyreferencescustomers(客戶編號),數(shù)量intnotnullcheck(數(shù)量0),價格money,總金額as數(shù)量*價格,訂貨日期datetimedefaultgetdate(),118,例3.1,用語句創(chuàng)建customers表,記錄客戶的基本信息表中包含如下內(nèi)容:客戶編號、姓名、地址、電話和出生日期設置客戶編號字段為主鍵約束,電話字段為唯一約束,姓名字段不能為空,CREATETABLEcustomers(客戶編號intPRIMARYKEY,姓名varchar(20)NOTNULL,地址varchar(50),電話varchar(20)UNIQUE,出生日期datetime),119,例3.2,用語句創(chuàng)建goods表,記錄貨品的基本信息表中包含如下內(nèi)容:貨品名稱、庫存量、供應商、狀態(tài)和價格設置貨品名稱字段為主鍵約束設置狀態(tài)字段為bit類型,CREATETABLEgoods(貨品名稱varchar(20)PRIMARYKEY,庫存量int,供應商varchar(50),狀態(tài)bitDEFAULT0,價格money),120,例3.3,用語句創(chuàng)建orders表,記錄客戶訂購貨品的訂單信息表中包含內(nèi)容:訂單號、貨品名稱、客戶編號、數(shù)量、總金額和訂貨日期設置訂單號字段為自動編號,初始值為1,遞增量為1,同時設置為主鍵客戶編號字段為外鍵約束數(shù)量字段檢查約束為數(shù)量大于0,同時不能為空訂貨日期默認值,為系統(tǒng)日期,CREATETABLEorders(訂單號intIDENTITY(1,1)PRIMARYKEY,貨品名稱varchar(20)NOTNULLREFERENCESgoods(貨品名稱),客戶編號intFOREIGNKEYREFERENCEScustomers(客戶編號),數(shù)量intNOTNULLCHECK(數(shù)量0),總金額money,訂貨日期datetimeDEFAULTgetdate(),121,約束的兩種定義方式,列級約束列約束內(nèi)嵌在列的聲明中定義,作為列定義的一部分只作用于此列本身放在列名和數(shù)據(jù)類型之后的位置,即逗號之前表級約束表級約束作為表定義的一部分,可以作用于多個列,且必須將多列約束定義為單獨的表元素作為獨立的由逗號分隔的語句數(shù)據(jù)庫服務器以同樣的方式處理列級和表級約束,涉及到多列的約束必須作為表級約束處理,122,列級約束和表級約束,CREATETABLEorders(訂單號intIDENTITY(1,1),貨品名稱varchar(20)NOTNULLREFERENCESgoods(貨品名稱),客戶編號intFOREIGNKEYREFERENCEScustomers(客戶編號),數(shù)量intNOTNULLCHECK(數(shù)量0),總金額money,訂貨日期datetimeDEFAULTgetdate(),CONSTRAINTpk_ordersPRIMARYKEY(訂單號),123,圖書信息管理數(shù)據(jù)庫,124,創(chuàng)建借閱信息表,Createtable借閱信息表(圖書編號char(10)notnullforeignkeyreferences圖書信息表(圖書編號),讀者編號char(8)notnullreferences讀者信息表(讀者編號,借閱時間datetimeconstraintdf_datedefaultgetdate(),歸還時間datetimenull,是否超期bitdefault0,超期罰款moneynull,constraintpk_jieyueprimarykey(圖書編號,讀者編號),列級約束,表級約束,125,設置主鍵約束,126,設置唯一約束,127,設置外鍵約束,級聯(lián)引用完整性,128,設置檢查約束,129,例3.4,向customers表中添加“電子郵件”列,其數(shù)據(jù)類型為varchar,長度為50,不允許空,USEmarketALTERTABLEcustomersADD電子郵件varchar(50)NOTNULLDEFAULT,130,例3.5,將customers表中“電子郵件”列的默認值設置為cqdx,USEmarketALTERTABLEcustomersADDCONSTRAINTdef_eDEFAULTcqdxFOR電子郵件,131,DEFAULT約束,132,CHECK約束,133,PRIMARYKEY約束,134,UNIQUE約束,135,FOREIGNKEY約束,136,級聯(lián)引用完整性,可以在定義FOREIGNKEY約束時的REFERENCES子句中使用ONDELETE和ONUPDATE子句,這些子句用于指定CASCADE或NOACTION選項CASCADE選項允許對已定義UNIQUE或PRIMARYKEY約束的列值進行任何更改,列值會自動把這些更改傳送給外鍵值NOACTION(默認選項)選項則限制任何試圖刪除或更新由其他表的外鍵引用的關鍵字的操作,137,級聯(lián)引用完整性示例,重新創(chuàng)建orders表當customers表的客戶編號改變時,自動修改orders表中記錄的客戶編號,但不允許刪除客戶當goods表中的貨品刪除時,自動刪除orders表中對應貨品的訂貨記錄,但不允許修改貨品名稱,CREATETABLEorders(訂單號intIDENTITY(1,1)PRIMARYKEY,貨品名稱varchar(20)NOTNULLREFERENCESgoods(貨品名稱)ONDELETECASCADE,客戶編號intFOREIGNKEYREFERENCEScustomers(客戶編號)ONUPDATECASCADE,數(shù)量intNOTNULLCHECK(數(shù)量0),總金額money,訂貨日期datetimeDEFAULTgetdate(),138,例3.6,刪除customers表中“電子郵件”列上創(chuàng)建的默認值約束def_e,USEmarketALTERTABLEcustomersDROPCONSTRAINTdef_e,139,例3.7,刪除customers表中的“電子郵件”字段,USEmarketALTERTABLEcustomersDROPCOLUMN電子郵件,140,例3.8,將customers表的“電子郵件”列改為最大長度為50的char型數(shù)據(jù),且允許為空值,USEmarketALTERTABLEcustomersALTERCOLUMN電子郵件char(50)NULL,141,例3.9,使customers表的“電子郵件”列創(chuàng)建的約束無效或重新生效,USEmarketALTERTABLEcustomersADDCONSTRAINTchk_eCHECK(電子郵件LIKE%)ALTERTABLEcustomersNOCHECKCONSTRAINTchk_eALTERTABLEcustomersCHECKCONSTRAINTchk_e,142,3.93.10-0,創(chuàng)建“學生檔案”數(shù)據(jù)庫,CREATEDATABASE學生檔案ONPRIMARY(NAME=studentdata,FILENAME=d:datastudentdata.mdf,SIZE=1,MAXSIZE=5,FILEGROWTH=10%)LOGON(NAME=studentlog,FILENAME=d:datastudentlog.ldf,SIZE=1,MAXSIZE=5,FILEGROWTH=10%),143,3.9,CREATETABLE人事表(學號INTIDENTITY(2001,1),姓名CHAR(8),性別CHAR(2),電話號碼VARCHAR(20),家庭住址VARCHAR(50)CREATETABLE成績表(學號INT,選修課程VARCHAR(20),成績DECIMAL(4,1),144,3.10,ALTERTABLE成績表ADDCONSTRAINTfk_xuehaoFOREIGNKEY(學號)REFERENCES人事表(學號),CONSTRAINTck_checkCHECK(成績=0AND成績=0and成績=!=!,=,!=,!,!=100,207,例4.8,查詢goods表中庫存量不在100500之間的貨品記錄,USEmarketSELECT*FROMgoodsWHERE庫存量NOTBETWEEN100AND500,208,例4.9,查詢customers表中姓名是王蘭、李紅的客戶信息,USEmarketSELECT*FROMcustomersWHERE姓名IN(王蘭,李紅),209,例4.10,查詢customers表中姓李的客戶信息,USEmarketSELECT*FROMcustomersWHERE姓名LIKE李%,210,例4.11,查詢goods表中不知道供應商名稱的貨品信息,即供應商列為空值,USEmarketSELECT*FROMgoodsWHERE供應商ISNULL,211,例4.12,用兩種方法查詢goods表中庫存量在1001000之間的貨品記錄,USEmarketSELECT*FROMgoodsWHERE庫存量BETWEEN100AND1000SELECT*FROMgoodsWHERE庫存量=100AND庫存量=30,218,例4.17,統(tǒng)計orders表各種貨品訂貨總數(shù)量,并給出明細表,USEmarketSELECT*FROMordersORDERBY貨品名稱COMPUTESUM(數(shù)量)BY貨品名稱,219,例4.18,將customers表和orders表進行交叉連接,觀察結果,USEmarketSELECT*FROMcustomersCROSSJOINordersSELECT*FROMcustomers,orders,220,交叉連接示例,USEjoindbSELECTbuyer_name,sales.buyer_id,qtyFROMbuyers,sales,221,例4.19,用內(nèi)連接方法連接customers和orders兩個表,觀察連接后的結果,SELECTc.客戶編號,c.姓名,o.數(shù)量,o.總金額FROMcustomersAScINNERJOINordersASoONc.客戶編號=o.客戶編號SELECTc.客戶編號,c.姓名,o.數(shù)量,o.總金額FROMcustomersASc,ordersASoWHEREc.客戶編號=o.客戶編號,222,內(nèi)連接示例,USEjoindbSELECTbuyer_name,sales.buyer_id,qtyFROMbuyersINNERJOINsalesONbuyers.buyer_id=sales.buyer_id,223,例4.20,使用左外連接查詢goods表和orders表,獲取存在訂貨的貨品名稱、訂貨日期和訂貨數(shù)量,USEmarketSELECTgoods.貨品名稱,訂貨日期,數(shù)量FROMgoodsLEFTJOINordersONgoods.貨品名稱=orders.貨品名稱,224,左外連接示例,USEjoindbSELECTbuyer_name,sales.buyer_id,qtyFROMbuyersLEFTOUTERJOINsalesONbuyers.buyer_id=sales.buyer_id,225,例4.21,使用右外連接查詢goods表和orders表,獲取存在訂貨的貨品名稱、訂貨日期和訂貨數(shù)量,USEmarketSELECTgoods.貨品名稱,訂貨日期,數(shù)量FROMordersRIGHTJOINgoodsONgoods.貨品名稱=orders.貨品名稱,226,例4.22,使用全外連接查詢goods表和orders表,獲取存在訂貨的貨品名稱、訂貨日期和訂貨數(shù)量,USEmarketSELECTgoods.貨品名稱,訂貨日期,數(shù)量FROMgoodsFULLOUTERJOINordersONgoods.貨品名稱=orders.貨品名稱,227,例4.24,查詢orders表中訂購了兩種或兩種以上貨品的客戶編號和他所訂購的貨品名稱,USEmarketSELECTa.客戶編號,a.貨品名稱FROMordersASaJOINordersbONa.客戶編號=b.客戶編號ANDa.訂單號b.訂單號,228,自連接示例,USEjoindbSELECTa.buyer_idASbuyer1,a.prod_id,b.buyer_idASbuyer2FROMsalesASaJOINsalesASbONa.prod_id=b.prod_idWHEREa.buyer_idb.buyer_id,229,例4.25,從表customers中檢索出地址為上海的客戶輸出到表shangh,地址為北京的客戶輸出到beij,然后將兩表合并為一個結果集,SELECT*INTOshanghFROMcustomersWHERE地址LIKE上海%SELECT*INTObeijFROMcustomersWHERE地址LIKE北京%SELECT*FROMshanghUNIONSELECT*FROMbeij,230,嵌套子查詢和相關子查詢,嵌套子查詢總是最先執(zhí)行最內(nèi)層查詢相關子查詢的執(zhí)行過程依賴于值的外部查詢。相關子查詢的WHERE子句引用外部查詢的FROM子句中的表。這就是說子查詢是以循環(huán)的方式進行處理的對外部查詢選擇的每行都執(zhí)行一次,231,例4.26,從goods表中檢索數(shù)據(jù),列出高于平均價格的貨品信息,SELECT*FROMgoodsWHERE價格(SELECTAVG(價格)FROMgoods),232,例4.27,從orders表中檢索數(shù)據(jù),以查詢有訂單的客戶信息,SELECT*FROMcustomersWHERE客戶編號IN(SELECT客戶編號FROMorders),233,例4.28,從orders表中檢索數(shù)據(jù),以查詢有訂單的客戶信息,SELECT*FROMcustomersWHEREEXISTS(SELECT*FROMordersWHEREcustomers.客戶編號=orders.客戶編號),234,例4.29,用IN子句完成上例的操作,SELECT*FROMcustomersWHERE客戶編號IN(SELECT客戶編號FROMorders),235,例4.30,從customers表中檢索數(shù)據(jù),以查詢一次訂貨數(shù)量大于等于20的客戶編號和姓名,SELECTa.客戶編號,a.姓名FROMcustomersaWHERE20=ALL(SELECT價格FROMgoods),237,例4.32,向orders表添加一條新記錄,給所有列提供列值,INSERTordersVALUES(book,1,10,250,1/23/2003)INSERTordersVALUES(book,1,10,250,DEFAULT)由于訂貨日期設定了默認值,所有可以使用默認值,字符型和日期型數(shù)據(jù)需要用單引號括起來,238,例4.33,創(chuàng)建一個與customers表結構一樣的表cq,使該表中僅有重慶客戶的信息,SELECT*INTOcqFROMcustomersWHERE2=4INSERTcqSELECT*FROMcustomersWHERE地址LIKE重慶%,239,例4.34,將goods表中的庫存量大于100的貨品的定價降低10%,UPDATEgoodsSET價格=價格*0.9WHERE庫存量=100,240,例4.35,把orders表中的“總金額”用該貨品在goods表中的“價格”與在orders表中的訂貨“數(shù)量”的乘積代替,并顯示修改后的記錄,UPDATEordersSET總金額=價格*數(shù)量FROMgoodsWHEREorders.貨品名稱=goods.貨品名稱SELECTa.貨品名稱,a.價格,b.數(shù)量,b.總金額FROMgoodsASa,ordersASbWHEREa.貨品名稱=b.貨品名稱,241,例4.36,刪除goods表中的所有記錄,DELETEgoods,242,例4.37,刪除goods表中的未知定價的記錄,DELETEgoodsWHERE價格ISNULL,243,例4.38,刪除orders表中地址為重慶的客戶訂貨記錄,DELETEordersFROMcustomersWHEREorders.客戶編號=customers.客戶編號AND地址LIKE重慶%,244,例4.39,刪除orders表中的所有訂單,TRUNCATETABLEorders,245,刪除表和刪除表數(shù)據(jù)的區(qū)別,DROPTABLE、DELETE和TRUNCATETABLE語句的區(qū)別DROPTABLE語句不僅刪除表數(shù)據(jù),還將刪除表結構DELETE和TRUNCATETABLE語句只刪除表數(shù)據(jù)不含WHERE子句的DELETE語句的作用與TRUNCATETABLE語句一樣,將刪除表中所有數(shù)據(jù),但TRUNCATETABLE語句的執(zhí)行速度更快DELETE語句可通過WHERE子句實現(xiàn)部分表數(shù)據(jù)刪除,而TRUNCATETABLE語句不能包含WHERE子句,即不能刪除部分數(shù)據(jù),246,學生信息管理數(shù)據(jù)庫,247,查詢條件2-1,檢索“基本信息表”中- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- SQL 電子工業(yè) 耿文蘭
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.appdesigncorp.com/p-3272004.html