關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言課件_第1頁
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言課件_第2頁
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言課件_第3頁
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言課件_第4頁
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言課件_第5頁
已閱讀5頁,還剩185頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言普通高等教育十五規(guī)劃教材普通高等教育十五規(guī)劃教材數(shù)據(jù)庫系統(tǒng)概論數(shù)據(jù)庫系統(tǒng)概論主講:張中軍主講:張中軍 用戶名:用戶名:s_zzj 密碼:空密碼:空關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言第第3章章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言第第3章章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQLn3.1 引言引言n3.2 數(shù)據(jù)定義數(shù)據(jù)定義n3.3 數(shù)據(jù)查詢數(shù)據(jù)查詢n3.4 數(shù)據(jù)更新數(shù)據(jù)更新n3.5 視圖視圖關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言3.1 引言引言關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言引言引言nSQL(Structured Query Language)結(jié)構(gòu)化查詢語結(jié)構(gòu)化查詢語言言,是關(guān)系數(shù)據(jù)庫的,是關(guān)系數(shù)據(jù)

2、庫的標(biāo)準(zhǔn)語言標(biāo)準(zhǔn)語言nSQL是一個通用的、功能極強的關(guān)系數(shù)據(jù)庫語言是一個通用的、功能極強的關(guān)系數(shù)據(jù)庫語言關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言背景背景nSQL語言最早稱為語言最早稱為Sequel,是,是Boyce和和Chamberlin1974年提出的。年提出的。 nSequel不斷發(fā)展,并更名為不斷發(fā)展,并更名為SQL由于由于SQLn1974年在年在IBM公司的公司的System R上實現(xiàn)。上實現(xiàn)。n1986年被美國國家標(biāo)準(zhǔn)局(年被美國國家標(biāo)準(zhǔn)局(ANSI)批準(zhǔn)為關(guān)系數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn)。)批準(zhǔn)為關(guān)系數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn)。n1987年國際標(biāo)準(zhǔn)化組織(年國際標(biāo)準(zhǔn)化組織(ISO)通過這一標(biāo)準(zhǔn))通過這一標(biāo)準(zhǔn)n自自SQ

3、L-92以來,以來,SQL標(biāo)準(zhǔn)的規(guī)模開始變大(標(biāo)準(zhǔn)的規(guī)模開始變大(SQL-89標(biāo)準(zhǔn)大約標(biāo)準(zhǔn)大約120頁,頁,SQL-92標(biāo)準(zhǔn)超過標(biāo)準(zhǔn)超過620頁,而頁,而SQL-99標(biāo)準(zhǔn)多達(dá)標(biāo)準(zhǔn)多達(dá)1700頁)。頁)。n目前,大多數(shù)商品化目前,大多數(shù)商品化DBMS支持支持SQL-92主要部分(初級標(biāo)準(zhǔn)和部分中、主要部分(初級標(biāo)準(zhǔn)和部分中、高級的標(biāo)準(zhǔn)),并在其他方面有一些擴展。高級的標(biāo)準(zhǔn)),并在其他方面有一些擴展。nSQL-99擴充太快,過于龐大,擴充太快,過于龐大,DBMS開發(fā)商對實現(xiàn)開發(fā)商對實現(xiàn)SQL-99似乎不太積似乎不太積極。極。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言背景背景標(biāo)準(zhǔn)標(biāo)準(zhǔn) 大致頁數(shù)大致頁數(shù) 發(fā)布日期發(fā)布日期nS

4、QL/86 1986.10nSQL/89(FIPS 127-1) 120頁頁 1989年年nSQL/92 622頁頁 1992年年nSQL99 1700頁頁 1999年年nSQL2003 3600頁頁 2003年年關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL概述概述nSQL是一種完整的數(shù)據(jù)庫語言,它提供是一種完整的數(shù)據(jù)庫語言,它提供了豐富的功能了豐富的功能nSQL的使用方式的使用方式nSQL的表的類型的表的類型關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL概述概述( (續(xù)續(xù)) )nSQL的功能的功能nSQL的的數(shù)據(jù)定義語言數(shù)據(jù)定義語言(DDL)提供了模式定義、修改和)提供了模式定義、修改和刪除,基本表定義、修改和刪除、域定義修改和刪除

5、。刪除,基本表定義、修改和刪除、域定義修改和刪除。nSQL的的數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言(DML)提供了數(shù)據(jù)查詢子語言。)提供了數(shù)據(jù)查詢子語言。SQL的數(shù)據(jù)查詢子語言具有關(guān)系代數(shù)和關(guān)系演算的雙重的數(shù)據(jù)查詢子語言具有關(guān)系代數(shù)和關(guān)系演算的雙重特征。特征。nSQL DML不僅包括數(shù)據(jù)查詢,而且包括不僅包括數(shù)據(jù)查詢,而且包括數(shù)據(jù)更新數(shù)據(jù)更新(數(shù)據(jù)(數(shù)據(jù)插入、刪除和修改)語句,允許用戶更新數(shù)據(jù)庫。插入、刪除和修改)語句,允許用戶更新數(shù)據(jù)庫。nSQL DDL還允許用戶還允許用戶定義視圖定義視圖,并且,并且SQL DML允許用允許用戶對視圖進(jìn)行查詢和受限的更新操作。戶對視圖進(jìn)行查詢和受限的更新操作。關(guān)系數(shù)據(jù)庫

6、標(biāo)準(zhǔn)語言SQL概述概述( (續(xù)續(xù)) )nSQL的功能的功能( (續(xù)續(xù)) )nSQL DDL允許用戶定義允許用戶定義各種完整性約束條件各種完整性約束條件,并在數(shù)據(jù),并在數(shù)據(jù)庫訪問時庫訪問時自動檢查自動檢查,確保數(shù)據(jù)庫操作不會破壞完整性約,確保數(shù)據(jù)庫操作不會破壞完整性約束條件。束條件。nSQL DDL還包括還包括授權(quán)定義授權(quán)定義,用來定義用戶對數(shù)據(jù)庫對象,用來定義用戶對數(shù)據(jù)庫對象(基本表、視圖等)的訪問權(quán)限,防止非法訪問,確保(基本表、視圖等)的訪問權(quán)限,防止非法訪問,確保數(shù)據(jù)庫的安全性。數(shù)據(jù)庫的安全性。nSQL還還支持事務(wù)支持事務(wù),提供了定義事務(wù)開始和結(jié)束的語句,提供了定義事務(wù)開始和結(jié)束的語句n

