sql數(shù)據(jù)庫第六章SQLServer數(shù)據(jù)表管理2_第1頁
sql數(shù)據(jù)庫第六章SQLServer數(shù)據(jù)表管理2_第2頁
sql數(shù)據(jù)庫第六章SQLServer數(shù)據(jù)表管理2_第3頁
sql數(shù)據(jù)庫第六章SQLServer數(shù)據(jù)表管理2_第4頁
sql數(shù)據(jù)庫第六章SQLServer數(shù)據(jù)表管理2_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、sql server sql server 數(shù)據(jù)庫程序設(shè)計(jì)數(shù)據(jù)庫程序設(shè)計(jì)授課教師:姜授課教師:姜 姍姍 數(shù)據(jù)庫中的數(shù)據(jù)現(xiàn)實(shí)世界的反映,數(shù)據(jù)庫的設(shè)計(jì)必須能夠滿足現(xiàn)實(shí)情況的實(shí)現(xiàn),即滿足現(xiàn)實(shí)商業(yè)規(guī)則的要求,這也就是數(shù)據(jù)完整性的要求。 在數(shù)據(jù)庫管理系統(tǒng)中,約束是保證數(shù)據(jù)庫中的數(shù)據(jù)完整性的重要方法。6.36.3完整性與約束完整性與約束 2foreign key約束外鍵(foreign key)用于建立和加強(qiáng)兩個(gè)表(主表與從表)的一列或多列數(shù)據(jù)之間的鏈接,當(dāng)數(shù)據(jù)添加、修改或刪除時(shí),通過外鍵約束保證兩個(gè)表之間數(shù)據(jù)的一致性。 定義表之間的參照完整性是先定義主表的主鍵,再對從表定義外鍵約束。foreign ke

2、y約束要求列中的每個(gè)值在所引用的表中對應(yīng)的被引用列中都存在,同時(shí)foreign key約束只能引用在所引用的表中是primary key或unique約束的列,或所引用的表中在unique index內(nèi)的被引用列。使用表設(shè)計(jì)器創(chuàng)建使用表設(shè)計(jì)器創(chuàng)建foreign key約束約束 打開需要建立外鍵的表設(shè)計(jì)器,在需要設(shè)置外鍵的列上單擊鼠標(biāo)右鍵選擇【關(guān)系】命令。 打開【外鍵關(guān)系】對話框,單擊表和列規(guī)范后面的按鈕,設(shè)置外鍵關(guān)系。使用數(shù)據(jù)庫關(guān)系圖建立外鍵使用數(shù)據(jù)庫關(guān)系圖建立外鍵使用使用t-sql語句創(chuàng)建語句創(chuàng)建foreign key約束約束 創(chuàng)建外鍵約束的語法形式如下: constraint constr

3、aint_name foreign key references referenced_table_name (column_name) (, n ) 參數(shù)說明如下:referenced_table_name是foreign key約束引用的表的名稱。 column_name是foreign key約束所引用的表中的某列。 【例6】:建立一個(gè)新的stu_info表,指定“學(xué)號”為主鍵,“班級編號”為外鍵,與class表中的“班級編號”列關(guān)聯(lián)。create table stu_info(學(xué)號 char(10) not null, 姓名 char(8) not null, 出生年月 datetim

4、e null, 性別 char(2) not null, 地址 char(20), 班級編號 char(4)constraint pk_學(xué)號 primary key(學(xué)號),constraint fk_班級編號 foreign key(班級編號)references class (班級編號))也可寫成create table stu_info(學(xué)號 char(10) not null primary key, 姓名 char(8) not null, 出生年月 datetime null, 性別 char(2) not null, 地址 char(20), 班級編號 char(4) refer

5、ences class) 注:此法只能用于列名相同時(shí)使用 【例7】:在stu_info表中sclass列上添加一個(gè)外鍵,名稱為fk_bno,與class表中的bno列關(guān)聯(lián)。alter table stu_infoadd constraint fk_bnoforeign key(sclass) references class(bno) 3unique約束unique約束用于確保表中某個(gè)列或某些列(非主鍵列)沒有相同的列值。與primary key約束類似,unique約束也強(qiáng)制唯一性,但unique約束用于非主鍵的一列或多列組合,而且一個(gè)表中可以定義多個(gè)unique約束,另外unique約束可

