數(shù)據(jù)庫第3章sql_第1頁
數(shù)據(jù)庫第3章sql_第2頁
數(shù)據(jù)庫第3章sql_第3頁
數(shù)據(jù)庫第3章sql_第4頁
數(shù)據(jù)庫第3章sql_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章 關(guān)系數(shù)據(jù)庫語言SQL本章概要本章概要 SQLSQL是結(jié)構(gòu)化查詢語言(是結(jié)構(gòu)化查詢語言(Structured Query Structured Query LanguageLanguage)的縮寫,其功能包括數(shù)據(jù)查詢、數(shù))的縮寫,其功能包括數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制四個部分。據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制四個部分。 SQL SQL 語言簡潔、方便實(shí)用、功能齊全,已成為語言簡潔、方便實(shí)用、功能齊全,已成為目前應(yīng)用最廣的關(guān)系數(shù)據(jù)庫語言。目前應(yīng)用最廣的關(guān)系數(shù)據(jù)庫語言。 本章要求本章要求 了解 SQL語言的特點(diǎn), 掌握SQL語言的四大功能及使用方法, 重點(diǎn)掌握其數(shù)據(jù)查詢功能及其使用。 S

2、QLSQL語言的發(fā)展及標(biāo)準(zhǔn)化語言的發(fā)展及標(biāo)準(zhǔn)化SQLSQL語言發(fā)展史語言發(fā)展史 SQLSQL語言是當(dāng)前最為成功、應(yīng)用最為廣泛的關(guān)系語言是當(dāng)前最為成功、應(yīng)用最為廣泛的關(guān)系數(shù)據(jù)庫語言,其發(fā)展主要經(jīng)歷了以下幾個階段:數(shù)據(jù)庫語言,其發(fā)展主要經(jīng)歷了以下幾個階段:1. 1974年由CHAMBERLIN和BOYEE提出,當(dāng)時稱為SEQUEL(STUCTURED ENGLISH QUERY LANGUAGE);2. IBM公司對其進(jìn)行了修改,并用于其SYSTEM R關(guān)系數(shù)據(jù)庫系統(tǒng)中;3. 1981年 IBM推出其商用關(guān)系關(guān)系數(shù)據(jù)庫SQL/DS,并將其名字改為SQL,由于SQL語言功能強(qiáng)大,簡潔易用,因此得到了

3、廣泛的使用; 4. 今天廣泛應(yīng)用于各種大型數(shù)據(jù)庫,如SYBASE、INFORMIX、 ORACLE、DB2、INGRES等,也用于各種小型數(shù)據(jù)庫,如FOXPRO、ACCESS。 SQLSQL語言標(biāo)準(zhǔn)化語言標(biāo)準(zhǔn)化 隨著關(guān)系數(shù)據(jù)庫系統(tǒng)和隨著關(guān)系數(shù)據(jù)庫系統(tǒng)和SQLSQL語言應(yīng)用的日益廣泛,語言應(yīng)用的日益廣泛,SQLSQL語言的標(biāo)準(zhǔn)化工作也在緊張革進(jìn)行著,十多年來語言的標(biāo)準(zhǔn)化工作也在緊張革進(jìn)行著,十多年來已制訂了多個已制訂了多個SQLSQL標(biāo)準(zhǔn);標(biāo)準(zhǔn);1. 1982年,美國國家標(biāo)準(zhǔn)化局(AMERICAN NATIONAL STANDARD INSTITUTE,簡稱ANSI)開始制定SQL標(biāo)準(zhǔn);2. 1

4、986年,美國國家標(biāo)準(zhǔn)化協(xié)會公布了SQL語言的第一個標(biāo)準(zhǔn)SQL86;3. 1987年,國際標(biāo)準(zhǔn)化組織(ISO)通過了SQL86標(biāo)準(zhǔn);4. 1989年,國際標(biāo)準(zhǔn)化組織(ISO)對SQL86進(jìn)行了補(bǔ)充,推出了SQL89標(biāo)準(zhǔn);5. 1992年,ISO又推出了SQL92標(biāo)準(zhǔn),也稱為SQL2;6. 目前SQL99(也稱為SQL3)在起草中,增加了面向?qū)ο蟮墓δ堋?. SQL的主要特點(diǎn):的主要特點(diǎn):一體化一體化 集集DDL、DML、DCL功能為一體:定義、操作、功能為一體:定義、操作、控制??刂?。交互式和嵌入式兩種使用方式交互式和嵌入式兩種使用方式 交互式交互式 :( SQL Server 的查詢分析器中

5、的用法)的查詢分析器中的用法) 嵌入式嵌入式 :( 插入到指定的語言中,如插入到指定的語言中,如C、COBOL等等 )3.1 SQL非過程化非過程化 用用SQLSQL語言進(jìn)行數(shù)據(jù)操作,只要提出做語言進(jìn)行數(shù)據(jù)操作,只要提出做“什么什么 ” ”而不必表示怎么做。而不必表示怎么做。 (WHAT WHAT HOW HOW )面向集合的操作方式面向集合的操作方式 操作對象和結(jié)果都是關(guān)系。關(guān)系是元組操作對象和結(jié)果都是關(guān)系。關(guān)系是元組的集合。的集合。 語言簡潔,易學(xué)易用語言簡潔,易學(xué)易用 完成核心功能只有完成核心功能只有9個動詞個動詞:數(shù)據(jù)查詢:數(shù)據(jù)查詢: SELECT數(shù)據(jù)定義:數(shù)據(jù)定義: CREATE,D