7、SQL的使用方式的使用方式n獨立使用獨立使用n嵌入到通用程序設(shè)計語言中嵌入到通用程序設(shè)計語言中關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL概述概述( (續(xù)續(xù)) )nSQL的表的類型的表的類型n基本表(基本表(base table)n 持久基本表持久基本表(persistent base table)n 全局臨時表(全局臨時表(global temporary table)n 局部臨時表局部臨時表 (local temporary table) n導(dǎo)出表導(dǎo)出表 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的特點的特點nSQL的特點的特點n集多種數(shù)據(jù)庫語言于一體集多種數(shù)據(jù)庫語言于一體 n高度非過程化高度非過程化 n面向集合的操作方式面向

8、集合的操作方式 n一種語法兩種使用方式一種語法兩種使用方式 n功能強大,語言簡潔功能強大,語言簡潔 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的特點的特點( (續(xù)續(xù)) )n1. 集多種數(shù)據(jù)庫語言于一體集多種數(shù)據(jù)庫語言于一體(綜合統(tǒng)一)(綜合統(tǒng)一)n非關(guān)系模型的數(shù)據(jù)語言一般分為:非關(guān)系模型的數(shù)據(jù)語言一般分為:n模式數(shù)據(jù)定義語言(模式模式數(shù)據(jù)定義語言(模式DDL)n外模式數(shù)據(jù)定義語言(外模式外模式數(shù)據(jù)定義語言(外模式DDL,子模式,子模式DDL)n數(shù)據(jù)存儲有關(guān)的描述語言(數(shù)據(jù)存儲有關(guān)的描述語言(DSDL)n數(shù)據(jù)操縱語言(數(shù)據(jù)操縱語言(DML)n當(dāng)用戶數(shù)據(jù)庫投入運行后,如果要修改模式,必須停當(dāng)用戶數(shù)據(jù)庫投入運行后,如

9、果要修改模式,必須停止運行,轉(zhuǎn)儲數(shù)據(jù),修改模式并編譯后再重裝數(shù)據(jù)庫止運行,轉(zhuǎn)儲數(shù)據(jù),修改模式并編譯后再重裝數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的特點的特點( (續(xù)續(xù)) )n1. 集多種數(shù)據(jù)庫語言于一體集多種數(shù)據(jù)庫語言于一體( (續(xù)續(xù)) )nSQL語言集數(shù)據(jù)定義語言(語言集數(shù)據(jù)定義語言(DDL),數(shù)據(jù)操縱語言),數(shù)據(jù)操縱語言(DML),數(shù)據(jù)控制語言(),數(shù)據(jù)控制語言(DCL)功能于一體。)功能于一體。n可以獨立完成數(shù)據(jù)庫生命周期中的全部活動可以獨立完成數(shù)據(jù)庫生命周期中的全部活動n定義關(guān)系模式,插入數(shù)據(jù),建立數(shù)據(jù)庫;定義關(guān)系模式,插入數(shù)據(jù),建立數(shù)據(jù)庫;n 對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢和更新;對數(shù)據(jù)庫中的數(shù)據(jù)

10、進(jìn)行查詢和更新;n 數(shù)據(jù)庫重構(gòu)和維護(hù)數(shù)據(jù)庫重構(gòu)和維護(hù)n 數(shù)據(jù)庫安全性、完整性控制等數(shù)據(jù)庫安全性、完整性控制等n用戶數(shù)據(jù)庫投入運行后,可根據(jù)需要隨時逐步修改模式,用戶數(shù)據(jù)庫投入運行后,可根據(jù)需要隨時逐步修改模式,不影響數(shù)據(jù)的運行。不影響數(shù)據(jù)的運行。n數(shù)據(jù)操作符統(tǒng)一,查找、插入、刪除、更新等只需一種數(shù)據(jù)操作符統(tǒng)一,查找、插入、刪除、更新等只需一種操作符操作符關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的特點的特點( (續(xù)續(xù)) )n2.高度非過程化高度非過程化n非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語言非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語言“面向過程面向過程”,必須使,必須使用類似于指針的機制,指定存取路徑用類似于指針的機制,指定存取路徑nS

11、QL只要提出只要提出“做什么做什么”,無須了解存取路徑。,無須了解存取路徑。n例如,使用例如,使用SQL語言表達(dá)查詢時,用戶只需要正確地語言表達(dá)查詢時,用戶只需要正確地表達(dá)需要哪些信息,這些信息在哪些關(guān)系中,結(jié)果元表達(dá)需要哪些信息,這些信息在哪些關(guān)系中,結(jié)果元組應(yīng)當(dāng)滿足什么條件組應(yīng)當(dāng)滿足什么條件 n系統(tǒng)將考察多種執(zhí)行方案,選擇并運行一個最優(yōu)的執(zhí)行系統(tǒng)將考察多種執(zhí)行方案,選擇并運行一個最優(yōu)的執(zhí)行方案得到結(jié)果。方案得到結(jié)果。n大大減輕了用戶負(fù)擔(dān)大大減輕了用戶負(fù)擔(dān)n有利于提高數(shù)據(jù)的獨立性有利于提高數(shù)據(jù)的獨立性 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的特點的特點( (續(xù)續(xù)) )n3.面向集合的操作方式面向集合的操作

12、方式n非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對象是一條記錄對象是一條記錄nSQL采用集合操作方式采用集合操作方式n 操作對象、查找結(jié)果可以是元組的集合操作對象、查找結(jié)果可以是元組的集合n 一次插入、刪除、更新操作的對象可以是元一次插入、刪除、更新操作的對象可以是元組的集合組的集合關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的特點的特點( (續(xù)續(xù)) )n4. 一種語法兩種使用方式一種語法兩種使用方式 nSQL是獨立的語言是獨立的語言n能夠獨立地用于聯(lián)機交互的使用方式能夠獨立地用于聯(lián)機交互的使用方式nSQL又是嵌入式語言又是嵌入式語言n SQL能夠嵌入到高級語言(例如能夠

13、嵌入到高級語言(例如C,C+,Java)程)程序中,供程序員設(shè)計程序時使用序中,供程序員設(shè)計程序時使用關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的特點的特點( (續(xù)續(xù)) )n5 .功能強大功能強大, 語言簡潔語言簡潔nSQL是一種完整地數(shù)據(jù)庫語言,其功能涵蓋數(shù)據(jù)定義、是一種完整地數(shù)據(jù)庫語言,其功能涵蓋數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制等數(shù)據(jù)管理的主要需求。數(shù)據(jù)操縱、數(shù)據(jù)控制等數(shù)據(jù)管理的主要需求。n但但SQL語言相對比較簡潔,其核心動詞只有語言相對比較簡潔,其核心動詞只有9個(個(p81)。)。nSQL 語言的語法簡單,與英語口語的風(fēng)格類似,易學(xué)易語言的語法簡單,與英語口語的風(fēng)格類似,易學(xué)易用。用。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言3

14、.2 數(shù)據(jù)定義數(shù)據(jù)定義關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言3.2 數(shù)據(jù)定義數(shù)據(jù)定義nSQL的數(shù)據(jù)定義語言的數(shù)據(jù)定義語言DDL包括定義模式、關(guān)系包括定義模式、關(guān)系(SQL稱之為基本表)、視圖、索引、授權(quán)等。稱之為基本表)、視圖、索引、授權(quán)等。n本節(jié)介紹如何定義基本表、索引和模式,本節(jié)介紹如何定義基本表、索引和模式,n3.6節(jié)將介紹如何定義和使用視圖,節(jié)將介紹如何定義和使用視圖,n授權(quán)定義將在后面章節(jié)討論授權(quán)定義將在后面章節(jié)討論關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的數(shù)據(jù)類型的數(shù)據(jù)類型nSQL支持許多內(nèi)置的數(shù)據(jù)類型支持許多內(nèi)置的數(shù)據(jù)類型n允許用戶定義新的域(數(shù)據(jù))類型。允許用戶定義新的域(數(shù)據(jù))類型。nSQL支持的數(shù)據(jù)類型包括支

15、持的數(shù)據(jù)類型包括nCHARACTERnCHARACTER VARYINGnBITnBIT VARYINGnINTEGERnSMALLINT關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的數(shù)據(jù)類型的數(shù)據(jù)類型( (續(xù)續(xù)) )nSQL支持的數(shù)據(jù)類型支持的數(shù)據(jù)類型nNUMERICnFLOATnREALnDOUBLE PRECISIONnDATETIMEnTIMESTAMPnINTERVAL關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的數(shù)據(jù)類型的數(shù)據(jù)類型( (續(xù)續(xù)) )nCHAR(n):定長字符串,長度:定長字符串,長度n由用戶指定。省略由用戶指定。省略(n)時,時,長度為長度為1。CHAR的全稱是的全稱是CHARACTER。nVARCHAR(

16、n):變長字符串,最大長度:變長字符串,最大長度n由用戶指定。由用戶指定。VARCHAR的全稱是的全稱是CHARACTER VARYINGn定長和變長字符串的差別主要表現(xiàn)在前者需要固定長度定長和變長字符串的差別主要表現(xiàn)在前者需要固定長度的空間,而后者占用的空間在最大長度范圍內(nèi)是可改變的空間,而后者占用的空間在最大長度范圍內(nèi)是可改變的。的。nBIT(n):定長二進(jìn)位串,長度:定長二進(jìn)位串,長度n由用戶指定。省略由用戶指定。省略(n)時,長時,長度為度為1。nBIT VARYING(n):變長二進(jìn)位串,最大長度:變長二進(jìn)位串,最大長度n由用戶指定。由用戶指定。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的數(shù)據(jù)類型的數(shù)

17、據(jù)類型( (續(xù)續(xù)) )nINT:整數(shù),其值域依賴于具體實現(xiàn)。整數(shù),其值域依賴于具體實現(xiàn)。INT的全稱是的全稱是INTEGER。nSMALLINT:小整數(shù),其值域依賴于具體實現(xiàn),但小于小整數(shù),其值域依賴于具體實現(xiàn),但小于INT的值域的值域nNUMERIC(p, d):p位有效數(shù)字的定點數(shù),其中小數(shù)點右邊位有效數(shù)字的定點數(shù),其中小數(shù)點右邊占占d位。位。nFLOAT(n):精度至少為:精度至少為n位數(shù)字的浮點數(shù),其值域依賴于位數(shù)字的浮點數(shù),其值域依賴于實現(xiàn)。實現(xiàn)。nREAL:實數(shù),精度依賴于實現(xiàn)。:實數(shù),精度依賴于實現(xiàn)。nDOUBLE PRECISION:雙精度實數(shù),精度依賴于實現(xiàn),:雙精度實數(shù),精

18、度依賴于實現(xiàn),但精度比但精度比REAL高。高。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的數(shù)據(jù)類型的數(shù)據(jù)類型( (續(xù)續(xù)) )nDATETIME :日期時間,包括年、月、日、時、分、秒,:日期時間,包括年、月、日、時、分、秒,格式為格式為YYYY-MM-DD hh-mm-ss。nTIMESTAMP:時間戳,是:時間戳,是DATE和和TIME的結(jié)合的結(jié)合nINTERVAL:時間間隔。:時間間隔。SQL允許對允許對DATE、TIME和和INTERVAL類型的值進(jìn)行計算。類型的值進(jìn)行計算。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL的數(shù)據(jù)類型的數(shù)據(jù)類型( (續(xù)續(xù)) )nSQL提供提供DATEPART(field , Var),從,從DAT

19、ETIME類型變量類型變量Var中提取字段中提取字段field。n對于對于DATETIME類型的變量,類型的變量,field可以是可以是YEAR、MONTH、DAY、HOUR、MINUTE 、SECOND;n例如,如果例如,如果d是是DATETIME類型,則類型,則DATEPART (YEAR , d)返回返回d中的年份。中的年份。 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義、修改和刪除基本表定義、修改和刪除基本表n說明說明:n本章,我們將本章,我們將“表表”和和“關(guān)系關(guān)系”視為同義詞(盡視為同義詞(盡管它們實際上有差別)管它們實際上有差別)n將將“屬性屬性”、“屬性列屬性列”和和“列列”視為同義詞視為同義詞n使

20、用使用“元組元組”或或“記錄記錄”表示表的行。表示表的行。n術(shù)語術(shù)語“基本表基本表”主要用于表示持久基本表,而主要用于表示持久基本表,而“表表”泛指基本表和導(dǎo)出表(包括視圖)泛指基本表和導(dǎo)出表(包括視圖)關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義、修改和刪除基本表定義、修改和刪除基本表( (續(xù)續(xù)) )n符號約定符號約定 n表示表示X是需要進(jìn)一步定義或說明語言成分。是需要進(jìn)一步定義或說明語言成分。nX表示表示X可以缺省或出現(xiàn)一次??梢匀笔』虺霈F(xiàn)一次。nX表示表示X可以出現(xiàn)一次??梢猿霈F(xiàn)一次。nX | Y表示或者表示或者X出現(xiàn),或者出現(xiàn),或者Y出現(xiàn),但二者不能同時出現(xiàn)。出現(xiàn),但二者不能同時出現(xiàn)。nSQL語言的保留字(

21、如語言的保留字(如CREATE)不區(qū)分大小寫。為醒)不區(qū)分大小寫。為醒目起見,對于目起見,對于SQL語句中的語句中的SQL的保留字,我們使用大的保留字,我們使用大寫。寫。nSQL語句用語句用分號分號結(jié)束。一個結(jié)束。一個SQL語句可以寫在一行或多行語句可以寫在一行或多行中,各種空白符號用于分隔不同的詞。良好的語句的書寫中,各種空白符號用于分隔不同的詞。良好的語句的書寫風(fēng)格使得程序賞心悅目、易于閱讀。風(fēng)格使得程序賞心悅目、易于閱讀。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表n創(chuàng)建一個基本表要對基本表創(chuàng)建一個基本表要對基本表命名命名,定義表的每個列,并定,定義表的每個列,并定義表的義表的完整性約束條件完

22、整性約束條件。nSQL語言使用語言使用CREATE TABLE語句創(chuàng)建基本表,其基本格語句創(chuàng)建基本表,其基本格式如下:式如下: CREATE TABLE (, , , , );n是標(biāo)識符,對定義的基本表命名;是標(biāo)識符,對定義的基本表命名;n圓括號中包括一個或多個圓括號中包括一個或多個,零個或多個,零個或多個,中間用,中間用逗號逗號隔開隔開 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )n定義每個屬性(列)的名稱、類型、缺省值和定義每個屬性(列)的名稱、類型、缺省值和列上的約束條件,格式如下:列上的約束條件,格式如下:n DEFAULT , , n其中,其中,是標(biāo)識符,對定義的列命名;是

23、標(biāo)識符,對定義的列命名;n定義列的取值類型,它可以是定義列的取值類型,它可以是3.2.1節(jié)介紹的任節(jié)介紹的任意類型,也可以是用戶定義的域類型(見意類型,也可以是用戶定義的域類型(見5.3節(jié));節(jié));n可選短語可選短語“DEFAULT ”定義列上的缺省值,定義列上的缺省值,是是中的一個特定值或中的一個特定值或NULL ;n每個列上可以定義零個或多個約束條件,約束列的取每個列上可以定義零個或多個約束條件,約束列的取值值關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )n列約束定義格式如下列約束定義格式如下CONSTRAINT n其中可選短語其中可選短語“CONSTRAINT ”為列約束命名為列

24、約束命名n常用的列約束包括:常用的列約束包括:nNOT NULL:不允許該列取空值:不允許該列取空值n不加不加NOT NULL限制時,該列可以取空值。限制時,該列可以取空值。nPRIMARY KEY:指明該列是主碼,值非空、惟一。:指明該列是主碼,值非空、惟一。nUNIQUE:該列上的值必須惟一:該列上的值必須惟一n相當(dāng)于說明該列為候選碼。相當(dāng)于說明該列為候選碼。nCHECK ():指明該列的值必須滿足的條件,:指明該列的值必須滿足的條件,其中其中是一個涉及該列的布爾表達(dá)式是一個涉及該列的布爾表達(dá)式關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )n一個表可以包含零個或多個一個表可以包含零

25、個或多個,用于定義主碼、,用于定義主碼、其他候選碼、外碼和表上的其它約束。表約束定義定義形其他候選碼、外碼和表上的其它約束。表約束定義定義形式如下:式如下: CONSTRAINT n其中可選短語其中可選短語“CONSTRAINT ”為表約束命名為表約束命名 nPRIMARY KEY (A1, , Ak):說明屬性列:說明屬性列A1, , Ak構(gòu)成構(gòu)成該關(guān)系的主碼。當(dāng)主碼只包含一個屬性時,也可以用列該關(guān)系的主碼。當(dāng)主碼只包含一個屬性時,也可以用列約束定義主碼。約束定義主碼。nUNIQUE (A1, , Ak):說明屬性:說明屬性A1, , Ak上值必須惟一上值必須惟一n相當(dāng)于說明相當(dāng)于說明A1,

26、 , Ak構(gòu)成該關(guān)系的候選碼構(gòu)成該關(guān)系的候選碼n當(dāng)候選碼只包含一個屬性時,也可以用列約束定義候當(dāng)候選碼只包含一個屬性時,也可以用列約束定義候選碼。選碼。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )nCHECK ():說明該表上的一個完整性約束條件。:說明該表上的一個完整性約束條件。通常,通常,是一個涉及該表一個或多個列的布爾表達(dá)是一個涉及該表一個或多個列的布爾表達(dá)式式n外碼比較復(fù)雜,它具有如下形式:外碼比較復(fù)雜,它具有如下形式: FOREIGN KEY (A1, , Ak) REFERENCES () n屬性屬性A1, , Ak是關(guān)系(表)的外碼是關(guān)系(表)的外碼n給出被參照關(guān)系的表

