




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4章數(shù)據(jù)庫中表的建立
4.1數(shù)據(jù)表概述4.2數(shù)據(jù)類型4.3創(chuàng)建數(shù)據(jù)表4.4修改數(shù)據(jù)表4.5刪除數(shù)據(jù)表4.6數(shù)據(jù)完整性與約束4.7數(shù)據(jù)庫關(guān)系圖4.8使用數(shù)據(jù)表4.9臨時表4.10分區(qū)表4.1數(shù)據(jù)表概述
4.1.1關(guān)系型數(shù)據(jù)表
SQLServer是關(guān)系型的數(shù)據(jù)庫管理系統(tǒng)。所謂關(guān)系型數(shù)據(jù)庫是指數(shù)據(jù)庫內(nèi)數(shù)據(jù)的組織模型是關(guān)系模型。關(guān)系模型的特點(diǎn)可以用一張二維表格來描述,表由行和列兩部分組成。表是數(shù)據(jù)庫中最重要的對象,是存儲數(shù)據(jù)的地方,是一種結(jié)構(gòu)化的文件,可用來存儲一些特定數(shù)據(jù)類型的數(shù)據(jù)。表的形式如下圖:4.1.4SQLServer2008數(shù)據(jù)表類型
在SQLServer2008中,共有四種類型的數(shù)據(jù)表:系統(tǒng)表、普通表、臨時表、分區(qū)表。系統(tǒng)表是由SQLServer系統(tǒng)提供的,用于存放系統(tǒng)運(yùn)行信息的數(shù)據(jù)表,例如有關(guān)服務(wù)器配置、數(shù)據(jù)庫選項(xiàng)等信息都保存在系統(tǒng)表中。普通表,也即用戶表,是由用戶創(chuàng)建的,用于存儲用戶數(shù)據(jù)的數(shù)據(jù)表。普通表是用戶使用SQLServer存儲和管理數(shù)據(jù)的對象,用戶數(shù)據(jù)保存在普通表中。臨時表,是因用戶、應(yīng)用程序或者系統(tǒng)運(yùn)行需要臨時創(chuàng)建的數(shù)據(jù)表。該數(shù)據(jù)表只能臨時保存在臨時數(shù)據(jù)庫tempdb中,當(dāng)用戶斷開連接或者SQLServer服務(wù)重啟或停止時,臨時表會丟失。臨時表根據(jù)用戶使用權(quán)限的不同,可以劃分成為兩大類:全局臨時表和本地臨時表。全局臨時表在創(chuàng)建之后,所有用戶和連接都可訪問;本地臨時表,只能供創(chuàng)建它的用戶或連接訪問。分區(qū)表。分區(qū)表是一種特殊的數(shù)據(jù)表,用于將大型數(shù)據(jù)表分割成多個較小數(shù)據(jù)表,以提高數(shù)據(jù)管理性能的場合4.2數(shù)據(jù)類型
在SQLServer2008中提供的系統(tǒng)內(nèi)置數(shù)據(jù)類型,共有37種,可以分為:數(shù)值型數(shù)據(jù)類型、字符型數(shù)據(jù)類型、日期型數(shù)據(jù)類型、貨幣型數(shù)據(jù)類型、二進(jìn)制型數(shù)據(jù)類型、程序用數(shù)據(jù)類型和其他數(shù)據(jù)類型等七大類。1.字符數(shù)據(jù)類型
字符數(shù)據(jù)類型可以用來存儲各種字母、數(shù)字符號和特殊符號。
Char:其定義形式為char(n),每個字符和符號占用一個字節(jié)的存儲空間。
Varchar:其定義形式為varchar(n)。用varchar數(shù)據(jù)類型可以存儲長達(dá)8K個字符的可變長度字符串。以上n從1-8000。以下n從1-4000。用于存儲用兩個字節(jié)才能存儲的雙字節(jié)字符。如:漢字。
Nchar:其定義形式為nchar(n)。
Nvar(char|max):其定義形式為nvarchar(n)。
Max表示最大存儲大小為231-1(1073741832)個字符。2.整型數(shù)據(jù)類型整型數(shù)據(jù)類型是最常用的數(shù)據(jù)類型之一,它主要用來存儲整數(shù)值,可以直接進(jìn)行數(shù)據(jù)運(yùn)算,而不必使用函數(shù)轉(zhuǎn)換。
int(integer):int(或integer)數(shù)據(jù)類型可以存儲從-231(-2147483648)到231-1(2147483647)范圍之間的所有正負(fù)整數(shù)(4個字節(jié))。
Smallint:可以存儲從-215(-32768)到215-1(32768)范圍之間的所有正負(fù)整數(shù)(2個字節(jié))。
Tinyint:可以存儲從0到255范圍之間的所有正整數(shù)(1個字節(jié))。
Bigint:與int相類似,但存儲的范圍更大,存儲范圍在-263(-9223372036854775808)至263(9223372036854775807)之間,占用8個字節(jié)的存儲空間。適用于存儲長度超過int范圍的整型數(shù)據(jù)。3.浮點(diǎn)數(shù)據(jù)類型浮點(diǎn)數(shù)據(jù)類型用于存儲十進(jìn)制小數(shù)。
Real:可以存儲正的或者負(fù)的十進(jìn)制數(shù)值,最大可以有7位精確位數(shù)。
Float:可以精確到第15位小數(shù),其范圍從-1.79E-308到1.79E+308。
Decimal和numeric:Decimal數(shù)據(jù)類型和numeric數(shù)據(jù)類型完全相同,它們可以提供小數(shù)所需要的實(shí)際存儲空間,但也有一定的限制,可以用2到17個字節(jié)來存儲從-1038-1到1038-1之間的數(shù)值。4.日期和時間數(shù)據(jù)類型Date:用于存儲日期的數(shù)據(jù)類型,其范圍從0001年1月1日至9999年12月31日,需占用10個字節(jié)的存儲空間。數(shù)據(jù)格式為YYYY-MM-DD,不包含具體的時間。
Datetime:用于存儲日期和時間的結(jié)合體。它可以存儲從公元1753年1月1日零時起到公元9999年12月31日23時59分59秒之間的所有日期和時間。
Smalldatetime:與datetime數(shù)據(jù)類型類似,但其日期時間范圍較小,它存儲從1900年1月1日到2079年6月6日內(nèi)的日期。datetime2(n):與datetime相類似,不同之處是datetime2秒的小數(shù)部分精度更高,存儲范圍更大為:0001年1月1日至9999年12月31日,秒數(shù)可以精確到小數(shù)點(diǎn)后7位.n表示精度長度:0--7。4.日期和時間數(shù)據(jù)類型
datetimeoffset(n):用于存儲與日期和時區(qū)相關(guān)的日期、時間數(shù)據(jù)。存儲的日期時間數(shù)據(jù),需要轉(zhuǎn)化成為UTC(CoordinatedUniversalTime-協(xié)調(diào)世界時)值的時間,即需要根據(jù)時區(qū)關(guān)系進(jìn)行換算。如要存儲北京時間2010-01-0110:00:00需換算存儲為2010-01-0118:00:00,該類型的格式為YYYY-MM-DDhh:mm:ss[.nnnnnnn][+|_]hh:mm。占用的存儲空間也會因n的取值不同而不同,在26至34個字節(jié)之間。
time(n):是一種專用于存儲時間的數(shù)據(jù)類型,與datetime相比不同之處在于沒有日期值。格式為hh:mm:ss[.nnnnnnn],占用的存儲空間因n的不同,范圍為3至5個字節(jié)。5.貨幣數(shù)據(jù)類型Money:用于存儲貨幣值,存儲在money數(shù)據(jù)類型中的數(shù)值以一個正數(shù)部分和一個小數(shù)部分存儲在兩個4字節(jié)的整型值中,存儲范圍為-922337213685477.5808到922337213685477.5808,精度為貨幣單位的萬分之一。
Smallmoney:與money數(shù)據(jù)類型類似,但其存儲的貨幣值范圍比money數(shù)據(jù)類型小,其存儲范圍為-214748.3468到214748.3467。6.文本和圖片數(shù)據(jù)類型
Text:用于存儲大量文本數(shù)據(jù),其容量理論上為1到231-1(2147483647)個字節(jié),但實(shí)際應(yīng)用時要根據(jù)硬盤的存儲空間而定,如:超過8K的大字符串,如HTML文檔的全部內(nèi)容。
Ntext:與text數(shù)據(jù)類型類似,存儲在其中的數(shù)據(jù)通常是直接能輸出到顯示設(shè)備上的字符,顯示設(shè)備可以是顯示器、窗口或者打印機(jī)。(Unicode字符--統(tǒng)一的字符編碼標(biāo)準(zhǔn).采用雙字節(jié)對字符進(jìn)行編碼
)Image:用于存儲照片、目錄圖片或者圖畫,其理論容量為231-1(2147483647)個字節(jié),(作為一組二進(jìn)制的數(shù)據(jù)流存儲)。如MicrosoftWord文檔、MicrosoftExcel電子表格、包含位圖的圖像、圖形交換格式(GIF)文件和聯(lián)合圖像專家組(JPEG)文件。
7.二進(jìn)制數(shù)據(jù)類型Binary:其定義形式為binary(n),數(shù)據(jù)的存儲長度是固定的,即n+4字節(jié),當(dāng)輸入的二進(jìn)制數(shù)據(jù)長度小于n時,余下部分填充0。
Varbinary:其定義形式為varbinary(n),數(shù)據(jù)的存儲長度是變化的,它為實(shí)際所輸入數(shù)據(jù)的長度加上4字節(jié)。其它含義同binary。
varbinary(max):與varbinary相似,只是最大存儲長度可以超過8000字節(jié),達(dá)231-1(1073741832),適合代替image類型來存儲圖像、Word文檔、應(yīng)用程序等二進(jìn)制型數(shù)據(jù)。8.位數(shù)據(jù)類型Bit:稱為位數(shù)據(jù)類型,其數(shù)據(jù)有兩種取值:0和1,長度為1字節(jié)。一般用于保存用來表示邏輯值的數(shù)據(jù).如,是否會員,是否是新消息等.9.程序用數(shù)據(jù)類型hierarchyid:SQLServer2008新增的一種用于存儲層次化結(jié)構(gòu)型數(shù)據(jù)的數(shù)據(jù)類型。對于商品目錄、組織機(jī)構(gòu)等具有層次化結(jié)構(gòu)的數(shù)據(jù),采用hierarchyid來存儲,可以利用hierarchyid提供的函數(shù),非常方便地實(shí)現(xiàn)數(shù)據(jù)的存儲和節(jié)點(diǎn)搜索。geometry:一種用于存儲平面幾何對象(平面球)的數(shù)據(jù)類型,如點(diǎn)、多邊形、曲線等11種幾何度量中的一種。Geography:用于存儲GPS等全球定位類型的地理數(shù)據(jù)(橢圓球),以緯度和經(jīng)度為度量來存儲。9.程序用數(shù)據(jù)類型XML:用于存放整個XML文檔或者部分片段。Cursor:這是一種變量或存儲過程的輸出參數(shù)使用的數(shù)據(jù)類型,也稱為游標(biāo)。Cursor提供了一種逐行處理查詢數(shù)據(jù)的功能。用cursor定義的變量只能用于定義游標(biāo)和與游標(biāo)有關(guān)的語句,不能在表設(shè)計時使用。Table:用于存儲對表或者視圖處理后的結(jié)果集的數(shù)據(jù)類型。這種數(shù)據(jù)類型使得變量可以存儲一個表,從而使函數(shù)或過程返回查詢結(jié)果更加方便、快捷。sql_variant:是一種允許存儲多個不同類型數(shù)據(jù)值的數(shù)據(jù)類型,除了varchar(max)、nvarchar(max)、text、image、sql_variant、sql_variant(max)、xml、ntext、rowversion等之外的數(shù)據(jù)類型都可以存儲。10.其他數(shù)據(jù)類型
rowversion:用于存儲由SQLServer產(chǎn)生的可標(biāo)注數(shù)據(jù)行唯一性的二進(jìn)制數(shù)據(jù)。每次行數(shù)據(jù)發(fā)生變化時,該值也會發(fā)生變化,用于反映修改的記錄。在早先的版本中該數(shù)據(jù)類型對應(yīng)的是timestamp。
Uniqueidentifier:用于存儲一個16字節(jié)長的二進(jìn)制數(shù)據(jù)類型,它是SQLServer根據(jù)計算機(jī)網(wǎng)絡(luò)適配器地址和CPU時鐘產(chǎn)生的唯一號碼而生成的全局唯一標(biāo)識符代碼(GloballyUniqueIdentifier,簡寫為GUID)。4.2.2用戶自定義數(shù)據(jù)類型
在SQLServerManagementStudio創(chuàng)建用戶自定義數(shù)據(jù)類型的操作步驟如下:1、在“對象資源管理器”窗口,選擇“數(shù)據(jù)庫”→“可編程性”→“類型“→“用戶定義數(shù)據(jù)類型”,右鍵單擊之,選擇“新建用戶定義數(shù)據(jù)類型”,彈出“新建用戶定義數(shù)據(jù)類型”對話框。2、在“新建用戶定義數(shù)據(jù)類型”對話框中,“名稱”項(xiàng)輸入“PostCode”,“數(shù)據(jù)類型”選擇“varchar”,指定長度為“6”,選中“允許NULL值”,表示允許使用此數(shù)據(jù)類型定義的列可以不輸入數(shù)據(jù)。3、單擊“確定”,保存自定義的數(shù)據(jù)類型。這樣在“用戶自定義數(shù)據(jù)類型”節(jié)點(diǎn)下,可以看到新創(chuàng)建的數(shù)據(jù)類型,在當(dāng)前數(shù)據(jù)庫中,可以像使用系統(tǒng)數(shù)據(jù)類型一樣使用。4.2.2用戶自定義數(shù)據(jù)類型創(chuàng)建用戶自定義數(shù)據(jù)類型的TSQL語句需要調(diào)用系統(tǒng)存儲過程“sp_addtype”,其語法如下:sp_addtype[@typename=]type,[@phystype=]'system_data_type'[,[@nulltype=]'null_type'];各參數(shù)所代表的含義如下:@typename,自定義的數(shù)據(jù)類型的名稱,在數(shù)據(jù)庫中不能與已有數(shù)據(jù)類型名稱重復(fù)。@phystype,現(xiàn)有的系統(tǒng)數(shù)據(jù)類型,用于作為自定義數(shù)據(jù)類型的基礎(chǔ)。@nulltype,是否允許該數(shù)據(jù)類型保存NULL值。Execsp_addtypeaddress,'varchar(80)','notnull'刪除自定義的數(shù)據(jù)類型刪除用戶自定義數(shù)據(jù)類型的TSQL語句需要調(diào)用系統(tǒng)存儲過程“sp_droptype”,其語法如下:
sp_droptypetype_nameexecsp_droptypeaddress其運(yùn)行結(jié)果如下:(1row(s)affected)(0row(s)affected)Typehasbeendropped.4.3創(chuàng)建數(shù)據(jù)表
4.3.1使用SSMS創(chuàng)建數(shù)據(jù)表
DEMODEMO4.3.1使用SSMS創(chuàng)建數(shù)據(jù)表4.3創(chuàng)建數(shù)據(jù)表4.3.2使用TSQL創(chuàng)建數(shù)據(jù)表
在SQLServer2008中創(chuàng)建數(shù)據(jù)表的TSQL語句是“CREATETABLE”,基本語法如下:CREATETABLE
[database_name.[owner].|owner.]table_name略為當(dāng)前庫
({<column_definition>|column_name[AS]computed_column_expression|<table_constraint>}[,…n])
[ON{filegroup|DEFAULT}][TEXTIMAGE_ON:{filegroup|DEFAULT}]<column_definition>::={column_namedata_type}創(chuàng)建表的各參數(shù)的說明如下:database_name:用于指定在其中創(chuàng)建表的數(shù)據(jù)庫名稱。owner:用于指定新建表的所有者的用戶名。table_name:用于指定新建的表的名稱。column_name:用于指定新建表的列的名稱。computed_column_expression:用于指定計算列的列值的表達(dá)式。該列是通過服務(wù)器計算產(chǎn)生,不能對其賦值,也不能添加PRIMARYKEY,UNIQUE,DEFAULT,F(xiàn)OREIGN
KEYON{filegroup|DEFAULT}:用于指定存儲表的文件組名。TEXTIMAGE_ON:用于指定text、ntext和image列的數(shù)據(jù)存儲的文件組。data_type:用于指定列的數(shù)據(jù)類型。DEFAULT:用于指定列的缺省值。constant_expression:用于指定列的缺省值的常量表達(dá)式。IDENTITY:用于指定列為標(biāo)識列。當(dāng)新的數(shù)據(jù)行插入表中時,系統(tǒng)為該列提供一個唯一的遞增數(shù)值。Seed:用于指定標(biāo)識列的初始值。Increment:用于指定標(biāo)識列的增量值。NOTFORREPLICATION:用于指定列的IDENTITY屬性,在把從其它表中復(fù)制的數(shù)據(jù)插入到表中時不發(fā)生作用,即不重新生成列值,使得復(fù)制的數(shù)據(jù)行保持原來的列值。ROWGUIDCOL:用于指定列為全球唯一鑒別行號列。COLLATE:用于指定表使用的校驗(yàn)方式(排序規(guī)則)。column_constraint和table_constraint:用于指定列約束和表約束。4.3.2使用TSQL創(chuàng)建數(shù)據(jù)表
EX1CREATETABLE[dbo].訂單表(
orderIDintIDENTITY(1,1)NOTNULL,
ordertimedatetimeNULLDEFAULT
Getdate(),
customerIDintNOTNULL,
StatusbitNOTNULLDEFAULT(0),
shiptimedatetimeNULL)EX2:創(chuàng)建一個雇員信息表其SQL語句的程序清單如下:
CREATETABLEemployee(numberintnotnullIDENTITY,
namevarchar(20)NOTNULL,
sexchar(2)NULL,
birthdaydatetimenull,
hire_datedatetimeNOTNULL
DEFAULT(getdate()),
professional_titlevarchar(10)null,
salarymoneynull,
memontextnull)其余例子見P70-72,例4-1,4-2。EX3:其SQL語句的程序清單如下:
CREATETABLEdbo.stud_info(stud_idintCONSTRAINTperid_chkNOTNULLPRIMARYKEY,
namenvarchar(5)NOTNULL,
birthdaydatetime,
gendernchar(1),
addressnvarchar(20),
telcodechar(12),
zipcodechar(6)
CONSTRAINTzip_chkCHECK(zipcode
LIKE'[0-9][0-9][0-9][0-9][0-9][0-9]'),
DeptcodetinyintCONSTRAINTDeptcode_chk
CHECK(Deptcode<100),
salarymoneyDEFAULT500)EX4:其SQL語句的程序清單如下:
CREATETABLEtsing_DB1.dbo.stud_score(yearintNOTNULL,Stud_idintNOTNULL,math_scorenumeric(4,1)CHECK(math_score>=0andmath_score<=100),engl_scorenumeric(4,1)CHECK(engl_score>=0andengl_score<=100),comp_scorenumeric(4,1)CHECK(comp_score>=0andcomp_score<=100),CONSTRAINTpk_chkPRIMARYKEY(year,stud_id))EX5:帶有參照性約束的表的創(chuàng)建:被參照表:CREATETABLEtsing_DB1.dbo.device_manage(dev_idvarchar(15)
CONSTRAINTpd_chkNOTNULLPRIMARYKEY,
dev_namevarchar(20)NOTNULL,
lab_idvarchar(20)NOTNULL,
dev_qtyint,
unit_pricemoney,
addressnvarchar(20),
supply_idvarchar(15))EX6:帶有參照性約束的表的創(chuàng)建:參照表:CREATETABLEtsing_DB1.dbo.device_use(experiment_namevarchar(20)NOTNULLPRIMARYKEY,
experiment_labvarchar(20),
experiment_datedatetime,
stud_idint,
dev_idvarchar(15)
CONSTRAINTfk_chkREFERENCES
device_manage(dev_id))4.4修改數(shù)據(jù)表
4.4.1使用SSMS修改數(shù)據(jù)表
1、在“對象資源管理器”窗口中,展開服務(wù)器、數(shù)據(jù)庫節(jié)點(diǎn),找到要修改的數(shù)據(jù)表。2、右擊要修改的數(shù)據(jù)表,在右鍵菜單中選擇“設(shè)計”。3、在打開的“表設(shè)計器”窗口中,可以對列名、數(shù)據(jù)類型等進(jìn)行修改。4、如要添加新的列,可以單擊列列表底部的空白行,輸入新的列名、數(shù)據(jù)類型,設(shè)置是否允許為NULL等。5、修改完畢后,可以單擊工具欄的“保存”按鈕,保存修改后的數(shù)據(jù)表。4.4修改數(shù)據(jù)表
4.4.2使用TSQL修改數(shù)據(jù)表
1、使用TSQL添加新列添加新列使用的TSQL語句為“ALTERTABLE”,基本語法如下:ALTERTABLEtable_nameADDColumn_name[Default<value>][NOTNULL][IDENTITY][UNIQUE]各參數(shù)含義如下:table_name,待修改的數(shù)據(jù)表的名稱。Column_name,添加的新列的名稱。Default<value>,默認(rèn)值,可選項(xiàng)。NOTNULL,是否允許為空。IDENTITY,是否作為標(biāo)識列,一個表中只能有一個標(biāo)識列。UNIQUE,是否創(chuàng)建唯一約束。4.4修改數(shù)據(jù)表
例如,要在“客戶數(shù)據(jù)表(Customers)”中添加一個新列:CustomerType,數(shù)據(jù)類型為varchar(20),默認(rèn)值為“個人客戶”,則修改表的語句如下:ALTERTABLE客戶數(shù)據(jù)表ADDCustomerTypevarchar(20)NOTNULLDefault('個人用戶')4.4修改數(shù)據(jù)表2、使用TSQL修改現(xiàn)有列
SQLServer2008允許修改現(xiàn)有列的數(shù)據(jù)類型、數(shù)據(jù)長度和默認(rèn)值等,修改現(xiàn)有列的語法如下:ALTERTABLEtable_nameALTERColumnColumn_namenew_data_type各參數(shù)含義如下:table_name,待修改的數(shù)據(jù)表的名稱。Column_name,修改的列的名稱。new_data_type,列的新數(shù)據(jù)類型。ALTERTABLE客戶數(shù)據(jù)表ALTERColumnShipAddressvarchar(200)例如,要將“客戶數(shù)據(jù)表(Customers)”中的“ShipAddress”的數(shù)據(jù)類型修改為varchar(200),4.4修改數(shù)據(jù)表3、使用TSQL刪除現(xiàn)有列刪除現(xiàn)有列的語句如下:ALTERTABLEtable_nameDROPColumnColumn_name[,...n]各參數(shù)含義如下:table_name,待修改的數(shù)據(jù)表的名稱。Column_name,待刪除的列的名稱。例如,要“訂單細(xì)節(jié)表(Orderdetail)”中刪除“SunTotal”列,則語句如下:ALTERTABLE訂單細(xì)節(jié)表DROPColumnSunTotalEX:創(chuàng)建、修改一個雇員信息表其SQL語句的程序清單如下:createtableemployees(idchar(8)primarykeynamechar(20)notnull,departmentchar(20)null,memochar(30)nullageintnull,)altertableemployeesaddsalaryintnullaltertableemployeesdropcolumnagealtertableemployeesaltercolumnmemovarchar(200)null例見P74例4-34.4修改數(shù)據(jù)表4、關(guān)于計算列計算列在數(shù)據(jù)表中是一種特殊的列,它不需要指定數(shù)據(jù)類型,其值來源于其他列的表達(dá)式計算,這些表達(dá)式可以是函數(shù)、常量或表中的其它列。默認(rèn)情況下,計算列并不會將數(shù)據(jù)值實(shí)際存儲在數(shù)據(jù)表中,只是在需要時,如通過查詢語句獲取時,才會重新計算表達(dá)式來獲取值。因此,計算列可算是一種虛擬的列。計算列可以在表創(chuàng)建時,與參與表達(dá)式的其他列一起定義;也可以通過添加新列時添加進(jìn)來。例如,以下語句可以為“訂單細(xì)節(jié)表(Orderdetail)”新增一個名稱為“SunTotal”的計算列,其數(shù)值取自列“Sale_unitprice”與“sales”的乘積。ALTERTABLE訂單細(xì)節(jié)表ADDSubTotalAsSale_unitprice*sales4.5刪除數(shù)據(jù)表
4.5.1使用SSMS刪除數(shù)據(jù)表
1、在SQLServerManagementStudio中,展開“對象資源管理器”的服務(wù)器、數(shù)據(jù)庫節(jié)點(diǎn),在數(shù)據(jù)庫節(jié)點(diǎn)中展開“表”節(jié)點(diǎn)。2、選中要刪除的數(shù)據(jù)表,右擊該數(shù)據(jù)表,然后在右鍵菜單中選擇“刪除”,彈出“刪除的對象”對話框。3、在“要刪除的對象”列表中可以查看待刪除數(shù)據(jù)表的信息,如果當(dāng)前其他程序正在使用該數(shù)據(jù)表,則可以在“消息”列中查看到相關(guān)的信息。單擊“確定”,可以完成對數(shù)據(jù)表的刪除。4.5刪除數(shù)據(jù)表4.5.2使用TSQL刪除數(shù)據(jù)表
刪除數(shù)據(jù)表的TSQL語句是“DROPTABLE”,語法規(guī)則相當(dāng)簡單,如下所示:DROPTABLEtable_name[,...n]如要刪除一個數(shù)據(jù)表,可以執(zhí)行以下代碼:DROPTABLE客戶數(shù)據(jù)表如果要一次刪除多個數(shù)據(jù)表,可以執(zhí)行如下代碼:DROPTABLE客戶數(shù)據(jù)表,訂單細(xì)節(jié)表4.6使用數(shù)據(jù)表
創(chuàng)建完成后的數(shù)據(jù)表可以用來保存用戶數(shù)據(jù),也可以編輯和修改數(shù)據(jù)。這些用戶數(shù)據(jù)在數(shù)據(jù)表中可以長期存在,除非人為刪除或者出現(xiàn)系統(tǒng)故障,造成數(shù)據(jù)丟失。右鍵單擊表名,選擇“編輯前200行”,則打開數(shù)據(jù)編輯界面,可以:1、輸入數(shù)據(jù)2、編輯數(shù)據(jù)3、刪除數(shù)據(jù)4.7臨時表
臨時表是一種特殊的數(shù)據(jù)表。與普通表不同,臨時表只能臨時存在,在創(chuàng)建臨時表的用戶斷開連接或者SQLServer服務(wù)停止、重啟后就會丟失。另外,臨時表統(tǒng)一存放在系統(tǒng)數(shù)據(jù)庫tempdb,也與普通表一般存放在特定的用戶數(shù)據(jù)庫中不同。臨時表一般用于存放一些臨時性的數(shù)據(jù)。比如,有些數(shù)據(jù)需要聯(lián)接多個數(shù)據(jù)表,并且在應(yīng)用程序中需要多次使用時,那么這些數(shù)據(jù)可以保存為臨時表,用戶訪問臨時表即可獲取需要的數(shù)據(jù)。從而,可以避免多次重復(fù)地生成相同數(shù)據(jù),增加服務(wù)器負(fù)荷。臨時表根據(jù)使用范圍的不同,可以分為局部臨時表和全局臨時表。局部臨時表只能供創(chuàng)建者使用,全局臨時表可在生命周期內(nèi)供所有連接使用。4.7.1創(chuàng)建臨時表
臨時表只能通過TSQL語句來創(chuàng)建,無法在SQLServerManagementStudio中新建。創(chuàng)建臨時表的語句與普通表的創(chuàng)建基本相同,唯一不同是數(shù)據(jù)表名稱前要添加“#”。一個“#”表示創(chuàng)建的是局部臨時表,“##”表示創(chuàng)建的是全局臨時表。以下代碼創(chuàng)建了一個名稱為“#訂單細(xì)節(jié)表”臨時表,無論該段代碼在哪個“數(shù)據(jù)庫”上執(zhí)行,所創(chuàng)建的臨時表都保存在tempdb數(shù)據(jù)庫中。CREATETABLE[dbo].#訂單細(xì)節(jié)表
(
DetailIDintPRIMARYKEYIDENTITY(1,1)NOTNULL,
orderidintNOTNULL,
productidintNOTNULL,
Sale_unitpricedecimal(10,2)NOTNULL
)4.7.2使用臨時表
臨時表也無法在SQLServerManagementStudio中打開和查看,要在臨時表中輸入數(shù)據(jù)可以采用TSQL語句來實(shí)現(xiàn)。如要在局部臨時表輸入數(shù)據(jù)可以采用以下代碼:insertinto#訂單細(xì)節(jié)表(orderid,productid,Sale_unitprice)values(1,1,1.1)使用分區(qū)表的主要目的,是為了改善大型表以及具有各種訪問模式的表的可伸縮性和可管理性。分區(qū)一方面可以將數(shù)據(jù)分為更小、更易管理的部分,為提高性能起到一定的作用;另一方面,對于如果具有多個CPU的系統(tǒng),分區(qū)可以是對表的操作通過并行的方式進(jìn)行,這對于提升性能是非常有幫助的。創(chuàng)建分區(qū)表的步驟:1、創(chuàng)建分區(qū)函數(shù)。分區(qū)函數(shù)是對數(shù)據(jù)進(jìn)行分區(qū)的依據(jù),分區(qū)函數(shù)定義了按分區(qū)列的值,將數(shù)據(jù)行映射到分區(qū)的機(jī)制。2、創(chuàng)建分區(qū)方案。分區(qū)方案根據(jù)分區(qū)函數(shù),將不同數(shù)據(jù)分區(qū)映射到不同的文件組中。通過文件組中數(shù)據(jù)文件在硬盤中物理位置的不同,實(shí)現(xiàn)將數(shù)據(jù)分別存儲到不同的硬盤或分區(qū)中,從而可以進(jìn)一步提高存儲的效率和系統(tǒng)性能。3、創(chuàng)建分區(qū)表。根據(jù)分區(qū)方案的要求創(chuàng)建分區(qū)表,今后數(shù)據(jù)存儲時會按照分區(qū)函數(shù)的設(shè)定分區(qū)存放。╳4.8分區(qū)表
創(chuàng)建分區(qū)函數(shù)CREATEPARTITIONFUNCTIONmyRangePF1(int)ASRANGELEFTFORVALUES(1,100,1000)創(chuàng)建分區(qū)方案(架構(gòu))
CREATEPARTITIONSCHEMEmyRangePS1ASPARTITIONmyRangePF1TO(test1fg,test2fg,test3fg,test4fg)創(chuàng)建分區(qū)表CREATETABLE[dbo].訂單表_RANG(orderIDintIDENTITY(1,1)NOTNULL,ordertimedatetimeNULLDEFAULTGetdate(),customerIDintNOTNULL,StatusbitNOTNULLDEFAULT(0),shiptimedatetimeNULL)ONORDERPS(ordertime))
╳4.8分區(qū)表
4.9TSQL表的編輯4.9.1插入數(shù)據(jù)向表中添加新的記錄或在記錄中插入部分字段的數(shù)據(jù)。
INSERT語句語法:INSERT[INTO]table_name[(column1,column2…)]VALUES(value1,value2…)1.整行數(shù)值插入例1:下面的例子將向tsing_DB1中的stud_info表插入10行記錄。Usetsing_DB1goINSERTdbo.stud_infoValues(0811,'張源','12-12-19','男','北京市海淀區(qū)',
'64572345','100080',3,260)GoINSERTstud_infoValues(970890,’趙明’,’08/05/1979’,’1’,’上海市浦東區(qū)’,,’201700’,2,260)GoINSERTstud_infoValues(‘970801,’王剛’,’1/5/1980’,’1’,’天津市’,,’430000’,3,260)Go….例2:表device_manage中第一個字段與表device_use中的最后一個字段是參照性約束的關(guān)系,被參照的表為device_manage,在表device_use中定義了參照性約束,其輸入方法如下:首先向device_manage表中插入4行記錄Usetsing_DB2goINSERTdevice_manageValues(‘0789,’分光計’,’光學(xué)實(shí)驗(yàn)室’,20,5000,’北京光學(xué)儀器廠’)GoINSERTdevice_manageValues(‘0284’,’高能電子管’,’電子實(shí)驗(yàn)室’,50,900,’中科院電子所’)GoINSERTdevice_manageValues(‘0394,’硅酸鹽晶片’,’材料實(shí)驗(yàn)室’,1000,200,’清華大學(xué)材料系’)Go………………
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 閩教版小學(xué)英語四年級上冊教學(xué)工作總結(jié)模版
- 算力新質(zhì)生產(chǎn)力
- 老教師傳幫帶工作總結(jié)模版
- 代運(yùn)營協(xié)議合同標(biāo)準(zhǔn)文本
- 企業(yè)培訓(xùn)的新焦點(diǎn)提高醫(yī)護(hù)團(tuán)隊溝通能力
- 醫(yī)療大數(shù)據(jù)助力商業(yè)保險精準(zhǔn)營銷
- 企業(yè)保險銷售合同范例
- 新質(zhì)生產(chǎn)力包括什么
- 代招加盟合同范例
- 醫(yī)療人才教育與培訓(xùn)的未來趨勢與挑戰(zhàn)
- 學(xué)生常見病預(yù)防
- 《路基養(yǎng)護(hù)》課件
- 2025年上海二手房買賣合同參考范文(2篇)
- 2025年全國大學(xué)生百科知識競賽題庫及答案(共740道題)
- 2025年全球及中國智能無人叉車行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 《基于EVA的科大訊飛企業(yè)價值評估的計算過程及結(jié)果探析案例報告》10000字(論文)
- 2025蘇州中考數(shù)學(xué)二輪專題復(fù)習(xí)-圓的綜合應(yīng)用-專項(xiàng)訓(xùn)練【含答案】
- 空氣輸送斜槽選型手冊
- 服裝IE(浙江紡織服裝職業(yè)技術(shù)學(xué)院)知到智慧樹答案
- 糖尿病足疼痛
- 培訓(xùn)機(jī)構(gòu)教務(wù)管理崗位職責(zé)
評論
0/150
提交評論