6、ROP,ALTER數(shù)據(jù)操縱:數(shù)據(jù)操縱: INSERT,DELETE,UPDATE數(shù)據(jù)控制:數(shù)據(jù)控制: GRANT,REVOKE基本概念基本概念 基本表基本表 視圖視圖 存儲文件存儲文件 索引索引 模式模式數(shù)據(jù)庫對象之?dāng)?shù)據(jù)庫對象之表表 是獨(dú)立存在的表,不是由其它的表導(dǎo)出的表。是獨(dú)立存在的表,不是由其它的表導(dǎo)出的表。一個關(guān)系對應(yīng)一個基本表,一個或多個基本表一個關(guān)系對應(yīng)一個基本表,一個或多個基本表對應(yīng)一個存儲文件。對應(yīng)一個存儲文件。 表是數(shù)據(jù)庫中保存數(shù)據(jù)的對象,表是保存在數(shù)表是數(shù)據(jù)庫中保存數(shù)據(jù)的對象,表是保存在數(shù)據(jù)庫中的,因此在創(chuàng)建表之前,一定要先創(chuàng)建據(jù)庫中的,因此在創(chuàng)建表之前,一定要先創(chuàng)建數(shù)據(jù)庫。

7、數(shù)據(jù)庫。 創(chuàng)建數(shù)據(jù)庫和創(chuàng)建表都可以通過創(chuàng)建數(shù)據(jù)庫和創(chuàng)建表都可以通過SQL Server Management Studio管理工具或管理工具或SQL代碼來實(shí)代碼來實(shí)現(xiàn)?,F(xiàn)。數(shù)據(jù)庫對象之?dāng)?shù)據(jù)庫對象之視圖視圖 視圖可以被看成是虛擬表或存儲查詢。數(shù)據(jù)庫中視圖可以被看成是虛擬表或存儲查詢。數(shù)據(jù)庫中實(shí)際存儲的是實(shí)際存儲的是SQL語句,即只存放視圖的定義,語句,即只存放視圖的定義,而不存放視圖對應(yīng)的數(shù)據(jù),這些數(shù)據(jù)仍存放在導(dǎo)而不存放視圖對應(yīng)的數(shù)據(jù),這些數(shù)據(jù)仍存放在導(dǎo)出視圖的基本表中。當(dāng)基本表中的數(shù)據(jù)發(fā)生變化出視圖的基本表中。當(dāng)基本表中的數(shù)據(jù)發(fā)生變化時,從視圖中查詢出來的數(shù)據(jù)也隨之改變。時,從視圖中查詢出來的

8、數(shù)據(jù)也隨之改變。 SELECT語句的結(jié)果集將構(gòu)成視圖所返回的虛擬語句的結(jié)果集將構(gòu)成視圖所返回的虛擬表。用戶可以采用引用表時所使用的方法,在表。用戶可以采用引用表時所使用的方法,在Transact-SQL語句中引用的視圖名稱來使用此虛語句中引用的視圖名稱來使用此虛擬表。擬表。數(shù)據(jù)庫對象之?dāng)?shù)據(jù)庫對象之視圖視圖 對于視圖所引用的基礎(chǔ)表來說,視圖的對于視圖所引用的基礎(chǔ)表來說,視圖的作用類似于篩選器。定義視圖的篩選數(shù)據(jù)作用類似于篩選器。定義視圖的篩選數(shù)據(jù)可以來自當(dāng)前或其它數(shù)據(jù)庫的一個或多個可以來自當(dāng)前或其它數(shù)據(jù)庫的一個或多個表,或者其它視圖。分布式查詢也可用于表,或者其它視圖。分布式查詢也可用于定義多個

9、異類源數(shù)據(jù)的視圖。定義多個異類源數(shù)據(jù)的視圖。通過視圖進(jìn)行查詢沒有任何限制,通過通過視圖進(jìn)行查詢沒有任何限制,通過它們進(jìn)行數(shù)據(jù)修改時的限制也很少。它們進(jìn)行數(shù)據(jù)修改時的限制也很少。 例如:例如:學(xué)生數(shù)據(jù)庫中有學(xué)生基本情況表學(xué)生數(shù)據(jù)庫中有學(xué)生基本情況表STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT)STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT),此表為基此表為基本表,對應(yīng)一個存儲文件。本表,對應(yīng)一個存儲文件。 可以在其基礎(chǔ)上定義一個男生基本情況視圖STUDENT_MALE(SNO,SNAME,SAGE,SDEPT), 它是從STUDENT中選擇SSEX=男的

10、各個行,然后在SNO,SNAME,SAGE,SDEPT上投影得到的。 在數(shù)據(jù)庫中只存有STUDENT_MALE的定義,而STUDENT_MALE的記錄不重復(fù)存儲。 在用戶看來,視圖是通過不同路徑去看一個實(shí)際表,就象一個窗口一樣,我們通過窗戶去看外面的高樓,可以看到高樓的不同部分,而透過視圖可以看到數(shù)據(jù)庫中自己感興趣的內(nèi)容。數(shù)據(jù)庫對象之?dāng)?shù)據(jù)庫對象之存儲文件 數(shù)據(jù)庫的所有信息都保存在存儲文件中。數(shù)據(jù)庫的所有信息都保存在存儲文件中。數(shù)據(jù)庫是邏輯的,存儲文件是物理的。數(shù)據(jù)庫是邏輯的,存儲文件是物理的。用戶對數(shù)據(jù)庫的操作,最終都映射為對用戶對數(shù)據(jù)庫的操作,最終都映射為對存儲文件的操作。一個基本表可以用一

11、存儲文件的操作。一個基本表可以用一個或多個文件存儲,一個文件也可以存?zhèn)€或多個文件存儲,一個文件也可以存儲一個或多個基本表。儲一個或多個基本表。數(shù)據(jù)庫對象之?dāng)?shù)據(jù)庫對象之索引 表中的記錄通常按輸入順序存放,這種表中的記錄通常按輸入順序存放,這種順序稱為記錄的物理順序。順序稱為記錄的物理順序。 為了實(shí)現(xiàn)對表記錄的快速查詢,可以對為了實(shí)現(xiàn)對表記錄的快速查詢,可以對表文件中的記錄按某個和某些屬性進(jìn)行表文件中的記錄按某個和某些屬性進(jìn)行排序,這種順序稱為邏輯順序。排序,這種順序稱為邏輯順序。 索引即根據(jù)索引表達(dá)式的值進(jìn)行邏輯排索引即根據(jù)索引表達(dá)式的值進(jìn)行邏輯排序的一組指針,它可以實(shí)現(xiàn)對數(shù)據(jù)的快序的一組指針,