27、名給出被參照關(guān)系的表名n給出被參照關(guān)系的主碼給出被參照關(guān)系的主碼n說明違反參照完整性時需要采取的措施說明違反參照完整性時需要采取的措施關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )n例例3.1 下面的語句創(chuàng)建教師表下面的語句創(chuàng)建教師表TeachersCREATE TABLE Teachers (Tno CHAR (7) PRIMARY KEY, Tname CHAR (10) NOT NULL, Sex CHAR (2) CHECK (Sex= 男男 OR Sex= 女女), Birthday DATETIME, Title CHAR (6), Dno CHAR (4), FOREIG

28、N KEY (Dno) REFERENCES Departments (Dno);主碼主碼列約束列約束表級約束表級約束關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )n創(chuàng)建創(chuàng)建選課選課表表SC用如下語句:用如下語句:CREATE TABLE SC(SnoCHAR (9), CnoCHAR (5), Grade SMALLINT CHECK (Grade=0 AND Grade=100), PRIMARY KEY (Sno,Cno), FOREIGN KEY (Sno) REFERENCES Students (Sno), FOREIGN KEY (Cno) REFERENCES Cour

29、ses (Cno);關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )CREATE TABLE Departments(Dno CHAR(4) PRIMARY KEY, Dname CHAR (10), Dheadno CHAR (7), FOREIGN KEY (Dheadno) REFERENCES Teachers(Tno);關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )CREATE TABLE Students(SnoCHAR(9) PRIMARY KEY, Sname CHAR(10) NOT NULL, Sex CHAR (2) CHECK (Sex=男男 OR Sex

30、=女女), BirthdayDATETIME, EnrollyearCHAR(4), SpecialityCHAR(20), DnoCHAR (3), FOREIGN KEY (Dno) REFERENCES Department (Dno); 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )CREATE TABLE Courses(CnoCHAR(5) PRIMARY KEY, CnameCHAR(20) NOT NULL, PeriodSMALLINT, CreditSMALLINT);關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言定義基本表定義基本表( (續(xù)續(xù)) )CREATE TABLE Teaches(T

31、noCHAR (7), CnoCHAR (5), TCscoreSMALLINT, PRIMARY KEY (Tno,Cno), FOREIGN KEY (Tno) REFERENCES Teachers (Tno), FOREIGN KEY (Cno) REFERENCES Courses (Cno); 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言修改基本表修改基本表n基本表創(chuàng)建好以后,在某些情況下需要修改它的結(jié)構(gòu)?;颈韯?chuàng)建好以后,在某些情況下需要修改它的結(jié)構(gòu)。nSQL允許允許n添加列定義添加列定義n刪除列刪除列n添加表約束添加表約束n刪除表約束。刪除表約束。n使用使用ALTER TABLE語句修改基本表語句修改基

