創(chuàng)建數(shù)據(jù)庫(kù)表數(shù)據(jù)庫(kù)原理.ppt
《創(chuàng)建數(shù)據(jù)庫(kù)表數(shù)據(jù)庫(kù)原理.ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《創(chuàng)建數(shù)據(jù)庫(kù)表數(shù)據(jù)庫(kù)原理.ppt(110頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、數(shù)據(jù)庫(kù)原理與應(yīng)用 第10章 數(shù)據(jù)庫(kù)表,學(xué)習(xí)目的,掌握利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表; 掌握利用Transact-SQL語(yǔ)句中的create命令創(chuàng)建表,重點(diǎn)&難點(diǎn),重點(diǎn) 利用Transact-SQL語(yǔ)句中的create命令創(chuàng)建表 難點(diǎn) 無(wú),第10章 數(shù)據(jù)庫(kù)表,數(shù)據(jù)庫(kù)最重要的功能之一是存儲(chǔ)數(shù)據(jù)。 關(guān)系型數(shù)據(jù)庫(kù)中,數(shù)據(jù)保存在表中。 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)后,得到了一系列的關(guān)系模式,進(jìn)入數(shù)據(jù)庫(kù)實(shí)施階段,將把關(guān)系模式轉(zhuǎn)換為DBMS的數(shù)據(jù)庫(kù)表。 數(shù)據(jù)庫(kù)表是數(shù)據(jù)的最基本構(gòu)成元素,對(duì)數(shù)據(jù)庫(kù)的操作大多基于數(shù)據(jù)庫(kù)表。,第10章 數(shù)據(jù)庫(kù)表,10.1創(chuàng)建數(shù)據(jù)庫(kù)表 10.2 修改數(shù)據(jù)庫(kù)表 10
2、.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫(kù)表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,創(chuàng)建表 創(chuàng)建表:就是將邏輯設(shè)計(jì)階段得到的關(guān)系模式用DBMS所支持的形式表達(dá)出來(lái)。 每一個(gè)關(guān)系模式就是一張數(shù)據(jù)(庫(kù))表。 可看作定義這張表的“表頭”如何命名每一列及每一列的屬性特點(diǎn)是什么。 在SQL Server 2000中,每個(gè)數(shù)據(jù)庫(kù)中最多可以創(chuàng)建200萬(wàn)個(gè)表,用戶(hù)創(chuàng)建數(shù)據(jù)庫(kù)表時(shí),最多可以定義1024列,也就是可以定義1024個(gè)字段。,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,SQL Server 2000提供了兩種方法創(chuàng)建數(shù)據(jù)庫(kù)表 利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表 利用Transact-SQL語(yǔ)句中
3、的create命令創(chuàng)建表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表 步驟如下: (1)在樹(shù)形目錄中找到要建表的數(shù)據(jù)庫(kù),展開(kāi)該數(shù)據(jù)庫(kù)。 (2)選擇表,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“新建表”命令,表設(shè)計(jì)器如圖所示。,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表 步驟如下: (1)在樹(shù)形目錄中找到要建表的數(shù)據(jù)庫(kù),展開(kāi)該數(shù)據(jù)庫(kù)。 (2)選擇表,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“新建表”命令,表設(shè)計(jì)器如圖所示。 (3)表設(shè)計(jì)器的上半部分有一個(gè)表格,在這個(gè)表格中輸入列的屬性,表格的每一行對(duì)應(yīng)一列。對(duì)每一列都需要
4、進(jìn)行以下設(shè)置,其中前三項(xiàng)是必須在建表時(shí)給出的,它們是: 列名:即字段名。 數(shù)據(jù)類(lèi)型:數(shù)據(jù)類(lèi)型是一個(gè)下拉列表框,其中包括了所有的系統(tǒng)數(shù)據(jù)類(lèi)型 長(zhǎng)度:如果選擇的數(shù)據(jù)類(lèi)型需要長(zhǎng)度,則指定長(zhǎng)度。 允許空:?jiǎn)螕羰髽?biāo),可以切換是否允許為空值的狀態(tài),勾選說(shuō)明允許為空值,空白說(shuō)明不允許為空值,默認(rèn)狀態(tài)下是允許為空值的。,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表 步驟如下: (3)表設(shè)計(jì)器的上半部分有一個(gè)表格,在這個(gè)表格中輸入列的屬性,表格的每一行對(duì)應(yīng)一列。對(duì)每一列都需要進(jìn)行以下設(shè)置,其中前三項(xiàng)必須在建表時(shí)給出,它們是: 列名:即字段名。 數(shù)據(jù)類(lèi)型:數(shù)據(jù)類(lèi)型是一個(gè)下拉
5、列表框,其中包括了所有的系統(tǒng)數(shù)據(jù)類(lèi)型 長(zhǎng)度:如果選擇的數(shù)據(jù)類(lèi)型需要長(zhǎng)度,則指定長(zhǎng)度。 允許空:?jiǎn)螕羰髽?biāo),可以切換是否允許為空值的狀態(tài),勾選說(shuō)明允許為空值,空白說(shuō)明不允許為空值,默認(rèn)狀態(tài)下是允許為空值的。,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表 步驟如下: (3)表設(shè)計(jì)器的上半部分有一個(gè)表格,在這個(gè)表格中輸入列的屬性,表格的每一行對(duì)應(yīng)一列。 表設(shè)計(jì)器的下半部分是特定列的詳細(xì)屬性,包括是否是標(biāo)識(shí)列、是否使用默認(rèn)值等。 (4)定義好所有列后,單擊工具欄上的保存按扭,表就創(chuàng)建完成了。,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,利用Transact-SQL語(yǔ)句中的create
6、命令創(chuàng)建表 其語(yǔ)法形式如下: CREATE TABLE 表名 (列名1 數(shù)據(jù)類(lèi)型 identity|not null|null, 列名2 數(shù)據(jù)類(lèi)型 identity|not null|null, ) 注意:在創(chuàng)建表之前,要先使用use命令打開(kāi)需要?jiǎng)?chuàng)建表的數(shù)據(jù)庫(kù),10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,三個(gè)參數(shù)的含義: null:表示該列的值可以為空值,即沒(méi)有存儲(chǔ)任何數(shù)據(jù),此為默認(rèn)參數(shù)(不能將空值理解為該列的值是0或空字符串等值) not null:表示該列的值不能為空。 identify:計(jì)數(shù)器,表示該列的值是一組遞增的整數(shù)數(shù)據(jù)。初始值默認(rèn)為1,增長(zhǎng)步長(zhǎng)默認(rèn)為1。也可自己指定初始值和增長(zhǎng)步長(zhǎng)。(課本 表10-
7、1),10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,例:在Company數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)雇員信息表 該表記錄了雇員的號(hào)碼、姓名、性別、出生日期、雇傭日期、職工種類(lèi)、工資信息。 其中:職工號(hào)碼:整型,不能為空 姓名:可變長(zhǎng)度字符型,允許為空 出生日期:日期型,允許為空 雇傭日期:日期型,不能為空 職工種類(lèi):可變長(zhǎng)度字符型,允許為空 工資:貨幣型,允許為空,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,其SQL語(yǔ)句的程序清單如下: use Company go CREATE TABLE employee ( number int not null, name varchar(10) NULL, birthday datetime
8、null, hire_date datetime NOT NULL, professional_title varchar(10) null, salary money null),10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,表名 在同一數(shù)據(jù)庫(kù)內(nèi),數(shù)據(jù)庫(kù)表的名稱(chēng)是惟一的 可以使用中文,也可以使用西文符號(hào) 最多64個(gè)字符(一個(gè)漢字占兩個(gè)字符) 建立臨時(shí)表 臨時(shí)表的表名必須以#打頭 仍然使用CREATE TABLE命令 例:Create table #demotable (user_id numeric(10,0) identity, Name varchar(30) not NULL),10.1 創(chuàng)建數(shù)
9、據(jù)庫(kù)表,例10-1 確定期刊采編系統(tǒng)數(shù)據(jù)庫(kù)中各數(shù)據(jù)表的表名,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,列名 表中的每一列也稱(chēng)為字段,所以列名也叫字段名 字段名的命名方式基本同數(shù)據(jù)表名的命名 字段名在數(shù)據(jù)表中要求是惟一的,但在整個(gè)數(shù)據(jù)庫(kù)中可以重名,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 定義數(shù)據(jù)表中的每一個(gè)字段必須聲明其數(shù)據(jù)類(lèi)型,DBMS才能實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)管理。 為每一個(gè)字段選擇合適的數(shù)據(jù)類(lèi)型和數(shù)據(jù)長(zhǎng)度將直接影響著數(shù)據(jù)庫(kù)系統(tǒng)存儲(chǔ)空間的利用和系統(tǒng)的性能。 在建立數(shù)據(jù)庫(kù)表時(shí),要慎重決定每個(gè)字段的數(shù)據(jù)類(lèi)型。,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 T-SQL中支持的、常用的數(shù)據(jù)類(lèi)型 字符型 日期時(shí)間類(lèi)型 數(shù)值類(lèi)型 二進(jìn)制型 位型
10、 文本型 圖像型 時(shí)間戳型,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 (1)字符型 字符型變量應(yīng)定義長(zhǎng)度 允許定義的最大長(zhǎng)度是255 有兩種 固定長(zhǎng)度的char( )類(lèi)型 可變長(zhǎng)度的varchar( )類(lèi)型 輸入字符型數(shù)據(jù)時(shí)必須用單引號(hào)將數(shù)據(jù)括起來(lái),10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 (2)日期時(shí)間型 datetime和smalldatetime是用來(lái)存儲(chǔ)日期和時(shí)間數(shù)據(jù),10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 (3)整數(shù)類(lèi)型 多用于處理數(shù)值類(lèi)型數(shù)據(jù),10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 (4)浮點(diǎn)數(shù)類(lèi)型 多用于處理取值范圍很大的數(shù)字量 ,使用時(shí)有一定的精確度,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 (5)精確數(shù)類(lèi)型 精
11、確數(shù)類(lèi)型有兩種形式 Decimal Numeric 與浮點(diǎn)類(lèi)型數(shù)據(jù)的區(qū)別 可自定義精度的位數(shù) 例 num_col(5,2) 可以表示的最大值是999.99,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 (6)貨幣型 ¥、,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 (7)位數(shù)據(jù)類(lèi)型 位數(shù)據(jù)類(lèi)型bit是一種邏輯數(shù)據(jù)類(lèi)型 只有1和0兩種數(shù)值 一般常用作true/false使用 定義bit列時(shí),不允許為NULL,也不能建立索引 多個(gè)bit列可占用一個(gè)字節(jié),10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 (8)文本型和圖像型 文本類(lèi)型text 圖像類(lèi)型image 每行可以存儲(chǔ)2GB的二進(jìn)制大型對(duì)象,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,數(shù)據(jù)類(lèi)型 (9
12、)時(shí)間戳型 時(shí)間戳型表示Timestamp 由系統(tǒng)自動(dòng)賦值的一個(gè)計(jì)數(shù)器數(shù)據(jù) 記錄了數(shù)據(jù)行的操作順序 時(shí)間戳列的數(shù)據(jù)保持惟一,它可以惟一標(biāo)識(shí)表中的列 時(shí)間戳列的值實(shí)際來(lái)自于事務(wù)日志,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,例10-2 確定期刊采編系統(tǒng)數(shù)據(jù)庫(kù)中各數(shù)據(jù)表中字段的字段名和數(shù)據(jù)類(lèi)型,數(shù)據(jù)表Mag_dept,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,例10-2 確定期刊采編系統(tǒng)數(shù)據(jù)庫(kù)中各數(shù)據(jù)表中字段的字段名和數(shù)據(jù)類(lèi)型,數(shù)據(jù)表mag_emp,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,例10-2 確定期刊采編系統(tǒng)數(shù)據(jù)庫(kù)中各數(shù)據(jù)表中字段的字段名和數(shù)據(jù)類(lèi)型,數(shù)據(jù)表Mag_info,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,例10-2 確定期刊采編系統(tǒng)數(shù)據(jù)庫(kù)中各數(shù)據(jù)表
13、中字段的字段名和數(shù)據(jù)類(lèi)型,數(shù)據(jù)表mag_doc,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,例10-3 建立期刊采編系統(tǒng)數(shù)據(jù)庫(kù)中各數(shù)據(jù)表,創(chuàng)建mag_dept表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,例10-3 建立期刊采編系統(tǒng)數(shù)據(jù)庫(kù)中各數(shù)據(jù)表,創(chuàng)建mag_emp表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,例10-3 建立期刊采編系統(tǒng)數(shù)據(jù)庫(kù)中各數(shù)據(jù)表,創(chuàng)建mag_info表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,例10-3 建立期刊采編系統(tǒng)數(shù)據(jù)庫(kù)中各數(shù)據(jù)表,創(chuàng)建mag_doc表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,用T-SQL語(yǔ)句查看表定義 1.使用系統(tǒng)存儲(chǔ)過(guò)程sp_help可以查看表的定義,在查詢(xún)分 析器中輸入 sp_help employee命令,可以查看剛剛創(chuàng)
14、建 的employee表的結(jié)構(gòu)。,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,2.使用系統(tǒng)存儲(chǔ)過(guò)程sp_helpdb 格式如下: sp_helpdb 數(shù)據(jù)庫(kù)名 1)不給出參數(shù),將顯示服務(wù)器中所有數(shù)據(jù)庫(kù)的信息,如圖所示。,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,使用系統(tǒng)存儲(chǔ)過(guò)程sp_helpdb,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,使用系統(tǒng)存儲(chǔ)過(guò)程sp_helpdb )給出某個(gè)數(shù)據(jù)庫(kù)名時(shí),只顯示這個(gè)數(shù)據(jù)庫(kù)的信息如圖:,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,3.使用系統(tǒng)存儲(chǔ)過(guò)程sp_databases 格式如下: sp_databases 顯示服務(wù)器中所有可以使用的數(shù)據(jù)庫(kù)的信息,如圖所示。 注意:sp_helpdb也
15、是顯示服務(wù)器中所有數(shù)據(jù)庫(kù)的信息,兩者之間的差別在哪?,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,4.使用系統(tǒng)存儲(chǔ)過(guò)程sp_helpfile 格式如下: sp_helpfile 文件名 查看數(shù)據(jù)庫(kù)中文件的信息。 注意:要先使用use命令打開(kāi)所要查看的數(shù)據(jù)庫(kù),補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,4.使用系統(tǒng)存儲(chǔ)過(guò)程sp_helpfile (1)不加文件名,顯示數(shù)據(jù)庫(kù)中所有文件的信息,如圖所示。,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,4.使用系統(tǒng)存儲(chǔ)過(guò)程sp_helpfile (2)加文件名,顯示數(shù)據(jù)庫(kù)中某一文件的信息,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)
16、表,5.使用系統(tǒng)存儲(chǔ)過(guò)程sp_helpfilegroup 格式如下: sp_helpfilegroup 文件組名 不加文件組名,顯示數(shù)據(jù)庫(kù)中所有文件組的信息。用法同sp_helpfile。,補(bǔ)充:,第10章 數(shù)據(jù)庫(kù)表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表 10.2 修改數(shù)據(jù)庫(kù)表 10.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫(kù)表,10.2 修改數(shù)據(jù)庫(kù)表,添加或刪除列 修改列的屬性 更改列名和表名,10.2 修改數(shù)據(jù)庫(kù)表,利用企業(yè)管理器增加、刪除和修改字段 。 在企業(yè)管理器中,打開(kāi)指定的服務(wù)器中要修改表的數(shù)據(jù)庫(kù),用右鍵單擊要進(jìn)行修改的表,從彈出的快捷菜單中選擇設(shè)計(jì)表選項(xiàng),則會(huì)出現(xiàn)設(shè)計(jì)表對(duì)話(huà)框,在該
17、對(duì)話(huà)框中,可以利用圖形化工具完成增加、刪除和修改字段的操作。 利用Transact-SQL語(yǔ)言中的alter table命令增加、刪除和修改字段。,10.2 修改數(shù)據(jù)庫(kù)表,增加列 語(yǔ)句格式: ALTER TABLE表名 ADD列名 列的描述 例如:向Company數(shù)據(jù)庫(kù)的employee表中添加性別(sex)列。 use Company go alter table employee add sex char(4) null,10.2 修改數(shù)據(jù)庫(kù)表,增加列 例10-4 向數(shù)據(jù)表mag_emp中添加一新屬性ID(身份證號(hào)碼),數(shù)據(jù)類(lèi)型為字符型,固定長(zhǎng)度18,10.2 修改數(shù)據(jù)庫(kù)表,刪除列 語(yǔ)句格
18、式: ALTER TABLE 表名 DROP COLUMN 列名 例如:刪除 employee表的sex列。 use Company go alter table employee drop column sex,10.2 修改數(shù)據(jù)庫(kù)表,刪除列 例10-5 刪除數(shù)據(jù)表mag_emp中屬性ID,10.2 修改數(shù)據(jù)庫(kù)表,修改列定義 表中的每一列都有其定義,包括列名、數(shù)據(jù)類(lèi)型、數(shù)據(jù)長(zhǎng)度以及是否允許為空值等,這些值都可以在表創(chuàng)建好以后修改。 修改列定義的語(yǔ)句格式為: ALTER TABLE 表名 ALTER COLUMN 列名 數(shù)據(jù)類(lèi)型列的描述,10.2 修改數(shù)據(jù)庫(kù)表,修改列定義 例如:將employ
19、ee表的name列改為最大長(zhǎng)度為20的varchar型數(shù)據(jù),且不允許空值。 use Company go alter table employee alter column name varchar(20) not null 默認(rèn)狀態(tài)下,列是被設(shè)置為允許空值的,將一個(gè)原來(lái)允許空值的列改為不允許空值,必須在以下兩個(gè)條件滿(mǎn)足時(shí)才能成功: (1)列中沒(méi)有存放是空值的記錄 (2)在列上沒(méi)有創(chuàng)建索引。,10.2 修改數(shù)據(jù)庫(kù)表,修改列定義 例10-6 將數(shù)據(jù)表mag_info中PubDate的數(shù)據(jù)類(lèi)型更改為smalldatetime,10.2 修改數(shù)據(jù)庫(kù)表,更改列名和表名 更改列名 sp_rename 表
20、名.列名,新列名 更改表名 sp_rename 原表名,新表名,10.2 修改數(shù)據(jù)庫(kù)表,更改列名和表名 例10-7 數(shù)據(jù)庫(kù)usedb1中建有數(shù)據(jù)表test,包含number、stu_name和class三個(gè)字段,請(qǐng)將class更名為class_no,10.2 修改數(shù)據(jù)庫(kù)表,更改列名和表名 例10-8 將數(shù)據(jù)庫(kù)usedb1中數(shù)據(jù)表test更名為student,第10章 數(shù)據(jù)庫(kù)表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表 10.2 修改數(shù)據(jù)庫(kù)表 10.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫(kù)表,10.3 使用約束,約束的作用 實(shí)現(xiàn)數(shù)據(jù)的完整性 實(shí)體完整性 參照完整性 用戶(hù)自定義完整性,10.3 使用約
21、束,約束的類(lèi)型,10.3 使用約束,建立約束 定義約束時(shí)使用Create table語(yǔ)句 或使用Alter table語(yǔ)句 即可以在定義數(shù)據(jù)表的數(shù)據(jù)列時(shí)直接定義約束,也可以對(duì)已定義的數(shù)據(jù)表添加約束,10.3 使用約束,建立約束 使用Create table語(yǔ)句格式: Create table 表名 (列名1 數(shù)據(jù)類(lèi)型 identity |NOT NULL| NULL Constraint 約束名 約束定義, 列名2 數(shù)據(jù)類(lèi)型 identity |NOT NULL| NULL Constraint 約束名 約束定義, Constraint 約束名 約束定義 ) 建立約束時(shí)看隨數(shù)據(jù)定義或者單
22、獨(dú)定義,10.3 使用約束,建立約束 使用Alter table語(yǔ)句格式: Alter table 表名 Add Constraint 約束名 約束定義 約束名是一個(gè)可選項(xiàng),如果用戶(hù)自己不定義約束名,則系統(tǒng)將按照一定規(guī)則命名該約束。 不命名約束名時(shí),關(guān)鍵字constraint也要省略。,10.3 使用約束,1.primary key 主鍵的添加、刪除和修改操作方法有兩種: (1)企業(yè)管理器操作法,在企業(yè)管理器中,用右鍵單擊要操作的數(shù)據(jù)庫(kù)表,從彈出的快捷菜單中選擇設(shè)計(jì)表選項(xiàng) ,然后根據(jù)提示操作。 如圖,10.3 使用約束,10.3 使用約束,1.primary key 主鍵的添加、刪除和修改操
23、作方法有兩種: (2)Transact-SQL語(yǔ)句操作法 其語(yǔ)法形式如下: CONSTRAINT constraint_name PRIMARY KEY(列名1,列名2,) 當(dāng)主鍵由多個(gè)列構(gòu)成時(shí),則將列名依次寫(xiě)在括號(hào)中,10.3 使用約束,1.primary key 主鍵的添加、刪除和修改操作方法有兩種: (2)Transact-SQL語(yǔ)句操作法 例10-9 向數(shù)據(jù)表map_dept中添加主鍵約束,10.3 使用約束,注意:此例沒(méi)有定義約束名,則系統(tǒng)會(huì)按照一定規(guī)則命名該約束。查看約束名方法:如圖,10.3 使用約束,1.primary key 使用create table建立主鍵約束時(shí)兩種寫(xiě)法
24、 (1)定義列名和數(shù)據(jù)類(lèi)型后,直接寫(xiě)上關(guān)鍵字primary key (2)定義完所有列名和數(shù)據(jù)類(lèi)型后,單獨(dú)寫(xiě)明primary key(列名1,列名2 當(dāng)主鍵有兩個(gè)或兩個(gè)以上屬性共同構(gòu)成時(shí),必須用第二種方法,即單獨(dú)定義,而不能隨列的定義而定義。,10.3 使用約束,(1)定義列名和數(shù)據(jù)類(lèi)型后,直接寫(xiě)上關(guān)鍵字primary key 例10-10 在數(shù)據(jù)庫(kù)usedb2中建立數(shù)據(jù)表map_dept,同時(shí)定義主鍵約束,10.3 使用約束,(2)定義完所有列名和數(shù)據(jù)類(lèi)型后,單獨(dú)寫(xiě)明primary key(列名1,列名2 例10-11 在數(shù)據(jù)庫(kù)usedb1中建立數(shù)據(jù)表grade,表中包括學(xué)號(hào)sno(char
25、)、課程號(hào)cno(char)、成績(jī)gmark(numeric)屬性 .主鍵由學(xué)號(hào)和課程號(hào)構(gòu)成,10.3 使用約束,2.unique 唯一性約束用于指定一個(gè)或者多個(gè)列的組合的值具有唯一性,以防止在列中輸入重復(fù)的值。當(dāng)使用唯一性約束時(shí),需要考慮以下幾個(gè)因素: 主鍵自動(dòng)具有unique的特性 一個(gè)表中可以允許有多個(gè)唯一性約束。 可以把唯一性約束定義在多個(gè)字段上。 唯一性約束用于強(qiáng)制在指定字段上創(chuàng)建一個(gè)唯一性 索引。,10.3 使用約束,2.unique (1)企業(yè)管理器操作法,10.3 使用約束,2.unique (2)Transact-SQL語(yǔ)句操作法 CONSTRAINT 約束名 UNIQUE(
26、列名1,n) 基本用法同主鍵約束,10.3 使用約束,2.unique 例10-12 向數(shù)據(jù)庫(kù)usedb2中數(shù)據(jù)表mag_dept屬性DepManager增加UNIQUE約束,10.3 使用約束,3.foreign key 外部鍵約束用于強(qiáng)制參照完整性,提供單個(gè)字段或者多個(gè)字段的參照完整性。 基本格式為: constraint 約束名 foreign key(列名1,列名2) references 表名(列名1,列名2 ),10.3 使用約束,3.foreign key 注意: (1) 使用create table命令建表時(shí),若隨著列的定義一同定義外鍵,則可以省略關(guān)鍵字foreign key及
27、列名,但使用alter table命令增加外部鍵時(shí)不行. (2) 定義外部鍵時(shí)要保證被定義為外鍵的屬性在參照表中已經(jīng)被定義為主鍵.,10.3 使用約束,3.foreign key 例10-13 向數(shù)據(jù)庫(kù)MagDb中數(shù)據(jù)表mag_emp的屬性DepId添加外鍵約束,10.3 使用約束,3.foreign key 例10-14 在數(shù)據(jù)庫(kù)usedb2中建立數(shù)據(jù)表mag_emp,同時(shí)定義主鍵和外鍵,10.3 使用約束,4.check 一個(gè)列級(jí)檢查約束只能與限制的字段有關(guān);一個(gè)表級(jí)檢查約束只能與限制的表中字段有關(guān)。 一個(gè)表中可以定義多個(gè)檢查約束。 每個(gè)CREATE TABLE語(yǔ)句中每個(gè)字段只能定義一個(gè)檢
28、查約束。 在多個(gè)字段上定義檢查約束,則必須將檢查約束定義為表級(jí)約束。 當(dāng)執(zhí)行INSERT語(yǔ)句或者UPDATE語(yǔ)句時(shí),檢查約束將驗(yàn)證數(shù)據(jù)。,10.3 使用約束,4.check (1)企業(yè)管理器操作法,10.3 使用約束,4.check (2)Transact-SQL語(yǔ)句操作法。其語(yǔ)法形式如下: CONSTRAINT 約束名 CHECK(邏輯表達(dá)式),10.3 使用約束,4.check 例10-15 將數(shù)據(jù)庫(kù)MagDb中數(shù)據(jù)表mag_emp的屬性EmpAge取值范圍限定在1-100之間(含1和100),并將此約束命名為ck_age,10.3 使用約束,4.check 例子:創(chuàng)建一個(gè)學(xué)生信息表,其中
29、輸入性別字段值時(shí),只能接受“F”或者“M”,并且為phonenum字段創(chuàng)建檢查約束,限制只能輸入類(lèi)似80798654之類(lèi)的數(shù)據(jù),而不能隨意輸入其他數(shù)據(jù)。,create table student ( id char(8), name char(8), sex char(2), phonenum int, constraint chk_sex check (sex in (F,M)), constraint chk_phonenum check(phonenum like 0-90-90-90-90-90-90-90-9)),10.3 使用約束,5.default 用于指定某個(gè)屬性的默認(rèn)值。當(dāng)數(shù)
30、據(jù)表中的某一列具有大量相同數(shù)據(jù)時(shí),為了減少數(shù)據(jù)錄入的工作量,可以指定默認(rèn)值,則該屬性自動(dòng)具有了數(shù)據(jù)。 (1)企業(yè)管理器中,10.3 使用約束,5.default (2)T-SQL語(yǔ)句定義default約束 基本格式: constraint 約束名 default 常量表達(dá)式 for 字段名,10.3 使用約束,5.default 例10-16 將數(shù)據(jù)庫(kù)MagDb中數(shù)據(jù)表mag_emp的屬性EmpRole的默認(rèn)值指定為“編輯”,10.3 使用約束,5.default 使用缺省約束時(shí),應(yīng)該注意以下幾點(diǎn): 每個(gè)字段只能定義一個(gè)缺省約束。 如果定義的缺省值長(zhǎng)于其對(duì)應(yīng)字段的允許長(zhǎng)度,那么輸入到表中的缺省
31、值將被截?cái)唷?不能加入到帶有IDENTITY屬性的字段上。,10.3 使用約束,刪除約束 語(yǔ)句格式: alter table 表名 drop constraint 約束名 注意:定義約束的時(shí)候若省略了約束名,則要先查出系統(tǒng)自動(dòng)命名的約束名然后進(jìn)行刪除.,10.3 使用約束,刪除約束 例10-17 刪除數(shù)據(jù)庫(kù)usedb2中數(shù)據(jù)表mag_dept屬性DepManager的UNIQUE約束,第10章 數(shù)據(jù)庫(kù)表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表 10.2 修改數(shù)據(jù)庫(kù)表 10.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫(kù)表,10.4 建立索引,數(shù)據(jù)庫(kù)中的索引與書(shū)籍中的索引類(lèi)似。 在一本書(shū)中,利用索引可以
32、快速查找所需信息,無(wú)須閱讀整本書(shū)。在數(shù)據(jù)庫(kù)中,索引使數(shù)據(jù)庫(kù)程序無(wú)須對(duì)整個(gè)表進(jìn)行掃描,就可以在其中找到所需數(shù)據(jù)。 書(shū)中的索引是一個(gè)詞語(yǔ)列表,其中注明了包含各個(gè)詞的頁(yè)碼。而數(shù)據(jù)庫(kù)中的索引是某個(gè)表中一列或者若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁(yè)的邏輯指針清單。,10.4 建立索引,索引的作用 通過(guò)創(chuàng)建唯一索引,可以保證數(shù)據(jù)記錄的唯一 性。 可以大大加快數(shù)據(jù)檢索速度。 可以加速表與表之間的連接,這一點(diǎn)在實(shí)現(xiàn)數(shù)據(jù)的參照完整性方面有特別的意義。,10.4 建立索引,索引的類(lèi)型 聚集索引(clustered) 是一種物理存儲(chǔ)方式 一個(gè)數(shù)據(jù)表只能建立一個(gè)聚集索引 非聚集索引(noncluster
33、ed) 是一種邏輯存儲(chǔ)方式 索引的次序并不影響數(shù)據(jù)的物理存儲(chǔ)順序 一個(gè)數(shù)據(jù)表最多可以建立249個(gè)非聚集索引,10.4 建立索引,創(chuàng)建索引的方法 SQL Server 2000創(chuàng)建索引的方法 (1)用企業(yè)管理器直接創(chuàng)建索引。 (2)利用Transact-SQL語(yǔ)句中的CREATE INDEX命令創(chuàng)建索引。,10.4 建立索引,用企業(yè)管理器直接創(chuàng)建索引。 具體步驟如下: ()在企業(yè)管理器中,展開(kāi)指定的服務(wù)器和數(shù)據(jù)庫(kù),選擇要?jiǎng)?chuàng)建索引的表,用右鍵單擊該表,從彈出的快捷菜單中選擇所有任務(wù)項(xiàng)的管理索引選項(xiàng),10.4 建立索引,用企業(yè)管理器直接創(chuàng)建索引。 具體步驟如下: 出現(xiàn)管理索引對(duì)話(huà)框,如圖所示。在該對(duì)
34、話(huà)框中,可以選擇要處理的數(shù)據(jù)庫(kù)和表,管理索引對(duì)話(huà)框,10.4 建立索引,用企業(yè)管理器直接創(chuàng)建索引。 具體步驟如下: ()單擊“新建”按鈕,則出現(xiàn)新建索引對(duì)話(huà)框,如圖所示。,(3) 選擇完成后單擊“確定” 按鈕,即可生成新的索引; 單擊“取消”按鈕, 則取消新建索引的操作。,10.4 建立索引,利用Transact-SQL語(yǔ)句中的CREATE INDEX命令創(chuàng)建索引。 建立索引的語(yǔ)法為: create unique clustered|nonclustered index 索引名 on 表名(列名1,列名2) unique:惟一索引 默認(rèn)情況下,創(chuàng)建的索引是非惟一的非聚集索引. 必須先建立聚集索
35、引,再建立非聚集索引.,10.4 建立索引,例10-18 對(duì)數(shù)據(jù)表mag_emp屬性EmpAge建立非惟一的非聚集索引age_index,注意: (1)當(dāng)數(shù)據(jù)表建立主鍵后,就自動(dòng)建立惟一聚集索引 (2)數(shù)據(jù)表使用unique約束后,可自動(dòng)產(chǎn)生一個(gè)非聚集索引,10.4 建立索引,創(chuàng)建索引時(shí)一般應(yīng)遵循以下原則 經(jīng)常要查找的列 經(jīng)常要按順序檢索的列 經(jīng)常用于多個(gè)數(shù)據(jù)表連接的列 經(jīng)常用于進(jìn)行統(tǒng)計(jì)計(jì)算(如求極值、求和等)的列; 在查詢(xún)條件中頻繁使用的列 如果一個(gè)列中只有幾個(gè)不同的數(shù)據(jù)值,或者被索引的列多于20個(gè)字節(jié)時(shí),通常不應(yīng)該建立索引,10.4 建立索引,刪除索引的語(yǔ)法 Drop index 表名.索引名 注意使用primary key約束和unique約束建立的索引不能刪除,例10-19 刪除索引age_index,第10章 數(shù)據(jù)庫(kù)表,10.1 創(chuàng)建數(shù)據(jù)庫(kù)表 10.2 修改數(shù)據(jù)庫(kù)表 10.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫(kù)表,10.5 刪除數(shù)據(jù)庫(kù)表,刪除數(shù)據(jù)表的語(yǔ)法 Drop table 表名,例10-20 刪除usedb2中數(shù)據(jù)表mag_dept,
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 外研版(一起)英語(yǔ)一年級(jí)上冊(cè)Module-5課件
- 外研版(一起)五上Module-10《Unit-1-You-should-tidy-your課件
- 認(rèn)識(shí)線(xiàn)段課件
- 患者病情評(píng)估培訓(xùn)完整
- 早產(chǎn)兒的護(hù)理教學(xué)
- 我們吃的食物安全嗎
- 鹽酸硫酸—浙教版九級(jí)科學(xué)上冊(cè)課件1
- 人工智能遺傳算法
- 硬質(zhì)景觀(guān)的細(xì)部處理龍湖
- 人教版小學(xué)二年級(jí)上冊(cè)數(shù)學(xué)8的乘法口訣
- 郵輪旅游世界郵輪產(chǎn)業(yè)經(jīng)濟(jì)的發(fā)展
- 如何繪制出高品質(zhì)的學(xué)科思維導(dǎo)圖
- 美國(guó)癲癇學(xué)會(huì)驚厥性癲癇持續(xù)狀態(tài)治療指南解讀
- 城市公共空間設(shè)計(jì)理論及方法課件
- (課件)正弦定理公開(kāi)課