12、它可以實(shí)現(xiàn)對數(shù)據(jù)的快速訪問。索引的實(shí)現(xiàn)技術(shù)一般對用戶是速訪問。索引的實(shí)現(xiàn)技術(shù)一般對用戶是不可見的。不可見的。數(shù)據(jù)庫的三級模式結(jié)構(gòu)數(shù)據(jù)庫的三級模式結(jié)構(gòu) 視圖視圖 + +(部分)基本表(部分)基本表 外模式外模式 基本表(的集合)基本表(的集合) 概念模式概念模式 存儲文件和索引存儲文件和索引 內(nèi)模式內(nèi)模式SQL視圖1視圖2基本表1基本表2基本表3基本表4存儲文件1存儲文件2外模式模式內(nèi)模式圖5.1 SQL語言支持的關(guān)系數(shù)據(jù)庫的三級邏輯結(jié)構(gòu) SQLSQL語言支持?jǐn)?shù)據(jù)庫的三級模式結(jié)構(gòu),如圖語言支持?jǐn)?shù)據(jù)庫的三級模式結(jié)構(gòu),如圖3.13.1所示。其中所示。其中外模式外模式對應(yīng)于視圖和部分基本表,對應(yīng)于視圖

13、和部分基本表,模式模式對應(yīng)于基本表,對應(yīng)于基本表,內(nèi)模式內(nèi)模式對應(yīng)于存儲文件。對應(yīng)于存儲文件。 SQL Server 2005數(shù)據(jù)庫及數(shù)據(jù)庫對象數(shù)據(jù)庫及數(shù)據(jù)庫對象 SQL Server 2005中數(shù)據(jù)庫是由表的集合組成中數(shù)據(jù)庫是由表的集合組成的,這些表用于存儲一組特定的結(jié)構(gòu)化數(shù)據(jù)。的,這些表用于存儲一組特定的結(jié)構(gòu)化數(shù)據(jù)。表中包含行(也稱為記錄或元組)和列(也稱表中包含行(也稱為記錄或元組)和列(也稱為屬性)的集合。表中的每一列都用于存儲某為屬性)的集合。表中的每一列都用于存儲某種類型的信息。例如:日期、名稱、金額和數(shù)種類型的信息。例如:日期、名稱、金額和數(shù)字等。字等。 表中有幾種類型的控制(例

14、如:約束、觸發(fā)器、表中有幾種類型的控制(例如:約束、觸發(fā)器、默認(rèn)值和自定義用戶數(shù)據(jù)類型),用于保證數(shù)默認(rèn)值和自定義用戶數(shù)據(jù)類型),用于保證數(shù)據(jù)的有效性。據(jù)的有效性。SQL Server 2005數(shù)據(jù)庫及數(shù)據(jù)庫對象數(shù)據(jù)庫及數(shù)據(jù)庫對象 一個一個SQL Server實(shí)例可以支持多個數(shù)據(jù)實(shí)例可以支持多個數(shù)據(jù)庫。每個數(shù)據(jù)庫可以存儲來自其它數(shù)據(jù)庫。每個數(shù)據(jù)庫可以存儲來自其它數(shù)據(jù)庫的相關(guān)數(shù)據(jù)或不相關(guān)數(shù)據(jù)。例如,庫的相關(guān)數(shù)據(jù)或不相關(guān)數(shù)據(jù)。例如,SQL Server實(shí)例可以有一個數(shù)據(jù)庫用于實(shí)例可以有一個數(shù)據(jù)庫用于存儲職員數(shù)據(jù),另一個數(shù)據(jù)庫用于存儲存儲職員數(shù)據(jù),另一個數(shù)據(jù)庫用于存儲與產(chǎn)品相關(guān)的數(shù)據(jù)?;蛘?,一個數(shù)據(jù)

15、庫與產(chǎn)品相關(guān)的數(shù)據(jù)?;蛘?,一個數(shù)據(jù)庫可以存儲當(dāng)前客戶訂單數(shù)據(jù),而另一個可以存儲當(dāng)前客戶訂單數(shù)據(jù),而另一個相關(guān)數(shù)據(jù)庫可以存儲用于年度報(bào)告的歷相關(guān)數(shù)據(jù)庫可以存儲用于年度報(bào)告的歷史客戶訂單。史客戶訂單。系統(tǒng)數(shù)據(jù)庫功能表系統(tǒng)數(shù)據(jù)庫功能表系統(tǒng)數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫功能功能master數(shù)據(jù)庫數(shù)據(jù)庫記錄記錄SQL Server實(shí)例的所有系統(tǒng)級信息。實(shí)例的所有系統(tǒng)級信息。msdb數(shù)據(jù)庫數(shù)據(jù)庫用于用于SQL Server代理計(jì)劃警報(bào)和作業(yè)。代理計(jì)劃警報(bào)和作業(yè)。model數(shù)據(jù)庫數(shù)據(jù)庫用作在用作在SQL Server實(shí)例上創(chuàng)建的所有數(shù)據(jù)庫實(shí)例上創(chuàng)建的所有數(shù)據(jù)庫的模板。對的模板。對model數(shù)據(jù)庫進(jìn)行的修改(如數(shù)據(jù)數(shù)據(jù)庫進(jìn)

16、行的修改(如數(shù)據(jù)庫大小、排序規(guī)則、恢復(fù)模式和其它數(shù)據(jù)庫庫大小、排序規(guī)則、恢復(fù)模式和其它數(shù)據(jù)庫選項(xiàng))將應(yīng)用于以后創(chuàng)建的所有數(shù)據(jù)庫。選項(xiàng))將應(yīng)用于以后創(chuàng)建的所有數(shù)據(jù)庫。resource數(shù)據(jù)庫數(shù)據(jù)庫一個只讀數(shù)據(jù)庫,包含一個只讀數(shù)據(jù)庫,包含SQL Server 2005包括包括的系統(tǒng)對象。系統(tǒng)對象在物理上保留在的系統(tǒng)對象。系統(tǒng)對象在物理上保留在resource數(shù)據(jù)庫中,但在邏輯上顯示在每個數(shù)數(shù)據(jù)庫中,但在邏輯上顯示在每個數(shù)據(jù)庫的據(jù)庫的sys 架構(gòu)中。架構(gòu)中。tempdb數(shù)據(jù)庫數(shù)據(jù)庫一個工作空間,用于保存臨時對象或中間結(jié)一個工作空間,用于保存臨時對象或中間結(jié)果集。果集。數(shù)據(jù)庫對象是數(shù)據(jù)庫功能的直接體現(xiàn)者