32、本表關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言修改基本表修改基本表( (續(xù)續(xù)) )n1. 向基本表添加新的列向基本表添加新的列ALTER TABLE ADD COLUMN nCOLUMN可以省略(下同)可以省略(下同)n和創(chuàng)建基本表相同,但是新添加的列和創(chuàng)建基本表相同,但是新添加的列一般不允許用一般不允許用NOT NULL說明。說明。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言修改基本表修改基本表( (續(xù)續(xù)) )n3. 刪除已存在的列刪除已存在的列ALTER TABLE DROP COLUMN CASCADE | RESTRICT有些版本的有些版本的SQL支持支持CASCADE | RESTRICTnCASCADE表示級聯(lián),刪除將成功,并且依

33、賴于該列的表示級聯(lián),刪除將成功,并且依賴于該列的數(shù)據(jù)庫對象(如涉及該列的視圖)也一并刪除數(shù)據(jù)庫對象(如涉及該列的視圖)也一并刪除nRESTRICT表示受限,僅當(dāng)沒有依賴于該列的數(shù)據(jù)庫對表示受限,僅當(dāng)沒有依賴于該列的數(shù)據(jù)庫對象時刪除才能成功象時刪除才能成功n4. 添加表約束添加表約束 ALTER TABLE ADD n其中其中與創(chuàng)建基本表相同。與創(chuàng)建基本表相同。 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言修改基本表修改基本表( (續(xù)續(xù)) )n5. 刪除表約束刪除表約束 ALTER TABLE DROP CONSTRAINT CASCADE | RESTRICTn其中被刪除的約束一定是其中被刪除的約束一定是命名的命名的約

