版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程回顧SQLServer數(shù)據(jù)庫的基本概念數(shù)據(jù)庫的創(chuàng)建與管理數(shù)據(jù)庫的附加與分離本章綜述數(shù)據(jù)表是數(shù)據(jù)庫中最重要的對象,用于存儲數(shù)據(jù)庫中的所有數(shù)據(jù)。因此,數(shù)據(jù)表的設(shè)計與實現(xiàn)將直接影響數(shù)據(jù)庫能否合理高效地使用。本章主要介紹數(shù)據(jù)表的基本概念、數(shù)據(jù)表的設(shè)計與規(guī)劃、SQLServer數(shù)據(jù)類型、數(shù)據(jù)表的創(chuàng)建與維護(hù)以及表中數(shù)據(jù)的管理。其中,添加數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)是數(shù)據(jù)表中最常用、最重要的操作。
本章結(jié)構(gòu)3.2創(chuàng)建數(shù)據(jù)庫3.4分離與附加數(shù)據(jù)庫
什么是數(shù)據(jù)表規(guī)劃數(shù)據(jù)表數(shù)字?jǐn)?shù)據(jù)類型字符串?dāng)?shù)據(jù)類型日期時間數(shù)據(jù)類型其他數(shù)據(jù)類型創(chuàng)建數(shù)據(jù)表及約束對象維護(hù)數(shù)據(jù)表查看數(shù)據(jù)添加記錄修改記錄刪除記錄添加數(shù)據(jù)修改數(shù)據(jù)刪除數(shù)據(jù)創(chuàng)建數(shù)據(jù)表查看表結(jié)構(gòu)修改表結(jié)構(gòu)使用規(guī)則對象和默認(rèn)值對象刪除數(shù)據(jù)表4.3使用SSMS創(chuàng)建與維護(hù)數(shù)據(jù)表4.1SQLServer中表的基本概念4.2SQLServer的數(shù)據(jù)類型4.4使用T-SQL語句創(chuàng)建與維護(hù)數(shù)據(jù)表4.5使用SSMS管理表中數(shù)據(jù)4.6使用T-SQL語句管理表中數(shù)據(jù)技能展示理解數(shù)據(jù)表的概念了解數(shù)據(jù)表的設(shè)計與規(guī)劃理解SQLServer2008中的數(shù)據(jù)類型掌握數(shù)據(jù)表的創(chuàng)建與維護(hù)掌握約束對象的創(chuàng)建與修改掌握表中數(shù)據(jù)的管理
4.1 SQLServer中表的基本概念
數(shù)據(jù)表是SQLServer2008中最重要的數(shù)據(jù)庫對象,用于存儲數(shù)據(jù)庫中的所有數(shù)據(jù),其他數(shù)據(jù)庫對象大都依賴于數(shù)據(jù)表而存在。與電子表格類似,數(shù)據(jù)在表中按照行和列的格式組織。每行稱為一條記錄,代表一個實體,每列稱為一個字段,代表實體的屬性特征。例如,圖4-1是總務(wù)管理系統(tǒng)數(shù)據(jù)庫build中的設(shè)備表T_Facility的部分截圖。圖4-1
build數(shù)據(jù)庫中的T_Facility表
4.1.2規(guī)劃數(shù)據(jù)表 確定表中的字段設(shè)置相關(guān)約束主鍵約束(PRIMARYKEY)
惟一約束(UNIQUE)
檢查約束(CHECK)
默認(rèn)值約束(DEFAULT)
外鍵約束(FOREIGNKEY)
確定表間關(guān)系表4-1
build數(shù)據(jù)庫中的T_Facility表結(jié)構(gòu)
4.2 SQLServer的數(shù)據(jù)類型
設(shè)計數(shù)據(jù)表時首先需要為表中的每列指定數(shù)據(jù)類型。數(shù)據(jù)類型決定了數(shù)據(jù)的存儲格式、長度和精度等屬性。SQLServer2008提供了26種數(shù)據(jù)類型,用戶也可以根據(jù)需要自已定義數(shù)據(jù)類型。4.2 SQLServer的數(shù)據(jù)類型
系統(tǒng)數(shù)據(jù)類型數(shù)字?jǐn)?shù)據(jù)類型字符串?dāng)?shù)據(jù)類型日期時間數(shù)據(jù)類型其他數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型
4.2.1數(shù)字?jǐn)?shù)據(jù)類型
整數(shù)類型int:占用4個字節(jié)的存儲空間,用于存儲在–231(–2147483648)~(231–1)(2147483647)范圍的所有整數(shù)
smallint:占用2個字節(jié)的存儲空間,用于存儲–215(–32768)~(215–1)(32767)范圍的所有整數(shù)
bigint:稱為位數(shù)據(jù)類型,只有兩種取值,即0和1。該類型常用于邏輯判斷,表示真、假或是、否等二值選擇。tinyint:占用1個字節(jié)的存儲空間,用于存儲從0~255范圍的所有正整數(shù)。bit:稱為位數(shù)據(jù)類型,只有兩種取值,即0和1。該類型常用于邏輯判斷,表示真、假或是、否等二值選擇。
小數(shù)類型float(n)
:用于存儲–1.79E–308~1.79E+308間的浮點數(shù)。n指定float數(shù)據(jù)的精度,為1~53之間的整數(shù)。當(dāng)n取1~24時,精度為7位有效數(shù)字,占用4個字節(jié);當(dāng)n取25~53時,精度為15位有效數(shù)字,占用8個字節(jié)。real
:相當(dāng)于float(24),用于存儲–3.40E–38~3.40E+38之間的浮點數(shù),占用4個字節(jié)。
numeric(p,s)
:用于存儲帶小數(shù)點且數(shù)值確定的數(shù)據(jù)。其中,p表示數(shù)值的全部位數(shù),默認(rèn)值為18。s表示小數(shù)的位數(shù),默認(rèn)值為0。
decimal(p,s):用法類似于numeric,區(qū)別在于decimal不能用于數(shù)據(jù)表的identity字段。money
:用于存儲貨幣數(shù)據(jù),占用8個字節(jié)的存儲空間
。smallmoney
:與money類似,但范圍比money數(shù)據(jù)類型小,占用4個字節(jié)的存儲空間,存儲范圍為–214748.3468~214748.3468
。
4.2.2字符串?dāng)?shù)據(jù)類型
普通字符串Unicode字符串二進(jìn)制字符串
普通字符串char(n)
:按n個字節(jié)的固定長度存放字符串,每個字符占用1個字節(jié)的存儲空間。如果實際字符串長度小于n,則在尾部添加空格補(bǔ)足設(shè)定好的空間。如果輸入的數(shù)據(jù)過長,將會截掉超出部分。varchar(n)
:按不超過n個字節(jié)的實際長度存放字符串。和char類型不同,varchar類型的存儲空間根據(jù)輸入數(shù)據(jù)的實際長度而變化。如果實際字符串長度小于n,則按字符串實際長度存儲
。
text
:用于存儲大容量文本數(shù)據(jù),可存儲最大容量為231–1即2GB的數(shù)據(jù)。當(dāng)要存儲的字符型數(shù)據(jù)超過8000字節(jié)時,例如備注和日志信息,可以選擇text數(shù)據(jù)類型
。
普通字符型數(shù)據(jù)采用ASCII字符集,一個英文符號占1個字節(jié),漢字占2個字節(jié)。
Unicode字符串char(n)
:按n個字節(jié)的固定長度存放字符串,每個字符占用2個字節(jié)。n取值為1~4000。如果實際字符個數(shù)小于最大長度n,則尾部填充空格
。varchar(n)
:按不超過n個字符的實際長度存放字符串。n取值為1~4000。如果實際字符個數(shù)小于n,則按字符串實際長度存儲
。
ntext
:用于存儲大容量文本數(shù)據(jù),理論上最多可以存儲
230–1(1073741823)個字符
。
unicode字符串采用unicode字符集,無論是英文符號占1個字節(jié)還是漢字都占2個字節(jié)。
二進(jìn)制字符串binary(n)
:按n個字節(jié)的固定長度存放字符串,每個字符占用2個字節(jié)。n取值為1~4000。如果實際字符個數(shù)小于最大長度n,則尾部填充空格
。varbinary(n)
:按不超過n個字符的實際長度存放字符串。n取值為1~4000。如果實際字符個數(shù)小于n,則按字符串實際長度存儲
。
image
::可存儲不超過231–1約2GB個字節(jié)的二進(jìn)制數(shù)據(jù),比如文本文檔、EXCEL圖表以及GIF、BMP和JPEG等圖像數(shù)據(jù)
。
4.2.3日期時間數(shù)據(jù)類型
datetime
:占用8個字節(jié)的存儲空間,用于存儲存儲在公元1753年1月1日零時~公元9999年12月31日23時59分59秒之間的日期和時間,其精確度可達(dá)三百分之一秒,即3.33毫秒。默認(rèn)的存儲格式是YYYY-MM-DDhh:mm:ss,其中YYYY表示年份,MM表示月份,DD表示天數(shù),hh表示小時,mm表示分鐘,ss表示秒。smalldatetime
:占用4個字節(jié)的存儲空間
,用于存儲1900年1月1日~2079年6月6日之間的日期。4.2.4其他數(shù)據(jù)類型
sql_variant:用于存儲除文本、圖形數(shù)據(jù)和timestamp類型數(shù)據(jù)外的其他任何合法的SQLServer數(shù)據(jù)。
timestamp:也稱為時間戳數(shù)據(jù)類型,它提供數(shù)據(jù)庫范圍內(nèi)的惟一值,反應(yīng)數(shù)據(jù)庫中數(shù)據(jù)修改的相對順序,相當(dāng)于一個單調(diào)上升的計數(shù)器Uniqueidentifier:用于存儲一個由16個字節(jié)組成的二進(jìn)制數(shù)字。它是SQLServer根據(jù)計算機(jī)網(wǎng)絡(luò)適配器地址和CPU時鐘表產(chǎn)生的全局唯一標(biāo)識符代碼GUIDxml:使用xml數(shù)據(jù)類型可以在SQLServer數(shù)據(jù)庫中存儲XML文檔和片段。XML片段是缺少單個頂級元素的XML實例Table:用于臨時存儲對表或者視圖處理后的結(jié)果集以供后續(xù)處理。使用該數(shù)據(jù)類型可以利用變量存儲表,從而使函數(shù)或過程返回查詢結(jié)果更加方便和快捷。cursor:用于變量和存儲過程的output參數(shù),這些參數(shù)包含對游標(biāo)的引用。但要特別注意,數(shù)據(jù)表中的列不能使用cursor數(shù)據(jù)類型。
4.2.5自定義數(shù)據(jù)類型
除了SQLServer提供的系統(tǒng)數(shù)據(jù)類型,用戶還可以根據(jù)需要定義自已的數(shù)據(jù)類型。用戶自定義數(shù)據(jù)類型并不是創(chuàng)建一種新的類型,只是在系統(tǒng)數(shù)據(jù)類型的基礎(chǔ)上增加一些約束限制、綁定約束對象,以適用某些數(shù)據(jù)的需要。4.2.5自定義數(shù)據(jù)類型
在對象資源管理器中,展開需要創(chuàng)建自定義數(shù)據(jù)類型的數(shù)據(jù)庫build。選擇可編程性--類型,單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇新建--用戶定義數(shù)據(jù)類型,打開“新建用戶定義數(shù)據(jù)類型對話框”。在如圖4-2所示的“新建用戶定義數(shù)據(jù)類型”對話框中定義該類型的架構(gòu)、名稱、數(shù)據(jù)類型、精度、是否允許為空等。單擊確定按鈕,完成用戶自定義數(shù)據(jù)類型的創(chuàng)建。
圖4-24.3使用SSMS創(chuàng)建與維護(hù)數(shù)據(jù)表
使用SSMS創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表創(chuàng)建約束對象使用SSMS維護(hù)數(shù)據(jù)表4.3.1使用SSMS創(chuàng)建數(shù)據(jù)表
【例4-1】在build數(shù)據(jù)庫中創(chuàng)建“D_Department表”
打開
SQLServerManagementStudio并連接到數(shù)據(jù)庫引擎服務(wù)器。在“對象資源管理器”中,依次展開“數(shù)據(jù)庫”|build|“表”節(jié)點。右擊“表”節(jié)點,從彈出的快捷菜單中選擇“新建表”命令,如圖4-3所示
。圖4-3
在如圖4-4所示的表設(shè)計器窗口上部的網(wǎng)格中輸入列名,從“數(shù)據(jù)類型”列表中選擇數(shù)據(jù)類型,并通過選擇或清除“允許NULL值”復(fù)選框,設(shè)置列是否允許空值根據(jù)需要,在表設(shè)計器的下半部分設(shè)置字段的附加屬性,如默認(rèn)值、精度、小數(shù)位數(shù)、是否標(biāo)識列、標(biāo)識增量和標(biāo)識種子等。
單擊工具欄上的保存按鈕,打開“選擇名稱”對話框,為數(shù)據(jù)表輸入名稱D_Department,單擊“確定”按鈕完成數(shù)據(jù)表的創(chuàng)建。
圖4-4創(chuàng)建表的約束對象字段的約束可以在SSMS中創(chuàng)建表結(jié)構(gòu)的同時進(jìn)行設(shè)置,也可以在表結(jié)構(gòu)創(chuàng)建完成后添加或修改,還可以使用T-SQL語句進(jìn)行設(shè)置和修改。本節(jié)主要介紹在SSMS中設(shè)置字段約束,其他方式在后續(xù)部分會進(jìn)行介紹。在SSMS中設(shè)置表的字段約束必須在表設(shè)計器中進(jìn)行,如圖4-5所示。
圖4-5【例4-2】在SSMS中為build數(shù)據(jù)庫中的“D_Department表”設(shè)置約束
DepartmentNO設(shè)置主鍵約束,只允許5位數(shù)字的檢查約束。
DepartmentName設(shè)置惟一約束。
Isstop設(shè)置默認(rèn)值約束,默認(rèn)值為1
。
1、設(shè)置主鍵約束在“DepartmentNO”字段上右擊,從彈出的快捷菜單中選擇“設(shè)置主鍵”命令,此時在“DepartmentNO”字段最前端的標(biāo)志塊中出現(xiàn)一個鑰匙圖標(biāo),主鍵設(shè)置完畢,如圖4-6所示。
圖4-6
2、設(shè)置惟一約束在“DepartmentName”字段上右擊,從彈出的快捷菜單中選擇“索引/鍵”命令,打開“索引/鍵”對話框。單擊“添加”按鈕,該關(guān)系將顯示在“選定的主/惟一鍵或索引”列表中。選中該關(guān)系,單擊右側(cè)網(wǎng)格中的“列”右側(cè)的按鈕,打開“索引列”對話框。在列名下拉列表中選擇“DepartmentName”字段,單擊“確定”按鈕,回到“索引/鍵”,在“是惟一的”處選擇“是”,單擊“關(guān)閉”按鈕完成惟一約束的創(chuàng)建,如圖4-7所示。
圖4-7
3、設(shè)置check約束在“DepartmentNO”字段上右擊,從彈出的快捷菜單中選擇“CHECK約束”命令,打開“CHECK約束”對話框。單擊“添加”按鈕,該關(guān)系將顯示在“選定的CHECK約束”列表中。選中該關(guān)系,單擊右側(cè)網(wǎng)格中的“表達(dá)式”右側(cè)的按鈕,打開“CHECK約束表達(dá)式”對話框。輸入條件表達(dá)式@xlike‘[0~9][0~9][0~9][0~9][0~9]’后點擊“確定”按鈕返回“CHECK約束”對話框。在下部的復(fù)選框中進(jìn)行附加設(shè)置后,單擊“關(guān)閉”按鈕,完成CHECK約束的創(chuàng)建,如圖4-8所示
。
圖4-8
4、設(shè)置默認(rèn)值約束右擊D_Department表,選擇“設(shè)計”命令,進(jìn)入“表設(shè)計器”,選擇Isstop字段,在下面附加屬性的“默認(rèn)值或綁定”中輸入1,單擊保存,完成默認(rèn)值的設(shè)置,如圖4-9所示。
圖4-9
5、設(shè)置外鍵約束從表設(shè)計器菜單中選擇“關(guān)系”命令,打開“外鍵關(guān)系”對話框。單擊“添加”按鈕,該關(guān)系將顯示在“選定的關(guān)系”列表中。選中該關(guān)系,單擊右側(cè)網(wǎng)格中的“表和列規(guī)范”右側(cè)的按鈕,打開“表和列”對話框。在“表和列”對話框中從“主鍵”下拉列表中選擇位于主鍵方的表,在下方網(wǎng)格中選擇要分配給表的主鍵的列,然后在右側(cè)的相鄰網(wǎng)格中選擇外鍵表的相應(yīng)外鍵列。單擊“確定”按鈕返回“外鍵關(guān)系”對話框后單擊“關(guān)閉”按鈕完成外鍵約束的創(chuàng)建。如圖4-10所示。
圖4-104.3.2使用SSMS維護(hù)數(shù)據(jù)表
添加字段刪除字段修改字段屬性修改字段約束重命名數(shù)據(jù)表刪除數(shù)據(jù)表創(chuàng)建數(shù)據(jù)庫關(guān)系圖添加字段在對象資源管理器中右擊要添加字段的表,選擇“設(shè)計”命令,打開表設(shè)計器窗口。在表設(shè)計器中執(zhí)行以下操作
如果要在表的末尾添加列,則將光標(biāo)定位在最下面的空白行中。如果在要某列前面添加字段,則右擊某行,在彈出的快捷菜單中選擇“插入列”命令,即可在當(dāng)前行前插入一個新的數(shù)據(jù)列,如圖4-11所示。單擊工具欄上的保存按鈕,完成添加字段的操作。
圖4-11刪除字段在表設(shè)計器中右擊要刪除的字段,在彈出的快捷菜單中選擇“刪除列”命令,也可以單擊工具欄上的刪除字段按鈕。
修改字段約束在表設(shè)計器中右擊要修改約束的字段,從彈出的快捷菜單中選擇相關(guān)的命令
重命名數(shù)據(jù)表在對象資源管理器中展開“表”節(jié)點,右擊需要重命名的數(shù)據(jù)表從彈出的快捷菜單中選擇“重命名”命令
刪除數(shù)據(jù)表對象資源管理器中展開“表”節(jié)點,右擊需要刪除的數(shù)據(jù)表,從彈出的快捷菜單中選擇“刪除”命令。創(chuàng)建數(shù)據(jù)庫關(guān)系圖在對象資源管理器中,依次展開“數(shù)據(jù)庫|build|數(shù)據(jù)庫關(guān)系圖”節(jié)點。右擊“數(shù)據(jù)庫關(guān)系圖”表,在彈出的快捷菜單中選擇“新建數(shù)據(jù)庫關(guān)系圖”命令,打開“關(guān)系圖設(shè)計窗口”在添加表對話框中,選擇T_Distribute、D_Department表,單擊添加按鈕將表添加到關(guān)系圖中,如圖4-12所示
圖4-12如果要在T_Distribute和D_Department表間創(chuàng)建外鍵關(guān)系,可將D_Department(主鍵表)的DepartmentNO字段拖到T_Distribute表(外鍵表)的DepartmentNO字段上,如圖4-13所示。從文件菜單選擇“保存”命令,在“選擇名稱”對話框中輸入“總管管理數(shù)據(jù)庫關(guān)系圖”,單擊“確定”按鈕。出現(xiàn)保存對話框提示保存對表的修改時,單擊“是”。
圖4-13從表設(shè)計器菜單中選擇“添加表”命令,然后在添加表對話框中選擇另外8個表,單擊“添加”按鈕,然后單擊“關(guān)閉”按鈕。此時,build數(shù)據(jù)庫中的9個表全部包含在數(shù)據(jù)庫關(guān)系圖中,其中關(guān)系線表示兩個表之間存在外鍵關(guān)系,如圖4-14所示。
圖4-144.4使用SQL語句創(chuàng)建與維護(hù)數(shù)據(jù)表
使用CREATETABLE創(chuàng)建表
使用系統(tǒng)存儲過程sp_help查看表結(jié)構(gòu)使用ALTERTABLE語句修改表使用默認(rèn)值對象和規(guī)則對象使用DROPTABLE語句刪除表4.4.1使用CREATETABLE創(chuàng)建表
CREATETABLE
語句語法格式如下CREATETABLE表名(字段名數(shù)據(jù)類型[長度][IDENTITY(初始值,步長值)][NULL|NOTNULL][CONSTRAINT約束名]PRIMARY[主鍵列名][CONSTRAINT約束名]UNIQUE[惟一列名][CONSTRAINT約束名]CHECK[檢查表達(dá)式][CONSTRAINT約束名]DEFAULT默認(rèn)值[CONSTRAINT約束名]FOREIGNKEY[外鍵列名]REFERENCES引用表名(引用列名))參數(shù)說明
IDENTITY:用于指定該列為自動編號字段(標(biāo)識列)。NULL|NOTNULL:用于指定該列是否允許空值。字段約束也可以在創(chuàng)建表結(jié)構(gòu)后另外單獨設(shè)置。不論創(chuàng)建表時或單獨創(chuàng)建規(guī)則對象,檢查表達(dá)式中都不能使用任何字段名,需要引用字段的復(fù)雜約束必須用觸發(fā)器實現(xiàn)?!纠?-3】在build數(shù)據(jù)庫中創(chuàng)建“D_Department”表,表結(jié)構(gòu)如下圖4-16所示。除DepartmentNO以外其余字段均允許為空。部門編號DepartmentNO設(shè)置為主鍵,且設(shè)置檢查約束只允許輸入4位英文字母或數(shù)字字符。部門名稱Department設(shè)置為惟一約束。是否停用字段Isstop設(shè)置默認(rèn)值約束,默認(rèn)值為1。
。CREATETABLED_DEPARTMENT(DEPARTMENTNOCHAR(4)NOTNULLPRIMARYKEY,USERCLSIDCHAR(2)NULL,DEPARTMENTVARCHAR(50)NULLUNIQUE,PHONEVARCHAR(50)NULL,ISSTOP[BIT]NULLDEFAULT1,NOTE[TEXT]NULL,MODIFYDATE[DATETIME]NULL)圖4-15【例4-4】在build數(shù)據(jù)庫中創(chuàng)建如圖4-18所示的“T_Distribute”表。除DistributiNO以外其余字段均允許為空。分配編號DistributiNO設(shè)置為主鍵,且設(shè)置為自動增長的標(biāo)識列。RoomNo、DepartmentNO、officeName設(shè)置為惟一約束。DepartmentNO字段設(shè)置外鍵約束與“D_Department”表建立關(guān)聯(lián)。CREATETABLET_DISTRIBUTE(DISTRIBUTENOINTIDENTITY(1,1)NOTNULLPRIMARYKEY,ROOMNOINTNULLUNIQUE,DEPARTMENTNOCHAR(4)NULLUNIQUEFOREIGNKEYREFERENCESD_DEPARTMENT(DEPARTMENTNO),OFFICENAMENVARCHAR(30)NULLUNIQUE,DISTRIBUTETIMEDATETIMENULL,NOTETEXTNULL)圖4-164.4.2使用系統(tǒng)存儲過程sp_help查看表結(jié)構(gòu)
語法格式[EXECUTE]sp_help[表名]【例4-5】查看build數(shù)據(jù)庫中T_Facility表的信息。USEbuildGOEXECsp_helpT_Facility圖4-174.4.3使用ALTERTABLE語句修改表結(jié)構(gòu)
ALTERTABLE語句語法格式如下ALTERTABLE表名ADD列名數(shù)據(jù)類型[(長度)][NULL|NOTNULL][DEFAULT’默認(rèn)值’]|ALTERCOLUMN列名數(shù)據(jù)類型[(長度)][NULL|NOTNULL]|DROPCOLUMN字段名[,…N]|ADDCONSTRAINT{約束名約束類型定義}列約束定義[,N][FOR列名]|DROPCONSTRAINT約束名[,…N]|NOCHECKCONSTRAINT約束名|CHECKCONSTRAINT約束名|DISABLETRIGGER觸發(fā)器名|ENABLETRIGGER觸發(fā)器名1.使用add子句添加列
語法格式ALTERTABLE表名
add字段名數(shù)據(jù)類型[(長度)][null|notnull][default‘默認(rèn)值’
]
【例4-6】向D_Department表添加字段“位于校區(qū)”,數(shù)據(jù)類型為定長字符串型char(8),不允許為空(必須為其創(chuàng)建默認(rèn)值)。USEbuild--打開build數(shù)據(jù)庫ALTERTABLED_DepartmentADD位于校區(qū)CHAR(8)NOTNULLDEFAULT'晉安校區(qū)'添加的字段如果不允許為空,則必須設(shè)置默認(rèn)值。2.使用altercolumn子句修改字段屬性
語法格式
ALTERTABLE表名
altercolumn字段名數(shù)據(jù)類型[(長度)][null|notnull
【例4-7】將D_Department表中“聯(lián)系電話”的數(shù)據(jù)長度修改為20,允許為空。USEbuild--打開build數(shù)據(jù)庫ALTERTABLED_DepartmentALTER聯(lián)系電話
char(20)3.使用addconstraint子句添加列約束
【例4-8】向D_Department表添加字段“位于校區(qū)”,數(shù)據(jù)類型為定長字符串型char(8),不允許為空(必須為其創(chuàng)建默認(rèn)值)。【例4-9】為D_Department表的Phone字段添加unique約束,默認(rèn)值為“3810000”
。USEbuild--打開build數(shù)據(jù)庫ALTERTABLED_DepartmentADDCONSTRAINT電話約束UNIQUE(Phone),DEFAULT'3810000'FORPhone
USEbuild--打開build數(shù)據(jù)庫ALTERTABLED_DepartmentADDCONSTRAINT數(shù)字編碼CHECK(DepartmentNOLIKE'[0-9][0-9][0-9][0-9]')
4.使用nocheck|checkconstraint子句設(shè)置列約束無效、恢復(fù)有效【例4-10】使D_Department表的約束“電話約束”暫時無效,然后再恢復(fù)其有效
。USEbuild--打開build數(shù)據(jù)庫ALTERTABLED_DepartmentNOCHECKCONSTRAINT電話約束
ALTERTABLED_DepartmentCHECKCONSTRAINT電話約束
5.使用dropconstraint子句刪除列約束
語法格式
ALTERTABLE表名dropconstraint約束名[,…n]【例4-11】刪除D_Department表的“數(shù)字編碼”約束
。USEbuild--打開build數(shù)據(jù)庫ALTERTABLED_DepartmentDROPCONSTRAINT數(shù)字編碼
--刪除約束
6.使用dropcolumn子句刪除字段
語法格式
ALTERTABLE表名dropcolumn字段名[,…n]【例4-12】刪除D_Department表的Phone字段
。ALTERTABLED_DepartmentDROPCONSTRAINT電話約束--刪除約束ALTERTABLED_DepartmentDROPCOLUMNPhone
刪除字段時必須先刪除該字段上的約束。
4.4.4使用默認(rèn)值對象和規(guī)則對象
創(chuàng)建數(shù)據(jù)表時,可以直接定義default約束和check約束,但這些約束基于字段,僅對字段有效。而默認(rèn)值對象和規(guī)則對象面向整個數(shù)據(jù)庫,所有數(shù)據(jù)表可以共用。默認(rèn)值對象和規(guī)則對象是數(shù)據(jù)庫的對象,建立這種通用對象后,可以綁定到多個表的多個字段,不需要時可以解綁,實現(xiàn)“一次創(chuàng)建,多次綁定”
。4.4.4使用默認(rèn)值對象和規(guī)則對象
規(guī)則對象規(guī)則對象用于字段的檢查約束,限制該字段輸入數(shù)據(jù)的取值范圍。與check約束的區(qū)別在于check約束只對一個字段有效,而規(guī)則對象屬于整個數(shù)據(jù)庫,所有數(shù)據(jù)表中的字段都可以使用。注規(guī)則對象是數(shù)據(jù)庫對象之一,創(chuàng)建后必須綁定到需要的字段上才有效。規(guī)則對象可以綁定到字段上,也能綁定到用戶自定義的數(shù)據(jù)類型上。一個字段只能綁定一個規(guī)則對象,但可設(shè)置多個CHECK約束。規(guī)則對象不允許使用字段名,必須使用@局部變量。創(chuàng)建規(guī)則對象使用CREATERULE語句可以創(chuàng)建規(guī)則對象,語法格式如下:
CREATERULE規(guī)則名稱AS條件表達(dá)式
綁定和解綁規(guī)則對象
綁定規(guī)則對象sp_bindrulesp_bindrule‘規(guī)則名稱’,‘表名.字段名’|自定義數(shù)據(jù)類型
解綁規(guī)則對象
sp_unbindrulesp_unbindrule‘表名.字段名【例4-13】為T_Facility表的“Price”和“Amount”字段創(chuàng)建并綁定數(shù)值大于0的規(guī)則對象“錢款數(shù)值”
。USEbuild--打開build數(shù)據(jù)庫GOCREATERULE錢款數(shù)值
as@數(shù)值>=0--建立規(guī)則對象GOEXECsp_bindrule錢款數(shù)值,'T_Facility.Price'--捆綁規(guī)則對象EXECsp_bindrule錢款數(shù)值,'T_Facility.Amount'GOEXECsp_unbindrule'T_Facility.Price'--解除已捆綁規(guī)則對象EXECsp_unbindrule'T_Facility.Amount'--解除已捆綁規(guī)則對象
圖4-184.4.4使用默認(rèn)值對象和規(guī)則對象
默認(rèn)值對象默認(rèn)值對象類似于默認(rèn)值約束,但默認(rèn)值約束只對字段有效,而默認(rèn)值對象屬于整個數(shù)據(jù)庫,所有的數(shù)據(jù)表都可以共用
。注不能將默認(rèn)值對象綁定到標(biāo)識列(自動編號字段)。不能將默認(rèn)值對象綁定到在SSMS中已設(shè)置默認(rèn)值的字段不能將默認(rèn)值對象綁定到基本數(shù)據(jù)類型上
。創(chuàng)建默認(rèn)值對象使用CREATEDefault語句可以創(chuàng)建規(guī)則對象,語法格式如下:
CREATEDEFAULT默認(rèn)值名稱AS常量表達(dá)式
綁定和解綁默認(rèn)值對象
綁定默認(rèn)值對象sp_bindefaultsp_bindefault‘默認(rèn)值名稱’,‘表名.字段名’|自定義數(shù)據(jù)類型
解綁默認(rèn)值對象
sp_unbindefaultsp_unbindefault‘表名.字段名’
【例4-14】為T_Distribute表的DistributeTime和BuyTime字段創(chuàng)建并綁定默認(rèn)值對象當(dāng)前日期
。USEbuild--打開build數(shù)據(jù)庫GOCREATEDEFAULT當(dāng)前日期
asgetdate()--建立默認(rèn)值對象GOEXECsp_bindefault當(dāng)前日期,'T_Distribute.DistributeTime'--捆綁默認(rèn)值對象到字段EXECsp_bindefault當(dāng)前日期,'T_Facility.BuyTime'EXECsp_unbindefault'T_Distribute.DistributeTime'--解除已捆綁默認(rèn)值對象EXECsp_unbindefault'T_Facility.BuyTime'
圖4-194.4.5使用DROPTABLE語句刪除表
altertable語句語法格式如下DROPTABLE表名[,...n]
注DROPTABLE語句一次可以刪除多個數(shù)據(jù)表,但不能刪除系統(tǒng)表。如果一個表被其他表的外鍵約束引用,必須先解除約束才能進(jìn)行修改或刪除操作
【例4-15】將前面創(chuàng)建的T_Facility數(shù)據(jù)表從build數(shù)據(jù)庫中刪除
。USEbuild--打開build數(shù)據(jù)庫GODROPTABLET_Facility--刪除
T_Facility數(shù)據(jù)表
4.5使用SSMS管理表中數(shù)據(jù)
查看數(shù)據(jù)
添加記錄修改現(xiàn)有記錄刪除記錄4.6使用T-SQL語句管理表中數(shù)據(jù)
添加數(shù)據(jù)
修改數(shù)據(jù)刪除數(shù)據(jù)查看數(shù)據(jù)在“對象資源管理器”中,依次展開“數(shù)據(jù)庫”build|“表”節(jié)點。右擊“T_Facility”表,在彈出的快捷菜單中選擇“編輯前200行”命令在“文檔窗口”視圖中,將顯示“T_Facility”表中的所有記錄的詳細(xì)信息,如圖4-20所示。圖4-20
添加記錄在“對象資源管理器”中,依次展開“數(shù)據(jù)庫”|build|“表”節(jié)點。右擊“D_Structrue”表,在彈出的快捷菜單中選擇“打開表”命令,打開“D_Structrue”表的“文檔窗口”視圖。在“文檔窗口”視圖中的最后一行,即標(biāo)有“*”的數(shù)據(jù)行中,輸入每個字段的值。
修改記錄在打開的表的“文檔窗口”視圖中,找到要修改的數(shù)據(jù)記錄。單擊要修改的數(shù)據(jù)項,激活并修改
。刪除記錄在打開的表的“文檔窗口”視圖中,查找到要修改的數(shù)據(jù)記錄行右擊要刪除的行,在彈出的快捷菜單中選擇“刪除”命令,彈出刪除確認(rèn)對話框,單擊“是”,完成數(shù)據(jù)行的刪除。
4.6.1添加數(shù)據(jù)
使用INSERT語句向數(shù)據(jù)表中插入記錄
INSERT…VALUES直接向表中各字段提供數(shù)據(jù),一次只能添加一條記錄。INSERT…SELECT用其他表的數(shù)據(jù)向表中提供數(shù)據(jù),可一次添加多條記錄。使用INSERT…values語句向表中添加記錄,語法格式如下:INSERT[INTO]表名(字段列表)VALUES(值列表)
注一個INSERT…VALUES只能向表中添加一條記錄。給表中全部字段提供數(shù)據(jù)時字段列表可以省略,但順序必須與表中字段順序一致如果只給表中部分字段提供數(shù)據(jù),則必須指定字段列表。設(shè)置了默認(rèn)值的字段使用默認(rèn)值時,可以用DEFAULT代表默認(rèn)數(shù)據(jù)。自動編號標(biāo)識列不允許提供數(shù)據(jù)。設(shè)置CHECK約束、綁定了規(guī)則的字段不允許輸入違反約束或規(guī)則的數(shù)據(jù)。設(shè)置外鍵約束的字段不允許輸入父表引用列沒有的值。字符型和日期型數(shù)據(jù)要用單引號擴(kuò)起來。
【例4-16】學(xué)校新成立了“迎評協(xié)調(diào)中心”,將該處的信息添加到D_Department表中。
USEbuildINSERTINTOD_DepartmentVALUES('4201',’42’,'迎評協(xié)調(diào)中心','3811223')
【例4-17】學(xué)校新建的學(xué)術(shù)交流中心竣工了,將該樓的信息添加到D_Structrue表中
USEbuildINSERTINTOD_Structrue(StructrueName,StructrueNumber,FloorSum,RoomSum)VALUES('學(xué)術(shù)交流中心','044',1,10)
圖4-21使用INSERT…select語句向表中添加記錄,語法格式如下:INSERT[INTO]表名1(字段列表1)SELECT*|字段列表2FROM表名2[WHERE條件表達(dá)式]注該語句可以從一個或多個表或視圖中得到數(shù)據(jù),且一次可以添加多條記錄表2的字段列表中的字段個數(shù)、順序和類型必須與表1保持一致如果給表1中全部字段提供數(shù)據(jù),則字段列表1可以省略如果只給表1中部分字段提供數(shù)據(jù),則必須指定字段列表。
【例4-18】創(chuàng)建一個“格力空調(diào)表”,該表中只有DistributeNo(分配編號)、Quantity(數(shù)量)、Amount(金額)字段,然后從T_Facility表取得數(shù)據(jù)。通過復(fù)制得到一個新的空表使用INSERT…SELECT語句向表中添加記錄
INSERTINTO格力空調(diào)表SELECTDistributeNo、Quantity、AmountFROMT_FacilityWHEREFacilityName=‘格力空調(diào)’
USEbuildSELECTDistributeNo、Quantity、AmountINTO格力空調(diào)表FROMT_FacilityWHERE1=2
圖4-224.6.2修改數(shù)據(jù)
UPDATE語句用于更新表中一行或多行數(shù)據(jù),語法格式如下UPDATE表名1SET{列名=表達(dá)式}[,…n][FROM表名2][WHERE條件表達(dá)式]
注SET:指定被修改的列和這些列的新值,同一條件下可以對多列數(shù)據(jù)同時進(jìn)行修改FROM:如果表達(dá)式中使用其他表中的數(shù)據(jù)時必須使用FROM指定數(shù)據(jù)來源。WHERE:指定被修改記錄的條件,只有滿足條件的記錄才能被更新。
【例4-19】將T_Facility表中Review(審核意見)統(tǒng)一修改為已審核
。
【例4-20】將T_Facility表中Price(金額)大于1000元的物品的Amount(金額)統(tǒng)一下調(diào)10%。USEbuildUPDATET_FacilitySETReview='已審核'
USEbuildUPDATET_FacilitySETAmount=Amount*0.9WHEREPrice>1000
圖4-23【例4-21】將DepartmentNO(部門編號)為“1101”的部門的PersonInCharge(負(fù)責(zé)人)改為“張宇”。
UPDATET_FacilitySETPersonInCharge=‘張宇’FROMT_DistributeWHERET_Distribute.DistributeNo=T_Facility.DistributeNoANDDepartmentNO=‘1101’
圖4-24.4.6.3刪除數(shù)據(jù)
使用DELETE語句刪除記錄
使用TRUNCATETABLE語句快速永久刪除全部記錄
DELETE語句用于刪除表或視圖中的一行或多行,其語法格式如下:DELETE表名[FROM表名][WHERE條件表達(dá)式]
注如果沒有指定WHERE子句,將刪除指定表中的所有記錄。當(dāng)刪除條件中使用其他表的數(shù)據(jù)時可以使用FROM指定所在的表名有自動編號字段的記錄被刪除后,字段編號不會重新排列?!纠?-22】刪除T_Facility1表中所有行。注意,T_Facility1表是T_Facility表的備份,首先使用SELECTINTO子句完成表的復(fù)制
”。
UPDATET_FacilitySETPersonInCharge=‘張宇’SELECT*INTOT_Facility1FROMT_FacilityDELETET_Facility1
圖4-25【例4-23】將D_Category表中“CategoryNO”屬性為“Isstop”(是否停用)中已經(jīng)停用的記錄刪除。
。
【例4-24】從用T_Facility表復(fù)制的T_Facility1表刪除DepartmentNO(部門編號)為1101的部門的相關(guān)記錄
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 善良為話題的議論文6篇
- 八年級第一學(xué)期期末質(zhì)量監(jiān)測語文試題及答案
- 股權(quán)轉(zhuǎn)讓協(xié)議書(公司全部轉(zhuǎn)讓)
- 2025-2030全球購物籃和購物車行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國語音生物識別身份驗證行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球光束通量計行業(yè)調(diào)研及趨勢分析報告
- 二零二五年度跨境電商平臺合作伙伴擔(dān)保合同范本4篇
- 二零二四年度智能家居抹灰施工合同范本3篇
- 二零二四年水電暖設(shè)備安裝與售后服務(wù)協(xié)議3篇
- 二年級數(shù)學(xué)兩位數(shù)加兩位數(shù)計算題單元練習(xí)試題帶答案
- 2025版開發(fā)商與購房者精裝修住宅買賣及售后服務(wù)合同3篇
- 心力衰竭的治療(基層診療與指南2024)
- 10.《運動技能學(xué)習(xí)與控制》李強(qiáng)
- 檢察院專業(yè)知識試題及答案
- 冀教版數(shù)學(xué)七年級下冊綜合訓(xùn)練100題含答案
- 1神經(jīng)外科分級護(hù)理制度
- 場館惡劣天氣處置應(yīng)急預(yù)案
- 斜拉橋施工技術(shù)之斜拉索圖文并茂
- GB/T 6144-1985合成切削液
- 第三方在線糾紛解決機(jī)制(ODR)述評,國際商法論文
- 公寓de全人物攻略本為個人愛好而制成如需轉(zhuǎn)載注明信息
評論
0/150
提交評論