創(chuàng)建數(shù)據(jù)庫表數(shù)據(jù)庫原理.ppt
《創(chuàng)建數(shù)據(jù)庫表數(shù)據(jù)庫原理.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《創(chuàng)建數(shù)據(jù)庫表數(shù)據(jù)庫原理.ppt(110頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、數(shù)據(jù)庫原理與應(yīng)用 第10章 數(shù)據(jù)庫表,學(xué)習(xí)目的,掌握利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表; 掌握利用Transact-SQL語句中的create命令創(chuàng)建表,重點(diǎn)&難點(diǎn),重點(diǎn) 利用Transact-SQL語句中的create命令創(chuàng)建表 難點(diǎn) 無,第10章 數(shù)據(jù)庫表,數(shù)據(jù)庫最重要的功能之一是存儲(chǔ)數(shù)據(jù)。 關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)保存在表中。 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)后,得到了一系列的關(guān)系模式,進(jìn)入數(shù)據(jù)庫實(shí)施階段,將把關(guān)系模式轉(zhuǎn)換為DBMS的數(shù)據(jù)庫表。 數(shù)據(jù)庫表是數(shù)據(jù)的最基本構(gòu)成元素,對(duì)數(shù)據(jù)庫的操作大多基于數(shù)據(jù)庫表。,第10章 數(shù)據(jù)庫表,10.1創(chuàng)建數(shù)據(jù)庫表 10.2 修改數(shù)據(jù)庫表 10
2、.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫表,10.1 創(chuàng)建數(shù)據(jù)庫表,創(chuàng)建表 創(chuàng)建表:就是將邏輯設(shè)計(jì)階段得到的關(guān)系模式用DBMS所支持的形式表達(dá)出來。 每一個(gè)關(guān)系模式就是一張數(shù)據(jù)(庫)表。 可看作定義這張表的“表頭”如何命名每一列及每一列的屬性特點(diǎn)是什么。 在SQL Server 2000中,每個(gè)數(shù)據(jù)庫中最多可以創(chuàng)建200萬個(gè)表,用戶創(chuàng)建數(shù)據(jù)庫表時(shí),最多可以定義1024列,也就是可以定義1024個(gè)字段。,10.1 創(chuàng)建數(shù)據(jù)庫表,SQL Server 2000提供了兩種方法創(chuàng)建數(shù)據(jù)庫表 利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表 利用Transact-SQL語句中
3、的create命令創(chuàng)建表,10.1 創(chuàng)建數(shù)據(jù)庫表,利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表 步驟如下: (1)在樹形目錄中找到要建表的數(shù)據(jù)庫,展開該數(shù)據(jù)庫。 (2)選擇表,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“新建表”命令,表設(shè)計(jì)器如圖所示。,10.1 創(chuàng)建數(shù)據(jù)庫表,利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表 步驟如下: (1)在樹形目錄中找到要建表的數(shù)據(jù)庫,展開該數(shù)據(jù)庫。 (2)選擇表,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“新建表”命令,表設(shè)計(jì)器如圖所示。 (3)表設(shè)計(jì)器的上半部分有一個(gè)表格,在這個(gè)表格中輸入列的屬性,表格的每一行對(duì)應(yīng)一列。對(duì)每一列都需要
4、進(jìn)行以下設(shè)置,其中前三項(xiàng)是必須在建表時(shí)給出的,它們是: 列名:即字段名。 數(shù)據(jù)類型:數(shù)據(jù)類型是一個(gè)下拉列表框,其中包括了所有的系統(tǒng)數(shù)據(jù)類型 長度:如果選擇的數(shù)據(jù)類型需要長度,則指定長度。 允許空:單擊鼠標(biāo),可以切換是否允許為空值的狀態(tài),勾選說明允許為空值,空白說明不允許為空值,默認(rèn)狀態(tài)下是允許為空值的。,10.1 創(chuàng)建數(shù)據(jù)庫表,利用企業(yè)管理器(Enterprise Manager)創(chuàng)建表 步驟如下: (3)表設(shè)計(jì)器的上半部分有一個(gè)表格,在這個(gè)表格中輸入列的屬性,表格的每一行對(duì)應(yīng)一列。對(duì)每一列都需要進(jìn)行以下設(shè)置,其中前三項(xiàng)必須在建表時(shí)給出,它們是: 列名:即字段名。 數(shù)據(jù)類型:數(shù)據(jù)類型是一個(gè)下拉
5、列表框,其中包括了所有的系統(tǒng)數(shù)據(jù)類型 長度:如果選擇的數(shù)據(jù)類型需要長度,則指定長度。 允許空:單擊鼠標(biāo),可以切換是否允許為空值的狀態(tài),勾選說明允許為空值,空白說明不允許為空值,默認(rèn)狀態(tài)下是允許為空值的。,10.1 創(chuàng)建數(shù)據(jù)庫表,利用企業(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ù)庫表,利用Transact-SQL語句中的create
6、命令創(chuàng)建表 其語法形式如下: CREATE TABLE 表名 (列名1 數(shù)據(jù)類型 identity|not null|null, 列名2 數(shù)據(jù)類型 identity|not null|null, ) 注意:在創(chuàng)建表之前,要先使用use命令打開需要?jiǎng)?chuàng)建表的數(shù)據(jù)庫,10.1 創(chuàng)建數(shù)據(jù)庫表,三個(gè)參數(shù)的含義: null:表示該列的值可以為空值,即沒有存儲(chǔ)任何數(shù)據(jù),此為默認(rèn)參數(shù)(不能將空值理解為該列的值是0或空字符串等值) not null:表示該列的值不能為空。 identify:計(jì)數(shù)器,表示該列的值是一組遞增的整數(shù)數(shù)據(jù)。初始值默認(rèn)為1,增長步長默認(rèn)為1。也可自己指定初始值和增長步長。(課本 表10-
7、1),10.1 創(chuàng)建數(shù)據(jù)庫表,例:在Company數(shù)據(jù)庫中創(chuàng)建一個(gè)雇員信息表 該表記錄了雇員的號(hào)碼、姓名、性別、出生日期、雇傭日期、職工種類、工資信息。 其中:職工號(hào)碼:整型,不能為空 姓名:可變長度字符型,允許為空 出生日期:日期型,允許為空 雇傭日期:日期型,不能為空 職工種類:可變長度字符型,允許為空 工資:貨幣型,允許為空,10.1 創(chuàng)建數(shù)據(jù)庫表,其SQL語句的程序清單如下: 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ù)庫表,表名 在同一數(shù)據(jù)庫內(nèi),數(shù)據(jù)庫表的名稱是惟一的 可以使用中文,也可以使用西文符號(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ù)庫表,例10-1 確定期刊采編系統(tǒng)數(shù)據(jù)庫中各數(shù)據(jù)表的表名,10.1 創(chuàng)建數(shù)據(jù)庫表,列名 表中的每一列也稱為字段,所以列名也叫字段名 字段名的命名方式基本同數(shù)據(jù)表名的命名 字段名在數(shù)據(jù)表中要求是惟一的,但在整個(gè)數(shù)據(jù)庫中可以重名,10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 定義數(shù)據(jù)表中的每一個(gè)字段必須聲明其數(shù)據(jù)類型,DBMS才能實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)管理。 為每一個(gè)字段選擇合適的數(shù)據(jù)類型和數(shù)據(jù)長度將直接影響著數(shù)據(jù)庫系統(tǒng)存儲(chǔ)空間的利用和系統(tǒng)的性能。 在建立數(shù)據(jù)庫表時(shí),要慎重決定每個(gè)字段的數(shù)據(jù)類型。,10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 T-SQL中支持的、常用的數(shù)據(jù)類型 字符型 日期時(shí)間類型 數(shù)值類型 二進(jìn)制型 位型
10、 文本型 圖像型 時(shí)間戳型,10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 (1)字符型 字符型變量應(yīng)定義長度 允許定義的最大長度是255 有兩種 固定長度的char( )類型 可變長度的varchar( )類型 輸入字符型數(shù)據(jù)時(shí)必須用單引號(hào)將數(shù)據(jù)括起來,10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 (2)日期時(shí)間型 datetime和smalldatetime是用來存儲(chǔ)日期和時(shí)間數(shù)據(jù),10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 (3)整數(shù)類型 多用于處理數(shù)值類型數(shù)據(jù),10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 (4)浮點(diǎn)數(shù)類型 多用于處理取值范圍很大的數(shù)字量 ,使用時(shí)有一定的精確度,10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 (5)精確數(shù)類型 精
11、確數(shù)類型有兩種形式 Decimal Numeric 與浮點(diǎn)類型數(shù)據(jù)的區(qū)別 可自定義精度的位數(shù) 例 num_col(5,2) 可以表示的最大值是999.99,10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 (6)貨幣型 ¥、,10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 (7)位數(shù)據(jù)類型 位數(shù)據(jù)類型bit是一種邏輯數(shù)據(jù)類型 只有1和0兩種數(shù)值 一般常用作true/false使用 定義bit列時(shí),不允許為NULL,也不能建立索引 多個(gè)bit列可占用一個(gè)字節(jié),10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 (8)文本型和圖像型 文本類型text 圖像類型image 每行可以存儲(chǔ)2GB的二進(jìn)制大型對(duì)象,10.1 創(chuàng)建數(shù)據(jù)庫表,數(shù)據(jù)類型 (9
12、)時(shí)間戳型 時(shí)間戳型表示Timestamp 由系統(tǒng)自動(dòng)賦值的一個(gè)計(jì)數(shù)器數(shù)據(jù) 記錄了數(shù)據(jù)行的操作順序 時(shí)間戳列的數(shù)據(jù)保持惟一,它可以惟一標(biāo)識(shí)表中的列 時(shí)間戳列的值實(shí)際來自于事務(wù)日志,10.1 創(chuàng)建數(shù)據(jù)庫表,例10-2 確定期刊采編系統(tǒng)數(shù)據(jù)庫中各數(shù)據(jù)表中字段的字段名和數(shù)據(jù)類型,數(shù)據(jù)表Mag_dept,10.1 創(chuàng)建數(shù)據(jù)庫表,例10-2 確定期刊采編系統(tǒng)數(shù)據(jù)庫中各數(shù)據(jù)表中字段的字段名和數(shù)據(jù)類型,數(shù)據(jù)表mag_emp,10.1 創(chuàng)建數(shù)據(jù)庫表,例10-2 確定期刊采編系統(tǒng)數(shù)據(jù)庫中各數(shù)據(jù)表中字段的字段名和數(shù)據(jù)類型,數(shù)據(jù)表Mag_info,10.1 創(chuàng)建數(shù)據(jù)庫表,例10-2 確定期刊采編系統(tǒng)數(shù)據(jù)庫中各數(shù)據(jù)表
13、中字段的字段名和數(shù)據(jù)類型,數(shù)據(jù)表mag_doc,10.1 創(chuàng)建數(shù)據(jù)庫表,例10-3 建立期刊采編系統(tǒng)數(shù)據(jù)庫中各數(shù)據(jù)表,創(chuàng)建mag_dept表,10.1 創(chuàng)建數(shù)據(jù)庫表,例10-3 建立期刊采編系統(tǒng)數(shù)據(jù)庫中各數(shù)據(jù)表,創(chuàng)建mag_emp表,10.1 創(chuàng)建數(shù)據(jù)庫表,例10-3 建立期刊采編系統(tǒng)數(shù)據(jù)庫中各數(shù)據(jù)表,創(chuàng)建mag_info表,10.1 創(chuàng)建數(shù)據(jù)庫表,例10-3 建立期刊采編系統(tǒng)數(shù)據(jù)庫中各數(shù)據(jù)表,創(chuàng)建mag_doc表,10.1 創(chuàng)建數(shù)據(jù)庫表,用T-SQL語句查看表定義 1.使用系統(tǒng)存儲(chǔ)過程sp_help可以查看表的定義,在查詢分 析器中輸入 sp_help employee命令,可以查看剛剛創(chuàng)
14、建 的employee表的結(jié)構(gòu)。,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫表,2.使用系統(tǒng)存儲(chǔ)過程sp_helpdb 格式如下: sp_helpdb 數(shù)據(jù)庫名 1)不給出參數(shù),將顯示服務(wù)器中所有數(shù)據(jù)庫的信息,如圖所示。,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫表,使用系統(tǒng)存儲(chǔ)過程sp_helpdb,10.1 創(chuàng)建數(shù)據(jù)庫表,使用系統(tǒng)存儲(chǔ)過程sp_helpdb )給出某個(gè)數(shù)據(jù)庫名時(shí),只顯示這個(gè)數(shù)據(jù)庫的信息如圖:,10.1 創(chuàng)建數(shù)據(jù)庫表,10.1 創(chuàng)建數(shù)據(jù)庫表,3.使用系統(tǒng)存儲(chǔ)過程sp_databases 格式如下: sp_databases 顯示服務(wù)器中所有可以使用的數(shù)據(jù)庫的信息,如圖所示。 注意:sp_helpdb也
15、是顯示服務(wù)器中所有數(shù)據(jù)庫的信息,兩者之間的差別在哪?,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫表,10.1 創(chuàng)建數(shù)據(jù)庫表,4.使用系統(tǒng)存儲(chǔ)過程sp_helpfile 格式如下: sp_helpfile 文件名 查看數(shù)據(jù)庫中文件的信息。 注意:要先使用use命令打開所要查看的數(shù)據(jù)庫,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫表,4.使用系統(tǒng)存儲(chǔ)過程sp_helpfile (1)不加文件名,顯示數(shù)據(jù)庫中所有文件的信息,如圖所示。,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫表,10.1 創(chuàng)建數(shù)據(jù)庫表,4.使用系統(tǒng)存儲(chǔ)過程sp_helpfile (2)加文件名,顯示數(shù)據(jù)庫中某一文件的信息,補(bǔ)充:,10.1 創(chuàng)建數(shù)據(jù)庫表,10.1 創(chuàng)建數(shù)據(jù)庫
16、表,5.使用系統(tǒng)存儲(chǔ)過程sp_helpfilegroup 格式如下: sp_helpfilegroup 文件組名 不加文件組名,顯示數(shù)據(jù)庫中所有文件組的信息。用法同sp_helpfile。,補(bǔ)充:,第10章 數(shù)據(jù)庫表,10.1 創(chuàng)建數(shù)據(jù)庫表 10.2 修改數(shù)據(jù)庫表 10.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫表,10.2 修改數(shù)據(jù)庫表,添加或刪除列 修改列的屬性 更改列名和表名,10.2 修改數(shù)據(jù)庫表,利用企業(yè)管理器增加、刪除和修改字段 。 在企業(yè)管理器中,打開指定的服務(wù)器中要修改表的數(shù)據(jù)庫,用右鍵單擊要進(jìn)行修改的表,從彈出的快捷菜單中選擇設(shè)計(jì)表選項(xiàng),則會(huì)出現(xiàn)設(shè)計(jì)表對(duì)話框,在該
17、對(duì)話框中,可以利用圖形化工具完成增加、刪除和修改字段的操作。 利用Transact-SQL語言中的alter table命令增加、刪除和修改字段。,10.2 修改數(shù)據(jù)庫表,增加列 語句格式: ALTER TABLE表名 ADD列名 列的描述 例如:向Company數(shù)據(jù)庫的employee表中添加性別(sex)列。 use Company go alter table employee add sex char(4) null,10.2 修改數(shù)據(jù)庫表,增加列 例10-4 向數(shù)據(jù)表mag_emp中添加一新屬性ID(身份證號(hào)碼),數(shù)據(jù)類型為字符型,固定長度18,10.2 修改數(shù)據(jù)庫表,刪除列 語句格
18、式: ALTER TABLE 表名 DROP COLUMN 列名 例如:刪除 employee表的sex列。 use Company go alter table employee drop column sex,10.2 修改數(shù)據(jù)庫表,刪除列 例10-5 刪除數(shù)據(jù)表mag_emp中屬性ID,10.2 修改數(shù)據(jù)庫表,修改列定義 表中的每一列都有其定義,包括列名、數(shù)據(jù)類型、數(shù)據(jù)長度以及是否允許為空值等,這些值都可以在表創(chuàng)建好以后修改。 修改列定義的語句格式為: ALTER TABLE 表名 ALTER COLUMN 列名 數(shù)據(jù)類型列的描述,10.2 修改數(shù)據(jù)庫表,修改列定義 例如:將employ
19、ee表的name列改為最大長度為20的varchar型數(shù)據(jù),且不允許空值。 use Company go alter table employee alter column name varchar(20) not null 默認(rèn)狀態(tài)下,列是被設(shè)置為允許空值的,將一個(gè)原來允許空值的列改為不允許空值,必須在以下兩個(gè)條件滿足時(shí)才能成功: (1)列中沒有存放是空值的記錄 (2)在列上沒有創(chuàng)建索引。,10.2 修改數(shù)據(jù)庫表,修改列定義 例10-6 將數(shù)據(jù)表mag_info中PubDate的數(shù)據(jù)類型更改為smalldatetime,10.2 修改數(shù)據(jù)庫表,更改列名和表名 更改列名 sp_rename 表
20、名.列名,新列名 更改表名 sp_rename 原表名,新表名,10.2 修改數(shù)據(jù)庫表,更改列名和表名 例10-7 數(shù)據(jù)庫usedb1中建有數(shù)據(jù)表test,包含number、stu_name和class三個(gè)字段,請(qǐng)將class更名為class_no,10.2 修改數(shù)據(jù)庫表,更改列名和表名 例10-8 將數(shù)據(jù)庫usedb1中數(shù)據(jù)表test更名為student,第10章 數(shù)據(jù)庫表,10.1 創(chuàng)建數(shù)據(jù)庫表 10.2 修改數(shù)據(jù)庫表 10.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫表,10.3 使用約束,約束的作用 實(shí)現(xiàn)數(shù)據(jù)的完整性 實(shí)體完整性 參照完整性 用戶自定義完整性,10.3 使用約
21、束,約束的類型,10.3 使用約束,建立約束 定義約束時(shí)使用Create table語句 或使用Alter table語句 即可以在定義數(shù)據(jù)表的數(shù)據(jù)列時(shí)直接定義約束,也可以對(duì)已定義的數(shù)據(jù)表添加約束,10.3 使用約束,建立約束 使用Create table語句格式: Create table 表名 (列名1 數(shù)據(jù)類型 identity |NOT NULL| NULL Constraint 約束名 約束定義, 列名2 數(shù)據(jù)類型 identity |NOT NULL| NULL Constraint 約束名 約束定義, Constraint 約束名 約束定義 ) 建立約束時(shí)看隨數(shù)據(jù)定義或者單
22、獨(dú)定義,10.3 使用約束,建立約束 使用Alter table語句格式: Alter table 表名 Add Constraint 約束名 約束定義 約束名是一個(gè)可選項(xiàng),如果用戶自己不定義約束名,則系統(tǒng)將按照一定規(guī)則命名該約束。 不命名約束名時(shí),關(guān)鍵字constraint也要省略。,10.3 使用約束,1.primary key 主鍵的添加、刪除和修改操作方法有兩種: (1)企業(yè)管理器操作法,在企業(yè)管理器中,用右鍵單擊要操作的數(shù)據(jù)庫表,從彈出的快捷菜單中選擇設(shè)計(jì)表選項(xiàng) ,然后根據(jù)提示操作。 如圖,10.3 使用約束,10.3 使用約束,1.primary key 主鍵的添加、刪除和修改操
23、作方法有兩種: (2)Transact-SQL語句操作法 其語法形式如下: CONSTRAINT constraint_name PRIMARY KEY(列名1,列名2,) 當(dāng)主鍵由多個(gè)列構(gòu)成時(shí),則將列名依次寫在括號(hào)中,10.3 使用約束,1.primary key 主鍵的添加、刪除和修改操作方法有兩種: (2)Transact-SQL語句操作法 例10-9 向數(shù)據(jù)表map_dept中添加主鍵約束,10.3 使用約束,注意:此例沒有定義約束名,則系統(tǒng)會(huì)按照一定規(guī)則命名該約束。查看約束名方法:如圖,10.3 使用約束,1.primary key 使用create table建立主鍵約束時(shí)兩種寫法
24、 (1)定義列名和數(shù)據(jù)類型后,直接寫上關(guān)鍵字primary key (2)定義完所有列名和數(shù)據(jù)類型后,單獨(dú)寫明primary key(列名1,列名2 當(dāng)主鍵有兩個(gè)或兩個(gè)以上屬性共同構(gòu)成時(shí),必須用第二種方法,即單獨(dú)定義,而不能隨列的定義而定義。,10.3 使用約束,(1)定義列名和數(shù)據(jù)類型后,直接寫上關(guān)鍵字primary key 例10-10 在數(shù)據(jù)庫usedb2中建立數(shù)據(jù)表map_dept,同時(shí)定義主鍵約束,10.3 使用約束,(2)定義完所有列名和數(shù)據(jù)類型后,單獨(dú)寫明primary key(列名1,列名2 例10-11 在數(shù)據(jù)庫usedb1中建立數(shù)據(jù)表grade,表中包括學(xué)號(hào)sno(char
25、)、課程號(hào)cno(char)、成績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語句操作法 CONSTRAINT 約束名 UNIQUE(
26、列名1,n) 基本用法同主鍵約束,10.3 使用約束,2.unique 例10-12 向數(shù)據(jù)庫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ù)庫MagDb中數(shù)據(jù)表mag_emp的屬性DepId添加外鍵約束,10.3 使用約束,3.foreign key 例10-14 在數(shù)據(jù)庫usedb2中建立數(shù)據(jù)表mag_emp,同時(shí)定義主鍵和外鍵,10.3 使用約束,4.check 一個(gè)列級(jí)檢查約束只能與限制的字段有關(guān);一個(gè)表級(jí)檢查約束只能與限制的表中字段有關(guān)。 一個(gè)表中可以定義多個(gè)檢查約束。 每個(gè)CREATE TABLE語句中每個(gè)字段只能定義一個(gè)檢
28、查約束。 在多個(gè)字段上定義檢查約束,則必須將檢查約束定義為表級(jí)約束。 當(dāng)執(zhí)行INSERT語句或者UPDATE語句時(shí),檢查約束將驗(yàn)證數(shù)據(jù)。,10.3 使用約束,4.check (1)企業(yè)管理器操作法,10.3 使用約束,4.check (2)Transact-SQL語句操作法。其語法形式如下: CONSTRAINT 約束名 CHECK(邏輯表達(dá)式),10.3 使用約束,4.check 例10-15 將數(shù)據(jù)庫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)建檢查約束,限制只能輸入類似80798654之類的數(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語句定義default約束 基本格式: constraint 約束名 default 常量表達(dá)式 for 字段名,10.3 使用約束,5.default 例10-16 將數(shù)據(jù)庫MagDb中數(shù)據(jù)表mag_emp的屬性EmpRole的默認(rèn)值指定為“編輯”,10.3 使用約束,5.default 使用缺省約束時(shí),應(yīng)該注意以下幾點(diǎn): 每個(gè)字段只能定義一個(gè)缺省約束。 如果定義的缺省值長于其對(duì)應(yīng)字段的允許長度,那么輸入到表中的缺省
31、值將被截?cái)唷?不能加入到帶有IDENTITY屬性的字段上。,10.3 使用約束,刪除約束 語句格式: alter table 表名 drop constraint 約束名 注意:定義約束的時(shí)候若省略了約束名,則要先查出系統(tǒng)自動(dòng)命名的約束名然后進(jìn)行刪除.,10.3 使用約束,刪除約束 例10-17 刪除數(shù)據(jù)庫usedb2中數(shù)據(jù)表mag_dept屬性DepManager的UNIQUE約束,第10章 數(shù)據(jù)庫表,10.1 創(chuàng)建數(shù)據(jù)庫表 10.2 修改數(shù)據(jù)庫表 10.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫表,10.4 建立索引,數(shù)據(jù)庫中的索引與書籍中的索引類似。 在一本書中,利用索引可以
32、快速查找所需信息,無須閱讀整本書。在數(shù)據(jù)庫中,索引使數(shù)據(jù)庫程序無須對(duì)整個(gè)表進(jìn)行掃描,就可以在其中找到所需數(shù)據(jù)。 書中的索引是一個(gè)詞語列表,其中注明了包含各個(gè)詞的頁碼。而數(shù)據(jù)庫中的索引是某個(gè)表中一列或者若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁的邏輯指針清單。,10.4 建立索引,索引的作用 通過創(chuàng)建唯一索引,可以保證數(shù)據(jù)記錄的唯一 性。 可以大大加快數(shù)據(jù)檢索速度。 可以加速表與表之間的連接,這一點(diǎn)在實(shí)現(xiàn)數(shù)據(jù)的參照完整性方面有特別的意義。,10.4 建立索引,索引的類型 聚集索引(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語句中的CREATE INDEX命令創(chuàng)建索引。,10.4 建立索引,用企業(yè)管理器直接創(chuàng)建索引。 具體步驟如下: ()在企業(yè)管理器中,展開指定的服務(wù)器和數(shù)據(jù)庫,選擇要?jiǎng)?chuàng)建索引的表,用右鍵單擊該表,從彈出的快捷菜單中選擇所有任務(wù)項(xiàng)的管理索引選項(xiàng),10.4 建立索引,用企業(yè)管理器直接創(chuàng)建索引。 具體步驟如下: 出現(xiàn)管理索引對(duì)話框,如圖所示。在該對(duì)
34、話框中,可以選擇要處理的數(shù)據(jù)庫和表,管理索引對(duì)話框,10.4 建立索引,用企業(yè)管理器直接創(chuàng)建索引。 具體步驟如下: ()單擊“新建”按鈕,則出現(xiàn)新建索引對(duì)話框,如圖所示。,(3) 選擇完成后單擊“確定” 按鈕,即可生成新的索引; 單擊“取消”按鈕, 則取消新建索引的操作。,10.4 建立索引,利用Transact-SQL語句中的CREATE INDEX命令創(chuàng)建索引。 建立索引的語法為: 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ì)算(如求極值、求和等)的列; 在查詢條件中頻繁使用的列 如果一個(gè)列中只有幾個(gè)不同的數(shù)據(jù)值,或者被索引的列多于20個(gè)字節(jié)時(shí),通常不應(yīng)該建立索引,10.4 建立索引,刪除索引的語法 Drop index 表名.索引名 注意使用primary key約束和unique約束建立的索引不能刪除,例10-19 刪除索引age_index,第10章 數(shù)據(jù)庫表,10.1 創(chuàng)建數(shù)據(jù)庫表 10.2 修改數(shù)據(jù)庫表 10.3 使用約束 10.4 建立索引 10.5 刪除數(shù)據(jù)庫表,10.5 刪除數(shù)據(jù)庫表,刪除數(shù)據(jù)表的語法 Drop table 表名,例10-20 刪除usedb2中數(shù)據(jù)表mag_dept,
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案