34、束,給出約束名約束,給出約束名CASCADE | RESTRICT只在有些版本的只在有些版本的SQL支持支持nCASCADE導(dǎo)致刪除約束并且同時刪除依賴于該約束的數(shù)導(dǎo)致刪除約束并且同時刪除依賴于該約束的數(shù)據(jù)庫對象據(jù)庫對象nRESTRICT僅當(dāng)不存在依賴于該約束的數(shù)據(jù)庫對象時才刪僅當(dāng)不存在依賴于該約束的數(shù)據(jù)庫對象時才刪除該約束。除該約束。 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言修改基本表修改基本表( (續(xù)續(xù)) )n例例3.2 在在Courses中增加一個新列中增加一個新列Pno,表示課程的先行課的課,表示課程的先行課的課程號,可以用程號,可以用 ALTER TABLE Courses ADD Pno CHAR (5

35、); n刪除刪除Courses中的中的Pno列可以用列可以用 ALTER TABLE Courses DROP COLUMN Pno;關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言刪除基本表刪除基本表n當(dāng)不需要某個基本表時,可以使用當(dāng)不需要某個基本表時,可以使用DROP TABLE語句將它語句將它刪除。語句格式為:刪除。語句格式為: DROP TABLE CASCADE RESTRICTSQL以前版本可帶以前版本可帶CASCADE RESTRICT可選項可選項nCASCADE表示及聯(lián)刪除,依賴于表的數(shù)據(jù)對象(最常表示及聯(lián)刪除,依賴于表的數(shù)據(jù)對象(最常見的是視圖)也將一同被刪除見的是視圖)也將一同被刪除nRESTRICT表

36、示受限刪除,如果基于該表定義有視圖,表示受限刪除,如果基于該表定義有視圖,或者有其他表引用該表(如或者有其他表引用該表(如CHECK、FOREIGN KEY等約束),或者該表有觸發(fā)器、存儲過程或函數(shù)等,則等約束),或者該表有觸發(fā)器、存儲過程或函數(shù)等,則不能刪除。不能刪除。n刪除基本表導(dǎo)致存放在表中的數(shù)據(jù)和表定義都將被徹底刪刪除基本表導(dǎo)致存放在表中的數(shù)據(jù)和表定義都將被徹底刪除。除。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言刪除基本表刪除基本表( (續(xù)續(xù)) )n例例3.3 如果用如下語句刪除如果用如下語句刪除SC表表DROP TABLE Course RESTRICT;n則僅當(dāng)沒有依賴于則僅當(dāng)沒有依賴于Course的任何

37、數(shù)據(jù)庫對象才能刪除。的任何數(shù)據(jù)庫對象才能刪除。如果用如果用DROP TABLE Course CASCADE;n則表則表Course和依賴它的數(shù)據(jù)庫對象都被徹底刪除和依賴它的數(shù)據(jù)庫對象都被徹底刪除n注意:注意:SQL2005好像不支持好像不支持CASCADE RESTRICT,n基本表的刪除是永久的,不可恢復(fù)的?;颈碇械臄?shù)據(jù)及基本表的刪除是永久的,不可恢復(fù)的?;颈碇械臄?shù)據(jù)及索引將全部被刪除掉。在該表上建立的視圖依然存在但不索引將全部被刪除掉。在該表上建立的視圖依然存在但不可使用。因此執(zhí)行刪除基本表的操作時要格外小心??墒褂?。因此執(zhí)行刪除基本表的操作時要格外小心。 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言創(chuàng)建和刪

38、除索引創(chuàng)建和刪除索引n索引類似于書的目錄。索引類似于書的目錄。n索引可以加快表之間的連接速度,加快表的排序和分組工索引可以加快表之間的連接速度,加快表的排序和分組工作。作。n索引屬于物理存儲的路徑概念,而不是邏輯的概念。索引屬于物理存儲的路徑概念,而不是邏輯的概念。n索引由索引由DBA或表的屬主負(fù)責(zé)建立和刪除,其他用戶不能隨或表的屬主負(fù)責(zé)建立和刪除,其他用戶不能隨意建立和刪除索引。意建立和刪除索引。n索引由索引由DBMS自動選擇和維護(hù)。索引通常分為惟一性索引自動選擇和維護(hù)。索引通常分為惟一性索引(每一個索引值對應(yīng)一個數(shù)據(jù)行)和非惟一性索引;也可(每一個索引值對應(yīng)一個數(shù)據(jù)行)和非惟一性索引;也可