6、以用于定義允許空值的列。例如在課程表(course_info)中已經(jīng)定義“課程號”作為主鍵,而現(xiàn)在對于“課程名”也不允許出現(xiàn)重復(fù),就可以通過設(shè)置“課程名”為unique約束來確保其唯一性。使用表設(shè)計(jì)器創(chuàng)建使用表設(shè)計(jì)器創(chuàng)建unique約束約束 在表設(shè)計(jì)器需要加入unique約束的列上單擊鼠標(biāo)右鍵選擇【索引/鍵】選項(xiàng)。使用使用t-sql語句創(chuàng)建語句創(chuàng)建unique約束約束 創(chuàng)建唯一性約束的語法形式如下: constraint constraint_name unique clustered | nonclustered 其中,clustered | nonclustered表示所創(chuàng)建的unique

7、約束是聚集索引還是非聚集索引,默認(rèn)為nonclustered非聚集索引。 【例8】:將course表中cname列設(shè)置成為唯一列。alter table courseadd constraint ix_courseunique (cname) 4check約束check約束用于限制輸入到一列或多列的值的范圍,從邏輯表達(dá)式判斷數(shù)據(jù)的有效性,也就是一個(gè)列的輸入內(nèi)容必須滿足check約束的條件,否則,數(shù)據(jù)無法正常輸入,從而強(qiáng)制數(shù)據(jù)的域完整性。例如在學(xué)生成績表(stu_grade)中的“成績”來講,應(yīng)該保證在0 100之間,又如在課程信息表(course_info)中的“學(xué)時(shí)”來講,應(yīng)該保證在0 80

8、之間,而只用int數(shù)據(jù)類型是無法實(shí)現(xiàn)的,可以通過check約束來完成。使用表設(shè)計(jì)器創(chuàng)建使用表設(shè)計(jì)器創(chuàng)建check約束約束使用使用t-sql語句創(chuàng)建語句創(chuàng)建check約束約束 創(chuàng)建檢查約束的語法形式如下: constraint constraint_name check ( check_expression )其中,check_expression 為約束范圍表達(dá)式。 【例8】:新建“成績”表,要求成績的值在0100之間create table 成績( 編號 char(10) not null, 課程編號 char(4)references 課程表, 學(xué)號 char(10)references

9、學(xué)生信息, 姓名 char(8) not null,成績 int constraint pk_學(xué)號 primary key(編號),constraint ck_成績 check(成績 between 0 and 100))成績 int check(成績 between 0 and 100) 5default約束若將表中某列定義了default約束后,用戶在插入新的數(shù)據(jù)行時(shí),如果沒有為該列指定數(shù)據(jù),那么系統(tǒng)將默認(rèn)值賦給該列,當(dāng)然該默認(rèn)值也可以是空值(null)。例如,假設(shè)學(xué)生信息表(stu_info)中的同學(xué)絕大多數(shù)都來自于“信息學(xué)院”,就可以通過設(shè)置“系別”字段的defalut約束來實(shí)現(xiàn),簡化

10、用戶的輸入。使用表設(shè)計(jì)器創(chuàng)建使用表設(shè)計(jì)器創(chuàng)建default約束約束 在表設(shè)計(jì)器中,選擇需要設(shè)置default值的列,在下面“列屬性”的“默認(rèn)值或綁定”欄中輸入默認(rèn)值,然后單擊工具欄中的“保存”按鈕,即完成default約束的創(chuàng)建。使用使用t-sql語句創(chuàng)建語句創(chuàng)建default約束約束 創(chuàng)建默認(rèn)值約束的語法形式如下: constraint constraint_name default constraint_expression with values其中,constraint _expression 為默認(rèn)值。 【例9】將表student的電話號碼增加默認(rèn)alt

11、er table studentadd defaultfor 電話號碼電話號碼啟用、禁用約束啟用、禁用約束 啟用、禁用約束的語法格式如下: checkinocheckconstraintall|constraint_name,n 此語句只能與外鍵和check約束一起使用,無法禁用default、primary和unique約束。 【例10】禁用表student中的ck_ssex約束。 alter table student nocheck constraint ck_ssex若要禁用所有約束則nocheck constraint all 【例11】啟用表stude

12、nt中的ck_ssex約束。 alter table student check constraint ck_ssex刪除約束刪除約束 刪除約束的語法形式如下: dropconstraintconstraint_name|column column_name 【例12】將表student的ck_ssex約束刪除alter table student drop ck_ssex 創(chuàng)建表的目在于利用表進(jìn)行數(shù)據(jù)的存儲和管理。對數(shù)據(jù)進(jìn)行管理的前提是數(shù)據(jù)的存儲,向表中添加數(shù)據(jù),沒有數(shù)據(jù)的表是沒有任何實(shí)際意義的;添加完成后,用戶也可以根據(jù)自己的需要對表中數(shù)據(jù)進(jìn)行修改和刪除。在sql server 2008中

