版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三單元創(chuàng)建與管理數(shù)據表任務3.1創(chuàng)建表任務3.2修改表任務3.3刪除表3.1.1情景描述3.1.2問題分析3.1.3解決方案3.1.4知識總結3.1.5應用實踐任務3.1創(chuàng)建表數(shù)據庫開發(fā)人員需要在學生管理數(shù)據庫中保存“專業(yè)”的基本信息,記錄專業(yè)的編號,專業(yè)名稱,專業(yè)描述和專業(yè)狀態(tài)的信息。3.1.1情景描述為此需要完成以下任務:1.根據“專業(yè)”的關系模式,設計表的字段及字段的屬性;通過分析,得到“專業(yè)”表的關系模式為:專業(yè)(專業(yè)代碼(pk),專業(yè)名稱,描述,狀態(tài)),“專業(yè)”表的結構如表3-1所示。2.根據表結構,編寫創(chuàng)建“專業(yè)”表的語句。3.執(zhí)行語句,完成“專業(yè)”表的創(chuàng)建。表3-1“專業(yè)”表的結構3.1.2問題分析字段名稱數(shù)據類型是否允許NULL值約束專業(yè)代碼int否主鍵專業(yè)名稱varchar(32)否描述varchar(100)是狀態(tài)varchar(20)是1.打開SQLServerManagementStudio,單擊“對象資源管理器”中的“數(shù)據庫”文件夾下的數(shù)據庫“學生管理”;2.單擊工具欄上的“新建查詢”命令,打開“查詢編輯器”;3.在“查詢編輯器”上輸入以下代碼:3.1.3解決方案CREATETABLE專業(yè)(專業(yè)代碼intprimarykey,專業(yè)名稱varchar(32)notnull,描述varchar(100),狀態(tài)varchar(20))4.單擊工具欄上的【執(zhí)行】按鈕、。5.刷新“對象資源管理器”中的“數(shù)據庫”文件夾下的“學生管理”,展開“學生管理”數(shù)據庫下的表,可以看到“專業(yè)”表創(chuàng)建完成,如圖所示。數(shù)據類型創(chuàng)建表約束3.1.4知識總結整型數(shù)據類型定點小數(shù)數(shù)據類型近似數(shù)字類型日期類型字符數(shù)據類型貨幣數(shù)據類型二進制字符數(shù)據類型其它數(shù)據類型數(shù)據類型整型數(shù)據類型數(shù)據類型數(shù)據范圍精度長度bigint[-263,263-1]198個字節(jié)int[-231,231-1]104個字節(jié)smallint[-215,215-1]52個字節(jié)tinyint[0,255]31個字節(jié)定點小數(shù)數(shù)據類型數(shù)據類型數(shù)據范圍精度小數(shù)位數(shù)長度numeric(p,s)[-1038+1,1038-1]ps精度p為1到9,則用5字節(jié);精度p為10到19,則用9字節(jié);精度p為20到28,則用13字節(jié);精度p為29到38,則用17字節(jié)decimal(p,s)[-1038+1,1038-1]ps精度p為1到9,則用5字節(jié);精度p為10到19,則用9字節(jié);精度p為20到28,則用13字節(jié);精度p為29到38,則用17字節(jié)近似數(shù)字類型數(shù)據類型數(shù)據范圍精度長度float(n)[-1.79×10308,1.79×10308]精確到小數(shù)點后15位n省略,用8字節(jié),n取值范圍為1到7,則用4個字節(jié),n取值范圍為8到15,則用8個字節(jié)real[-3.40×1038,3.40×1038]最大可以有7位精確位數(shù)4個字節(jié)日期類型數(shù)據類型數(shù)據范圍精度長度datetime[1753.1.1,999.12.31]精確到3.33毫秒8個字節(jié)smalldatetime[1900.1.1,2079.6.6]精確到分鐘4個字節(jié)date[,9999.12.31]精確到天3個字節(jié)time[00:00:00.0000000,23:59:59.9999999]精確到100納秒5個字節(jié)字符數(shù)據類型數(shù)據類型長度解釋char(n)由n指定,n取值范圍1到8000ASCII編碼,固定長度,一個漢字占兩個字節(jié),要存放漢字的性別,n要取值為2varchar(n)由n指定,n取值范圍1到8000ASCII編碼,可變長度,最大不超過ntext最長為231-1ASCII編碼,當字段中存儲的字符個數(shù)超過8000時,選擇textnchar(n)由n指定,n取值范圍1到4000UNICODE編碼,采用2個字節(jié)為一個存儲單位,固定長度,一個漢字占兩個字節(jié),要存放漢字的性別,n要取值為1nvarchar(n)由n指定,n取值范圍1到4000UNICODE編碼,采用2個字節(jié)為一個存儲單位,最大不超過nntext最長為230-1UNICODE編碼,采用2個字節(jié)為一個存儲單位,當字段中存儲的字符個數(shù)超過4000時,選擇text貨幣數(shù)據類型數(shù)據類型數(shù)據范圍精度小數(shù)位數(shù)長度money[-922337203685477.5808,922337203685477.5807]1948個字節(jié)smallmoney[-214748.3468,214748.3467]1044個字節(jié)二進制字符數(shù)據類型數(shù)據類型長度解釋binary(n)由于n指定,n取值范圍1到8000存儲固定長度為n的二進制數(shù)據varbinary(n)由于n指定,n取值范圍1到8000存儲可變長度為n的二進制數(shù)據image最長為231-1字節(jié)如果字段要存儲超過8000字節(jié)的可變長度的二進制數(shù)據,選擇image其它數(shù)據類型數(shù)據類型描述bit存儲0、1的邏輯型數(shù)據。輸入0以外的其它值均當做1看待timestamp時間戳數(shù)據類型,主要用于在數(shù)據表中記錄其數(shù)據的修改時間uniqueidentifier用于儲存16位GUID的唯一標識符數(shù)據類型table用來存儲隨后進行的處理的結果集使用CREATETABLE語句創(chuàng)建表,語法規(guī)則如下:創(chuàng)建表CREATETABLE表名(
列名1數(shù)據類型
約束,
列名2數(shù)據類型
約束,
列名3數(shù)據類型
約束,......
列名n數(shù)據類型
約束)參數(shù)說明如下:表名:用于指定所創(chuàng)建的表的名稱。列名:用于指定創(chuàng)建表包含的列的名稱。數(shù)據類型:用于指定表中包含的列的數(shù)據類型。約束:用于指定列需要滿足的約束,包含是否為空(NULL)、是否有默認值,是否是主鍵,是否是外鍵,是否唯一,是否限定取值范圍。如果省略,約束默認允許為空值?!纠?-1】在“學生管理”數(shù)據庫中創(chuàng)建不帶任何約束的“系部”表,具體的表結構如表所示。
字段名稱數(shù)據類型是否允許NULL值約束系部代碼int是系部名稱varchar(50)是辦公電話varchar(11)是系主任varchar(20)是(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:CREATETABLE系部(系部代碼int,系部名稱varchar(50),辦公電話char(11),系主任varchar(20))(2)單擊工具欄上的【執(zhí)行】按鈕;(3)刷新“對象資源管理器”中的“數(shù)據庫”文件夾下的“學生管理”,展開“學生管理”數(shù)據庫下的表,可以看到“系部”表創(chuàng)建完成。非空(NOTNULL)約束主鍵(PRIMARYKEY)約束唯一(UNIQUE)約束檢查(CHECK)約束外鍵(FOREIGNKEY)約束默認(DEFAULT)約束約束列是否為空決定了表中的字段是否允許為空值。設置了非空約束的列,滿足列的取值不為空的要求。在創(chuàng)建表時候使用NOTNULL關鍵字指定非空約束的語法規(guī)則為:非空(NOTNULL)約束CREATETABLE表名(
列名1數(shù)據類型NOTNULL,
列名2數(shù)據類型,
列名3數(shù)據類型,......
列名n數(shù)據類型)【例3-2】在“學生管理”數(shù)據庫中創(chuàng)建帶非空約束的“課程”表,具體的表結構如表所示。字段名稱數(shù)據類型是否允許NULL值約束課程編號int否課程名稱varchar(50)否課程性質varchar(30)否學分int否開課學期varchar(20)否課程分類varchar(20)否①打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:CREATETABLE課程(課程編號intnotnull,課程名稱varchar(50)notnull,課程性質varchar(30)notnull,學分intnotnull,開課學期varchar(20)notnull,課程分類varchar(20)notnull)②單擊工具欄上的【執(zhí)行】按鈕;③刷新“對象資源管理器”中的“數(shù)據庫”文件夾下的“學生管理”,展開“學生管理”數(shù)據庫下的表,可以看到“課程”表創(chuàng)建完成在表中定義一個主鍵來唯一標識表中的每行記錄。每個表中只能有一個主鍵,要求主鍵列的數(shù)據唯一,并且不允許為空。在一個表中,不能有兩行具有相同的主鍵值。在創(chuàng)建表的時候使用PRIMARYKEY來創(chuàng)建主鍵約束的語法規(guī)則為:主鍵(PRIMARYKEY)約束CREATETABLE表名(
列名1數(shù)據類型PRIMARYKEY,
列名2數(shù)據類型,
列名3數(shù)據類型,......
列名n數(shù)據類型)【例3-3】在“學生管理”數(shù)據庫中創(chuàng)建帶主鍵約束的“班級”表,具體的表結構如表所示。字段名稱數(shù)據類型是否允許NULL值約束班級代碼int否主鍵班級名稱varchar(50)否專業(yè)代碼int否所屬年級varchar(20)是班主任varchar(20)是描述varchar(100)是①打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:CREATETABLE班級(班級代碼intprimarykey,班級名稱varchar(50)notnull,專業(yè)代碼intnotnull,所屬年級varchar(20),班主任varchar(20),描述varchar(100))②單擊工具欄上的【執(zhí)行】按鈕;③刷新“對象資源管理器”中的“數(shù)據庫”文件夾下的“學生管理”,展開“學生管理”數(shù)據庫下的表,可以看到“班級”表創(chuàng)建完成一個表中只能有一個主鍵,如果有多個字段需要實施數(shù)據唯一性,可以使用UNIQUE約束來限制表的非主鍵列中不允許輸入重復值。唯一約束要求列的取值唯一,在一個表中,該列的任何兩行都不能有相同的列值,如果該列允許NULL值,但只能出現(xiàn)一次。在創(chuàng)建表的時候使用UNIQUE來創(chuàng)建唯一約束的語法規(guī)則為:唯一(UNIQUE)約束CREATETABLE表名(
列名1數(shù)據類型UNIQUE,
列名2數(shù)據類型,
列名3數(shù)據類型,......
列名n數(shù)據類型)【例3-4】在“學生管理”數(shù)據庫中創(chuàng)建帶唯一約束的“學生”表,具體的表結構如表所示。字段名稱數(shù)據類型是否允許NULL值約束學號int否主鍵姓名varchar(50)否性別char(2)否出生日期datetime是個人聯(lián)系電話char(11)是唯一約束政治面貌varchar(20)是身份證號char(18)否郵政編碼varchar(10)是家庭聯(lián)系電話char(11)是唯一約束家庭聯(lián)系地址varchar(100)是①打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:CREATETABLE學生(學號intprimarykey,姓名varchar(50)notnull,性別char(2)notnull,出生日期datetime,個人聯(lián)系電話char(11)unique,政治面貌varchar(20),身份證號char(18),郵政編碼varchar(10),家庭聯(lián)系電話char(11)unique,家庭聯(lián)系地址varchar(100))②單擊工具欄上的【執(zhí)行】按鈕;③刷新“對象資源管理器”中的“數(shù)據庫”文件夾下的“學生管理”,展開“學生管理”數(shù)據庫下的表,可以看到“學生”表創(chuàng)建完成。主鍵與UNIQUE約束的區(qū)別主要為:UNIQUE約束,主要用在非主鍵的一列或多列上要求數(shù)據唯一的情況。UNIQUE約束,允許該列上存在NULL值,而主鍵決不允許出現(xiàn)這種情況??梢栽谝粋€表上設置多個UNIQUE約束,而在一個表中只能設置一個主鍵約束。CHECK約束用來檢查輸入數(shù)據的取值是否正確,只有符合檢查約束的數(shù)據才能輸入,從而維護域的完整性,列的輸入內容必須滿足CHECK后面的約束條件。不滿足限定范圍的值不能正常輸入??梢栽谝粋€表中為每列指定多個檢查約束。在創(chuàng)建表的時候使用CHECK關鍵字來創(chuàng)建檢查約束的語法規(guī)則為:檢查(CHECK)約束CREATETABLE表名(
列名1數(shù)據類型CHECK(約束條件),
列名2數(shù)據類型,
列名3數(shù)據類型,......
列名n數(shù)據類型)約束條件為創(chuàng)建的檢查約束滿足的條件表達式,主要有比較運算符和邏輯運算符組成。運算符表達式功能=a=b判斷表達式a和表達式b的值是否相等>a>b判斷表達式a是否大于表達式b的值>=a>=b判斷表達式a是否大于等于表達式b的值!<a!<b判斷表達式a是否不小于表達式b的值<a<b判斷表達式a是否小于表達式b的值<=a<=b判斷表達式a是否小于等于表達式b的值!>a!>b判斷表達式a是否不大于表達式b的值<>a<>b判斷表達式a是否不等于表達式b的值!=a!=b判斷表達式a是否不等于表達式b的值比較運算符運算符表達式功能andAandB表達式A和B的值都為真時,整個表達式的結果為真orAorB表達式A或B的值為真時,整個表達式的結果為真notnotA表達式A的值為真,整個表達式的結果為假,表達式A的值為假時,整個表達式的結果為假inAin(a1,a2,a3,...)如果A的值與集合里面的任意值相等,則返回真betweenCBetweenAandB如果C的值在A和B之間,則返回真邏輯運算符【例3-5】在“學生管理”數(shù)據庫中創(chuàng)建帶檢查約束的“教師”表,具體的表結構如表所示。字段名稱數(shù)據類型是否允許NULL值約束教師編號int否主鍵教師姓名varchar(50)否性別char(2)是取值范圍:男,女職稱varchar(20)是學歷varchar(20)是學位varchar(20)是專業(yè)varchar(20)是①打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:CREATETABLE教師(教師編號intprimarykey,教師姓名varchar(50)notnull,性別char(2)check(性別='男'or性別='女'),職稱varchar(20),學歷varchar(20),學位varchar(20),專業(yè)varchar(20))②單擊工具欄上的【執(zhí)行】按鈕;③刷新“對象資源管理器”中的“數(shù)據庫”文件夾下的“學生管理”,展開“學生管理”數(shù)據庫下的表,可以看到“教師”表創(chuàng)建完成用于建立兩個表之間的連接,當一個表的主鍵列在另外一個表中被引用時,就在這兩個表中創(chuàng)建了連接。被引用的數(shù)據表稱為主表,被引用列稱為主鍵;引用表稱為外鍵約束表,也稱為從表,引用列稱為外鍵。外鍵約束保證了數(shù)據庫中各個數(shù)據表中數(shù)據的一致性和正確性。在創(chuàng)建表的時候使用FOREIGNKEY來創(chuàng)建外鍵約束,需要用references關鍵字指出來引用的主表的哪一列,語法規(guī)則為:外鍵(FOREIGNKEY)約束CREATETABLE表名(
列名1數(shù)據類型FOREIGNKEYREFERENCES表名(列名),
列名2數(shù)據類型,
列名3數(shù)據類型,......
列名n數(shù)據類型)【例3-6】在“學生管理”數(shù)據庫中創(chuàng)建帶外鍵約束的“輔導員評語”表,具體的表結構如表所示。字段名稱數(shù)據類型是否允許NULL值約束評價代碼int否主鍵學號int是外鍵學期varchar(20)是評價寄語text是①打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:CREATETABLE輔導員評語(評價代碼intprimarykey,學號intforeignkeyreferences學生(學號),學期varchar(20),評價寄語text)②單擊工具欄上的【執(zhí)行】按鈕;③刷新“對象資源管理器”中的“數(shù)據庫”文件夾下的“學生管理”,展開“學生管理”數(shù)據庫下的表,可以看到“輔導員評語”表創(chuàng)建完成為表中某列建立一個默認值,當添加一條記錄的時候,沒有為此列提供輸入值,則取默認值。在創(chuàng)建表的時候使用DEFAULT來創(chuàng)建默認約束的語法規(guī)則為:默認(DEFAULT)約束CREATETABLE表名(
列名1數(shù)據類型DEFAULT默認值,
列名2數(shù)據類型,
列名3數(shù)據類型,......
列名n數(shù)據類型)【例3-7】在“學生管理”數(shù)據庫中創(chuàng)建帶默認約束的“選課”表,具體的表結構如表所示。字段名稱數(shù)據類型是否允許NULL值約束學號int否主鍵,外鍵課程編號int是主鍵成績numeric(5,2)是默認為0①打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:CREATETABLE選課(學號intforeignkeyreferences學生(學號),課程編號int,成績numeric(5,2)default0primarykey(學號,課程編號))②單擊工具欄上的【執(zhí)行】按鈕;③刷新“對象資源管理器”中的“數(shù)據庫”文件夾下的“學生管理”,展開“學生管理”數(shù)據庫下的表,可以看到“選課”表創(chuàng)建完成。3.1.5應用實踐為了保存銷售業(yè)務系統(tǒng)用戶的賬戶信息,需要設計“賬號”表,并在數(shù)據庫“銷售”中創(chuàng)建表格?!百~號”表結構如表所示。字段名稱數(shù)據類型是否允許NULL值約束用戶IDvarchar(50)否主鍵密碼varchar(50)否默認:111111用戶名varchar(50)否唯一郵件varchar(50)是地址varchar(100)是郵編varchar(10)是電話char(11)否狀態(tài)varchar(20)是取值范圍:啟用,停用1.打開SQLServerManagementStudio,單擊“對象資源管理器”中的“數(shù)據庫”文件夾下的數(shù)據庫“銷售”;2.單擊工具欄上的“新建查詢”命令,打開“查詢編輯器”;3.在“查詢編輯器”上輸入以下代碼:CREATETABLE賬號(用戶IDvarchar(50)primarykey,密碼varchar(50)notnulldefault'111111',用戶名varchar(50)notnullunique,郵件varchar(50),地址varchar(100),郵編varchar(10),電話char(11)notnull,狀態(tài)varchar(20)check(狀態(tài)in('停用','啟用')))4.單擊工具欄上的【執(zhí)行】按鈕;5.刷新“對象資源管理器”中的“數(shù)據庫”文件夾下的“銷售”,展開“銷售”數(shù)據庫下的表,可以看到“賬號”表創(chuàng)建完成。3.2.1情景描述3.2.2問題分析3.2.3解決方案3.2.4知識總結3.2.5應用實踐任務3.2修改表數(shù)據庫開發(fā)人員發(fā)現(xiàn)按照現(xiàn)有的關系模式,學生和班級之間的對應關系沒有建立起來,在現(xiàn)有的表中沒有辦法在保存學生信息的同時保存其所在的班級信息,需要在“學生”表中添加一列“班級編號”,然后把添加的“班級編號”字段設為外鍵,關聯(lián)班級表的“班級代碼”字段。3.2.1情景描述在表創(chuàng)建好后若發(fā)現(xiàn)問題,可以通過修改表的方式來解決,我們可以對現(xiàn)有的表添加一列、刪除一列、修改某列的數(shù)據類型、添加約束、刪除約束等等操作。外鍵和所關聯(lián)的表的主鍵的取值范圍要一致,所以在“學生”表添加的字段“班級編號”字段的數(shù)據類型和表3-12的“班級”表的“班級代碼”的數(shù)據類型要相同,添加的字段數(shù)據類型確定為“int”類型。3.2.2問題分析
3.2.3解決方案
1.打開SQLServerManagementStudio,單擊“對象資源管理器”中的“數(shù)據庫”文件夾下的數(shù)據庫“學生管理”;2.單擊工具欄上的“新建查詢”命令,打開“查詢編輯器”;3.在“查詢編輯器”上輸入以下代碼:ALTERTABLE學生add班級編號intALTERTABLE學生addforeignkey(班級編號)references班級(班級代碼)4.單擊工具欄上的【執(zhí)行】按鈕,展開“對象資源管理器”中的“數(shù)據庫”文件夾,選擇數(shù)據庫“學生管理”“表”文件夾,刷新“學生”表下的列,可以看到“學生”表的列“班級編號”添加完成;5.然后在“查詢編輯器”上添加以下代碼:6.再次刷新“學生”表下的列,可以看到“班級編號”字段旁邊有灰色的鑰匙圖標,表明外鍵創(chuàng)建完成。使用ALTERTABLE命令添加一列使用ALTERTABLE命令刪除一列使用ALTERTABLE命令修改表中列的數(shù)據類型使用ALTERTABLE命令修改某列為非空約束使用ALTERTABLE命令添加主鍵約束使用ALTERTABLE命令添加唯一約束使用ALTERTABLE命令添加檢查約束使用ALTERTABLE命令添加外鍵約束使用ALTERTABLE命令添加默認約束使用ALTERTABLE命令刪除約束3.2.4知識總結語法規(guī)則:ALTERTABLE表名ADD列名
數(shù)據類型使用ALTERTABLE命令添加一列ALTERTABLE教師add系部代碼int【例3-8】在“教師”表中添加一列,列名為“系部代碼”,列的數(shù)據類型為“int”。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:(2)單擊工具欄上的【執(zhí)行】按鈕;(3)刷新“教師”表下的列,可以看到“教師”表的列“系部代碼”添加完成。語法規(guī)則:ALTERTABLE表名DROPCOLUMN列名【例3-9】在“學生”表中刪除一列,列名為“郵政編碼”。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:ALTERTABLE學生dropcolumn郵政編碼(2)單擊工具欄上的【執(zhí)行】按鈕;(3)刷新“學生”表下的列,與圖3-10比較,從對象資源管理器窗口中,可以看到“學生”表的列“郵政編碼”刪除成功使用ALTERTABLE命令刪除一列語法規(guī)則:ALTERTABLE表名ALTERCOLUMN列名
數(shù)據類型使用ALTERTABLE命令修改表中列的數(shù)據類型ALTERTABLE學生altercolumn政治面貌varchar(10)【例3-10】在“學生”表中修改字段“政治面貌”的數(shù)據類型為varchar(10)。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:(2)單擊工具欄上的【執(zhí)行】按鈕;(3)刷新“學生”表下的列,與圖3-12比較,從對象資源管理器窗口中,可以看到“學生”表的列“政治面貌”的數(shù)據類型由varchar(20)變?yōu)関archar(10)
語法規(guī)則:ALTERTABLE表名ALTERCOLUMN列名
數(shù)據類型NOTNULL使用ALTERTABLE命令修改某列為非空約束ALTERTABLE學生altercolumn政治面貌varchar(10)notnull【例3-11】在“學生”表中修改字段“政治面貌”的約束為非空。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:(2)單擊工具欄上的【執(zhí)行】按鈕;(3)刷新“學生”表下的列,與圖3-13比較,從“對象資源管理器”窗口,可以看到“學生”表的列“政治面貌”列修從NULL改為NOTNULL
。語法規(guī)則:ALTERTABLE表名ADDPRIMARYKEY(列名)使用ALTERTABLE命令添加主鍵約束ALTERTABLE課程addprimarykey(課程編號)【例3-12】修改表“課程”表,設置“課程編號”字段為主鍵約束。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:(2)單擊工具欄上的【執(zhí)行】按鈕;(3)刷新“課程”表下的列,可以看到“課程”表的列“課程編號”旁有個黃色的鑰匙圖標,表明主鍵約束添加完成。語法規(guī)則:ALTERTABLE表名ADDUNIQUE(列名)使用ALTERTABLE命令添加唯一約束ALTERTABLE系部addunique(系部名稱)【例3-13】修改表“系部”表,設置“系部名稱”字段為唯一約束。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:(2)單擊工具欄上的【執(zhí)行】按鈕;(3)展開“系部”表的“鍵”文件夾和“索引”文件夾,可以看到有一個約束名和索引名均為“UQ__系部__9C9278473B75D760”,當創(chuàng)建一個唯一約束會自動創(chuàng)建一個唯一的非聚焦索引,名字也是自動生成的,有關索引的內容將在后面章節(jié)中介紹
語法規(guī)則:ALTERTABLE表名ADDCHECK(expression)使用ALTERTABLE命令添加檢查約束ALTERTABLE課程addcheck(課程性質
in('專業(yè)必修課','專業(yè)選修課','公共必修課','公共選修課'))【例3-14】修改表“課程”表,設置“課程性質”的取值范圍為:專業(yè)必修課,專業(yè)選修課,公共必修課,公共選修課。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:(2)單擊工具欄上的【執(zhí)行】按鈕;(3)展開“課程”表下的“約束”文件夾,可以看到有一個檢查約束。語法規(guī)則:ALTERTABLE表名1ADDFOREIGNKEY(列名1)REFERENCES表名2(列名2)
使用ALTERTABLE命令添加外鍵約束
參數(shù)說明如下:表名1:指出要修改的表的名字列名1:指出表名1的外鍵列的字段名FOREIGNKEY:指出要添加的約束是外鍵約束表名2:指出外鍵列名1要參考的主表名列名2:指出外鍵列名1要引用的表名2里面的主鍵列名ALTERTABLE選課addforeignkey(課程編號)references課程(課程編號)【例3-15】修改表“選課”表,設置“課程編號”字段為外鍵約束,關聯(lián)表“課程”的“課程編號”字段。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:(2)單擊工具欄上的【執(zhí)行】按鈕;(3)刷新“課程”表下的文件夾“鍵”,可以看到生成的外鍵約束。
語法規(guī)則:ALTERTABLE表名ADDDEFAULT默認值FOR列名使用ALTERTABLE命令添加默認約束
ALTERTABLE教師adddefault'助教'for職稱【例3-16】修改表“教師”表,設置“職稱”字段的默認值為“助教”。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:(2)單擊工具欄上的【執(zhí)行】按鈕;(3)刷新“教師”表下的文件夾“約束”,可以看到生成的默認約束。
語法規(guī)則:ALTERTABLE表名DROPCONSTRAINT約束名使用ALTERTABLE命令刪除約束
ALTERTABLE教師dropconstraintDF__教師__職稱__7D【例3-17】修改表“教師”表,刪除默認約束“DF__教師__職稱__403A8C7D”。(1)打開SQLServerManagementStudio,在工具欄上單擊“新建查詢”按鈕,打開SQL編輯器,編寫如下代碼:(2)單擊工具欄上的【執(zhí)行】按鈕;(3)刷新“教師”表下的文件夾“約束”,可以看到名為“DF__教師__職稱__403A8C7D”的默認約束已經刪除成功。為了存儲銷售業(yè)務系統(tǒng)的商品信息,設計“商品”表,表結構如表所示。3.2.5應用實踐字段名稱數(shù)據類型是否允許NULL值約束商品IDint是名稱varchar(50)是價格varchar(30)是產品描述text是生產日期datetime是CREATETABLE商品(商品IDint,名稱varchar(50),價格varchar(30),產品描述text,生產日期datetime)1.創(chuàng)建“商品”表,命令如下:ALTERTABLE商品altercolumn價格money2.執(zhí)行成功后,發(fā)現(xiàn)“商品”表的字段“價格”數(shù)據類型有誤,需要通過修改表的方式修改表中字段的數(shù)據類型,命令如下:ALTERTABLE商品add保質期int3.發(fā)現(xiàn)需要為“商品”表添加字段“保質期”,定時查看商品是否在保質期內。命令如下:ALTERTABLE商品altercolumn商品IDintnotnull4.為了識別每一行,需要為“商品”表添加主鍵約束,由于主鍵約束要求不能為空,首先要設置“商品ID”字段的約束為非空約束,命令如下:ALTERTABLE商品addprimarykey(商品ID)然后再為“商品ID”字段添加主鍵約束,命令如下:ALTERTABLE商品adddefault30for保質期5.商品的保質期一般為30天,為“保質期”字段設置默認約束的命令如下:3.3.1情景描述3.3.2問題分析3.3.3解決方案3.3.4知識總結3.3.5應用實踐任務3.3刪除表數(shù)據庫開發(fā)人員發(fā)現(xiàn)“教師”表中的“系部代碼”字段沒有與“系部”表進行關聯(lián),但不想修改表,可以先把表刪除,再重新創(chuàng)建。那么,需要完成以下任務:1.刪除“教師”表;2.刪除“系部”表;3.重新創(chuàng)建“系部”表,設置“系部代碼”為主鍵;4.重新創(chuàng)建“教師”表,“教師”表的“系部代碼”與“系部”表的“系部代碼”字段關聯(lián)。3.3.1情景描述當一個表不再需要的時候,可以使用刪除命令把表從數(shù)據庫中刪除。如果一個表需要修改,也可以通過刪除表的方式,先刪除表,再按照需要重新建立表?!敖處煛北碇械摹跋挡看a”如果要作為外鍵引用“系部”表的“系部代碼”字段,首先要保證“系部”表的“系部代碼”字段是“系部”表的主鍵字段。3.3.2問題分析1.打開SQLServerManagementStudio,單擊“對象資源管理器”中的“數(shù)據庫”文件夾下的數(shù)據庫“學生管理”;2.單擊工具欄上的“新建查詢”命令,打開“查詢編輯器”;3.在“查詢編輯器”上輸入以下代碼:3.3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大學計算機協(xié)會工作計劃
- 2025年幼兒園教研工作計劃例文
- 部門工作計劃范文
- 數(shù)學老師課堂教學任務計劃
- 2025德育工作計劃小學
- 小學第一學期班主任的教學工作計劃范文
- 職高班主任年度工作計劃
- 《蝸桿傳動改》課件
- 《母親的教誨胡適》課件
- 2020版 滬教版 高中音樂 必修1 音樂鑒賞 上篇《第四單元 黃鐘大呂》大單元整體教學設計2020課標
- 職業(yè)衛(wèi)生及防護智慧樹知到答案2024年中南大學
- 青島版五年級上冊數(shù)學計算題專項練習1000道帶答案
- 陶瓷材料在體育健身領域的應用
- 理論聯(lián)系實際談一談你對中國式現(xiàn)代化的中國特色的理解15篇
- PLC控制系統(tǒng)合同
- 2024數(shù)據中心浸沒式液冷系統(tǒng)單相冷卻液技術指標和測試方法
- 國有企業(yè)采購管理規(guī)范 T/CFLP 0027-2020
- 互聯(lián)網與營銷創(chuàng)新智慧樹知到期末考試答案章節(jié)答案2024年華東師范大學
- 食品安全與日常飲食智慧樹知到期末考試答案章節(jié)答案2024年中國農業(yè)大學
- 小學心理健康評定量表
- 文旅融合視角下河南省鄉(xiāng)村旅游高質量發(fā)展研究
評論
0/150
提交評論