39、以分為聚族索引和非聚族索引。以分為聚族索引和非聚族索引。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言創(chuàng)建索引創(chuàng)建索引n通常,通常,DBMS自動為主碼自動為主碼建立索引建立索引n其他索引需要用其他索引需要用CREATE INDEX語句創(chuàng)建。創(chuàng)建索引的語語句創(chuàng)建。創(chuàng)建索引的語句格式為:句格式為: CREATE UNIQUE CLUSTERED INDEX ON ( , )n為建立的索引命名為建立的索引命名n是要建立索引的基本表的名字是要建立索引的基本表的名字n索引可以建在該表的一列或多列上,各列名間用逗號分索引可以建在該表的一列或多列上,各列名間用逗號分隔;每個隔;每個后可以用后可以用指定索引值的排列次序指定索引值的排列次

40、序n次序可以是次序可以是ASC(升序)和(升序)和DESC(降序),缺省值(降序),缺省值為為ASC。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言創(chuàng)建索引創(chuàng)建索引( (續(xù)續(xù)) )nUNIQUE表示該索引為惟一性索引。表示該索引為惟一性索引。UNIQUE缺省時,缺省時,創(chuàng)建的索引為非唯一性索引。創(chuàng)建的索引為非唯一性索引。nCLUSTER表示建立的索引是聚簇索引,缺省時為非聚表示建立的索引是聚簇索引,缺省時為非聚簇索引。簇索引。n創(chuàng)建索引不僅創(chuàng)建索引結(jié)構(gòu),而且將索引的定義存儲在創(chuàng)建索引不僅創(chuàng)建索引結(jié)構(gòu),而且將索引的定義存儲在數(shù)據(jù)字典中。數(shù)據(jù)字典中。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言創(chuàng)建索引創(chuàng)建索引( (續(xù)續(xù)) )n例例3.4 在在Stud

41、ents的的Dno上創(chuàng)建一個名為上創(chuàng)建一個名為Student_Dept的索引的索引n可以用:可以用: CREATE INDEX Student_Dept ON Students (Dno);n而在而在Teachers上的上的Dno創(chuàng)建一個名為創(chuàng)建一個名為Teacher-Dept的聚簇索的聚簇索引可以用:引可以用: CREATE CLUSTERED INDEX Teacher_Dept ON Teachers (Dno);n注意:學(xué)生流動性比較大,注意:學(xué)生流動性比較大,Students更新頻繁,不適合更新頻繁,不適合創(chuàng)建聚簇索引;而教師相對穩(wěn)定,可以考慮按所在院系創(chuàng)建聚簇索引;而教師相對穩(wěn)定,

42、可以考慮按所在院系在在Teachers上創(chuàng)建聚簇索引。上創(chuàng)建聚簇索引。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言刪除索引刪除索引n索引索引旦建立,就由系統(tǒng)來選擇和維護(hù),無需用戶干預(yù),旦建立,就由系統(tǒng)來選擇和維護(hù),無需用戶干預(yù),但當(dāng)刪除一些不必要的索引時,可用下列語句來實現(xiàn):但當(dāng)刪除一些不必要的索引時,可用下列語句來實現(xiàn): DROP INDEX ON n刪除索引時,系統(tǒng)將刪除索引結(jié)構(gòu),并同時從數(shù)據(jù)字典刪除索引時,系統(tǒng)將刪除索引結(jié)構(gòu),并同時從數(shù)據(jù)字典中刪去有關(guān)該索引的定義。中刪去有關(guān)該索引的定義。n例例3.5 刪除索引刪除索引Student_Dept。 DROP INDEX Student_Dept ON Student

43、s;關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言模式的定義和刪除模式的定義和刪除n支持支持SQL的的DBMS提供了一個提供了一個SQL環(huán)境(環(huán)境(SQL-environment)nSQL環(huán)境包括環(huán)境包括n零個或多個數(shù)據(jù)庫零個或多個數(shù)據(jù)庫n零個或多個用戶標(biāo)識符(稱作授權(quán)標(biāo)識符)零個或多個用戶標(biāo)識符(稱作授權(quán)標(biāo)識符)n零個或多個模塊和目錄中的模式描述的零個或多個模塊和目錄中的模式描述的SQL數(shù)據(jù)。數(shù)據(jù)。nDBMS為關(guān)系的命名提供了一個三級層次結(jié)構(gòu)為關(guān)系的命名提供了一個三級層次結(jié)構(gòu)n頂層由數(shù)據(jù)庫組成頂層由數(shù)據(jù)庫組成n每個數(shù)據(jù)庫中包含一些模式(每個數(shù)據(jù)庫中包含一些模式(schema)n而而SQL對象(關(guān)系、視圖等)都包含在模式

44、內(nèi)。對象(關(guān)系、視圖等)都包含在模式內(nèi)。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言模式的定義和刪除模式的定義和刪除( (續(xù)續(xù)) )n注意:注意:nSQL環(huán)境中的數(shù)據(jù)庫不能重名環(huán)境中的數(shù)據(jù)庫不能重名n同一數(shù)據(jù)庫下的模式不能重名同一數(shù)據(jù)庫下的模式不能重名n同一模式下的關(guān)系不能重名同一模式下的關(guān)系不能重名n一個關(guān)系由數(shù)據(jù)庫名、模式名和關(guān)系名惟一確定,例如一個關(guān)系由數(shù)據(jù)庫名、模式名和關(guān)系名惟一確定,例如nDatabase2.Supply-schema.Suppliersn確定確定Database2目錄下目錄下Supply-schema模式中的模式中的Suppliers關(guān)系。如果關(guān)系在默認(rèn)數(shù)據(jù)庫的默認(rèn)模式中,則可以省關(guān)系。如果

45、關(guān)系在默認(rèn)數(shù)據(jù)庫的默認(rèn)模式中,則可以省略目錄名和模式名前綴略目錄名和模式名前綴關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言模式的定義和刪除模式的定義和刪除( (續(xù)續(xù)) )n為了進(jìn)行數(shù)據(jù)庫操作,首先必須連接到數(shù)據(jù)庫為了進(jìn)行數(shù)據(jù)庫操作,首先必須連接到數(shù)據(jù)庫n當(dāng)用戶(程序)連接到數(shù)據(jù)庫時,系統(tǒng)為該連接建立一當(dāng)用戶(程序)連接到數(shù)據(jù)庫時,系統(tǒng)為該連接建立一個默認(rèn)的模式。個默認(rèn)的模式。n模式的創(chuàng)建、設(shè)置和刪除依賴于具體實現(xiàn),不包含在模式的創(chuàng)建、設(shè)置和刪除依賴于具體實現(xiàn),不包含在SQL標(biāo)準(zhǔn)中標(biāo)準(zhǔn)中n可以用可以用CREATE SCHEMA和和DROP SCHEMA創(chuàng)建和刪除創(chuàng)建和刪除模式模式關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言創(chuàng)建模式創(chuàng)建模式n誰有權(quán)

46、創(chuàng)建模式依賴于實現(xiàn)誰有權(quán)創(chuàng)建模式依賴于實現(xiàn)n通常,通常,DBMS規(guī)定只有規(guī)定只有DBA和或經(jīng)和或經(jīng)DBA授權(quán)創(chuàng)建模式的授權(quán)創(chuàng)建模式的用戶才能創(chuàng)建模式用戶才能創(chuàng)建模式n創(chuàng)建模式的語句格式有兩種創(chuàng)建模式的語句格式有兩種n第一種格式第一種格式CREATE SCHEMA n創(chuàng)建一個以創(chuàng)建一個以命名的模式,并可以在創(chuàng)建模式的命名的模式,并可以在創(chuàng)建模式的同時為該模式創(chuàng)建或不創(chuàng)建模式元素。同時為該模式創(chuàng)建或不創(chuàng)建模式元素。n可以是表定義、視圖定義、斷言定義、授權(quán)可以是表定義、視圖定義、斷言定義、授權(quán)定義等。定義等。n這種格式?jīng)]有授權(quán)其他用戶訪問創(chuàng)建的模式,以后可以這種格式?jīng)]有授權(quán)其他用戶訪問創(chuàng)建的模式,以