13、,對于數(shù)據(jù)的管理包括插入、修改和刪除,通過management studio來操作,也可以利用sql語句來實(shí)現(xiàn)。6.56.5管理數(shù)據(jù)表管理數(shù)據(jù)表 1利用對象資源管理器插入表數(shù)據(jù)(1)啟動sql server management studio。(2)展開sql server實(shí)例,選擇“表” ,單擊鼠標(biāo)右鍵,然后從彈出的快捷菜單中選擇“編輯前200行”命令。(3)在表窗口中,顯示出當(dāng)前表中數(shù)據(jù),單擊表格中最后一行,填寫相應(yīng)數(shù)據(jù)信息。界面方式插入數(shù)據(jù)表界面方式插入數(shù)據(jù)表 插入一個(gè)元組基本格式insert into (,) values(,)參數(shù)說明:table_name:表名column_name

14、:列名expression: 對應(yīng)字段的值或表達(dá)式,字符和日期型需要加單引號。命令方式插入數(shù)據(jù)表命令方式插入數(shù)據(jù)表 若數(shù)據(jù)表結(jié)構(gòu)為student(sno,sname,ssex,sage) 插入一個(gè)完整的元組 insert into student values(200215121,李勇,男,20) 插入一個(gè)不完整的元組 insert into student(sno,sname)values(200215122,劉晨) 新插入記錄應(yīng)與表結(jié)構(gòu)定義匹配;列名項(xiàng)數(shù)與提供值的數(shù)目應(yīng)匹配;可以指定列值為null ;into子句中沒有出現(xiàn)的屬性列,新記錄在這些列上將取空值(null)或默認(rèn)值;如果into

15、子句中沒有指明任何列名,則新插人的記錄必須在每個(gè)屬性列上均有值,且順序應(yīng)與表中屬性列順序一致。插入數(shù)據(jù)表注意事項(xiàng)插入數(shù)據(jù)表注意事項(xiàng) 向student表中插入一條記錄(200501,李勇)練習(xí)練習(xí) 1利用對象資源管理器修改表數(shù)據(jù)利用對象資源管理器修改表數(shù)據(jù),與插入表數(shù)據(jù)操作類似。修改數(shù)據(jù)表修改數(shù)據(jù)表 基本格式update table_nameset = , = from where 說明:一次可以更新多個(gè)屬性的值;更新的條件可以與其他的表相關(guān)(使用from指定); 如果省略where語句,則表示要修改表中的所有記錄。命令方式修改數(shù)據(jù)表命令方式修改數(shù)據(jù)表 三種修改方式1. 1. 修改某一個(gè)元組的值

16、修改某一個(gè)元組的值2. 2. 修改多個(gè)元組的值修改多個(gè)元組的值3. 3. 帶子查詢的修改語句帶子查詢的修改語句 在修改之前建議先查看表記錄(select select * * from tab from tablele) 查看數(shù)據(jù)表student所有記錄select * from student 查看數(shù)據(jù)表student中字段學(xué)號、姓名的所有記錄select sno,sname from student 給學(xué)號為200215122的學(xué)生年齡增加1歲 update student set sage = sage+1 where sno=200215122 給cs系的男同學(xué)年齡增加1歲update

17、 student set sage = sage+1 where sdept=cs and ssex=男給所有課程的學(xué)分提高1分update course set ccredit = ccredit +1將學(xué)號為200515121同學(xué)的姓名,性別,年齡分別設(shè)置為(張三,男,20)update student set 姓名=張三,性別=男,年齡=20where sno=200515121 給cs系的學(xué)生的選課成績增加10分update sc set grade= grade+10where sno= (select sno from studentwhere student.sdept =cs) 1.將數(shù)據(jù)表student中學(xué)號為200215121的記錄的性別及所在系的字段值改為(女,is); 2.將數(shù)據(jù)表sc中所有記錄的成績的字段值增加10; 3.將數(shù)據(jù)表student中姓名中姓“王”的記錄年齡增加1; 4.將表sc中選修課程號為1的記錄的成績字段值增加10 ,其他記錄的成績字段值增加5; 練習(xí)練習(xí) 1利用對象資源管理器刪除表數(shù)據(jù)在需要刪除的記錄前點(diǎn)擊鼠標(biāo)右鍵選擇【刪除】刪除數(shù)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論