版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 第第7章章 數(shù)據(jù)表和表數(shù)據(jù)數(shù)據(jù)表和表數(shù)據(jù) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 7.1 表的創(chuàng)建、修改和刪除 一、 SQL server 支持的數(shù)據(jù)類(lèi)型 1)整數(shù)型:bigint ,int,smallint ,tinyint 2)精確數(shù)值型:整數(shù)部分+小數(shù)部分,分為:decimal和 numeric兩類(lèi) 3)浮點(diǎn)型:foat 和real兩類(lèi) 4)貨幣型:money 和smallmoney 5)位型:相當(dāng)于 其他語(yǔ)言中的邏輯型數(shù)據(jù),只存儲(chǔ)0和1 6)字符型:varchar 和char 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 7)unicode 字符型 8)文本型 :tex
2、t 和ntext 9)二進(jìn)制型 10)日期時(shí)間類(lèi)型:datetime 和 smalldatetime 2.創(chuàng)建表 首先要設(shè)計(jì)表 (1)空值(null)概念 空值表示通常表示未知、不可用或?qū)?以后添加的數(shù)據(jù)。表的關(guān)鍵字不允許為空值。 (2)學(xué)生情況表的創(chuàng)建 表結(jié)構(gòu) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 二、表 表是SQL server 中最主要的數(shù)據(jù)庫(kù)對(duì)象,它是用來(lái) 存儲(chǔ)和操作數(shù)據(jù)的一種邏輯結(jié)構(gòu),由行和列組成。 1 表結(jié)構(gòu) 組成表的各列的名稱及數(shù)據(jù)類(lèi)型 2 記錄 表中的一行 3 字段 構(gòu)成記錄的每個(gè)數(shù)據(jù)項(xiàng) 4 關(guān)鍵字 表中記錄的某一字段或字段組合能唯一 表示記錄,該字段或字段組合成為關(guān)鍵字。 網(wǎng)絡(luò)數(shù)
3、據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 通過(guò)管理器創(chuàng)建表通過(guò)管理器創(chuàng)建表XS的操作步驟的操作步驟 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 三、使用CREATE TABLE 創(chuàng)建表 1示例:設(shè)已經(jīng)創(chuàng)建數(shù)據(jù)庫(kù)XSCJ ,現(xiàn)在 該數(shù)據(jù)庫(kù)中需創(chuàng)建學(xué)生情況表XS, Kc(kch,kcm) xs_kc(xh,kch,chj) Xs(xh,xm,zhy,xb,chsh,zxf,bzh) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 use xscj create table xs (學(xué)號(hào) char(6) not null, 姓名 char(8) not null, 專(zhuān)業(yè)名 char(10) null, 性別 char(2) defaul
4、t 男 not null, 出生時(shí)間 smalldatetime not null, 總學(xué)分 tinyint null, 備注 text null ) go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 2.Create table 語(yǔ)句的語(yǔ)法: create table 表名 ( column_name datatype|identity|not null|null) 例: Create table card (卡號(hào) decimal(6,0) identity(10000,1) 姓名 char(8) not null, 專(zhuān)業(yè)名 char(10)null ) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 create
5、 table 完整的語(yǔ)法結(jié)構(gòu):完整的語(yǔ)法結(jié)構(gòu): create table database_name.schema_name| schema_name.table_name ( | column_name as computed_column_expression |) xscj.xs 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 四、使用ALTER TABLE 修改表 Alter table 語(yǔ)句的基本語(yǔ)法結(jié)構(gòu)語(yǔ)句的基本語(yǔ)法結(jié)構(gòu) ALTER TABLE table_name alter column column_name new_datatime_type(precision,scale) not n
6、ull |null |add ,n |dropconstraint constraint_name |column column_name,n 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 1 修改已有列的屬性:ALTER COLUMN 列名 2 向表中增加新列:ADD 3 刪除表中列:DROP COLUMN 例 在表XS中增加一個(gè)新列獎(jiǎng)學(xué)金等級(jí)列 use xscj alter table xs add 獎(jiǎng)學(xué)金等級(jí) tinyint null go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例 :在XS表中刪除名為獎(jiǎng)學(xué)金等級(jí)的列 use xscj alter table xs drop column 獎(jiǎng)學(xué)金等級(jí) g
7、o 例:修改表XS中已有列的屬性:將名為“姓名”的列長(zhǎng)度由原來(lái)的8該為10, 將“出生時(shí)間”的列的數(shù)據(jù)類(lèi)型由原來(lái)的smalldatetime改為datetime. use xscj alter table xs alter column 姓名 char(10) alter table xs alter column 出生時(shí)間 datetime go 六、使用DROP TABLE刪除表 drop table 表名 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 (3)列的identity屬性 對(duì)任何表都可創(chuàng)建包含系統(tǒng)所生成序號(hào)值的一個(gè)標(biāo)識(shí)列,該 序號(hào)值唯一標(biāo)識(shí)表中的一行,可以作為鍵值。每個(gè)表只能 有一列作為標(biāo)
8、識(shí)列,int,numeric,smallint,bigin OR tinyint, 定義標(biāo)識(shí)列可指定其種子(起始)值和增量值, 建立數(shù)據(jù)庫(kù)library ,在其中創(chuàng)建card表,表結(jié)構(gòu)如所示 3 修改表 通過(guò)管理器和T-SQL語(yǔ)言兩種方法來(lái)進(jìn)行: 更改表名,增加列,刪除列,修改已有列的屬性 4刪除表 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 創(chuàng)建數(shù)據(jù)庫(kù)和表以后,需要對(duì)表中的數(shù)創(chuàng)建數(shù)據(jù)庫(kù)和表以后,需要對(duì)表中的數(shù) 據(jù)進(jìn)行操作,包括插入、刪除和修改。據(jù)進(jìn)行操作,包括插入、刪除和修改。 有兩種方法:一是通過(guò)有兩種方法:一是通過(guò)SQL Server 2005管理器,一是通過(guò)管理器,一是通過(guò)T-SQL語(yǔ)句。語(yǔ)句。
9、 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 7.2 界面操作表數(shù)據(jù)界面操作表數(shù)據(jù) 一、插入記錄一、插入記錄 添加記錄在表尾添加記錄在表尾 二、刪除記錄二、刪除記錄 三、修改記錄三、修改記錄 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 7.3 命令操作表數(shù)據(jù)(命令操作表數(shù)據(jù)(T-SQL語(yǔ)句)語(yǔ)句) 一、通過(guò)一、通過(guò)INSERT 語(yǔ)句插入表數(shù)據(jù)語(yǔ)句插入表數(shù)據(jù) 向表中插入數(shù)據(jù)可以使用向表中插入數(shù)據(jù)可以使用INSERT語(yǔ)句。語(yǔ)句。INSERT 最基本的格式為:最基本的格式為: INSERT into 表名表名(column1,column2,) VALUES(constant1,constant2,) 該語(yǔ)句的功能是向
10、指定的表中加入由該語(yǔ)句的功能是向指定的表中加入由VALUES指定指定 的各列值的行的各列值的行 例:向例:向XSCJ數(shù)據(jù)庫(kù)的表數(shù)據(jù)庫(kù)的表XS中插入一行:中插入一行: 001112 羅林林羅林林 計(jì)算機(jī)計(jì)算機(jī) 0 1/30/1980 0:0:0 40 可以使用如下的可以使用如下的T-SQL語(yǔ)句:語(yǔ)句: 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 USE xscj INSERT INTO XSCJ.dbo. XS() VALUES(001112,羅林林羅林林,計(jì)算計(jì)算 機(jī)機(jī),0,1/30/1980 0:0:0,40,null) Go 例例 :用如下語(yǔ)句建立表:用如下語(yǔ)句建立表test CREATE TABL
11、E test ( xm char(20) not null, zy varchar(30) default(計(jì)算機(jī)計(jì)算機(jī)), nj tinyint not null ) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 用用INSERT 語(yǔ)句向表中插入一條記錄:語(yǔ)句向表中插入一條記錄: INSERT INTO test(xm,nj) values( 王林王林,3) 例:例: 創(chuàng)建表創(chuàng)建表XS2 CREATE TABLE XS2 (num char(10) not null, name char(10) not null, specialty char(10) null ) 可用如下的可用如下的INSERT語(yǔ)句
12、向語(yǔ)句向XS2中插入數(shù)據(jù):中插入數(shù)據(jù): Insert into xs2 select xh,xm,zhy from xs1 Where zhy=生工生工 查詢結(jié)果:查詢結(jié)果:select * from xs2 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 二、使用二、使用DELETE或或TRUNCATE TABLE 語(yǔ)句刪除數(shù)據(jù)語(yǔ)句刪除數(shù)據(jù) 1. 使用使用delete 語(yǔ)句刪除數(shù)據(jù)語(yǔ)句刪除數(shù)據(jù) delete 語(yǔ)句的功能是從表中刪除行,其基本語(yǔ)法格式為:語(yǔ)句的功能是從表中刪除行,其基本語(yǔ)法格式為: delete from table_name?view_name where Example:將將XSCJ數(shù)據(jù)
13、庫(kù)的表數(shù)據(jù)庫(kù)的表XS中總學(xué)分小于中總學(xué)分小于39的行刪的行刪 除:除: USE XSCJ DELETE FROM XS WHERE 總學(xué)分總學(xué)分39 go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 2. 使用使用TRUNCATE TABLE語(yǔ)句刪除表語(yǔ)句刪除表 數(shù)據(jù)數(shù)據(jù) 使用該語(yǔ)句將刪除指定表中的所有數(shù)使用該語(yǔ)句將刪除指定表中的所有數(shù) 據(jù),語(yǔ)法格式為:據(jù),語(yǔ)法格式為: TRuNCATE TABLE name 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 3.使用使用UPDATE 語(yǔ)句修改數(shù)據(jù)語(yǔ)句修改數(shù)據(jù) UPDATE 語(yǔ)句可以用來(lái)修改表中的數(shù)據(jù)語(yǔ)句可以用來(lái)修改表中的數(shù)據(jù) 行,其最基本語(yǔ)法格式如下:行,其最基本語(yǔ)法
14、格式如下: UPDATE table_name ? view_name SET column_name=expression ? DEFAULT ? NULL,n WHERE 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例:將例:將XSCJ 數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)的XS表中學(xué)號(hào)為表中學(xué)號(hào)為001110 的學(xué)生的備注列值改為的學(xué)生的備注列值改為“三好生三好生”: USE XSCJ UPDATE XS SET 備注備注=三好生三好生 WHERE 學(xué)號(hào)學(xué)號(hào)=001110 GO 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例例 將將XS表中的所有學(xué)生的總學(xué)分都增加表中的所有學(xué)生的總學(xué)分都增加10個(gè)學(xué)分。個(gè)學(xué)分。 USE XSCJ
15、 UPDATE XS SET 總學(xué)分總學(xué)分=總學(xué)分總學(xué)分+10 例例 將姓名為將姓名為“王林王林”的同學(xué)的專(zhuān)業(yè)改為的同學(xué)的專(zhuān)業(yè)改為“材料工材料工 程程”,備注改為,備注改為“轉(zhuǎn)專(zhuān)業(yè)學(xué)習(xí)轉(zhuǎn)專(zhuān)業(yè)學(xué)習(xí)”,學(xué)號(hào)改為,學(xué)號(hào)改為001230 Use xscj Update xs set xh=001230, zhy=材料工程材料工程, bzh=轉(zhuǎn)專(zhuān)業(yè)學(xué)習(xí)轉(zhuǎn)專(zhuān)業(yè)學(xué)習(xí) where xm=王林王林 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 7.4 數(shù)據(jù)完整性和約束數(shù)據(jù)完整性和約束 7.4.1 數(shù)據(jù)完整性的分類(lèi)數(shù)據(jù)完整性的分類(lèi) 數(shù)據(jù)完整性是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)在邏輯上的一致性和數(shù)據(jù)完整性是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)在邏輯上的一致性和
16、準(zhǔn)確性準(zhǔn)確性.一般包括四種一般包括四種. 1 域完整性域完整性 又稱列完整性又稱列完整性,指給定列的輸入的有效性指給定列的輸入的有效性.可以通過(guò)定可以通過(guò)定 義相應(yīng)的規(guī)則、約束、默認(rèn)值對(duì)象等方法實(shí)現(xiàn)。義相應(yīng)的規(guī)則、約束、默認(rèn)值對(duì)象等方法實(shí)現(xiàn)。 2 實(shí)體完整性實(shí)體完整性 又稱行的完整性,要求表中有一個(gè)鍵,其值不能為空且又稱行的完整性,要求表中有一個(gè)鍵,其值不能為空且 能唯一地表示對(duì)應(yīng)的實(shí)體。通過(guò)索引、能唯一地表示對(duì)應(yīng)的實(shí)體。通過(guò)索引、UNIQUE約束約束 primary key約束或約束或identity屬性可實(shí)現(xiàn)數(shù)據(jù)屬性可實(shí)現(xiàn)數(shù)據(jù) 的完整性的完整性. 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 3 參照
17、完整性參照完整性 參照完整性又稱引用完整性參照完整性又稱引用完整性.參照完整性保證主表參照完整性保證主表 (被參照表被參照表)中的數(shù)據(jù)與從表中的數(shù)據(jù)與從表(參照表參照表)中數(shù)據(jù)的一中數(shù)據(jù)的一 致性致性.通過(guò)定義外鍵通過(guò)定義外鍵(外碼外碼)與主鍵與主鍵(主碼主碼)之間或之間或 外鍵與唯一鍵之間的對(duì)應(yīng)關(guān)系來(lái)實(shí)現(xiàn)參照完整外鍵與唯一鍵之間的對(duì)應(yīng)關(guān)系來(lái)實(shí)現(xiàn)參照完整 性性.參照完整性確保鍵值在所有表中一致參照完整性確保鍵值在所有表中一致. Xs(xh,xm,nl,zhy),kc(kch,kcm),cj(xh,kch,cj) 4.用戶定義完整性用戶定義完整性 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 7.4.2 約
18、束的類(lèi)型約束的類(lèi)型 1.check約束約束 2. default約束約束 3. primary key約束約束 4.foreign key約束約束 5.unique約束約束 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 7.4.3 完整性的實(shí)現(xiàn)完整性的實(shí)現(xiàn) 一、域完整性的實(shí)現(xiàn)一、域完整性的實(shí)現(xiàn) 可以通過(guò)定義約束和規(guī)則等來(lái)實(shí)現(xiàn)域完整性可以通過(guò)定義約束和規(guī)則等來(lái)實(shí)現(xiàn)域完整性 1. check約束的定義與刪除約束的定義與刪除 check約束是字段輸入內(nèi)容的驗(yàn)證規(guī)則約束是字段輸入內(nèi)容的驗(yàn)證規(guī)則,表示一個(gè)字段表示一個(gè)字段 的輸入內(nèi)容必須滿足的輸入內(nèi)容必須滿足check約束的條件約束的條件,若不滿足若不滿足, 則數(shù)據(jù)
19、無(wú)法正常輸入則數(shù)據(jù)無(wú)法正常輸入. 1)通過(guò)通過(guò)SQL Server Manangement Studio創(chuàng)建與刪除創(chuàng)建與刪除 check約束約束 2)利用利用sql語(yǔ)句在創(chuàng)建表時(shí)創(chuàng)建語(yǔ)句在創(chuàng)建表時(shí)創(chuàng)建check約束約束 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 語(yǔ)法格式語(yǔ)法格式: create table table_name (column_name datatype not null/null default constraint_expression check_name check (logical_expression) n) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例例 在學(xué)生數(shù)據(jù)庫(kù)中創(chuàng)建在學(xué)生
20、數(shù)據(jù)庫(kù)中創(chuàng)建books,其中包括所有的約束其中包括所有的約束 定義定義 use xscj create table books (book_id smallint, book_name varchar(50) not null, book_desc varchar(50) not null, max_lvl tinyint not null check (max_lvl =250) ) Go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 use xscj create table books1 (book_id smallint, book_name varchar(50) not null, book_
21、desc varchar(50) not null, max_lvl tinyint not null constraint check_m check (max_lvl =0 and 成績(jī)成績(jī)=100) 4)利用利用SQL語(yǔ)句刪除語(yǔ)句刪除check約束約束 alter table table_name drop constraint check_name 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例例 刪除刪除xscj數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)中的xs_kc表的成績(jī)字段的表的成績(jī)字段的check 約束約束 use xscj alter table xs_kc drop constraint cj_constr
22、aint go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 2.規(guī)則對(duì)象的定義、使用與刪除規(guī)則對(duì)象的定義、使用與刪除 (1)定義規(guī)則對(duì)象)定義規(guī)則對(duì)象 (2)將規(guī)則對(duì)象邦定到列或用戶自定義數(shù)據(jù)類(lèi)型)將規(guī)則對(duì)象邦定到列或用戶自定義數(shù)據(jù)類(lèi)型 1)利用)利用SQL命令定義規(guī)則并綁定到自定義類(lèi)型或列命令定義規(guī)則并綁定到自定義類(lèi)型或列 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 規(guī)則對(duì)象的定義規(guī)則對(duì)象的定義 create rule rule_name as condition_expression 綁定綁定 sp_bindrule rulename=rule, objectname=object_name ,futureo
23、nly= futureonly_flag 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例例 創(chuàng)建一個(gè)規(guī)則,并綁定到表創(chuàng)建一個(gè)規(guī)則,并綁定到表KC的課程號(hào)列,用于限制課的課程號(hào)列,用于限制課 程號(hào)的輸入范圍程號(hào)的輸入范圍 use xscj go Create rule kc_rule as rang like 1-50-90-9 go Use xscj exec sp_bindrule kc_rule,kc.kch go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例例2 創(chuàng)建一個(gè)規(guī)則,用以限制輸入到該規(guī)則所綁定的列中的值只能是該規(guī)創(chuàng)建一個(gè)規(guī)則,用以限制輸入到該規(guī)則所綁定的列中的值只能是該規(guī) 則中列出的值則中列出的
24、值 use xscj go Create rule list_rule as list1 in (C語(yǔ)言語(yǔ)言,微機(jī)原理微機(jī)原理,離散數(shù)學(xué)離散數(shù)學(xué)) go Use xscj exec sp_bindrule list_rule,kc.kcm go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例例3 定義一個(gè)用戶數(shù)據(jù)類(lèi)型定義一個(gè)用戶數(shù)據(jù)類(lèi)型course_num,然后將前面定義的規(guī)則然后將前面定義的規(guī)則kc_rule綁綁 定到定到course_num上,最后定義表上,最后定義表kc1,其課程號(hào)的數(shù)據(jù)類(lèi)型為,其課程號(hào)的數(shù)據(jù)類(lèi)型為course_num。 use xscj exec sp_addtype cours
25、e_num,char(3),not null exec sp_bindrule kc_rule,course_num Go use xscj create table kc1(kch course_num, kcm char(30) not null, kkxq tinyint, xsh tinyint, xf tinyint) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 use xscj if exists(select name from sysobjects where name=kc_rule and type=r) begin exec sp_unbindrule kc.kch drop ru
26、le kc_rule end go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 二、二、 實(shí)體完整性的實(shí)現(xiàn)實(shí)體完整性的實(shí)現(xiàn) 通過(guò)選擇一列或多列做主鍵可實(shí)現(xiàn)表的實(shí)體完整性。通過(guò)選擇一列或多列做主鍵可實(shí)現(xiàn)表的實(shí)體完整性。 一個(gè)表只能有一個(gè)一個(gè)表只能有一個(gè)primary key約束約束,且且primary key 約束中的列不能為空值約束中的列不能為空值. 如果要確保一個(gè)表中的非主鍵列不輸入重復(fù)值如果要確保一個(gè)表中的非主鍵列不輸入重復(fù)值,應(yīng)在該應(yīng)在該 列上定義唯一約束列上定義唯一約束(unique 約束約束). Primary key 與與 unique 約束的主要區(qū)別如下約束的主要區(qū)別如下: (1)一個(gè)表只
27、能創(chuàng)建一個(gè)一個(gè)表只能創(chuàng)建一個(gè)primary key 約束約束,但可以對(duì)不但可以對(duì)不 同的列創(chuàng)建若干個(gè)同的列創(chuàng)建若干個(gè)unique約束約束. 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 (2) primary key約束列不能為空值約束列不能為空值,unique約束能為約束能為 空值空值 (3)創(chuàng)建創(chuàng)建 primary key約束時(shí)約束時(shí),系統(tǒng)自動(dòng)產(chǎn)生索引系統(tǒng)自動(dòng)產(chǎn)生索引,索引索引 的默認(rèn)類(lèi)型為聚集索引的默認(rèn)類(lèi)型為聚集索引,創(chuàng)建創(chuàng)建unique約束時(shí)約束時(shí),系統(tǒng)自動(dòng)系統(tǒng)自動(dòng) 創(chuàng)建一個(gè)創(chuàng)建一個(gè)unique 索引索引,索引類(lèi)型為非聚集索引索引類(lèi)型為非聚集索引. 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 1 利用管理器
28、定義和刪除利用管理器定義和刪除primary key 約束約束 2 利用管理器定義和刪除利用管理器定義和刪除unique 約束約束 3 利用利用sql語(yǔ)句創(chuàng)建及刪除語(yǔ)句創(chuàng)建及刪除primary key 約束和約束和unique 約束約束 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 1)創(chuàng)建表的同時(shí)創(chuàng)建創(chuàng)建表的同時(shí)創(chuàng)建 語(yǔ)法格式語(yǔ)法格式: create table table_name (column_name datatype constraint constraint_name not null Primary key/unique clustered/nonclustered n) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù)
29、第7章表數(shù)據(jù)操作 use xscj create table xs3 (xh char(6) not null constraint xh_pk primary key, xm char(8)not null,identtitycard char(20) constraint sh_uk unique, zhy char(10)null,xb char(2)not null,chsh smalldatetime not null, zxf tinyint null,bzh text null,rxrq datetime constraint datedflt default getdate()
30、 ) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 2) 通過(guò)修改表創(chuàng)建通過(guò)修改表創(chuàng)建primary key 約束和約束和unique 約束約束 alter table table_name add constraint constraint_name primary key/unique clustered/nonclustered (column,n) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 如如: Alter table xs add constraint xs_pk primary key clustered(xh) Go Alter table xs add constraint xs_uk uniq
31、ue nonclustered(shfzh) go 3)刪除刪除primary key 約束和約束和unique 約束約束 Alter table xs Drop constraint xs_pk,xs_uk go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 三、參照完整性的實(shí)現(xiàn)三、參照完整性的實(shí)現(xiàn) 對(duì)兩個(gè)相關(guān)聯(lián)的表進(jìn)行數(shù)據(jù)插入和刪除時(shí)對(duì)兩個(gè)相關(guān)聯(lián)的表進(jìn)行數(shù)據(jù)插入和刪除時(shí),通過(guò)參照完整性保證它們之間通過(guò)參照完整性保證它們之間 數(shù)據(jù)的一致性數(shù)據(jù)的一致性 如果兩個(gè)表之間定義了參照完整性如果兩個(gè)表之間定義了參照完整性,則則: (1)從表不能引用不存在的鍵值從表不能引用不存在的鍵值 (2)如果主表中的鍵值更改了
32、如果主表中的鍵值更改了,那么整個(gè)數(shù)據(jù)庫(kù)中那么整個(gè)數(shù)據(jù)庫(kù)中,對(duì)從表中該鍵值的所有對(duì)從表中該鍵值的所有 引用要進(jìn)行一致的更改引用要進(jìn)行一致的更改. (3)如果主表中沒(méi)有相關(guān)聯(lián)的記錄如果主表中沒(méi)有相關(guān)聯(lián)的記錄,則不能將記錄添加到從表則不能將記錄添加到從表 (4)如果要?jiǎng)h除某一記錄如果要?jiǎng)h除某一記錄,應(yīng)先刪除從表中與該記錄相匹配的記錄應(yīng)先刪除從表中與該記錄相匹配的記錄. 利用利用 foreign key 定義從表的外碼定義從表的外碼, primary key 約束和約束和unique約束定義約束定義 主表中的主碼或唯一碼主表中的主碼或唯一碼(不允許為空不允許為空),可實(shí)現(xiàn)主表和從表之間的參照完整可實(shí)現(xiàn)
33、主表和從表之間的參照完整 性。性。 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 定義表間參照關(guān)系定義表間參照關(guān)系:先定義主表的主碼先定義主表的主碼(或唯一碼或唯一碼), 再對(duì)從再對(duì)從 表定義外碼約束表定義外碼約束. 1 利用企業(yè)管理器定義表間的參照關(guān)系利用企業(yè)管理器定義表間的參照關(guān)系 2 利用企業(yè)管理上刪除表間的參照關(guān)系利用企業(yè)管理上刪除表間的參照關(guān)系 3 利用利用SQL命令定義表間的參照關(guān)系命令定義表間的參照關(guān)系 1)創(chuàng)建表的同時(shí)定義外碼約束)創(chuàng)建表的同時(shí)定義外碼約束 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 create table table_name (column_name datatype fore
34、ign key references ref_table(ref_column) n) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例例 在在xscj數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)庫(kù)中創(chuàng)建xs4表表,xs4.xh為主鍵為主鍵,然后定然后定 義從表義從表xs_kc1.xh為外碼為外碼 use xscj create table xs4 ( xh char(6) not null constraint xh_pk primary key, .) Go Create table xs_kc1 (xh char(6) not null foreign key references xs4(xh), ) Go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù)
35、第7章表數(shù)據(jù)操作 例:例: use xscj alter table xs_kc1 add constraint kc_fk foreign key (kch) references kc(kch) go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 2) 通過(guò)修改表定義外碼約束通過(guò)修改表定義外碼約束 alter table table_name add constraint constraint_name foreign key (column,n) references ref_table(ref_column,n) 3)利用利用SQL命令刪除表間的參照關(guān)系命令刪除表間的參照關(guān)系 刪除參照關(guān)系,實(shí)際是
36、刪除從表的外碼即可刪除參照關(guān)系,實(shí)際是刪除從表的外碼即可 alter table table _name drop constraint constraint_name go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 7.4 默認(rèn)值約束及默認(rèn)值對(duì)象默認(rèn)值約束及默認(rèn)值對(duì)象 一個(gè)字段默認(rèn)值的建立可通過(guò)如下兩種方式實(shí)現(xiàn):一個(gè)字段默認(rèn)值的建立可通過(guò)如下兩種方式實(shí)現(xiàn): (1)在定義和修改表時(shí),定義默認(rèn)值約束)在定義和修改表時(shí),定義默認(rèn)值約束 (2)先定義默認(rèn)對(duì)象,然后將該對(duì)象綁定到表的相應(yīng))先定義默認(rèn)對(duì)象,然后將該對(duì)象綁定到表的相應(yīng) 字段字段 一在表中定義及刪除默認(rèn)值約束一在表中定義及刪除默認(rèn)值約束 1.默認(rèn)值
37、約束的定義默認(rèn)值約束的定義 通過(guò)通過(guò)SQL命令的執(zhí)行,在定義或修改表時(shí),可定義一命令的執(zhí)行,在定義或修改表時(shí),可定義一 個(gè)字段的默認(rèn)值約束。個(gè)字段的默認(rèn)值約束。 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 默認(rèn)值約束定義的一般格式:默認(rèn)值約束定義的一般格式: create table table_name (column name datatype not null | null default constraint_expression n) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例:在定義表時(shí)定義一個(gè)字段的默認(rèn)值例:在定義表時(shí)定義一個(gè)字段的默認(rèn)值 Use xscj create table xs1 (x
38、h char(6) not null, xm char(8) not null, zhy char(10) null, xb bit not null, birthdate smalldatetime not null, zxf tinyint null, rxrq datetime default getdate() ) go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例例2 下例的功能與上例相同,但在定義默認(rèn)值的同時(shí)下例的功能與上例相同,但在定義默認(rèn)值的同時(shí) 指定了約束名指定了約束名 use xscj create table xs1 (xh char(6) not null, xm char(8
39、) not null, zhy char(10) null, xb bit not null, birthdate smalldatetime not null, zxf tinyint null rxrq datetime CONSTRAINT datedflt default getdate() ) Go 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 例例 3在修改表定義一個(gè)字段的默認(rèn)值約束。在修改表定義一個(gè)字段的默認(rèn)值約束。 use xscj alter table xs1 add adddate smalldatetime null constraint adddatedflt default getdate() with values 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù) 第7章表數(shù)據(jù)操作 With values 僅用在對(duì)表添加新字段的情況下。若使僅用在對(duì)表添加新字段的情況下。若使 用了用了with values ,則將為,則將為 表中各現(xiàn)有行添加的字段表中各現(xiàn)有行添加的字段 提供默認(rèn)值:如果沒(méi)有使用提供默認(rèn)值:如果沒(méi)有使用with values 那么每一
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度環(huán)保監(jiān)測(cè)報(bào)警裝置安裝與運(yùn)營(yíng)管理合同3篇
- 2024版分期付款合同書(shū)
- 二零二五年能源管理評(píng)估合同能源管理協(xié)議3篇
- 無(wú)錫南洋職業(yè)技術(shù)學(xué)院《石油鉆采機(jī)械概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024版高清影視內(nèi)容制作與版權(quán)轉(zhuǎn)讓合同
- 2025年度體育場(chǎng)館草坪除草與賽事運(yùn)營(yíng)保障合同3篇
- 2024法律顧問(wèn)協(xié)議
- 2024版建筑行業(yè)招投標(biāo)規(guī)則與協(xié)議簽訂指南版B版
- 皖江工學(xué)院《商業(yè)展示設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 天津體育學(xué)院《環(huán)境科學(xué)概論(Ⅱ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 試卷(完整版)python考試復(fù)習(xí)題庫(kù)復(fù)習(xí)知識(shí)點(diǎn)試卷試題
- 海外資管機(jī)構(gòu)赴上海投資指南(2024版)
- GB/T 44679-2024叉車(chē)禁用與報(bào)廢技術(shù)規(guī)范
- 抖音直播帶貨協(xié)議書(shū)模板
- 2024義務(wù)教育體育與健康課程標(biāo)準(zhǔn)(2022年版)必考題庫(kù)及答案
- 工業(yè)機(jī)器人控制器:FANUC R-30iB:機(jī)器人實(shí)時(shí)監(jiān)控與數(shù)據(jù)采集技術(shù)教程
- 墓地銷(xiāo)售計(jì)劃及方案設(shè)計(jì)書(shū)
- 新加坡留學(xué)完整版本
- 勞務(wù)服務(wù)合作協(xié)議書(shū)范本
- 優(yōu)佳學(xué)案七年級(jí)上冊(cè)歷史
- 中醫(yī)五臟心完整版本
評(píng)論
0/150
提交評(píng)論