47、后可以用授權(quán)語句授權(quán)。用授權(quán)語句授權(quán)。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言創(chuàng)建模式創(chuàng)建模式( (續(xù)續(xù)) )n第二種格式第二種格式CREATE SCHEMA AUTHORIZATION n與第一種的區(qū)別在于它將創(chuàng)建的模式授權(quán)予與第一種的區(qū)別在于它將創(chuàng)建的模式授權(quán)予指指定的用戶定的用戶n當(dāng)當(dāng)缺省時,用缺省時,用作為模式名作為模式名n實際上,創(chuàng)建一個模式就相當(dāng)于創(chuàng)建一個數(shù)據(jù)庫(微軟的實際上,創(chuàng)建一個模式就相當(dāng)于創(chuàng)建一個數(shù)據(jù)庫(微軟的前幾個版本前幾個版本SQL Server只用只用CREATE DATBASE,2005中中才真正體現(xiàn)出模式的概念)。才真正體現(xiàn)出模式的概念)。 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言創(chuàng)建模式創(chuàng)建模式( (續(xù)續(xù)

48、) )n例例3.6 為為WangQiang創(chuàng)建一個名為創(chuàng)建一個名為Supply_schema的模式,的模式,可以用:可以用:CREATE SCHEMA Supply_schema AUTHORIZATION WangQiang;n所創(chuàng)建的模式在當(dāng)前目錄下,并為所創(chuàng)建的模式在當(dāng)前目錄下,并為WangQiang所擁有所擁有n如果用如果用CREATE SCHEMA Supply_schema;n則創(chuàng)建一個名為則創(chuàng)建一個名為Supply_schema的模式,但未向任何的模式,但未向任何用戶授權(quán)用戶授權(quán)n如果用如果用 CREATE SCHEMA AUTHORIZATION WangQiang;n則為則為

49、WangQiang創(chuàng)建一個模式,并用創(chuàng)建一個模式,并用WangQiang命名命名關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言創(chuàng)建模式創(chuàng)建模式( (續(xù)續(xù)) )n還可以在創(chuàng)建模式的同時創(chuàng)建該模式中的對象還可以在創(chuàng)建模式的同時創(chuàng)建該模式中的對象n例如例如CREATE SCHEMA Supply_schemaCREATE TABLE Suppliers(Sno CHAR(5) PRIMERY KEY, Sname CHAR(20) NOT NULL, Status SMALLINT, Address CHAR(30), Phone CHAR(10);n在創(chuàng)建模式在創(chuàng)建模式Supply_schema的同時還在該模式中定義了的同時

50、還在該模式中定義了一個基本表一個基本表Suppliers關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言刪除模式刪除模式nDBA和模式的擁有者可以用和模式的擁有者可以用DROP SCHEMA刪除模式。刪刪除模式。刪除模式的語句格式為:除模式的語句格式為: DROP SCHEMA CASCADE RESTRICT n其中其中CASCADE和和RESTRICT兩者必須選擇其一。選擇兩者必須選擇其一。選擇CASCADE,則刪除,則刪除指定模式得同時并刪除該模指定模式得同時并刪除該模式中的所有數(shù)據(jù)庫對象(基本表、視圖、斷言等);選擇式中的所有數(shù)據(jù)庫對象(基本表、視圖、斷言等);選擇RESTRICT,則僅當(dāng),則僅當(dāng)指定的模式不包含任

51、何數(shù)據(jù)指定的模式不包含任何數(shù)據(jù)庫對象時才刪除指定的模式,否則拒絕刪除。庫對象時才刪除指定的模式,否則拒絕刪除。 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言刪除模式刪除模式( (續(xù)續(xù)) )n例例3.7 語句語句nDROP SCHEMA Supply_schema RESTRICTn僅當(dāng)模式僅當(dāng)模式Supply_schema中不包含任何數(shù)據(jù)庫對象時,中不包含任何數(shù)據(jù)庫對象時,才刪除模式才刪除模式Supply_schema,否則什么也不做。而,否則什么也不做。而nDROP SCHEMA Supply_schema CASCADEn 將直接刪除模式將直接刪除模式Supply_schema,并同時刪除該模式,并同時刪除該模式中

52、所有的數(shù)據(jù)庫對象中所有的數(shù)據(jù)庫對象 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言3.3 數(shù)據(jù)查詢數(shù)據(jù)查詢 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言數(shù)據(jù)查詢數(shù)據(jù)查詢n查詢是數(shù)據(jù)庫的最重要的操作查詢是數(shù)據(jù)庫的最重要的操作n在在SQL中,所有查詢都用中,所有查詢都用SELECT語句實現(xiàn)語句實現(xiàn)n查詢在一個或多個關(guān)系(基本表或視圖)上進(jìn)行,查詢在一個或多個關(guān)系(基本表或視圖)上進(jìn)行,其結(jié)果是一個關(guān)系其結(jié)果是一個關(guān)系關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言數(shù)據(jù)查詢數(shù)據(jù)查詢( (續(xù)續(xù)) )3.3.1 SELECT語句的一般形式語句的一般形式3.3.2 不帶不帶WHERE的簡單查詢的簡單查詢3.3.3 帶帶WHERE子句的查詢子句的查詢3.3.4 排序和分組排序和分組3.3.

53、5 連接查詢連接查詢3.3.6 嵌套查詢嵌套查詢3.3.7 子查詢導(dǎo)出的表子查詢導(dǎo)出的表3.3.8 集合運算集合運算關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SELECT語句的一般形式語句的一般形式nSELECT語句的一般形式如下:語句的一般形式如下: SELECT ALLDISTINCT FROM , , WHERE GROUP BY , HAVING ORDER BY ASCDESC , ASCDESCn其中最基本的結(jié)構(gòu)是其中最基本的結(jié)構(gòu)是SELECT-FROM-WHERE,并且,并且SELECT子句和子句和FROM子句是必須的,其他子句都是可子句是必須的,其他子句都是可選的選的,我們先介紹我們先介紹SELECT

54、語句的基本結(jié)構(gòu)。語句的基本結(jié)構(gòu)。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SELECT語句語句n1. SELECT子句子句n相當(dāng)于關(guān)系代數(shù)的投影運算(更準(zhǔn)確地說,相當(dāng)于廣義相當(dāng)于關(guān)系代數(shù)的投影運算(更準(zhǔn)確地說,相當(dāng)于廣義投影),用來列出查詢結(jié)果表的諸列投影),用來列出查詢結(jié)果表的諸列nSELECT后可以使用集合量詞后可以使用集合量詞ALL或或DISTINCT,缺,缺省時為省時為ALLnALL不刪除結(jié)果的重復(fù)行,而不刪除結(jié)果的重復(fù)行,而DISTINCT將刪除結(jié)果將刪除結(jié)果中的重復(fù)行中的重復(fù)行nALL或或DISTINCT作用于所有列而不是一個列作用于所有列而不是一個列n有兩種形式有兩種形式n列舉查詢結(jié)果的每個列列舉查詢結(jié)

55、果的每個列n*關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SELECT語句語句( (續(xù)續(xù)) )n1. SELECT子句子句n列舉查詢結(jié)果的每個列列舉查詢結(jié)果的每個列n結(jié)果列的次序可以任意指定,列之間用逗號隔開。每結(jié)果列的次序可以任意指定,列之間用逗號隔開。每個結(jié)果列具有如下形式:個結(jié)果列具有如下形式: AS n最常見形式為最常見形式為.n 必須出現(xiàn)在必須出現(xiàn)在FROM子句指定的表中子句指定的表中n在不會引起混淆(即在不會引起混淆(即只出現(xiàn)在一個表中)時,只出現(xiàn)在一個表中)時,前的可選前綴前的可選前綴“.”可以缺省。可以缺省。是是所在表的名字或別名(見所在表的名字或別名(見FROM子句)子句)n可以是可以是“*”關(guān)系數(shù)據(jù)

56、庫標(biāo)準(zhǔn)語言SELECT語句語句( (續(xù)續(xù)) )n2. FROM子句子句n相當(dāng)于關(guān)系代數(shù)的笛卡爾積運算,用來列出查詢需要掃相當(dāng)于關(guān)系代數(shù)的笛卡爾積運算,用來列出查詢需要掃描的基本表或?qū)С霰砻璧幕颈砘驅(qū)С霰韓FROM子句中可以有一個或多個子句中可以有一個或多個,中間用,中間用逗號逗號隔隔開。開。的最常見形式是:的最常見形式是: AS n可選短語可選短語“AS ”(可省略(可省略AS)用來對表起別名)用來對表起別名(在(在SELECT-FROM-WHERE結(jié)構(gòu)中有效)結(jié)構(gòu)中有效)n當(dāng)同一個表在當(dāng)同一個表在SELECT-FROM-WHERE結(jié)構(gòu)中結(jié)構(gòu)中重復(fù)重復(fù)出現(xiàn)出現(xiàn)時,使用別名可以很好地區(qū)分它們的

