![數(shù)據(jù)庫第6講SQL_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/742e8597-7d27-4076-8f92-2afedf6e2dee/742e8597-7d27-4076-8f92-2afedf6e2dee1.gif)
![數(shù)據(jù)庫第6講SQL_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/742e8597-7d27-4076-8f92-2afedf6e2dee/742e8597-7d27-4076-8f92-2afedf6e2dee2.gif)
![數(shù)據(jù)庫第6講SQL_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/742e8597-7d27-4076-8f92-2afedf6e2dee/742e8597-7d27-4076-8f92-2afedf6e2dee3.gif)
![數(shù)據(jù)庫第6講SQL_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/742e8597-7d27-4076-8f92-2afedf6e2dee/742e8597-7d27-4076-8f92-2afedf6e2dee4.gif)
![數(shù)據(jù)庫第6講SQL_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/742e8597-7d27-4076-8f92-2afedf6e2dee/742e8597-7d27-4076-8f92-2afedf6e2dee5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、返回返回 1 第第6講講 SQL語言語言 教學(xué)目標(biāo):使學(xué)生掌握教學(xué)目標(biāo):使學(xué)生掌握SQLSQL結(jié)構(gòu)化查詢語言的使用方法結(jié)構(gòu)化查詢語言的使用方法 教學(xué)內(nèi)容:教學(xué)內(nèi)容:SQLSQL的基本知識的基本知識 建立刪除數(shù)據(jù)表和索引建立刪除數(shù)據(jù)表和索引 教學(xué)重點(diǎn):教學(xué)重點(diǎn): SQLSQL的基本概念的基本概念 數(shù)據(jù)庫的基本操作數(shù)據(jù)庫的基本操作 教學(xué)難點(diǎn):完整性約束教學(xué)難點(diǎn):完整性約束 教學(xué)方法:講授法教學(xué)方法:講授法 舉例法舉例法 教學(xué)時間:教學(xué)時間:2 2學(xué)時學(xué)時 教學(xué)過程:教學(xué)過程: 返回返回 2 6.1 SQL語言的基本概念與特點(diǎn)語言的基本概念與特點(diǎn) 6.1.1 SQL語言的發(fā)展語言的發(fā)展 SQL語言是
2、當(dāng)前最為成功、應(yīng)用最為廣泛的關(guān)系數(shù)據(jù)庫語言,其發(fā)語言是當(dāng)前最為成功、應(yīng)用最為廣泛的關(guān)系數(shù)據(jù)庫語言,其發(fā) 展主要經(jīng)歷了以下幾個階段:展主要經(jīng)歷了以下幾個階段: 1.1 9 7 4 年 由 C H A M B E R L I N 和 B O Y E E 提 出 , 當(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)大,簡潔易用,因此得到了廣泛的使用; 4.今天廣泛應(yīng)用于各種
3、大型數(shù)據(jù)庫,如SYBASE、INFORMIX、 ORACLE、DB2、INGRES等,也用于各種小型數(shù)據(jù)庫,如FOXPRO、 ACCESS。 返回返回 3 SQL概述及特點(diǎn)概述及特點(diǎn) 字面看字面看SQL只是一個查詢語言,而實(shí)際上只是一個查詢語言,而實(shí)際上SQL作為一作為一 種標(biāo)準(zhǔn)數(shù)據(jù)庫語言,從對數(shù)據(jù)庫的隨機(jī)查詢到數(shù)據(jù)庫的管種標(biāo)準(zhǔn)數(shù)據(jù)庫語言,從對數(shù)據(jù)庫的隨機(jī)查詢到數(shù)據(jù)庫的管 理和程序設(shè)計,理和程序設(shè)計,SQL幾乎無所不能,功能十分豐富幾乎無所不能,功能十分豐富. SQL語言是一種關(guān)系數(shù)據(jù)庫語言,提供數(shù)據(jù)的定義、查語言是一種關(guān)系數(shù)據(jù)庫語言,提供數(shù)據(jù)的定義、查 詢、更新和控制等功能。詢、更新和控制等
4、功能。 SQL語言不是一個應(yīng)用程序開發(fā)語言,只提供對數(shù)據(jù)庫語言不是一個應(yīng)用程序開發(fā)語言,只提供對數(shù)據(jù)庫 的操作能力,不能完成屏幕控制、菜單管理、報表生成等的操作能力,不能完成屏幕控制、菜單管理、報表生成等 功能,可成為應(yīng)用開發(fā)語言的一部分。功能,可成為應(yīng)用開發(fā)語言的一部分。 SQL語言不是一個語言不是一個DBMS,它屬于,它屬于DBMS語言處理程序。語言處理程序。 大部分大部分DBMS產(chǎn)品都支持產(chǎn)品都支持SQL,成為操作數(shù)據(jù)庫的標(biāo)準(zhǔn),成為操作數(shù)據(jù)庫的標(biāo)準(zhǔn) 語言語言 返回返回 4 SQL具有交互式與嵌入式兩種形式具有交互式與嵌入式兩種形式 v交互式SQL:一般DBMS都提供聯(lián)機(jī)交互工具,用戶 可
5、直接鍵入SQL命令對數(shù)據(jù)庫進(jìn)行操作由DBMS來進(jìn) 行解釋 v嵌入式SQL:能將SQL語句嵌入到高級語言(宿主語 言),使應(yīng)用程序充分利用SQL訪問數(shù)據(jù)庫的能力、 宿主語言的過程處理能力,一般需要預(yù)編譯,將嵌入 的SQL語句轉(zhuǎn)化為宿主語言編譯器能處理的語句 v SQL的語法結(jié)構(gòu)基本一致 SQLSQL具有語言簡潔、易學(xué)易用的特點(diǎn)具有語言簡潔、易學(xué)易用的特點(diǎn) 返回返回 5 SQL的特點(diǎn)的特點(diǎn) SQL支持三級模式結(jié)構(gòu)支持三級模式結(jié)構(gòu) 一個一個SQL數(shù)據(jù)庫的總體邏輯結(jié)構(gòu)是基本表(數(shù)據(jù)庫的總體邏輯結(jié)構(gòu)是基本表(Table)的)的 集合,對應(yīng)于概念模式集合,對應(yīng)于概念模式 SQL數(shù)據(jù)庫的底層存儲結(jié)構(gòu)采用文件
6、,一個或幾個表數(shù)據(jù)庫的底層存儲結(jié)構(gòu)采用文件,一個或幾個表 對應(yīng)一個存儲文件對應(yīng)一個存儲文件,以及索引文件。對應(yīng)內(nèi)模式以及索引文件。對應(yīng)內(nèi)模式 用戶所見的數(shù)據(jù)結(jié)構(gòu)是視圖(用戶所見的數(shù)據(jù)結(jié)構(gòu)是視圖(View),用戶可直接操),用戶可直接操 作的表,可為視圖或部分基本表。對應(yīng)外模式作的表,可為視圖或部分基本表。對應(yīng)外模式 注:支持注:支持sql語言的數(shù)據(jù)庫稱為語言的數(shù)據(jù)庫稱為sql數(shù)據(jù)庫數(shù)據(jù)庫 返回返回 6 6.1.2 SQL語言的基本概念語言的基本概念 首先介紹兩個基本概念:基本表和視圖。首先介紹兩個基本概念:基本表和視圖。 基本表基本表(BASE TABLE):是獨(dú)立存在的表,不是由):是獨(dú)立存
7、在的表,不是由 其它的表導(dǎo)出的表。一個關(guān)系對應(yīng)一個基本表,一個其它的表導(dǎo)出的表。一個關(guān)系對應(yīng)一個基本表,一個 或多個基本表對應(yīng)一個存儲文件。或多個基本表對應(yīng)一個存儲文件。 視圖(視圖(VIEW):是一個虛擬的表,是從一個或幾個:是一個虛擬的表,是從一個或幾個 基本表導(dǎo)出的表。它本身不獨(dú)立存在于數(shù)據(jù)庫中,數(shù)基本表導(dǎo)出的表。它本身不獨(dú)立存在于數(shù)據(jù)庫中,數(shù) 據(jù)庫中只存放視圖的定義而不存放視圖對應(yīng)的數(shù)據(jù),據(jù)庫中只存放視圖的定義而不存放視圖對應(yīng)的數(shù)據(jù), 這些數(shù)據(jù)仍存放在導(dǎo)出視圖的基本表中。當(dāng)基本表中這些數(shù)據(jù)仍存放在導(dǎo)出視圖的基本表中。當(dāng)基本表中 的數(shù)據(jù)發(fā)生變化時,從視圖中查詢出來的數(shù)據(jù)也隨之的數(shù)據(jù)發(fā)生變
8、化時,從視圖中查詢出來的數(shù)據(jù)也隨之 改變。改變。 返回返回 7 SQL 視圖1視圖2 基本表1基本表2基本表3基本表4 存儲文件1存儲文件2 外模式 模式 內(nèi)模式 圖6.1 SQL語言支持的關(guān)系數(shù)據(jù)庫的三級邏輯結(jié)構(gòu) SQL語言支持?jǐn)?shù)據(jù)庫的三級模式結(jié)構(gòu),如圖語言支持?jǐn)?shù)據(jù)庫的三級模式結(jié)構(gòu),如圖6.1所示。所示。 其中其中外模式外模式對應(yīng)于視圖和部分基本表,對應(yīng)于視圖和部分基本表,模式模式對應(yīng)于基對應(yīng)于基 本表,本表,內(nèi)模式內(nèi)模式對應(yīng)于存儲文件。對應(yīng)于存儲文件。 返回返回 8 例如:例如:學(xué)生數(shù)據(jù)庫中有學(xué)生基本情況表學(xué)生數(shù)據(jù)庫中有學(xué)生基本情況表 STUDENT(SNO,SNAME,SSEX,SAGE
9、,SDEPT),此表此表 為基本表,對應(yīng)一個存儲文件??梢栽谄浠A(chǔ)上定義為基本表,對應(yīng)一個存儲文件。可以在其基礎(chǔ)上定義 一個男生基本情況表一個男生基本情況表 STUDENT_MALE(SNO,SNAME,SAGE,SDEPT), 它是從STUDENT中選擇SSEX=男的各個行,然 后在SNO,SNAME,SAGE,SDEPT上投影得到的。 在數(shù)據(jù)庫中只存有STUDENT_MALE的定義,而 STUDENT_MALE的記錄不重復(fù)存儲。 在用戶看來,視圖是通過不同路徑去看一個實(shí)際表, 就象一個窗口一樣,透過視圖可以看到數(shù)據(jù)庫中自 己感興趣的內(nèi)容。 返回返回 9 SQL的特點(diǎn)的特點(diǎn) 返回返回 10
10、6.2 SQL數(shù)據(jù)定義數(shù)據(jù)定義 SQL語言使用語言使用數(shù)據(jù)定義語言數(shù)據(jù)定義語言(DATA DEFINITION LANGUAGE,簡稱,簡稱DDL)實(shí)現(xiàn)其數(shù)據(jù)定義功能。)實(shí)現(xiàn)其數(shù)據(jù)定義功能。 操作操作 對象對象 操作對象操作對象 創(chuàng)建創(chuàng)建刪除刪除修改修改 表表Create tableDrop tableAlter table 視圖視圖Create viewDrop view 索引索引Create indexDrop index 數(shù)據(jù)數(shù)據(jù) 庫庫 Create databaseDrop database Alter database 返回返回 11 SQL語句格式的約定符號語句格式的約定符號 語句
11、格式中語句格式中, 中的內(nèi)容是必須的,是用戶自定義語義中的內(nèi)容是必須的,是用戶自定義語義; 為任選項為任選項 或分隔符或分隔符|表示必選項表示必選項,即必選其中之一項即必選其中之一項 ,N表示前面得項可以重復(fù)多次表示前面得項可以重復(fù)多次 返回返回 12 6.2. 1 創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表 數(shù)據(jù)表是關(guān)系數(shù)據(jù)庫的基本組成單位,它物理地存儲于數(shù)據(jù)庫的數(shù)據(jù)表是關(guān)系數(shù)據(jù)庫的基本組成單位,它物理地存儲于數(shù)據(jù)庫的 存儲文件中。存儲文件中。 CREATE TABLE CREATE TABLE ( 列 級 完 整 性 約 束 條 件列 級 完 整 性 約 束 條 件 , 列級完整性約束條件列級完整性約束條件 ,
12、 , nn , , nn ) (1)是合法標(biāo)識符,最多可有是合法標(biāo)識符,最多可有128個字符,如個字符,如S,SC,C,不,不 允許重名。允許重名。 (2)列名列名( (字母開頭,可含字母、數(shù)字、字母開頭,可含字母、數(shù)字、$ $、_ =128_ =128字符字符) ) 。 同一表中不許有重名列;同一表中不許有重名列; (2)數(shù)據(jù)類型數(shù)據(jù)類型:見后;:見后; (3)字段的長度、精度和小數(shù)位數(shù)字段的長度、精度和小數(shù)位數(shù); 返回返回 13 例例6.1 建立一學(xué)生表建立一學(xué)生表 Use student Create table s ( sno char(8) , snamevarchar(20), s
13、ge int, sex char(2), dept varchar(20); 執(zhí)行該語句后,便產(chǎn)生了學(xué)生基本表的表框架,此表執(zhí)行該語句后,便產(chǎn)生了學(xué)生基本表的表框架,此表 為一個空表。為一個空表。 返回返回 14 字段數(shù)據(jù)類型字段數(shù)據(jù)類型 當(dāng)用當(dāng)用SQL語句定義表時,需要為表中的每一個字段設(shè)語句定義表時,需要為表中的每一個字段設(shè) 置一個數(shù)據(jù)類型,用來指定字段所存放的數(shù)據(jù)是整數(shù)、置一個數(shù)據(jù)類型,用來指定字段所存放的數(shù)據(jù)是整數(shù)、 字符串、貨幣或是其它類型的數(shù)據(jù)。字符串、貨幣或是其它類型的數(shù)據(jù)。 SQL Server 的數(shù)據(jù)類型有很多種,分為以下的數(shù)據(jù)類型有很多種,分為以下9類:類: 1. 整數(shù)數(shù)據(jù)
14、類型:依整數(shù)數(shù)值的范圍大小,有bit, int , smallint, tinyint(微整型)四種。 2. 精確數(shù)值類型:用來定義可帶小數(shù)部分的數(shù)字,有 numeric和decimal兩種。十進(jìn)制數(shù),共P位,其中小 數(shù)點(diǎn)后S位。0=S=P,S=0時可省略。如:123.0、 8000.56 返回返回 15 3. 近似浮點(diǎn)數(shù)值數(shù)據(jù)類型:當(dāng)數(shù)值的位數(shù)太多時,可用 此數(shù)據(jù)類型來取其近似值,用float和real兩種。如: 1.23E+10 4. 日期時間數(shù)據(jù)類型:用來表示日期與時間,依時間范 圍與精確程度可分為datetime與smalldatetime兩種。如: 1998-06-08 15:30:
15、00 5. 字符串?dāng)?shù)據(jù)類型:用來表示字符串的字段。包括: char, varchar, text三種,如:“數(shù)據(jù)庫” 6.標(biāo)記數(shù)據(jù)類型:有uniqueidentifier,timestamp兩種, 此數(shù)據(jù)類型通常系統(tǒng)自動產(chǎn)生,而不是用戶輸入的, t i m e s t a m p 記 錄 數(shù) 據(jù) 更 新 的 時 間 戳 印 , 而 uniqueidentifier用來識別每一筆數(shù)據(jù)的唯一性。 返回返回 16 各種數(shù)據(jù)類型的有關(guān)規(guī)定如下表:各種數(shù)據(jù)類型的有關(guān)規(guī)定如下表: 數(shù) 據(jù) 類型 數(shù)據(jù)內(nèi)容與范圍占用的字節(jié) bit0, 1, NULL 實(shí)際使用1 bit,但會 占用1 byte,若一個數(shù) 據(jù)中
16、有數(shù)個bit字段, 則可共占1個byte int-231到231-14 bytes smallint-215至215-12 bytes tinyint0至2551 byte 返回返回 17 numeric -1038-1至1038-1 1-9位數(shù)使用5BYTES 10-19位數(shù)使用9BYTES 20-28位數(shù)使用13BYTES 29-38位數(shù)使用17BYTES decimal -1038-1至1038-15-17BYTES因長度而 異,與NUMERIC相 同 float -1.79E+306至1.79E+308, 最多可表示53位數(shù) 8 BYTES real -3.40E+38到3.40E+3
17、8, 最多可表示24位數(shù) 4 BYTES 返回返回 18 datetime 1753/1/1至9999/12/318 BYTES smalldatetime 1900/1/1至2079/6/64 BYTES char 1-8000個字符1個字符占1B,尾端空 白字符保留 varchar 1-8000個字符1個字符占1B,尾端空 白字符刪除。 text 231-1個字符1個字符占2B,最大可 存儲2GB 返回返回 19 字段的長度:字段的長度:指字段所能容納的最大數(shù)據(jù)量,但對不同的指字段所能容納的最大數(shù)據(jù)量,但對不同的 數(shù)據(jù)類型來說,長度對字段的意義可能有些不同。數(shù)據(jù)類型來說,長度對字段的意義可
18、能有些不同。 對字符串?dāng)?shù)據(jù)類型而言,長度代表字段所能容納的字 符的數(shù)目,因此它會限制用戶所能輸入的文本長度。 對數(shù)值類的數(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ù)。 字段的長度、精度和小數(shù)位數(shù)字段的長度、精度和小數(shù)位數(shù) 返回返回 20 經(jīng)常以如下所示的格式來表示數(shù)據(jù)類型以及它所采用經(jīng)常以如下所示的格式來表示數(shù)據(jù)類型以及它所采用
19、的長度、精度和小數(shù)位數(shù),其中的的長度、精度和小數(shù)位數(shù),其中的N代表長度,代表長度,P代表代表 精度,精度,S表示小數(shù)位數(shù)。表示小數(shù)位數(shù)。 BINARY(10) CHAR(20) NUMERIC(8,3) 但有的數(shù)據(jù)類型的精度與小數(shù)位數(shù)是固定的,對采用但有的數(shù)據(jù)類型的精度與小數(shù)位數(shù)是固定的,對采用 此類數(shù)據(jù)類型的字段而言,不需設(shè)置精度與小數(shù)位數(shù),此類數(shù)據(jù)類型的字段而言,不需設(shè)置精度與小數(shù)位數(shù), 如:如果某字段采用int數(shù)據(jù)類型,其長度固定是4, 精度固定是10,小數(shù)位數(shù)則固定是0,這表示字段 將能存放10位數(shù)沒有小數(shù)點(diǎn)的整數(shù)。存儲大小則是 4個字節(jié)。 返回返回 21 3. 定義完整性約束定義完整
20、性約束 上列為創(chuàng)建基本表的最簡單形式,還可以對表進(jìn)一步定義,上列為創(chuàng)建基本表的最簡單形式,還可以對表進(jìn)一步定義, 如如主鍵主鍵、空值空值的設(shè)定,使數(shù)據(jù)庫用戶能夠根據(jù)應(yīng)用的需要的設(shè)定,使數(shù)據(jù)庫用戶能夠根據(jù)應(yīng)用的需要 對基本表的定義做出更為精確和詳盡的規(guī)定。對基本表的定義做出更為精確和詳盡的規(guī)定。 在在SQL Server中,對于基本表的約束分為中,對于基本表的約束分為列約束列約束和和表約束表約束。 列約束是對某一個特定列的約束,包含在列定義中,直 接跟在該列的其他定義之后,用空格分隔,不必指定列 名; 表約束與列定義相互獨(dú)立,不包括在列定義中,通常用 于對多個列一起進(jìn)行約束,定義表約束時必須指出
21、要約 束的那些列的名稱。完整性約束的基本語法格式為: constarint 約束名:約束名:約束不指定名稱時,系統(tǒng)會給定一個名稱。約束不指定名稱時,系統(tǒng)會給定一個名稱。 返回返回 22 例例建立一個建立一個S表,定義表,定義sname+sex為唯一。為唯一。 Use student Create tables ( sno char(8) , snamevarchar(20), sge int, sex char(2), constarint s_uniq unique(sname,sex); 返回返回 23 Use student Create tables ( sno char(8) not
22、 null , snamevarchar(20) , age int , Sex char(2) default 男 , Dept varchar(20) ); 返回返回 24 約束類型:約束類型:在定義完整性約束時必須指定完整性約束的類型。在定義完整性約束時必須指定完整性約束的類型。 在在SQL Server中可以定義五種類型的完整性約束,下面分別中可以定義五種類型的完整性約束,下面分別 加以介紹:加以介紹: (1)NULL/NOT NULL 是否允許該字段的值為NULL。 NULL值不是0也不是空白,更不是填入字符串“NULL”, 而是表示“不知道”、“不確定”或“沒有數(shù)據(jù)”的意思。 當(dāng)某
23、一字段的值一定要輸入才有意義的時候,則可以設(shè)置 為NOT NULL。 如主鍵列就不允許出現(xiàn)空值,否則就失去了唯一標(biāo)識一條 記錄的作用 只能用于定義列約束, 其語法格式如下: constarint constarint NULL|NOT NULL 返回返回 25 例例 建立一個建立一個S表,對表,對SNO字段進(jìn)行字段進(jìn)行NOT NULL約束。約束。 USE STUDENT CREATE TABLE S (SNO CHAR(10) NOT NULL, SN VARCHAR(20), AGE INT, SEX CHAR(2) DEFAULT 男 , DEPT VARCHAR(20); 當(dāng)當(dāng)SNO為空
24、上時,系統(tǒng)給出錯誤信息,無為空上時,系統(tǒng)給出錯誤信息,無NOT NULL 約束時,系統(tǒng)缺省為約束時,系統(tǒng)缺省為NULL。 返回返回 26 (2)UNIQUE約束約束 UNIQUE約束用于指明基本表在某一列或多個列的組合上約束用于指明基本表在某一列或多個列的組合上 的取值必須唯一。的取值必須唯一。 定義了定義了UNIQUE約束的那些列稱為約束的那些列稱為唯一鍵唯一鍵,系統(tǒng)自動為唯,系統(tǒng)自動為唯 一鍵建立唯一索引,從而保證了唯一鍵的唯一性。一鍵建立唯一索引,從而保證了唯一鍵的唯一性。 唯一鍵允許為空,但系統(tǒng)為保證其唯一性,最多只可以出唯一鍵允許為空,但系統(tǒng)為保證其唯一性,最多只可以出 現(xiàn)一個現(xiàn)一個
25、NULL值。值。 UNIQUE既可用于列約束,也可用于表約束。既可用于列約束,也可用于表約束。 UNIQUE用于定義列約束用于定義列約束時,其語法格式如下:時,其語法格式如下: CONSTRAINT UNIQUE 例例 建立一個建立一個S表,定義表,定義SN為唯一鍵。為唯一鍵。 USE STUDENT CREATE TABLE S (SNO CHAR(6), SN CHAR(8) UNIQUE, SEX CHAR(2), AGE NUMERIC(2); 返回返回 27 其中其中SN_UNIQ為指定的約束名稱,約束名稱可以省略,為指定的約束名稱,約束名稱可以省略, 如下例:如下例: USE ST
26、UDENT CREATE TABLE S (SNO CHAR(6), SN CHAR(8) UNIQUE, SEX CHAR(2), AGE NUMERIC(2); UNIQUE用于定義用于定義表約束表約束時,其語法格式如下:時,其語法格式如下: CONSTRAINT UNIQUE(,) 返回返回 28 例例 建立一個建立一個S表,定義表,定義SN+SEX為唯一鍵。為唯一鍵。 USE STUDENT CREATE TABLE S ( SNO CHAR(5), SN CHAR(8), SEX CHAR(2), UNIQUE(SN,SEX); 系統(tǒng)為系統(tǒng)為SN+SEX建立唯一索引,確保同一性別的學(xué)
27、生建立唯一索引,確保同一性別的學(xué)生 沒有重名。沒有重名。 (3)PRIMARY KEY約束約束 PRIMARY KEY約束用于定義基本表的主鍵,起唯一約束用于定義基本表的主鍵,起唯一 標(biāo)識作用,其值不能為標(biāo)識作用,其值不能為NULL,也不能重復(fù),以此來,也不能重復(fù),以此來 保證實(shí)體的完整性。保證實(shí)體的完整性。 返回返回 29 PRIMARY KEY與與UNIQUE約束類似,通過建立唯一約束類似,通過建立唯一 索引來保證基本表在主鍵列取值的唯一性,但它們之索引來保證基本表在主鍵列取值的唯一性,但它們之 間存在著很大的間存在著很大的區(qū)別區(qū)別: 在一個基本表中只能定義一個PRIMARY KEY約束,
28、 但可定義多個UNIQUE約束; 對于指定為PRIMARY KEY的一個列或多個列的組 合,其中任何一個列都不能出現(xiàn)空值,而對于 UNIQUE所約束的唯一鍵,則允許為空。 注意:不能為同一個列或一組列既定義注意:不能為同一個列或一組列既定義UNIQUE約束,約束, 又定義又定義PRIMARY KEY約束。約束。 PRIMARY KEY既可用于列約束,也可用于表約束。既可用于列約束,也可用于表約束。 PRIMARY KEY用于定義用于定義列約束列約束時,其語法格式如下:時,其語法格式如下: CONSTRAINT PRIMARY KEY 返回返回 30 例例 建立一個建立一個S表,定義表,定義SN
29、O為為S的主鍵的主鍵 USE STUDENT CREATE TABLE S (SNO CHAR(5) NOT NULL PRIMARY KEY, SN CHAR(8), AGE NUMERIC(2); PRIMARY KEY用于定義用于定義表約束表約束時,即將某些列的組時,即將某些列的組 合定義為主鍵,其語法格式如下:合定義為主鍵,其語法格式如下: CONSTRAINT PRIMARY KEY () 返回返回 31 例例 建立一個建立一個SC表,定義表,定義SNO+CNO為為SC的主鍵的主鍵 USE STUDENT CREATE TABLE SC (SNO CHAR(5) NOT NULL,
30、CNO CHAR(5) NOT NULL, SCORE NUMERIC(3), PRIMARY KEY(SNO,CNO); 返回返回 32 (4)FOREIGN KEY約束約束 FOREIGN KEY約束指定某一個列或一組列作為外碼,約束指定某一個列或一組列作為外碼, 其中,包含外碼的表稱為其中,包含外碼的表稱為從表從表,包含外部鍵所引用的,包含外部鍵所引用的 主鍵或唯一鍵的表稱主鍵或唯一鍵的表稱主表主表。 系統(tǒng)保證從表在外碼上的取值要么是主表中某一個主系統(tǒng)保證從表在外碼上的取值要么是主表中某一個主 碼值,要么取空值。以此保證兩個表之間的連接,確碼值,要么取空值。以此保證兩個表之間的連接,確
31、保了實(shí)體的參照完整性。保了實(shí)體的參照完整性。 FOREIGN KEY既可用于列約束,也可用于表約束,既可用于列約束,也可用于表約束, 其語法格式為:其語法格式為: CONSTRAINT FOREIGN KEY REFERENCES () 返回返回 33 例例 建立一個建立一個SC表,定義表,定義SNO,CNO為為SC的外碼。的外碼。 USE STUDENT CREATE TABLE SC (SNO CHAR(5) NOT NULL FOREIGN KEY REFERENCES S(SNO), CNO CHAR(5) NOT NULL FOREIGN KEY REFERENCES C(CNO),
32、 SCORE NUMERIC(3), PRIMARY KEY (SNO,CNO); 返回返回 34 (5)CHECK約束約束 CHECK約束用來檢查字段值所允許的范圍,如,一個字段只能約束用來檢查字段值所允許的范圍,如,一個字段只能 輸入整數(shù),而且限定在輸入整數(shù),而且限定在0-100的整數(shù),以此來保證域的完整性。的整數(shù),以此來保證域的完整性。 CHECK既可用于列約束,也可用于表約束,既可用于列約束,也可用于表約束, 其語法格式為:其語法格式為: CONSTRAINT CHECK () 例例 建立一個建立一個SC表,定義表,定義SCORE 的取值范圍為的取值范圍為0到到100之間。之間。 US
33、E STUDENT CREATE TABLE SC (SNO CHAR(5), CNO CHAR(5), SCORE NUMERIC(5,1) CHECK(SCORE=0 AND SCORE =100); 返回返回 35 例例 建立包含完整性定義的學(xué)生表建立包含完整性定義的學(xué)生表 USE STUDENT CREATE TABLE S (SNO CHAR(6) PRIMARY KEY, SN CHAR(8) NOT NULL, AGE NUMERIC(2) NOT NULL CHECK (AGE BETWEEN 15 AND 50), SEX CHAR(2) DEFAULT 男, DEPT CH
34、AR(10) NOT NULL); 返回返回 36 6.2.3.2 修改基本表修改基本表 由于應(yīng)用環(huán)境和應(yīng)用需求的變化,經(jīng)常需要修改基本表的由于應(yīng)用環(huán)境和應(yīng)用需求的變化,經(jīng)常需要修改基本表的 結(jié)構(gòu),比如,增加新列和完整性約束、修改原有的列定義結(jié)構(gòu),比如,增加新列和完整性約束、修改原有的列定義 和完整性約束等。和完整性約束等。 SQL語言使用語言使用ALTER TABLE命令來完成這一功能,有如命令來完成這一功能,有如 下三種修改方式:下三種修改方式: 1. ADD方式方式 用于增加新列和完整性約束,定義方式同用于增加新列和完整性約束,定義方式同CREATE TABLE 語句中的定義方式相同,其
35、語法格式為:語句中的定義方式相同,其語法格式為: ALTER TABLE ADD | 例例 在在S表中增加一個班號列和住址列。表中增加一個班號列和住址列。 USE STUDENT ALTER TABLE S ADD CLASS_NO CHAR(6), ADDRESS CHAR(40) 返回返回 37 注意:使用此方式增加的新列注意:使用此方式增加的新列自動填充自動填充NULL值值,所,所 以不能為增加的新列指定以不能為增加的新列指定NOT NULL約束約束 。 例例 在在SC表中增加完整性約束定義,使表中增加完整性約束定義,使SCORE在在0-100 之間。之間。 USE STUDENT AL
36、TER TABLE SC ADD CONSTRAINT SCORE_CHK CHECK(SCORE BETWEEN 0 AND 100) 返回返回 38 2. ALTER 方式方式 用于修改某些列,其語法格式為:用于修改某些列,其語法格式為: ALTER TABLE ALTER COLUMN NULL|NOT NULL 例例 把把S表中的表中的SNO列加寬到列加寬到8位字符寬度位字符寬度 USE STUDENT ALTER TABLE S ALTER COLUMN SNO CHAR(8) 返回返回 39 注意:使用此方式有如下一些限制:注意:使用此方式有如下一些限制: 不能改變列名;不能改變列
37、名; 不能將含有空值的列的定義修改為不能將含有空值的列的定義修改為NOT NULL約束;約束; 若列中已有數(shù)據(jù),則不能減少該列的寬度,也不能改變其數(shù)若列中已有數(shù)據(jù),則不能減少該列的寬度,也不能改變其數(shù) 據(jù)類型;據(jù)類型; 只能修改只能修改NULL|NOT NULL約束,其它類型的約束在修改約束,其它類型的約束在修改 之前必須先刪除,然后再重新添加修改過的約束定義。之前必須先刪除,然后再重新添加修改過的約束定義。 3.DROP方式方式 刪除完整性約束定義,其語法格式為:刪除完整性約束定義,其語法格式為: ALTER TABLE DROP CONSTRAINT 返回返回 40 例例 刪除刪除S表中的
38、表中的AGE_CHK約束約束 USE STUDENT ALTER TABLE S DROP CONSTRAINT AGE_CHK 返回返回 41 6.2.3.4 刪除基本表刪除基本表 當(dāng)某個基本表無用時,可將其刪除。當(dāng)某個基本表無用時,可將其刪除。 刪除后,該表中的數(shù)據(jù)和在此表上所建的索引都被刪除,刪除后,該表中的數(shù)據(jù)和在此表上所建的索引都被刪除, 而建立在該表上的視圖不會隨之刪除,系統(tǒng)將繼續(xù)保留其而建立在該表上的視圖不會隨之刪除,系統(tǒng)將繼續(xù)保留其 定義,但已無法使用。定義,但已無法使用。 如果重新恢復(fù)該表,這些視圖可重新使用。如果重新恢復(fù)該表,這些視圖可重新使用。 刪除表的語法格式:刪除表的
39、語法格式: DROP TABLE 例例 刪除表刪除表STUDENT USE STUDENT DROP TABLE STUDENT 注意:只能刪除自己建立的表,不能刪除其他用戶所建的注意:只能刪除自己建立的表,不能刪除其他用戶所建的 表。表。 返回返回 42 6.2.5 設(shè)計、創(chuàng)建和維護(hù)索引設(shè)計、創(chuàng)建和維護(hù)索引 6.2.5.1 6.2.5.1 索引的作用索引的作用 在日常生活中我們會經(jīng)常遇到索引,例如圖書目錄、詞典索 引等。 借助索引,人們會很快地找到需要的東西。 索引是數(shù)據(jù)庫隨機(jī)檢索的常用手段,它實(shí)際上就是記錄的關(guān) 鍵字與其相應(yīng)地址的對應(yīng)表。 例如,當(dāng)我們要在本書中查找有關(guān)“SQL查詢”的內(nèi)容
40、時,應(yīng) 該先通過目錄找到“SQL查詢”所對應(yīng)的頁碼,然后從該頁碼 中找出所要的信息。這種方法比直接翻閱書的內(nèi)容要快。 如果把數(shù)據(jù)庫表比作一本書,則表的索引就如書的目錄一樣, 通過索引可大大提高查詢速度。 此外,在SQL SERVER中,行的唯一性也是通過建立唯一索引 來維護(hù)的。 索引的作用可歸納為:索引的作用可歸納為: 1. 加快查詢速度; 2. 保證行的唯一性。 返回返回 43 6.2.5.2 索引的分類索引的分類 1. 按照索引記錄的存放位置可分為聚集索引與非聚集索引按照索引記錄的存放位置可分為聚集索引與非聚集索引 聚集索引:按照索引的字段排列記錄,并且依照排好的 順序?qū)⒂涗洿鎯υ诒碇小?非聚集索引:按照索引的字段排列記錄,但是排列的結(jié) 果并不會存儲在表中,而是另外存儲。 2. 唯一索引的概念唯一索引的概念 唯一索引表示表中每一個索引值只對應(yīng)唯一的數(shù)據(jù)記錄, 這與表的PRIMARY KEY的特性類似,因此唯一性索引 常用于PRIMARY KEY的字段上,以區(qū)別每
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電競主播團(tuán)隊獨(dú)家合作協(xié)議2篇
- 2025-2030全球冷拌廠行業(yè)調(diào)研及趨勢分析報告
- 住宅翻新墻體拆除合同
- 糧食作物配送司機(jī)勞動合同
- 保健用品融資居間合同范例
- 綠色建筑評價合同
- 食品質(zhì)量檢測服務(wù)合同
- 電子招投標(biāo)系統(tǒng)開發(fā)維護(hù)合同
- 電子商務(wù)平臺賣家與買家交易責(zé)任豁免合同
- 生態(tài)農(nóng)業(yè)開發(fā)合同
- 人教版《道德與法治》四年級下冊教材簡要分析課件
- 2023年MRI技術(shù)操作規(guī)范
- 辦公用品、易耗品供貨服務(wù)方案
- 自行聯(lián)系單位實(shí)習(xí)申請表
- 醫(yī)療廢物集中處置技術(shù)規(guī)范
- 媒介社會學(xué)備課
- 2023年檢驗(yàn)檢測機(jī)構(gòu)質(zhì)量手冊(依據(jù)2023年版評審準(zhǔn)則編制)
- 三相分離器原理及操作
- 新教科版五年級下冊科學(xué)全冊每節(jié)課后練習(xí)+答案(共28份)
- 葫蘆島尚楚環(huán)保科技有限公司醫(yī)療廢物集中處置項目環(huán)評報告
- 全國物業(yè)管理項目經(jīng)理考試試題
評論
0/150
提交評論