17、,它主要包括數(shù)據(jù)庫對象是數(shù)據(jù)庫功能的直接體現(xiàn)者,它主要包括關(guān)系圖關(guān)系圖表表視圖視圖同義詞同義詞存儲過程存儲過程函數(shù)函數(shù)觸發(fā)器觸發(fā)器類型類型規(guī)則規(guī)則默認(rèn)值默認(rèn)值SQLSQL語言具有語言具有: :數(shù)據(jù)查詢(數(shù)據(jù)查詢(QUERYQUERY)數(shù)據(jù)定義(數(shù)據(jù)定義(DEFINITIONDEFINITION)數(shù)據(jù)操縱(數(shù)據(jù)操縱(MANIPULATIONMANIPULATION)數(shù)據(jù)控制(數(shù)據(jù)控制(CONTROLCONTROL)四種語言一體化的功能。四種語言一體化的功能。下面以下面以SQL SERVER SQL SERVER 為例分別介紹其為例分別介紹其各個功能。各個功能。1、一個數(shù)據(jù)庫的創(chuàng)建、一個數(shù)據(jù)庫的創(chuàng)

18、建創(chuàng)建一個數(shù)據(jù)庫:創(chuàng)建一個數(shù)據(jù)庫:語法語法:Create database 數(shù)據(jù)庫名數(shù)據(jù)庫名 數(shù)據(jù)庫選項(xiàng)定義 例例: Create database temp1; Create database t2; 在在SQL Server 中,建立一個數(shù)據(jù)庫時在空間上就建中,建立一個數(shù)據(jù)庫時在空間上就建立了一個新的數(shù)據(jù)文件和一個對應(yīng)的日志文件。立了一個新的數(shù)據(jù)文件和一個對應(yīng)的日志文件。在同一個系統(tǒng)上,在同一個系統(tǒng)上,數(shù)據(jù)庫不能同名。數(shù)據(jù)庫不能同名。 數(shù)據(jù)庫選項(xiàng)定義:主要用于指出與數(shù)據(jù)庫創(chuàng)建有關(guān)的一些屬性,如數(shù)據(jù)文件存儲的路徑、數(shù)據(jù)文件允許的最大容量、定義字符集等,當(dāng)不指定數(shù)據(jù)庫選項(xiàng)時,采用默認(rèn)選項(xiàng)。 由

19、于不同的DBMS組織管理數(shù)據(jù)采用的結(jié)構(gòu)不同,因此,其數(shù)據(jù)庫選項(xiàng)定義的內(nèi)容也有一定差異,對于具體的DBMS,使用時應(yīng)參考其對應(yīng)SQL語法手冊。 【例【例3.1】 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫XSCJ。CREATEDATABASE XSCJON(NAME=xs1_dat,FILENAME = c:program filesmicrosoft sql servermssqldataxs1dat1.mdf )GONAME:邏輯文件名FILENAME :是創(chuàng)建文件時由操作系統(tǒng)使用的路徑和文件名。 【例【例3.2】 創(chuàng)建一個名為DB2的數(shù)據(jù)庫,它有3個數(shù)據(jù)文件,其中主數(shù)據(jù)文件為10MB,最大容量為100MB,按1

20、0MB增長;2個輔數(shù)據(jù)文件為10MB,最大容量不限,按10%增長;有2個日志文件,大小均為5MB,最大容量均為50MB,按5MB增長。創(chuàng)建指定數(shù)據(jù)和事務(wù)日志文件的創(chuàng)建指定數(shù)據(jù)和事務(wù)日志文件的數(shù)據(jù)庫數(shù)據(jù)庫 CREATE DATABASE Sales ON ( NAME = Sales_dat, FILENAME = c:program filesmicrosoft sql servermssqldataxs1dat1.mdf , SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = Sales_log, FILENAME = c:pr

21、ogram filesmicrosoft sql servermssqldataxs1dat1.ldf ,SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ); 通過指定多個數(shù)據(jù)文件創(chuàng)建數(shù)據(jù)通過指定多個數(shù)據(jù)文件創(chuàng)建數(shù)據(jù)庫庫 CREATE DATABASE Archive ON PRIMARY (NAME = Arch1, FILENAME = c:program filesmicrosoft sql servermssqldataxs1dat1.mdf , SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20),

22、( NAME = Arch2, FILENAME = c:program filesmicrosoft sql servermssqldataxs1dat2.mdf , SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20)2 使用數(shù)據(jù)庫使用數(shù)據(jù)庫 語法:USE 數(shù)據(jù)庫名 該語句用于選擇當(dāng)前數(shù)據(jù)庫,以便進(jìn)行下一步操作。 【例【例3.3】 使用數(shù)據(jù)庫XSCJ。 USE XSCJ 一旦選擇了當(dāng)前數(shù)據(jù)庫,若不對操作的數(shù)據(jù)庫對象加以限定,則其后的命令均是針對當(dāng)前數(shù)據(jù)庫中的對象進(jìn)行的。3 更新數(shù)據(jù)庫 語法格式: ALTER DATABASE | 該語句用于增加、刪除或

23、修改與一個數(shù)據(jù)庫文件有關(guān)的一些屬性,如變更數(shù)據(jù)庫物理文件的存儲路徑、增加、刪除數(shù)據(jù)庫物理文件等?!纠纠?.4】 設(shè)已創(chuàng)建了數(shù)據(jù)庫DB,它只有一個主數(shù)據(jù)文件,其邏輯文件名為db_data,物理文件名為C:Program filesMicrosoft SQL ServerMSSQLdatadb_data.mdf,大小為10MB,最大容量為100MB,增長方式為按10%增長;有一個日志文件,邏輯名為db_log,物理名為C: Program filesMicrosoft SQL ServerMSSQLdatadb_log.ldf,大小為2MB,最大容量為10MB,每次增長2MB。對數(shù)據(jù)庫DB按如下

24、要求進(jìn)行修改:修改數(shù)據(jù)庫DB現(xiàn)有數(shù)據(jù)文件的屬性,將主數(shù)據(jù)文件的最大容量改為不限,增長方式改為按每次5MB增長。分析:因?yàn)樾栊薷闹鲾?shù)據(jù)文件的兩個屬性,而使用ALTER DATABASE語句一次只能修改數(shù)據(jù)文件的一個屬性,所以需要執(zhí)行兩次ALTER DATABASE命令。ALTER DATABASE DBMODIFY FILE (NAME = db_data,MAXSIZE = UNLIMITED)GO /*第一次修改,將主數(shù)據(jù)文件的最大容量改為不限制。*/ALTER DATABASE DBMODIFY FILE (NAME = db_data,FILEGROWTH = 5MB)GO /*第二次修

25、改,將主數(shù)據(jù)文件的增長方式改為按5MB增長。*/4刪除數(shù)據(jù)庫語法格式:DROP DATABASE 該語句會刪除整個數(shù)據(jù)庫,使用時一定要小心?!纠纠?.53.5】 刪除XSCJ數(shù)據(jù)庫。DROP DATABASE XSCJ3.2.2 模式的定義與撤銷“模式”指在數(shù)據(jù)庫中定義的由用戶、角色擁有的命名空間(架構(gòu) ),在這個空間中可以進(jìn)一步定義其包含的數(shù)據(jù)庫對象,如基本表、視圖、索引等。如果把數(shù)據(jù)庫看成是一個“房子”,模式則是房子的一個一個“房間”,每個房間有相應(yīng)的“主人”,每個“房間”存放的“物品”就是數(shù)據(jù)庫對象。是否支持“模式”這一概念與具體的DBMS有關(guān)。需要注意的是:此處“模式”的概念完全不同

26、于數(shù)據(jù)庫三級模式中的“模式”概念。1創(chuàng)建模式語法格式:CREATE SCHEMA AUTHORIZATION 執(zhí)行該語句的用戶必須擁有DBA權(quán)限,或者獲得了由DBA授予的CREATE SCHEMA權(quán)限。如果語句中默認(rèn)模式名,則模式名同用戶名?!纠纠?.63.6】 定義一個學(xué)生課程模式XS_KC。CREATE SCHEMA XS_KC AUTHORIZATION 馬玉 以下示例將創(chuàng)建由以下示例將創(chuàng)建由 Annik 擁有的擁有的Sprockets 架架構(gòu)。此語句向構(gòu)。此語句向 Mandar 授予授予 SELECT 權(quán)限,權(quán)限,而對而對 Prasanna 拒絕授予拒絕授予 SELECT 權(quán)限。請注

27、權(quán)限。請注意,意,Sprockets 和和 NineProngs 在一個語句中創(chuàng)在一個語句中創(chuàng)建。建。 USE AdventureWorks; CREATE SCHEMA Sprockets AUTHORIZATION Annik GRANT SELECT TO Mandar DENY SELECT TO Prasanna; GO 2撤銷模式當(dāng)一個SQL模式及其所屬的基本表、視圖等都不需要時,可撤銷模式。語法格式:DROP SCHEMA 該語句中CASCADE(級聯(lián)),表示執(zhí)行DROP語句時,同時把該模式下的所有數(shù)據(jù)庫對象(基本表、視圖、索引等)一并刪除;RESTRICT(約束),表示執(zhí)行DR

28、OP語句時,只有當(dāng)SQL模式中沒有任何下屬元素時,才能執(zhí)行,否則拒絕該語句的執(zhí)行?!纠纠?.73.7】 撤銷學(xué)生課程模式XS_KC。DROP SCHEMA XS_KC CASCADE SQL的數(shù)據(jù)描述與操作的數(shù)據(jù)描述與操作 操作對象操作對象 操操 作作 方方 式式 創(chuàng)建創(chuàng)建 刪除刪除 修改修改 表表 CREATE TABLE DROP TABLE ALTER TABLE 視圖視圖 CREATE VIEW DROP VIEW 索引索引 CREATE INDEX DROP INDEXSQL的數(shù)據(jù)定義包括對基本表、視圖、索引的的數(shù)據(jù)定義包括對基本表、視圖、索引的創(chuàng)建、刪除和修改。創(chuàng)建、刪除和修改。

29、1、定義和修改基本表、定義和修改基本表(定義概念模式,全局邏輯結(jié)構(gòu)):(定義概念模式,全局邏輯結(jié)構(gòu)): CREATE TABLE DROP TABLE ALTER TABLE 2、定義視圖、定義視圖(定義外模式,局部邏輯結(jié)構(gòu)):(定義外模式,局部邏輯結(jié)構(gòu)): CREATE VIEW SQL系統(tǒng)的外模式還可以包括基本表系統(tǒng)的外模式還可以包括基本表 DROP VIEW 3、定義索引、定義索引(定義內(nèi)模式,存儲結(jié)構(gòu)):(定義內(nèi)模式,存儲結(jié)構(gòu)): CREATE INDEX DROP INDEX數(shù)據(jù)定義語句數(shù)據(jù)定義語句3.2.3 表的創(chuàng)建、修改與刪除 表是數(shù)據(jù)庫最基本的對象,在數(shù)據(jù)庫中,通過表有效地對數(shù)

30、據(jù)進(jìn)行管理。一個表由表結(jié)構(gòu)和表數(shù)據(jù)兩部分構(gòu)成,在創(chuàng)建數(shù)據(jù)庫、模式之后,下一步就是創(chuàng)建表。1. 基本表的定義基本表的定義 基本格式:基本格式: CREATE TABLE 表名(列名表名(列名1 數(shù)據(jù)類型數(shù)據(jù)類型 列級完整性約束列級完整性約束 ,列名,列名2 數(shù)據(jù)類型數(shù)據(jù)類型 列級完整性約束列級完整性約束 ,表級表級完整性約束完整性約束) IN 數(shù)據(jù)庫空間名數(shù)據(jù)庫空間名; 一個表必須有一個表名,在數(shù)據(jù)庫里表名不能重復(fù)。一個表必須有一個表名,在數(shù)據(jù)庫里表名不能重復(fù)。 一個表應(yīng)該有若干個屬性,每個屬性有名字和數(shù)據(jù)類型。一個表應(yīng)該有若干個屬性,每個屬性有名字和數(shù)據(jù)類型。 在一個表里,屬性名(列名)不能重

31、復(fù)。在一個表里,屬性名(列名)不能重復(fù)。 列級完整性約束和表級完整性約束可以定義,也可以不定義列級完整性約束和表級完整性約束可以定義,也可以不定義 CREATE TABLE Supplier ( SNO CHAR (6) , SName CHAR (20) , Status INT , City CHAR(20); 例例 : 創(chuàng)建供應(yīng)商表創(chuàng)建供應(yīng)商表 :供應(yīng)商號碼,供應(yīng)商名稱,信譽(yù):供應(yīng)商號碼,供應(yīng)商名稱,信譽(yù)值,所在城市值,所在城市 Supplier ( SNO, SName, Status, City)一個表的創(chuàng)建起碼要分兩步一個表的創(chuàng)建起碼要分兩步:1.1. 確定表的屬性和名字,屬性名最

32、好用英語表示確定表的屬性和名字,屬性名最好用英語表示 。2.2. 確定每個屬性的數(shù)據(jù)類型,類型的確定數(shù)據(jù)語義確定每個屬性的數(shù)據(jù)類型,類型的確定數(shù)據(jù)語義有關(guān)。有關(guān)。數(shù)據(jù)類型:數(shù)據(jù)類型: 含義:數(shù)據(jù)的表達(dá)方式、取值范圍和可含義:數(shù)據(jù)的表達(dá)方式、取值范圍和可以施加的操作。以施加的操作。 如:蘋果的個數(shù)如:蘋果的個數(shù)- - 整數(shù);整數(shù); 人的體重人的體重 - - 實(shí)數(shù);實(shí)數(shù); 人的名字字符串人的名字字符串 字段的長度:字段的長度:指字段所能容納的最大數(shù)據(jù)指字段所能容納的最大數(shù)據(jù)量,但對不同的數(shù)據(jù)類型來說,長度對字量,但對不同的數(shù)據(jù)類型來說,長度對字段的意義可能有些不同。段的意義可能有些不同。對字符串與

33、UNICODE數(shù)據(jù)類型而言,長度代表字段所能容納的字符的數(shù)目,因此它會限制用戶所能輸入的文本長度。對數(shù)值類的數(shù)據(jù)類型而言,長度則代表字段使用多少個字節(jié)來存放數(shù)字。對BINARY、VARBINARY、IMAGE數(shù)據(jù)類型而言,長度代表字段所能容納的字節(jié)數(shù)。精度和小數(shù)位數(shù)精度和小數(shù)位數(shù)精度是指數(shù)中數(shù)字的位數(shù),包括小數(shù)點(diǎn)左側(cè)的整數(shù)部分和小數(shù)點(diǎn)右側(cè)的小數(shù)部分;小數(shù)位數(shù)則是指數(shù)字小數(shù)點(diǎn)右側(cè)的位數(shù)。例如:數(shù)字12345.678,其精度為8,小數(shù)位數(shù)為3;所以只有數(shù)值類的數(shù)據(jù)類型才有必要指定精度和小數(shù)位數(shù)。 經(jīng)常以如下所示的格式來表示數(shù)據(jù)經(jīng)常以如下所示的格式來表示數(shù)據(jù)類型以及它所采用的長度、精度和類型以及它所

34、采用的長度、精度和小數(shù)位數(shù),其中的小數(shù)位數(shù),其中的N代表長度,代表長度,P代代表精度,表精度,S表示小數(shù)位數(shù)。表示小數(shù)位數(shù)。BINARY(N) - BINARY(10)CHAR(N) - CHAR(20)N U M E R I C ( P, S ) - - - - - - - NUMERIC(8,3) 但有的數(shù)據(jù)類型的精度與小數(shù)位數(shù)但有的數(shù)據(jù)類型的精度與小數(shù)位數(shù)是固定的,對采用此類數(shù)據(jù)類型的是固定的,對采用此類數(shù)據(jù)類型的字段而言,不需設(shè)置精度與小數(shù)位字段而言,不需設(shè)置精度與小數(shù)位數(shù),數(shù),如:如果某字段采用INT數(shù)據(jù)類型,其長度固定是4,精度固定是10,小數(shù)位數(shù)則固定是0,這表示字段將能存放10

35、位數(shù)沒有小數(shù)點(diǎn)的整數(shù)。存儲大小則是4個字節(jié)。標(biāo)準(zhǔn)標(biāo)準(zhǔn)SQL語言支持的數(shù)據(jù)類型:語言支持的數(shù)據(jù)類型:常用的數(shù)據(jù)類型:常用的數(shù)據(jù)類型: 整型整型 例子:例子:10,200,302 浮點(diǎn)型浮點(diǎn)型 例子:例子: 10.12 , 23.098 字符串型字符串型 例子:例子:“This is an example”, “ a sample string” 日期型日期型 例子:例子: 2002/09/09 , 2001-02-01, yyyy-mm-dd 時間型時間型 例子:例子: hh:mm:ss,12:02:09, 23:23:23 定義表的屬性時要指明屬性的數(shù)據(jù)類型,注意定義表的屬性時要指明屬性的數(shù)據(jù)

36、類型,注意不同的不同的DBMS支持的數(shù)據(jù)類型不完全相同。支持的數(shù)據(jù)類型不完全相同。表3.1 數(shù)值型數(shù)數(shù) 據(jù)據(jù) 類類 型型注注 釋釋INTEGER長整型,可縮寫為長整型,可縮寫為INT,范圍,范圍231231 1SMALLINT短整型,范圍短整型,范圍215215DECIMAL(m,n)實(shí)型數(shù),有實(shí)型數(shù),有m位數(shù),其中小數(shù)點(diǎn)后位數(shù),其中小數(shù)點(diǎn)后n位位數(shù)字?jǐn)?shù)字NUMERIC(m,n)實(shí)型數(shù),有實(shí)型數(shù),有m位數(shù)字,其中小數(shù)點(diǎn)后位數(shù)字,其中小數(shù)點(diǎn)后n位數(shù)字位數(shù)字FLOAT(n)浮點(diǎn)數(shù),精度為浮點(diǎn)數(shù),精度為n位數(shù)字位數(shù)字SQL中常用的數(shù)據(jù)類型中常用的數(shù)據(jù)類型 ( 類型不區(qū)分大小寫)類型不區(qū)分大小寫)表3

37、.2 字符型數(shù)數(shù) 據(jù)據(jù) 類類 型型注注 釋釋CHAR(n)長度為長度為n的定長字符串,最大的定長字符串,最大254個個字符字符VARCHAR(n)長度為長度為n的變長字符串,最大的變長字符串,最大32767個字符個字符LONG VARCHAR(n)長度為長度為n的變長字符串,最大的變長字符串,最大32700個字符個字符SQL中常用的數(shù)據(jù)類型中常用的數(shù)據(jù)類型 ( 類型不區(qū)分大小寫)類型不區(qū)分大小寫)表3.3 時間型數(shù)數(shù) 據(jù)據(jù) 類類 型型注注 釋釋DATE日期,形式為日期,形式為YYYYMMDDTIME時間,形式為時間,形式為HH:MM:SSTIMESTAMP時間戳類型時間戳類型SQL中常用的數(shù)據(jù)