57、不同出現(xiàn)。時,使用別名可以很好地區(qū)分它們的不同出現(xiàn)。當(dāng)列名前需要帶當(dāng)列名前需要帶表名前綴表名前綴時,使用較短的別名也可以時,使用較短的別名也可以簡化語句書寫簡化語句書寫 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SELECT語句語句( (續(xù)續(xù)) )n3. WHERE子句子句nWHERE子句相當(dāng)于關(guān)系代數(shù)中的子句相當(dāng)于關(guān)系代數(shù)中的選擇選擇運算,運算,是作用于是作用于FROM子句中的表和視圖的選擇謂詞子句中的表和視圖的選擇謂詞nWHERE子句缺省時等價于子句缺省時等價于WHERE TRUE(即查詢條件為(即查詢條件為恒真條件)。恒真條件)??梢苑浅?fù)雜可以非常復(fù)雜n基本基本SELECT語句的執(zhí)行相當(dāng)于語句的執(zhí)行相當(dāng)于n首

58、先求首先求FROM子句指定的基本表或?qū)С霰淼牡芽柗e子句指定的基本表或?qū)С霰淼牡芽柗en然后根據(jù)然后根據(jù)WHERE子句的查詢條件從中選擇滿足查詢條子句的查詢條件從中選擇滿足查詢條件的元組件的元組n最后投影到最后投影到SELECT子句的結(jié)果列上,得到查詢的回答子句的結(jié)果列上,得到查詢的回答.關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言不帶不帶WHERE的簡單查詢的簡單查詢n最簡單的最簡單的SELECT語句是只包括語句是只包括SELECT和和FROM子句。這子句。這種語句只能完成對單個表的投影運算。種語句只能完成對單個表的投影運算。n也是就是教材上所說的也是就是教材上所說的“選擇表中的若干列選擇表中的若干列”n例例3.8

59、查詢所有課程的信息可以用:查詢所有課程的信息可以用: SELECT Cno, Cname, Period, Credit FROM Courses;n或簡單地用:或簡單地用: SELECT * FROM Courses; 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言不帶不帶WHERE的簡單查詢的簡單查詢( (續(xù)續(xù)) )n用用“*”來表示所有的屬性列時,得到的查詢表的屬來表示所有的屬性列時,得到的查詢表的屬性次序?qū)⒑捅矶x的屬性次序性次序?qū)⒑捅矶x的屬性次序一致一致n如果用第一種形式,屬性的次序不必與表屬性的定如果用第一種形式,屬性的次序不必與表屬性的定義次序一致,并且允許只顯示我們感興趣的義次序一致,并且允許只顯示我們

60、感興趣的某些屬某些屬性性n例如,下面的語句將顯示每門課程的課程號和學(xué)分:例如,下面的語句將顯示每門課程的課程號和學(xué)分: SELECT Cno, Credit FROM Courses;關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言不帶不帶WHERE的簡單查詢的簡單查詢( (續(xù)續(xù)) )nSELECT子句中的列可以是表達(dá)式,如下面的例子所示。子句中的列可以是表達(dá)式,如下面的例子所示。n例例3.9 假定當(dāng)前年份為假定當(dāng)前年份為2010,下面的語句將顯示每位學(xué)生的,下面的語句將顯示每位學(xué)生的年齡:年齡: SELECT 2010DATEPART(YEAR,Birthday) AS Age FROM Students;nAS Age

溫馨提示

  • 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

提交評論