




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1. SQL的發(fā)展的發(fā)展 SQL(Structured Query Language)意為結(jié)構(gòu)化查詢語言意為結(jié)構(gòu)化查詢語言. 1974年由年由Boyce和和Chamberlin提出來提出來. 最初在最初在System R關(guān)系數(shù)據(jù)庫(kù)中實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫(kù)中實(shí)現(xiàn). 該語言功能豐富、語言簡(jiǎn)捷、使用靈活方便、深受各界歡迎該語言功能豐富、語言簡(jiǎn)捷、使用靈活方便、深受各界歡迎. 1986年成為美國(guó)國(guó)家標(biāo)準(zhǔn)年成為美國(guó)國(guó)家標(biāo)準(zhǔn). 1987年成為國(guó)際標(biāo)準(zhǔn)年成為國(guó)際標(biāo)準(zhǔn)SQL86. 1989年年,ISO頒布了增強(qiáng)完整性特征的頒布了增強(qiáng)完整性特征的SQL89標(biāo)準(zhǔn)標(biāo)準(zhǔn). 1993年年, ISO對(duì)對(duì)SQL89標(biāo)準(zhǔn)進(jìn)行了大量的
2、修改和擴(kuò)充標(biāo)準(zhǔn)進(jìn)行了大量的修改和擴(kuò)充,推出推出SQL2(SQL92).SQL是一種通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語言是一種通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語言.各數(shù)據(jù)庫(kù)廠家紛紛推出各自支持各數(shù)據(jù)庫(kù)廠家紛紛推出各自支持SQL的軟件或與的軟件或與SQL 接口軟件接口軟件,使自己的數(shù)據(jù)庫(kù)可以運(yùn)行使自己的數(shù)據(jù)庫(kù)可以運(yùn)行SQL.許多其他軟件許多其他軟件(例如圖形處理、人工智能、軟件工程工具、軟件例如圖形處理、人工智能、軟件工程工具、軟件開發(fā)工具等開發(fā)工具等)也利用也利用SQL語言的數(shù)據(jù)查詢功能語言的數(shù)據(jù)查詢功能,作為自身的一部分作為自身的一部分,使其數(shù)據(jù)查詢功能更強(qiáng)大使其數(shù)據(jù)查詢功能更強(qiáng)大. 許多程序設(shè)計(jì)語言
3、中也都引入了許多程序設(shè)計(jì)語言中也都引入了SQL.2. SQL的特點(diǎn)2. SQL的特點(diǎn)的特點(diǎn)非關(guān)系模型的數(shù)據(jù)語言非關(guān)系模型的數(shù)據(jù)語言 模式數(shù)據(jù)定義語言:模式數(shù)據(jù)定義語言:Schema DDL 外模式外模式(子模式)數(shù)據(jù)定義語言:子模式)數(shù)據(jù)定義語言:SubSchema DDL 存儲(chǔ)模式數(shù)據(jù)定義語言:存儲(chǔ)模式數(shù)據(jù)定義語言: DSDL (Data Storage Definition Language) 數(shù)據(jù)操縱語言:數(shù)據(jù)操縱語言:DMLSQL語言語言 SQL將數(shù)據(jù)定義語言將數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言、數(shù)據(jù)操縱語言DML數(shù)據(jù)控制語言數(shù)據(jù)控制語言DCL集集 成在一起成在一起,各種語言風(fēng)格統(tǒng)一各種
4、語言風(fēng)格統(tǒng)一.(1) 一體化一體化 用用SQL語言可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)生命周期的全部活動(dòng),其中包括建立語言可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)生命周期的全部活動(dòng),其中包括建立數(shù)據(jù)庫(kù)、建立用戶帳號(hào)、定義關(guān)系模式、查詢及數(shù)據(jù)維護(hù)、數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)、建立用戶帳號(hào)、定義關(guān)系模式、查詢及數(shù)據(jù)維護(hù)、數(shù)據(jù)庫(kù)安全控制等。安全控制等。(2) 高度非過程化高度非過程化非關(guān)系語言非關(guān)系語言 通過存取路徑存取數(shù)據(jù)。通過存取路徑存取數(shù)據(jù)。SQL語言語言 SQL是一種面向問題的語言,只需提出是一種面向問題的語言,只需提出“做什么做什么”,不必指出,不必指出“怎么做怎么做”。存取路徑的選擇和。存取路徑的選擇和SQL的操作過程是由系統(tǒng)自動(dòng)完成的。的操作過程
5、是由系統(tǒng)自動(dòng)完成的。 例如,例如,SQL只需要用一個(gè)只需要用一個(gè)Update語句就可以完成對(duì)數(shù)據(jù)庫(kù)表中數(shù)據(jù)語句就可以完成對(duì)數(shù)據(jù)庫(kù)表中數(shù)據(jù)的更新操作。的更新操作。(3) 面向集合的操作方式面向集合的操作方式非關(guān)系語言非關(guān)系語言一次一個(gè)記錄。一次一個(gè)記錄。SQL語言語言采用集合操作采用集合操作,操作對(duì)象和操作結(jié)果都是元組的集合。操作對(duì)象和操作結(jié)果都是元組的集合。(4) 兩種使用方式、統(tǒng)一的語法結(jié)構(gòu)兩種使用方式、統(tǒng)一的語法結(jié)構(gòu)SQL既是既是自含式語言自含式語言,又是,又是嵌入式語言嵌入式語言。自含式語言使用方式自含式語言使用方式就是聯(lián)機(jī)交互使用方式,即通過在終端鍵盤就是聯(lián)機(jī)交互使用方式,即通過在終端
6、鍵盤上輸入一條上輸入一條SQL命令,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)操作的方式。這種方式能夠命令,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)操作的方式。這種方式能夠立即從屏幕上看到命令執(zhí)行的結(jié)果,為數(shù)據(jù)庫(kù)數(shù)據(jù)的遠(yuǎn)程維護(hù)提立即從屏幕上看到命令執(zhí)行的結(jié)果,為數(shù)據(jù)庫(kù)數(shù)據(jù)的遠(yuǎn)程維護(hù)提供了方便。供了方便。嵌入式語言使用方式嵌入式語言使用方式是指將是指將SQL語句幾乎不加修改地嵌入到某種語句幾乎不加修改地嵌入到某種高級(jí)程序設(shè)計(jì)語言的程序中,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。例如嵌入高級(jí)程序設(shè)計(jì)語言的程序中,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。例如嵌入到到VB、Delphi、Java等前端開發(fā)平臺(tái)上,通過編寫的數(shù)據(jù)庫(kù)應(yīng)用等前端開發(fā)平臺(tái)上,通過編寫的數(shù)據(jù)庫(kù)應(yīng)用程序?qū)崿F(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。
7、此時(shí),用戶不能直接觀察到各條程序?qū)崿F(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。此時(shí),用戶不能直接觀察到各條SQL語句的輸出結(jié)果,其結(jié)果必須通過變量或過程參數(shù)返回。語句的輸出結(jié)果,其結(jié)果必須通過變量或過程參數(shù)返回。同一條命令在兩種操作方式中的語法結(jié)構(gòu)基本一致。同一條命令在兩種操作方式中的語法結(jié)構(gòu)基本一致。(5) 語言簡(jiǎn)捷、易學(xué)易用語言簡(jiǎn)捷、易學(xué)易用SQL具有很強(qiáng)的功能具有很強(qiáng)的功能,但由于其設(shè)計(jì)巧妙但由于其設(shè)計(jì)巧妙,使得語言十分簡(jiǎn)捷。使得語言十分簡(jiǎn)捷。完成其核心功能只用完成其核心功能只用9個(gè)動(dòng)詞:個(gè)動(dòng)詞:數(shù)據(jù)查詢:數(shù)據(jù)查詢:SELECT(查詢查詢)數(shù)據(jù)定義:數(shù)據(jù)定義:CREATE(創(chuàng)建表、索引、視圖創(chuàng)建表、索引、視圖)
8、DROP(刪除表、索引、視圖刪除表、索引、視圖) ALTER(修改表修改表)數(shù)據(jù)操縱:數(shù)據(jù)操縱: INSERT(插入插入) DELETE(刪除刪除) UPDATE(修改修改)數(shù)據(jù)控制:數(shù)據(jù)控制:GRANT(授權(quán)授權(quán)) REVOKE(收回授權(quán)收回授權(quán))3. SQL語言的主要功能語言的主要功能SQL語言根據(jù)其可實(shí)現(xiàn)的功能不同,主要有語言根據(jù)其可實(shí)現(xiàn)的功能不同,主要有3類語句組成。類語句組成。 數(shù)據(jù)定義語句數(shù)據(jù)定義語句(DDL, Data Definition Language);用于定義關(guān)系;用于定義關(guān)系數(shù)據(jù)庫(kù)的模式、外模式和內(nèi)模式,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)基本表、視圖數(shù)據(jù)庫(kù)的模式、外模式和內(nèi)模式,以實(shí)現(xiàn)對(duì)
9、數(shù)據(jù)庫(kù)基本表、視圖及索引文件的定義、修改和刪除等操作。做常用的有及索引文件的定義、修改和刪除等操作。做常用的有CREATE、DROP、ALTER語句。語句。 數(shù)據(jù)操縱語句數(shù)據(jù)操縱語句(DML,Data Manipulation Language);用于完;用于完成對(duì)數(shù)據(jù)庫(kù)表數(shù)據(jù)的查詢和更新操作。其中,數(shù)據(jù)更新是指對(duì)數(shù)成對(duì)數(shù)據(jù)庫(kù)表數(shù)據(jù)的查詢和更新操作。其中,數(shù)據(jù)更新是指對(duì)數(shù)據(jù)進(jìn)行插入、刪除和修改操作。做常用的有據(jù)進(jìn)行插入、刪除和修改操作。做常用的有SELECT、INSECT、UPDATE、DELETE語句。語句。 數(shù)據(jù)控制語句數(shù)據(jù)控制語句(DCL,Data Control Language);用
10、于控制對(duì)數(shù);用于控制對(duì)數(shù)據(jù)庫(kù)的訪問,以及服務(wù)器的關(guān)閉、啟動(dòng)等操作。最常用的有據(jù)庫(kù)的訪問,以及服務(wù)器的關(guān)閉、啟動(dòng)等操作。最常用的有GRANT、REVOKE等語句。等語句。4. SQL語言的書寫準(zhǔn)則語言的書寫準(zhǔn)則“ ”SQLSQL(structured query language)structured query language)結(jié)構(gòu)化查詢語言。結(jié)構(gòu)化查詢語言。 它是一種標(biāo)準(zhǔn),不是一種軟件它是一種標(biāo)準(zhǔn),不是一種軟件SQL SERVERSQL SERVER是數(shù)據(jù)庫(kù)管理系統(tǒng)的一種是數(shù)據(jù)庫(kù)管理系統(tǒng)的一種. .它是一種軟件,這種軟件在遵循它是一種軟件,這種軟件在遵循SQLSQL這種標(biāo)準(zhǔn),很多數(shù)據(jù)庫(kù)這種
11、標(biāo)準(zhǔn),很多數(shù)據(jù)庫(kù)管理軟件及開發(fā)工具都支持管理軟件及開發(fā)工具都支持SQLSQL這種標(biāo)準(zhǔn)。這種標(biāo)準(zhǔn)。 SQL的數(shù)據(jù)定義包括定義基本表,定義索引,定義視圖和定的數(shù)據(jù)定義包括定義基本表,定義索引,定義視圖和定義數(shù)據(jù)庫(kù),其基本語句如下表所示:義數(shù)據(jù)庫(kù),其基本語句如下表所示:操作對(duì)象操作對(duì)象創(chuàng)建語句創(chuàng)建語句刪除語句刪除語句修改語句修改語句基本表基本表CREATE TABLEDROP TABLEALTER TABLE索引索引CREATE INDEXDROP INDEX視圖視圖CREATE VIEWDROP VIEW數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)CREATE DATABASEDROP DATABASEALTER DATABAS
12、E在在SQL語句格式中,有下列約定符號(hào)和語法規(guī)定需要說明:語句格式中,有下列約定符號(hào)和語法規(guī)定需要說明: 語句格式約定符號(hào)語句格式約定符號(hào) 語句格式中,尖括號(hào)語句格式中,尖括號(hào)“”中為實(shí)際語義;中括號(hào)中為實(shí)際語義;中括號(hào)“ ”中的內(nèi)容為任中的內(nèi)容為任選項(xiàng);大括號(hào)選項(xiàng);大括號(hào)“ ”或用分隔符或用分隔符“”中的內(nèi)容為必選項(xiàng),即必選其中的內(nèi)容為必選項(xiàng),即必選其中之一項(xiàng);中之一項(xiàng);, . . . n表示前面的項(xiàng)可重復(fù)多次表示前面的項(xiàng)可重復(fù)多次 一般語法規(guī)定一般語法規(guī)定 SQL中的數(shù)據(jù)項(xiàng)中的數(shù)據(jù)項(xiàng)(包括列項(xiàng)、表和視圖包括列項(xiàng)、表和視圖)分隔符為分隔符為“,”,其字符串常數(shù),其字符串常數(shù)的定界符用單引號(hào)的
13、定界符用單引號(hào)“ ”表示表示 SQL特殊語法規(guī)定特殊語法規(guī)定 SQL的關(guān)鍵詞一般使用大寫字母表示;的關(guān)鍵詞一般使用大寫字母表示;SQL語句的結(jié)束符為語句的結(jié)束符為“ ; ”。SQL一般采用格式化書寫方式。一般采用格式化書寫方式。 通過通過SQL語言創(chuàng)建數(shù)據(jù)庫(kù)的核心語句是語言創(chuàng)建數(shù)據(jù)庫(kù)的核心語句是CREATE DATABASE。該。該語句的語法格式為:語句的語法格式為:CREATE DATABASE database_nameON PRIMARY , n , , nLOG ON , nCOLLATE collation_nameFOR LOADFOR ATTACH:=(NAME=logical_
14、file_name,FILENAME=os_file_name, SIZE=size,MAXSIZE=max_sizeUNLIMITED,FILEGROWTH=growth_increment) , n:=FILEGROUP filegroup_name , n下面具體說明語句中各參數(shù)的含義:下面具體說明語句中各參數(shù)的含義:n database_name是所創(chuàng)建數(shù)據(jù)庫(kù)的名稱,數(shù)據(jù)庫(kù)名稱在服務(wù)器中必須唯一,并且是所創(chuàng)建數(shù)據(jù)庫(kù)的名稱,數(shù)據(jù)庫(kù)名稱在服務(wù)器中必須唯一,并且 要符合要符合SQL Server 2000的命名規(guī)則,最多可包含的命名規(guī)則,最多可包含128個(gè)字符。個(gè)字符。n ON子句指定數(shù)據(jù)庫(kù)
15、的數(shù)據(jù)庫(kù)文件和文件組。子句指定數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)文件和文件組。n表示可以有表示可以有n個(gè)與前面相同的描個(gè)與前面相同的描 述,即為創(chuàng)建的數(shù)據(jù)庫(kù)指定多個(gè)文件。例如,述,即為創(chuàng)建的數(shù)據(jù)庫(kù)指定多個(gè)文件。例如, , n 表示可以出現(xiàn)表示可以出現(xiàn)n 個(gè)個(gè)。n PRIMARY用來指定主文件。如果沒有指定主文件,那么用來指定主文件。如果沒有指定主文件,那么CREATE DATABASE 語句中列出的第一個(gè)文件將默認(rèn)為主文件。數(shù)據(jù)文件的描述主要給出文件的邏輯、語句中列出的第一個(gè)文件將默認(rèn)為主文件。數(shù)據(jù)文件的描述主要給出文件的邏輯、 存儲(chǔ)路徑、大小及增長(zhǎng)特性。存儲(chǔ)路徑、大小及增長(zhǎng)特性。n LOG ON子句,用于指定數(shù)
16、據(jù)庫(kù)日志文件的屬性,其定義格式與數(shù)據(jù)文件的格式子句,用于指定數(shù)據(jù)庫(kù)日志文件的屬性,其定義格式與數(shù)據(jù)文件的格式 相同。相同。n logical_file_name邏輯文件名,實(shí)在創(chuàng)建數(shù)據(jù)庫(kù)后執(zhí)行夫人邏輯文件名,實(shí)在創(chuàng)建數(shù)據(jù)庫(kù)后執(zhí)行夫人T-SQL語句中引用文件語句中引用文件 的名稱。他在數(shù)據(jù)庫(kù)中必須唯一,并且符合標(biāo)識(shí)符的命名規(guī)則。該名稱可以是字的名稱。他在數(shù)據(jù)庫(kù)中必須唯一,并且符合標(biāo)識(shí)符的命名規(guī)則。該名稱可以是字 符或符或unicode常量,也可以是常規(guī)標(biāo)識(shí)符或定界標(biāo)識(shí)符。常量,也可以是常規(guī)標(biāo)識(shí)符或定界標(biāo)識(shí)符。n os_file_name操作系統(tǒng)文件名,是操作系統(tǒng)在創(chuàng)建物理文件時(shí)使用的路徑和文件名
17、。操作系統(tǒng)文件名,是操作系統(tǒng)在創(chuàng)建物理文件時(shí)使用的路徑和文件名。n size是數(shù)據(jù)文件的初始大小是數(shù)據(jù)文件的初始大小(對(duì)于主文件,若不指出大小,則默認(rèn)為對(duì)于主文件,若不指出大小,則默認(rèn)為model數(shù)據(jù)庫(kù)主數(shù)據(jù)庫(kù)主 文件的大??;對(duì)于輔助數(shù)據(jù)文件,自動(dòng)設(shè)置為文件的大小;對(duì)于輔助數(shù)據(jù)文件,自動(dòng)設(shè)置為1MB)。n maxsize指定文件的最大大?。恢付ㄎ募淖畲蟠笮?;UNLIMITED關(guān)鍵字:指定文件大小不受限制關(guān)鍵字:指定文件大小不受限制(實(shí)際實(shí)際 上只受磁盤可用空間限制上只受磁盤可用空間限制)n growth_increament 每次需要新的空間時(shí)文件大小的增量。該值指定一個(gè)整數(shù),不每次需要新的
18、空間時(shí)文件大小的增量。該值指定一個(gè)整數(shù),不 要包括小數(shù)位。要包括小數(shù)位。0值表示不增長(zhǎng)??梢杂弥当硎静辉鲩L(zhǎng)??梢杂肒B、MB 、GB、TB或百分比或百分比(%)為單位指為單位指 定。如果未在數(shù)量后面指定單位,則默認(rèn)值為定。如果未在數(shù)量后面指定單位,則默認(rèn)值為MB。例如指定。例如指定20%,則增量大小是,則增量大小是 在原來空間大小的基礎(chǔ)上增加在原來空間大小的基礎(chǔ)上增加20%。注意,。注意,filegrowth值不能超過值不能超過maxsize的值。的值。n FOR LOAD子句,子句, 說明從一個(gè)備份庫(kù)向新建的數(shù)據(jù)庫(kù)中加載數(shù)據(jù)。使用該子句的說明從一個(gè)備份庫(kù)向新建的數(shù)據(jù)庫(kù)中加載數(shù)據(jù)。使用該子句的
19、 目的是為了與以前的版本兼容。目的是為了與以前的版本兼容。n FOR ATTACH子句,說明從已有的數(shù)據(jù)庫(kù)文件向數(shù)據(jù)庫(kù)添加數(shù)據(jù),在用該子句子句,說明從已有的數(shù)據(jù)庫(kù)文件向數(shù)據(jù)庫(kù)添加數(shù)據(jù),在用該子句 時(shí),必須指定主數(shù)據(jù)文件。時(shí),必須指定主數(shù)據(jù)文件。n COLLATE子句,用來指定數(shù)據(jù)庫(kù)的默認(rèn)排序規(guī)則。子句,用來指定數(shù)據(jù)庫(kù)的默認(rèn)排序規(guī)則。例例 1:用用CREATE DATABASE語句創(chuàng)建一個(gè)名為語句創(chuàng)建一個(gè)名為book的數(shù)據(jù)庫(kù)。在該數(shù)據(jù)庫(kù)中有的數(shù)據(jù)庫(kù)。在該數(shù)據(jù)庫(kù)中有5個(gè)數(shù)據(jù)文個(gè)數(shù)據(jù)文件,三個(gè)文件組。主文件組包括主數(shù)據(jù)文件件,三個(gè)文件組。主文件組包括主數(shù)據(jù)文件book_data1,文件大小為文件大小
20、為5MB,按,按10%增長(zhǎng),最大增長(zhǎng),最大大小不受限制,一個(gè)輔助數(shù)據(jù)文件大小不受限制,一個(gè)輔助數(shù)據(jù)文件book_data2,文件大小為,文件大小為3MB,按,按1MB增長(zhǎng),最大大小為增長(zhǎng),最大大小為50MB。此文件組名為。此文件組名為bookgroup1,包括兩個(gè)輔助數(shù)據(jù)文件,包括兩個(gè)輔助數(shù)據(jù)文件book_data3和和book_data4,它們大,它們大小均為小均為5MB,按,按2MB增長(zhǎng),最大大小不受限制;第三個(gè)文件組名為增長(zhǎng),最大大小不受限制;第三個(gè)文件組名為bookgroup2,包括一個(gè)輔,包括一個(gè)輔助數(shù)據(jù)文件助數(shù)據(jù)文件book_data5,大小為,大小為2MB,最大大小為,最大大小為
21、100MB,按,按15%增長(zhǎng);只有一個(gè)日志文件,增長(zhǎng);只有一個(gè)日志文件,大小為大小為2MB,最大大小為,最大大小為35MB,按,按1MB增長(zhǎng)。增長(zhǎng)。 首先啟動(dòng)首先啟動(dòng)SQL Server 2000 查詢分析器,在彈出的查詢分析器,在彈出的【SQL 查詢分析器查詢分析器】窗口的窗口的【查詢查詢】編編輯對(duì)話框中輸入創(chuàng)建數(shù)據(jù)庫(kù)的輯對(duì)話框中輸入創(chuàng)建數(shù)據(jù)庫(kù)的SQL語句,其代碼如下:語句,其代碼如下:CREATE DATABASE bookOn primary(name=book_data1,filename=D:SQL2000JZH1book_data1.mdf,size=5MB,maxsize=UNL
22、IMITED,filegrowth=10%),(name=book_data2,filename=D:SQL2000JZH1book_data2.ndf,size=3MB,maxsize=50MB,filegrowth=1MB),filegroup bookgroup1(name=book_data3,filename=D:SQL2000JZH1book_data3.ndf,size=5MB,maxsize=UNLIMITED,filegrowth=2MB),(name=book_data4,filename=D:SQL2000JZH1book_data4.ndf,size=5MB,maxsi
23、ze=UNLIMITED,filegrowth=2MB),filegroup bookgroup2(name=book_data5,filename=D:SQL2000JZH1book_data5.ndf,size=2MB,maxsize=100MB,filegrowth=15%)Log on(name=book_log,filename=D:SQL2000JZH1book_log.ldf,size=2MB,maxsize=35MB,filegrowth=1MB)在在【查詢查詢】編輯對(duì)話框中輸入代碼完畢后,單擊工具欄中的編輯對(duì)話框中輸入代碼完畢后,單擊工具欄中的【執(zhí)行查詢執(zhí)行查詢】按鈕,如按鈕
24、,如下左圖所示,或按快捷鍵下左圖所示,或按快捷鍵F5運(yùn)行命令。執(zhí)行運(yùn)行命令。執(zhí)行CREATE DATABASE命令時(shí),在結(jié)果命令時(shí),在結(jié)果窗口的下半部將顯示執(zhí)行的進(jìn)展情況。在命令成功執(zhí)行后,在窗口的下半部將顯示執(zhí)行的進(jìn)展情況。在命令成功執(zhí)行后,在SQL Server上執(zhí)行刷上執(zhí)行刷新操作,如下右圖所示,新建的數(shù)據(jù)庫(kù)新操作,如下右圖所示,新建的數(shù)據(jù)庫(kù)book就顯示在屏幕左邊的窗口中。就顯示在屏幕左邊的窗口中。創(chuàng)建數(shù)據(jù)庫(kù)后,可以對(duì)已存在的數(shù)據(jù)庫(kù)進(jìn)行修改,包括:創(chuàng)建數(shù)據(jù)庫(kù)后,可以對(duì)已存在的數(shù)據(jù)庫(kù)進(jìn)行修改,包括:u 增加或者刪除數(shù)據(jù)文件;增加或者刪除數(shù)據(jù)文件;u 改變數(shù)據(jù)文件的大小和增長(zhǎng)方式;改變數(shù)據(jù)
25、文件的大小和增長(zhǎng)方式;u 改變?nèi)罩疚募拇笮『驮鲩L(zhǎng)方式;改變?nèi)罩疚募拇笮『驮鲩L(zhǎng)方式;u 增加或刪除日志文件;增加或刪除日志文件;u 增加或刪除文件組;增加或刪除文件組; 通過通過SQL語言修改數(shù)據(jù)庫(kù)的核心語句是語言修改數(shù)據(jù)庫(kù)的核心語句是ALTER DATABASE。該語。該語句的語法格式為:句的語法格式為:ALTER DATABASE database_nameADD FILE , n TO FILEGROUP filegroup_nameADD LOG FILE , nREMOVE FILE logical_file_nameADD FILEGROUP filegroup_nameREMO
26、VE FILEGROUP filegroup_nameMODIFY FILE MODIFY NAME=new_dbname下面說明重要關(guān)鍵字和子句的含義和作用:下面說明重要關(guān)鍵字和子句的含義和作用:p ADD FILE 子句,想數(shù)據(jù)庫(kù)中添加數(shù)據(jù)文件,文件的屬性由子句,想數(shù)據(jù)庫(kù)中添加數(shù)據(jù)文件,文件的屬性由給出。全部關(guān)鍵字給出。全部關(guān)鍵字TO FILE GROUP指出要添加到的文件組指出要添加到的文件組(filegroup_name),若默認(rèn)則為主文件組。,若默認(rèn)則為主文件組。p ADD LOG FILE, 向數(shù)據(jù)庫(kù)中添加日志文件,日志文件的屬性由向數(shù)據(jù)庫(kù)中添加日志文件,日志文件的屬性由給出。給出
27、。p REMOVE FILE, 從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)文件,被刪除的文件名由從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)文件,被刪除的文件名由logical_file_name給出。當(dāng)刪除一個(gè)數(shù)據(jù)文件時(shí),邏輯文件和物理文件全給出。當(dāng)刪除一個(gè)數(shù)據(jù)文件時(shí),邏輯文件和物理文件全部被刪除。只有在文件為空時(shí)才能被刪除。部被刪除。只有在文件為空時(shí)才能被刪除。p ADD FILEGROUP, 向數(shù)據(jù)庫(kù)中添加文件組,文件組名由參數(shù)向數(shù)據(jù)庫(kù)中添加文件組,文件組名由參數(shù)filegroup_name給出。給出。p REMOVE FILEGROUP, 從數(shù)據(jù)庫(kù)中刪除文件組,文件組名由從數(shù)據(jù)庫(kù)中刪除文件組,文件組名由filegroup_name給出
28、。但應(yīng)當(dāng)注意,在刪除文件組之前必須保證該文件組給出。但應(yīng)當(dāng)注意,在刪除文件組之前必須保證該文件組為空,若不為空則應(yīng)先刪除該文件組所包含的所有文件。為空,若不為空則應(yīng)先刪除該文件組所包含的所有文件。p MODIFY FILE,修改數(shù)據(jù)庫(kù)文件的屬性,被修改文件的邏輯名由,修改數(shù)據(jù)庫(kù)文件的屬性,被修改文件的邏輯名由的的NAME參數(shù)給出,可以修改的文件屬性包括:參數(shù)給出,可以修改的文件屬性包括:FILENAME, SIZE, MAXSIZE, FILEGROUP。但要注意,一次只能修改其中的一個(gè)屬。但要注意,一次只能修改其中的一個(gè)屬性。性。例例 2:用用ALTER DATABASE命令,在命令,在bo
29、ok數(shù)據(jù)庫(kù)中添加一個(gè)數(shù)據(jù)文件數(shù)據(jù)庫(kù)中添加一個(gè)數(shù)據(jù)文件“book_data6”,并指定其初始大小為,并指定其初始大小為3MB;最大大小不受限制,設(shè)置增長(zhǎng);最大大小不受限制,設(shè)置增長(zhǎng)為為15%。其代碼如下:其代碼如下:ALTER DATABASE bookADD FILE(NAME=book_data6,FILENAME=D:SQL2000JZH1book_data6.mdf,SIZE=3MB,MAXSIZE=UNLIMITED,FILEGROWTH=15%)例例 3:用用ALTER DATABASE命令,在命令,在book數(shù)據(jù)庫(kù)中增加一個(gè)名為數(shù)據(jù)庫(kù)中增加一個(gè)名為“waiwen”的文件組,并為該組
30、添加兩個(gè)數(shù)據(jù)文件。數(shù)據(jù)文件名分別為的文件組,并為該組添加兩個(gè)數(shù)據(jù)文件。數(shù)據(jù)文件名分別為“book_waiwen1”和和“book_waiwen2”,其中數(shù)據(jù)文件,其中數(shù)據(jù)文件“book_waiwen1”的初始大小為的初始大小為10MB;最大大小不受限制,設(shè)置增長(zhǎng)為最大大小不受限制,設(shè)置增長(zhǎng)為2MB;而;而“book_waiwen2”數(shù)據(jù)文件的初始數(shù)據(jù)文件的初始大小為大小為12MB,以,以12%增長(zhǎng),最大大小為增長(zhǎng),最大大小為120MB。其代碼如下:其代碼如下:ALTER DATABASE bookADD FILEGROUP waiwenALTER DATABASE bookADD FILE(N
31、AME=book_waiwen1,FILENAME=D:SQL2000JZH1book_waiwen1.ndf,SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=2MB),(NAME=book_waiwen2,FILENAME=D:SQL2000JZH1book_waiwen2.ndf,SIZE=12MB,MAXSIZE=120MB,FILEGROWTH=12%)TO FILEGROUP waiwen例例 4:用用ALTER DATABASE命令,在命令,在book數(shù)據(jù)庫(kù)刪除數(shù)據(jù)文件數(shù)據(jù)庫(kù)刪除數(shù)據(jù)文件“book_waiwen2” 。其代碼如下:其代碼如下:ALTER
32、 DATABASE bookREMOVE FILE book_waiwen2例例 5:用用ALTER DATABASE命令,在命令,在book數(shù)據(jù)庫(kù)刪除文件組數(shù)據(jù)庫(kù)刪除文件組“waiwen”。注意被刪除的文件組必須為空,即不包括任何數(shù)據(jù)文件,如包含有數(shù)據(jù)文件注意被刪除的文件組必須為空,即不包括任何數(shù)據(jù)文件,如包含有數(shù)據(jù)文件則現(xiàn)將數(shù)據(jù)文件刪除。則現(xiàn)將數(shù)據(jù)文件刪除。其代碼如下:其代碼如下:ALTER DATABASE bookREMOVE FILE book_waiwen1ALTER DATABASE bookREMOVE FILEGROUP waiwen例例 6:用用ALTER DATABASE
33、命令,為命令,為book數(shù)據(jù)庫(kù)添加一個(gè)日志文件,所添數(shù)據(jù)庫(kù)添加一個(gè)日志文件,所添加日志文件名為加日志文件名為_Log1,并且所添日志文件初始大小為,并且所添日志文件初始大小為5MB,最大大小為,最大大小為78MB,按,按6MB增長(zhǎng)。增長(zhǎng)。其代碼如下:其代碼如下:ALTER DATABASE bookADD LOG FILE(NAME=book_Log1,FILENAME=D:SQL2000JZH1book_Log1.ldf,SIZE=5MB,MAXSIZE=78MB,FILEGROWTH=6MB)例例 7:用用ALTER DATABASE命令,刪除上例中所創(chuàng)建的日志文件。命令,刪除上例中所創(chuàng)建
34、的日志文件。其代碼如下:其代碼如下:ALTER DATABASE bookREMOVE FILE book_Log1例例 8:用用ALTER DATABASE命令,修改數(shù)據(jù)庫(kù)命令,修改數(shù)據(jù)庫(kù)“book”的屬性。將數(shù)據(jù)文件的屬性。將數(shù)據(jù)文件“book_data2”的初始大小改為的初始大小改為8MB,最大大小為,最大大小為120MB,按,按6MB增長(zhǎng)。增長(zhǎng)。注意每次只能修改數(shù)據(jù)文件的一個(gè)屬性。注意每次只能修改數(shù)據(jù)文件的一個(gè)屬性。其代碼如下:其代碼如下:ALTER DATABASE bookMODIFY FILE(NAME=book_data2,SIZE=8MB)ALTER DATABASE boo
35、kMODIFY FILE(NAME=book_data2,MAXSIZE=120MB)ALTER DATABASE bookMODIFY FILE(NAME=book_data2,FILEGROWTH=6MB) 當(dāng)不再需要數(shù)據(jù)庫(kù)時(shí),或數(shù)據(jù)庫(kù)被移到另一個(gè)數(shù)據(jù)庫(kù)或服務(wù)器時(shí),即可當(dāng)不再需要數(shù)據(jù)庫(kù)時(shí),或數(shù)據(jù)庫(kù)被移到另一個(gè)數(shù)據(jù)庫(kù)或服務(wù)器時(shí),即可刪除數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)刪除之后,文件及其數(shù)據(jù)都從服務(wù)器上的磁盤中刪除。刪除數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)刪除之后,文件及其數(shù)據(jù)都從服務(wù)器上的磁盤中刪除。一旦刪除數(shù)據(jù)庫(kù),它將永久刪除,并且不能進(jìn)行檢索,除非使用以前的備份。一旦刪除數(shù)據(jù)庫(kù),它將永久刪除,并且不能進(jìn)行檢索,除非使用以前的備
36、份。不能刪除系統(tǒng)數(shù)據(jù)庫(kù)不能刪除系統(tǒng)數(shù)據(jù)庫(kù)msdb,master,model和和tempdb。 建議在數(shù)據(jù)庫(kù)刪除之后備份建議在數(shù)據(jù)庫(kù)刪除之后備份master數(shù)據(jù)庫(kù),因?yàn)閯h除數(shù)據(jù)庫(kù)將更新數(shù)據(jù)庫(kù),因?yàn)閯h除數(shù)據(jù)庫(kù)將更新mater數(shù)據(jù)庫(kù)中的系統(tǒng)表。如果數(shù)據(jù)庫(kù)中的系統(tǒng)表。如果master需要還原,則從上次備份需要還原,則從上次備份master之后刪之后刪除的所有數(shù)據(jù)庫(kù)都將在系統(tǒng)表中引用,因而可能導(dǎo)致出現(xiàn)錯(cuò)誤信息。除的所有數(shù)據(jù)庫(kù)都將在系統(tǒng)表中引用,因而可能導(dǎo)致出現(xiàn)錯(cuò)誤信息。 通過通過SQL語言刪除數(shù)據(jù)庫(kù)的核心語句是語言刪除數(shù)據(jù)庫(kù)的核心語句是DROP DATABASE。該語。該語句的語法格式為:句的語法格式為
37、:DROP DATABASE database_name , n其中其中database_name是要?jiǎng)h除的數(shù)據(jù)庫(kù)名。是要?jiǎng)h除的數(shù)據(jù)庫(kù)名。例例 9:用用DROP DATABASE命令,刪除數(shù)據(jù)庫(kù)命令,刪除數(shù)據(jù)庫(kù)“book” 。其代碼如下:其代碼如下:DROP DATABASE book1. 定義基本表定義基本表定義基本表語句的一般格式為:定義基本表語句的一般格式為: CREATE TABLE database_name. owner. | owner. table_name /*指定表名指定表名*/( /*字段的定義字段的定義*/| column_name AS computed_column
38、_expression /*定義計(jì)算字段定義計(jì)算字段*/| ) /*指定表的約束指定表的約束*/ON filegroup | DEFAULT /*指定存儲(chǔ)表的文件組指定存儲(chǔ)表的文件組*/TEXTIMAGE_ON filegroup | DEFAULT /*指定存儲(chǔ)指定存儲(chǔ)text, ntext和和image類型數(shù)據(jù)的文件組類型數(shù)據(jù)的文件組*/下面說明重要關(guān)鍵字和子句的含義和作用:下面說明重要關(guān)鍵字和子句的含義和作用:p database_name 用來創(chuàng)建表所在的數(shù)據(jù)庫(kù)的名稱。當(dāng)然,此數(shù)據(jù)庫(kù)必須用來創(chuàng)建表所在的數(shù)據(jù)庫(kù)的名稱。當(dāng)然,此數(shù)據(jù)庫(kù)必須 存在,存在,不能將一個(gè)不存在的數(shù)據(jù)庫(kù)名稱作為指定的
39、數(shù)據(jù)庫(kù)名稱,否則會(huì)發(fā)生錯(cuò)誤提示。不能將一個(gè)不存在的數(shù)據(jù)庫(kù)名稱作為指定的數(shù)據(jù)庫(kù)名稱,否則會(huì)發(fā)生錯(cuò)誤提示。p owner, 用來指定所創(chuàng)建的新表的所有者名。用來指定所創(chuàng)建的新表的所有者名。p table_name, 用來指定添加表的名稱,表名必須遵循用來指定添加表的名稱,表名必須遵循SQL標(biāo)識(shí)符命名規(guī)則。標(biāo)識(shí)符命名規(guī)則。p column_name, 用來指定在新表中的字段名稱。用來指定在新表中的字段名稱。p AS, 指定所定義的列為計(jì)算列,其值由計(jì)算列表達(dá)式后確定。指定所定義的列為計(jì)算列,其值由計(jì)算列表達(dá)式后確定。p computed_column_expression,用來定義計(jì)算字段值的表達(dá)式
40、。表達(dá)式可以是,用來定義計(jì)算字段值的表達(dá)式。表達(dá)式可以是字段名、常量、變量、函數(shù)等或他們的組合。所謂計(jì)算字段是一個(gè)虛擬的字段,字段名、常量、變量、函數(shù)等或他們的組合。所謂計(jì)算字段是一個(gè)虛擬的字段,它的值并不實(shí)際存儲(chǔ)在表中,而是通過對(duì)同一個(gè)表中其他字段進(jìn)行某種計(jì)算而得它的值并不實(shí)際存儲(chǔ)在表中,而是通過對(duì)同一個(gè)表中其他字段進(jìn)行某種計(jì)算而得到的結(jié)果。到的結(jié)果。p ONfilegroup | DEFAULT,用來指定存儲(chǔ)此新表的文件組名稱。當(dāng)指定,用來指定存儲(chǔ)此新表的文件組名稱。當(dāng)指定filegroup時(shí),此新表將存儲(chǔ)在所指定的文件組中,并且此文件組必須存在于數(shù)據(jù)時(shí),此新表將存儲(chǔ)在所指定的文件組中,并
41、且此文件組必須存在于數(shù)據(jù)庫(kù)中。如果是指定庫(kù)中。如果是指定DEFAULT或沒有指定時(shí),則此新表將會(huì)存儲(chǔ)在默認(rèn)的文件組或沒有指定時(shí),則此新表將會(huì)存儲(chǔ)在默認(rèn)的文件組中。中。p TEXTIMAGE_ON,用來指定,用來指定text、ntext和和image字段的數(shù)據(jù)存儲(chǔ)的文件組。字段的數(shù)據(jù)存儲(chǔ)的文件組。如果無此子句或指定了如果無此子句或指定了DEFAULT,這些類型的數(shù)據(jù)就和表一起存儲(chǔ)在相同的文,這些類型的數(shù)據(jù)就和表一起存儲(chǔ)在相同的文件組中。件組中。例例 10:用用CREATE TABLE語句創(chuàng)建語句創(chuàng)建“圖書管理系統(tǒng)圖書管理系統(tǒng)”數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)中的“圖書明細(xì)圖書明細(xì)表表”。其表結(jié)構(gòu)如下:其表結(jié)構(gòu)如
42、下:字段名字段名(列名列名) 數(shù)據(jù)類型數(shù)據(jù)類型長(zhǎng)度長(zhǎng)度允許空允許空?qǐng)D書編號(hào)圖書編號(hào)int4類別編號(hào)類別編號(hào)samllint2 圖書名稱圖書名稱nvarchar50作者名稱作者名稱char10出版社名稱出版社名稱char20出版日期出版日期smalldatetime4定價(jià)定價(jià)money8是否借出是否借出bit1封面封面image16use 圖書管理系統(tǒng)圖書管理系統(tǒng)create table 圖書明細(xì)表圖書明細(xì)表(圖書編號(hào)圖書編號(hào) int not null,類別編號(hào)類別編號(hào) smallint null,圖書名稱圖書名稱 nvarchar(50) null,作者名稱作者名稱 char(10) null
43、,出版社名稱出版社名稱 char (20) null, 出版日期出版日期 smalldatetime null,定價(jià)定價(jià) money null,是否借出是否借出 bit not null,封面封面 image null,)約束約束列級(jí)完整性約束和表級(jí)完整性約束列級(jí)完整性約束和表級(jí)完整性約束列級(jí)完整性約束列級(jí)完整性約束針對(duì)屬性值設(shè)置的限制條件。針對(duì)屬性值設(shè)置的限制條件。 NOT NULL或或 NULL約束約束NOT NULL約束為不允許字段值為空,而約束為不允許字段值為空,而NULL約束為允許字段值為空。字段值為空的含義是該屬性值約束為允許字段值為空。字段值為空的含義是該屬性值“不詳不詳”、“含
44、糊含糊”或或“無意義無意義”。對(duì)于關(guān)系的主屬性,必須限定為。對(duì)于關(guān)系的主屬性,必須限定為“NOT NULL”,以滿足實(shí)體完整性;而對(duì)一些不重要的屬性,例如學(xué)生的愛好、特長(zhǎng)等,以滿足實(shí)體完整性;而對(duì)一些不重要的屬性,例如學(xué)生的愛好、特長(zhǎng)等,則可以不輸入字段,即允許為則可以不輸入字段,即允許為NULL值。值。 其約束格式為其約束格式為: NOT NULL 或或 NULL UNIQUE約束約束唯一性約束,即不允許該關(guān)系的該列中,出現(xiàn)有重復(fù)的唯一性約束,即不允許該關(guān)系的該列中,出現(xiàn)有重復(fù)的屬性值。屬性值。 其約束格式為其約束格式為: UNIQUE DEFAULT約束約束默認(rèn)值約束,將列中的使用頻率最高
45、的屬性值定義為默認(rèn)值約束,將列中的使用頻率最高的屬性值定義為DEFAULT約束中的默認(rèn)值,可以減少數(shù)據(jù)輸入的工作量。約束中的默認(rèn)值,可以減少數(shù)據(jù)輸入的工作量。 其約束格式為其約束格式為: DEFAULT CHECK約束約束檢查約束,通過約束條件表達(dá)式設(shè)置列值應(yīng)滿足的條件。檢查約束,通過約束條件表達(dá)式設(shè)置列值應(yīng)滿足的條件。其約束格式為其約束格式為:CONSTRAINT CHECK ()例例 11:用用CREATE TABLE語句創(chuàng)建語句創(chuàng)建“學(xué)生學(xué)生_課程課程”數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)中的“學(xué)生學(xué)生”基本情基本情況表。況表。其表結(jié)構(gòu)如下:其表結(jié)構(gòu)如下:數(shù)據(jù)庫(kù)名數(shù)據(jù)庫(kù)名基本表名基本表名字段名字段名數(shù)據(jù)類型
46、數(shù)據(jù)類型長(zhǎng)度長(zhǎng)度列級(jí)約束列級(jí)約束學(xué)生學(xué)生_課程課程學(xué)生學(xué)生學(xué)號(hào)學(xué)號(hào)CHAR5不能空,惟一值不能空,惟一值姓名姓名CHAR8不能空不能空年齡年齡SMALLINT默認(rèn)默認(rèn)20性別性別CHAR2“男男”或或“女女”所在系所在系CHAR20其代碼如下:其代碼如下:USE 學(xué)生學(xué)生_課程課程CREATE TABLE 學(xué)生學(xué)生(學(xué)號(hào)學(xué)號(hào) CHAR(5) NOT NULL UNIQUE, 姓名姓名 CHAR(8) NOT NULL, 年齡年齡 SMALLINT DEFAULT 20, 性別性別 CHAR(2),所在系所在系 CHAR(20), CONSTRAINT C1 CHECK(性別性別 IN (男男,
47、女女); 表級(jí)完整性約束表級(jí)完整性約束列級(jí)約束的約束條件表達(dá)式中只涉及一個(gè)列的數(shù)據(jù)。如果列級(jí)約束的約束條件表達(dá)式中只涉及一個(gè)列的數(shù)據(jù)。如果 約束條件涉及到多個(gè)列屬性,則成為表級(jí)的約束條件。約束條件涉及到多個(gè)列屬性,則成為表級(jí)的約束條件。 PRIMARY KEY約束約束實(shí)體完整性約束,實(shí)體完整性約束,PRIMARY KEY約束用于定義約束用于定義主碼,它能保證主碼的唯一性和非空性。主碼,它能保證主碼的唯一性和非空性。PRIMARY KEY約束可直接寫在約束可直接寫在主碼后,也可按語法單獨(dú)列出。主碼后,也可按語法單獨(dú)列出。 其約束格式為其約束格式為: CONSTRAINT PRIMARY KEY
48、CLUSTERED() 其中,其中,CLUSTERED短語為建立短語為建立聚簇。聚簇。 FOREIGN KEY約束約束外碼和參照表約束,用于定義參照完整性。外碼和參照表約束,用于定義參照完整性。 其約束格式為其約束格式為: CONSTRAINT FOREIGN KEY ()REFERENCES ()例例 12:用用CREATE TABLE語句創(chuàng)建語句創(chuàng)建“學(xué)生學(xué)生_課程課程”數(shù)據(jù)庫(kù)中的基本表。數(shù)據(jù)庫(kù)中的基本表。其表結(jié)構(gòu)如下:其表結(jié)構(gòu)如下:數(shù)據(jù)庫(kù)名數(shù)據(jù)庫(kù)名基本表名基本表名屬性名屬性名數(shù)據(jù)類型數(shù)據(jù)類型長(zhǎng)度長(zhǎng)度列級(jí)約束列級(jí)約束表級(jí)約束表級(jí)約束學(xué)生學(xué)生_課程課程學(xué)生學(xué)生學(xué)號(hào)學(xué)號(hào)CHAR5不能空,惟一值
49、不能空,惟一值姓名姓名CHAR8不能空不能空年齡年齡SMALLINT默認(rèn)默認(rèn)20性別性別CHAR2“男男”或或“女女”所在系所在系CHAR20課程課程課程號(hào)課程號(hào)CHAR5不能空,惟一值不能空,惟一值課程號(hào)為主碼課程號(hào)為主碼課程名課程名CHAR20不能空不能空先行課先行課CHAR5選課選課學(xué)號(hào)學(xué)號(hào)CHAR5不能空不能空 學(xué)號(hào)和課程號(hào)學(xué)號(hào)和課程號(hào)為主碼;學(xué)號(hào)為外為主碼;學(xué)號(hào)為外碼;課程號(hào)為外碼碼;課程號(hào)為外碼課程號(hào)課程號(hào)CHAR5不能空不能空成績(jī)成績(jī)SMALLINT0100其代碼如下:其代碼如下:USE 學(xué)生學(xué)生_課程課程CREATE TABLE 學(xué)生學(xué)生 (學(xué)號(hào)學(xué)號(hào) CHAR(5) NOT N
50、ULL UNIQUE, 姓名姓名 CHAR(8) NOT NULL, 年齡年齡 SMALLINT DEFAULT 20, 性別性別 CHAR(2),所在系所在系 CHAR(20), CONSTRAINT C1 CHECK(性別性別 IN (男男,女女);CREATE TABLE 課程課程 (課程號(hào)課程號(hào) CHAR(5) PRIMARY KEY, 課程名課程名 CHAR(20), 先行課先行課 CHAR(5); CREATE TABLE 選課選課 (學(xué)號(hào)學(xué)號(hào) CHAR(5), 課程號(hào)課程號(hào) CHAR(5),成績(jī)成績(jī) SMALLINT, CONSTRAINT C2 CHECK(成績(jī)成績(jī) BETWE
51、EN 0 AND 100), CONSTRAINT C3 PRIMARY KEY(學(xué)號(hào)學(xué)號(hào), 課程號(hào)課程號(hào)), CONSTRAINT C4 FOREIGN KEY(學(xué)號(hào)學(xué)號(hào)) REFERENCES 學(xué)生學(xué)生(學(xué)號(hào)學(xué)號(hào)),CONSTRAINT C5 FOREIGN KEY(課程號(hào)課程號(hào)) REFERENCES 課程課程(課程號(hào)課程號(hào)); 創(chuàng)建自動(dòng)獲取列值的表:創(chuàng)建自動(dòng)獲取列值的表: 指定默認(rèn)值;指定默認(rèn)值; 使用列表達(dá)式;使用列表達(dá)式;例例 13:用用CREATE TABLE語句創(chuàng)建一個(gè)有三列的表語句創(chuàng)建一個(gè)有三列的表test1,其中列,其中列col_3使使用了由列表達(dá)式用了由列表達(dá)式col_1
52、+col_2,表示該列的值為列,表示該列的值為列col_1和和col_2的值之和,其的值之和,其數(shù)據(jù)類型為計(jì)算值的數(shù)據(jù)類型。由于計(jì)算結(jié)果為數(shù)據(jù)類型為計(jì)算值的數(shù)據(jù)類型。由于計(jì)算結(jié)果為int型,故列型,故列col_3也為也為int型。型。其代碼如下:其代碼如下:CREATE TABLE test1(col_1 int,col_2 int,col_3 AS col_1+col_2)2、修改基本表、修改基本表 當(dāng)以建立好的基本表隨著應(yīng)用環(huán)境和應(yīng)用需求的變化而需要修當(dāng)以建立好的基本表隨著應(yīng)用環(huán)境和應(yīng)用需求的變化而需要修改時(shí),改時(shí), 需要利用需要利用SQL的修改基本表語句修改表結(jié)構(gòu)。的修改基本表語句修改表
53、結(jié)構(gòu)。SQL語言用語言用ALTER TABLE語句來修改基本表,其一般格式為:語句來修改基本表,其一般格式為: ALTER TABLE table_nameALTER COLUMN column_name /*修改已有列的屬性修改已有列的屬性*/new_data_type (precision , scale)NULL | NOT NULL| ADD , n /*增加新列增加新列*/| DROP CONSTRATINT constraint_name | COLUMN , n /*刪除列刪除列*/ 下面說明主要參數(shù)和子句的含義:下面說明主要參數(shù)和子句的含義: table_name 用來指定要修
54、改的表的名稱;用來指定要修改的表的名稱; ALTER COLUMN子句,用來指定要進(jìn)行修改的表中的字段的屬性,子句,用來指定要進(jìn)行修改的表中的字段的屬性,要修改的字段名由要修改的字段名由column_name給出;給出; new_data_type,用來指定被修改字段的新數(shù)據(jù)類型;,用來指定被修改字段的新數(shù)據(jù)類型; precision,用來指定新數(shù)據(jù)類型的有效位數(shù);,用來指定新數(shù)據(jù)類型的有效位數(shù); scale,用來指定新數(shù)據(jù)類型的小數(shù)位數(shù);,用來指定新數(shù)據(jù)類型的小數(shù)位數(shù); NULL | NOT NULL,用來指定其字段是否可接受,用來指定其字段是否可接受NULL; ADD子句,用來向表中增加新
55、字段。新字段的定義方法與子句,用來向表中增加新字段。新字段的定義方法與CREATE TABLE語句中定義字段的方法相同。語句中定義字段的方法相同。 DROP子句,用來從表中刪除字段或約束。子句,用來從表中刪除字段或約束。COLUMN參數(shù)中指定的參數(shù)中指定的是被刪除的字段名,是被刪除的字段名,constraint_name是被刪除的約束名。是被刪除的約束名。下面通過實(shí)例說明下面通過實(shí)例說明ALTER TABLE語句的使用方法。語句的使用方法。例例14,對(duì)例,對(duì)例10中圖書管理系統(tǒng)數(shù)據(jù)庫(kù)中的中圖書管理系統(tǒng)數(shù)據(jù)庫(kù)中的“圖書明細(xì)表圖書明細(xì)表”進(jìn)行以下修改:進(jìn)行以下修改:將字段名為將字段名為“圖書名稱圖
56、書名稱”的列長(zhǎng)度由原來的的列長(zhǎng)度由原來的50改為改為60,將名為,將名為“出版日期出版日期”的列的數(shù)據(jù)類型由原來的的列的數(shù)據(jù)類型由原來的smalldatetime改為改為datetime. 其代碼如下:其代碼如下:USE 圖書管理系統(tǒng)圖書管理系統(tǒng)ALTER TABLE 圖書明細(xì)表圖書明細(xì)表ALTER COLUMN 圖書名稱圖書名稱 nvarchar(60)ALTER TABLE 圖書明細(xì)表圖書明細(xì)表ALTER COLUMN 出版日期出版日期 datetime例例15,對(duì)例,對(duì)例10中圖書管理系統(tǒng)數(shù)據(jù)庫(kù)中的中圖書管理系統(tǒng)數(shù)據(jù)庫(kù)中的“圖書明細(xì)表圖書明細(xì)表”進(jìn)行以下修改:進(jìn)行以下修改:增加一個(gè)增加一
57、個(gè)“ISBN”字段。其代碼如下:字段。其代碼如下:USE 圖書管理系統(tǒng)圖書管理系統(tǒng)ALTER TABLE 圖書明細(xì)表圖書明細(xì)表ADD ISBN char (10) NULL例例16,對(duì)例,對(duì)例15中圖書管理系統(tǒng)數(shù)據(jù)庫(kù)中的中圖書管理系統(tǒng)數(shù)據(jù)庫(kù)中的“圖書明細(xì)表圖書明細(xì)表”進(jìn)行以下修改:進(jìn)行以下修改:刪除刪除“ISBN”字段。其代碼如下:字段。其代碼如下:USE 圖書管理系統(tǒng)圖書管理系統(tǒng)ALTER TABLE 圖書明細(xì)表圖書明細(xì)表DROP COLUMN ISBN 3、刪除基本表、刪除基本表SQL中可用中可用DROP TABLE命令來刪除表,其語法格式如下:命令來刪除表,其語法格式如下:DROP TA
58、BLE table_name例例17,刪除圖書管理系統(tǒng)數(shù)據(jù)庫(kù)中的,刪除圖書管理系統(tǒng)數(shù)據(jù)庫(kù)中的“圖書明細(xì)表圖書明細(xì)表” 。其代碼如下:。其代碼如下:USE 圖書管理系統(tǒng)圖書管理系統(tǒng)DROP TABLE 圖書明細(xì)表圖書明細(xì)表 索引是索引是SQL Server在列上建立的一種數(shù)據(jù)庫(kù)對(duì)象。索引對(duì)表中的在列上建立的一種數(shù)據(jù)庫(kù)對(duì)象。索引對(duì)表中的數(shù)據(jù)提供邏輯排序,可以提高數(shù)據(jù)的訪問速度。數(shù)據(jù)提供邏輯排序,可以提高數(shù)據(jù)的訪問速度。 數(shù)據(jù)庫(kù)中的索引是一個(gè)列表,在這個(gè)列表中包含了某個(gè)表中一列數(shù)據(jù)庫(kù)中的索引是一個(gè)列表,在這個(gè)列表中包含了某個(gè)表中一列或者若干列值的集合,以及這些值的記錄在數(shù)據(jù)表中的存儲(chǔ)位置的或者若干列
59、值的集合,以及這些值的記錄在數(shù)據(jù)表中的存儲(chǔ)位置的物理地址。物理地址。 如果一個(gè)表沒有創(chuàng)建索引,則數(shù)據(jù)行不按任何特定的順序存儲(chǔ)。這種如果一個(gè)表沒有創(chuàng)建索引,則數(shù)據(jù)行不按任何特定的順序存儲(chǔ)。這種結(jié)構(gòu)稱為堆集。結(jié)構(gòu)稱為堆集。SQL Server 索引的兩種類型為:索引的兩種類型為: 聚集索引聚集索引(Clustered Index) 聚集索引基于數(shù)據(jù)行的鍵值在表內(nèi)排序和存儲(chǔ)這些數(shù)據(jù)行。由于數(shù)據(jù)行聚集索引基于數(shù)據(jù)行的鍵值在表內(nèi)排序和存儲(chǔ)這些數(shù)據(jù)行。由于數(shù)據(jù)行按基于聚集索引鍵的排序次序存儲(chǔ),因此聚集索引對(duì)查找行很有效。按基于聚集索引鍵的排序次序存儲(chǔ),因此聚集索引對(duì)查找行很有效。每每個(gè)表只能有一個(gè)聚集索引
60、,因?yàn)閿?shù)據(jù)行本身只能按一個(gè)順序存儲(chǔ)。個(gè)表只能有一個(gè)聚集索引,因?yàn)閿?shù)據(jù)行本身只能按一個(gè)順序存儲(chǔ)。只有當(dāng)表包含聚集索引時(shí),表內(nèi)的數(shù)據(jù)行才按排序次序存儲(chǔ)。如果表沒只有當(dāng)表包含聚集索引時(shí),表內(nèi)的數(shù)據(jù)行才按排序次序存儲(chǔ)。如果表沒有聚集索引,則其數(shù)據(jù)行按堆集方式存儲(chǔ)。有聚集索引,則其數(shù)據(jù)行按堆集方式存儲(chǔ)。非聚集索引非聚集索引(Nonclustered Index)非聚集索引具有完全獨(dú)立于數(shù)據(jù)行的結(jié)構(gòu)。非聚集索引的最低行包含非非聚集索引具有完全獨(dú)立于數(shù)據(jù)行的結(jié)構(gòu)。非聚集索引的最低行包含非聚集索引的鍵值,并且每個(gè)鍵值項(xiàng)都有指針指向包含該鍵值的數(shù)據(jù)行。聚集索引的鍵值,并且每個(gè)鍵值項(xiàng)都有指針指向包含該鍵值的數(shù)據(jù)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 玻璃幕墻供貨及安裝合同
- 銀行柜員個(gè)人工作總結(jié)
- 2024放射醫(yī)學(xué)知識(shí)題庫(kù)
- 糖尿病酮癥的護(hù)理查房
- 走出自卑心理健康
- 兒科支原體肺炎診療與護(hù)理
- 兒科臨床護(hù)理病例分享
- 自主游戲的培訓(xùn)
- 安全班委培訓(xùn)
- 裝修市場(chǎng)培訓(xùn)方案
- 2025年新疆中考數(shù)學(xué)試卷真題
- 2025年福建省中考語文試卷真題(含標(biāo)準(zhǔn)答案)
- 保溫材料安全管理制度
- 餐飲廢棄物管理制度
- 2025年甘肅高考物理試卷真題及答案詳解(精校打印版)
- 護(hù)士禮儀與職業(yè)素養(yǎng)課件
- 玉溪市2025年事業(yè)單位公開招聘工作人員筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 2025至2030中國(guó)工業(yè)電機(jī)行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及商業(yè)模式與投資發(fā)展報(bào)告
- 國(guó)內(nèi)在線教育的發(fā)展?fàn)顩r研究論文3000字
- 合肥長(zhǎng)鑫存儲(chǔ)在線測(cè)評(píng)題2024
- DL-T5153-2014火力發(fā)電廠廠用電設(shè)計(jì)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論