38、類型中常用的數(shù)據(jù)類型 ( 類型不區(qū)分大小寫)類型不區(qū)分大小寫)SQL Server 數(shù)據(jù)類型數(shù)據(jù)類型 char, varchar, text, nvarchar, ntext decimal, numeric, bit, binary, varbinary, image, int,smallint, tinyint ,float , real ,money, smallmoney ,datetime, smalldatetime (4)NULL值與值與DEFAULT值值 DEFAULT值值表示某一字段的默表示某一字段的默認(rèn)值,當(dāng)沒有輸入數(shù)據(jù)時,則使認(rèn)值,當(dāng)沒有輸入數(shù)據(jù)時,則使用此默認(rèn)的值。用此

39、默認(rèn)的值。空值空值(NULL) 空值時不存在的值,即未知的或者不可用空值時不存在的值,即未知的或者不可用的。的。 空值可以參加真值運(yùn)算 AND OR NOT 在算術(shù)表達(dá)式中,如果任一運(yùn)算分量為空值,則表達(dá)式的值為空值 在邏輯表達(dá)式中,如果有一個值為空值,則整個邏輯表達(dá)式的值為空值Create Table創(chuàng)建一張表合同表創(chuàng)建一張表合同表Contract,該表中含有,該表中含有五個字段,分別是五個字段,分別是 合同號ContractID字符型數(shù)據(jù) 單位代碼 CompanyID 字符型數(shù)據(jù) 合同名稱 ContractName 字符型數(shù)據(jù) 合同總金額 ContractVolume 數(shù)值型數(shù)據(jù) 簽定日期

40、 SignDate 日期型數(shù)據(jù)ContractIDCompanyIDContractNameContractVolumeSignDateContractCREATE TABLE Contract (ContractID varchar (10) NOT NULL ,CompanyID varchar (10) NOT NULL ,ContractName varchar (30) NULL ,ContractVolume numeric(18, 2) NULL,SignDate Datetime NULL)2 2 修改基本表修改基本表 由于應(yīng)用環(huán)境和應(yīng)用需求的變化,經(jīng)由于應(yīng)用環(huán)境和應(yīng)用需求的變

41、化,經(jīng)常需要修改基本表的結(jié)構(gòu),比如,增常需要修改基本表的結(jié)構(gòu),比如,增加新列、修改原有的列定義等。加新列、修改原有的列定義等。 SQLSQL語言使用語言使用ALTER TABLEALTER TABLE命令來完成命令來完成這一功能,有如下兩種修改方式:這一功能,有如下兩種修改方式:1) ADD1) ADD方式方式2) ALTER 2) ALTER 方式方式3) DROP 3) DROP 方式方式1) ADD方式方式 用于增加新列,定義方式同用于增加新列,定義方式同CREATE TABLE語句中的定義方式相同,其語法格語句中的定義方式相同,其語法格式為:式為:ALTER TABLE ADD 例例

42、在在S表中增加一個班號列和住址列。表中增加一個班號列和住址列。ALTER TABLE S ADDCLASS_NO CHAR(6),ADDRESS CHAR(40) 注意:使用此方式增加的新列注意:使用此方式增加的新列自動自動填充填充NULL值值,所以不能為增加的新,所以不能為增加的新列指定列指定NOT NULL約束約束 。2) ALTER 方式方式 用于修改某些列,其語法格式為:用于修改某些列,其語法格式為:ALTER TABLEALTER COLUMN NULL|NOT NULL 例例 把把S表中的表中的SNO列加寬到列加寬到8位字符寬度位字符寬度ALTER TABLE S ALTER CO

43、LUMNSNO CHAR(8)3) DROP方式方式注意:使用此方式有如下一些限制:注意:使用此方式有如下一些限制:不能改變列名;不能改變列名;不能將含有空值的列的定義修改為不能將含有空值的列的定義修改為NOT NOT NULLNULL約束;約束;若列中已有數(shù)據(jù),則不能減少該列的寬度,若列中已有數(shù)據(jù),則不能減少該列的寬度,也不能改變其數(shù)據(jù)類型;也不能改變其數(shù)據(jù)類型;只能修改只能修改NULL|NOT NULLNULL|NOT NULL約束,其它類型約束,其它類型的約束在修改之前必須先刪除,然后再重的約束在修改之前必須先刪除,然后再重新添加修改過的約束定義。新添加修改過的約束定義。 【例【例3.9

44、】 設(shè)已在數(shù)據(jù)庫XSCJ中創(chuàng)建了學(xué)生表XS,現(xiàn)在對XS表按如下要求進(jìn)行修改: 在表XS中增加一個新字段“政治面貌”。USE XSCJ /*打開XSCJ數(shù)據(jù)庫*/ALTER TABLE XSADD 政治面貌 varchar(12) 在表XS中刪除名為“班級”的字段。USE XSCJALTER TABLE XSDROP COLUMN 班級 修改表XS中已有字段的屬性:將名為“姓名”的字段長度由原來的8改為10;將名為“出生日期”的字段的數(shù)據(jù)類型由原來的smalldatetime改為datetime。USE XSCJALTER TABLE XSALTER COLUMN 姓名 char(10)ALTE

45、R COLUMN 出生日期 datetime3 刪除基本表刪除基本表當(dāng)某個基本表無用時,可將其刪除。當(dāng)某個基本表無用時,可將其刪除。刪除后,該表中的數(shù)據(jù)和在此表上所建的刪除后,該表中的數(shù)據(jù)和在此表上所建的索引都被刪除,而建立在該表上的視圖不索引都被刪除,而建立在該表上的視圖不會隨之刪除,系統(tǒng)將繼續(xù)保留其定義,但會隨之刪除,系統(tǒng)將繼續(xù)保留其定義,但已無法使用。已無法使用。如果重新恢復(fù)該表,這些視圖可重新使用。如果重新恢復(fù)該表,這些視圖可重新使用。刪除表的語法格式:刪除表的語法格式:DROP TABLE 例:例: 刪除表刪除表STUDENT DROP TABLE STUDENT 注意:只能刪除自己

46、建立的表,注意:只能刪除自己建立的表,不能刪除其他用戶所建的表。不能刪除其他用戶所建的表。索引的作用:索引的作用: 在日常生活中我們會經(jīng)常遇到索引,例如圖書目錄、詞典索引等。 借助索引,人們會很快地找到需要的東西。 索引是數(shù)據(jù)庫隨機(jī)檢索的常用手段,它實(shí)際上就是記錄的關(guān)鍵字與其相應(yīng)地址的對應(yīng)表。 例如,當(dāng)我們要在本書中查找有關(guān)“SQL查詢”的內(nèi)容時,應(yīng)該先通過目錄找到“SQL查詢”所對應(yīng)的頁碼,然后從該頁碼中找出所要的信息。這種方法比直接翻閱書的內(nèi)容要快。 如果把數(shù)據(jù)庫表比作一本書,則表的索引就如書的目錄一樣,通過索引可大大提高查詢速度。3.2.4 索引的創(chuàng)建與刪除索引的創(chuàng)建與刪除 索引的作用可

47、歸納為:索引的作用可歸納為:1. 加快查詢速度;2. 保證行的唯一性。1 建立索引建立索引 建立索引的語句是建立索引的語句是CREATE INDEX,其,其語法格式為:語法格式為:CREATE UNIQUE CLUSTER INDEX ON ( 次序次序 , 次序次序) UNIQUE表明建立唯一索引。 CLUSTER表示建立聚集索引。 次序用來指定索引值的排列順序,可為ASC(升序)或DESC(降序),缺省值為ASC。 例例 為表為表SC在在SNO和和CNO上建立唯一索引。上建立唯一索引。 CREATE UNIQUE INDEX SCI ON SC(SNO,CNO) 執(zhí)行此命令后,為執(zhí)行此命令

48、后,為SCSC表建立一個索引名為表建立一個索引名為SCISCI的唯一索引,的唯一索引, 此索引為此索引為SNOSNO和和CNOCNO兩列的兩列的復(fù)合索引復(fù)合索引,即對,即對SCSC表中的行先按表中的行先按SNOSNO的遞增順序索引,對于的遞增順序索引,對于相同的相同的SNOSNO,又按,又按CNOCNO的遞增順序索引。的遞增順序索引。 由于有由于有UNIQUEUNIQUE的限制,所以該索引在的限制,所以該索引在(SNO,CNO)(SNO,CNO)組合列的排序上具有唯一性,不組合列的排序上具有唯一性,不存在重復(fù)值。存在重復(fù)值。 例例 為教師表為教師表T在在TN上建立聚集索引。上建立聚集索引。CR

49、EATE CLUSTER INDEX TI ON T(TN)執(zhí)行此命令后,為T表建立一個索引名為TI的聚集索引,T表中的記錄將按照TN值的升序存放。 注意:注意:1. 1. 改變表中的數(shù)據(jù)(如增加或刪除記改變表中的數(shù)據(jù)(如增加或刪除記錄)時,索引將自動更新。錄)時,索引將自動更新。索引建立后,在查詢使用該列時,系統(tǒng)將自動使用索引進(jìn)行查詢。 2. 2. 索引數(shù)目無限制,但索引越多,更索引數(shù)目無限制,但索引越多,更新數(shù)據(jù)的速度越慢。對于僅用于查詢新數(shù)據(jù)的速度越慢。對于僅用于查詢的表可多建索引,對于數(shù)據(jù)更新頻繁的表可多建索引,對于數(shù)據(jù)更新頻繁的表則應(yīng)少建索引。的表則應(yīng)少建索引。2 2 刪除索引刪除索引 建立索引是為了提高查詢速度,但隨建立索引是為了提高查詢速度,但隨著索引的增多,數(shù)據(jù)更新時,系統(tǒng)會著索引的增多,數(shù)據(jù)更新時,系統(tǒng)會花費(fèi)許多時間來維護(hù)索引。這時,應(yīng)花費(fèi)許多時間來維護(hù)索引。這時,應(yīng)刪除不必要的索引。刪

溫馨提示

  • 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

提交評論