版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PART04項(xiàng)目4數(shù)據(jù)表操作4.1通過圖形方式創(chuàng)建表4.2通過命令方式創(chuàng)建數(shù)據(jù)表4.3修改表的結(jié)構(gòu)4.4刪除表4.5表的索引4.6添加數(shù)據(jù)4.7修改數(shù)據(jù)4.8刪除數(shù)據(jù)4.1通過圖形方式創(chuàng)建表4.1通過圖形方式創(chuàng)建表【任務(wù)描述】表是數(shù)據(jù)庫中最基本的也是最重要的數(shù)據(jù)庫對(duì)象,由行和列組成的。列中存儲(chǔ)著同一類型的數(shù)據(jù),行中記錄著具有一定意義的信息集合。本任務(wù)要求在student數(shù)據(jù)庫中通過圖形方式創(chuàng)建數(shù)據(jù)表。為此,需要先在“對(duì)象資源管理器”中的“數(shù)據(jù)庫”節(jié)點(diǎn)下創(chuàng)建一個(gè)數(shù)據(jù)庫,命名為student?!救蝿?wù)分析】本任務(wù)以student數(shù)據(jù)庫中的student_table數(shù)據(jù)表為例,介紹如何通過圖形方式創(chuàng)建數(shù)據(jù)表。student_table數(shù)據(jù)表的數(shù)據(jù)結(jié)構(gòu)如表4-1所示。4.1通過圖形方式創(chuàng)建表4.1通過圖形方式創(chuàng)建表該表用于記錄學(xué)生信息數(shù)據(jù),主要包括學(xué)號(hào)、姓名、身份證號(hào)、班級(jí)、性別、出生日期等信息。該表的數(shù)據(jù)類型有3種:整型、字符型、日期時(shí)間型,都是常用的數(shù)據(jù)類型。SQLserver2017包含多種數(shù)據(jù)類型,具體見表4-4。完成該任務(wù)需要做到以下幾點(diǎn):(1)建立表結(jié)構(gòu)。(2)生成表。(3)向表中錄入數(shù)據(jù)。4.1通過圖形方式創(chuàng)建表【任務(wù)實(shí)現(xiàn)】步驟01:?jiǎn)?dòng)SSMS,在“對(duì)象資源管理器”中雙擊“數(shù)據(jù)庫”節(jié)點(diǎn)下的“student”數(shù)據(jù)庫,展開student數(shù)據(jù)庫目錄樹,如圖4-1所示。單擊“+”號(hào)也可展開目錄樹。通常,一個(gè)數(shù)據(jù)庫包含若干個(gè)數(shù)據(jù)表。步驟02:創(chuàng)建數(shù)據(jù)表。在數(shù)據(jù)庫目錄樹中,右擊“表”節(jié)點(diǎn),如圖4-2所示,在彈出的快捷菜單中選擇“新建”,彈出表設(shè)計(jì)界面,用于創(chuàng)建新數(shù)據(jù)表的結(jié)構(gòu),如圖4-3所示。4.1通過圖形方式創(chuàng)建表4.1通過圖形方式創(chuàng)建表步驟03:添加字段。將表4-1所設(shè)定的字段添加到數(shù)據(jù)表中,注意正確輸入列名、數(shù)據(jù)類型,并在屬性欄中指定字段的寬度,以及該列是否允許空值。常見的數(shù)據(jù)類型主要有整型int、字符型nvarchar、日期時(shí)間型datatime、文本類型ntext等,創(chuàng)建的數(shù)據(jù)表如圖4-3所示。在最后一列有一項(xiàng)“允許Null值”,將其選中可以不輸入值。這種為空的限制為非空約束。在添加字段的過程中使用“TAB”鍵或光標(biāo)鍵可以在各字段間選擇,也可使用鼠標(biāo)單擊相應(yīng)字段位置進(jìn)行編輯。4.1通過圖形方式創(chuàng)建表4.1通過圖形方式創(chuàng)建表步驟04:設(shè)置標(biāo)識(shí)列。標(biāo)識(shí)列的數(shù)據(jù)類型必須是整數(shù),它是每一個(gè)表中都具有唯一值的字段,例如:學(xué)號(hào)字段,不允許有兩個(gè)完全相同的學(xué)號(hào),這個(gè)字段稱之為標(biāo)識(shí)列。在設(shè)置標(biāo)識(shí)列時(shí),要指定初始值以及每次的增長(zhǎng)值這兩個(gè)參數(shù),增長(zhǎng)值可以是正值也可以是負(fù)值,正值是在初始值的基礎(chǔ)上遞增,而負(fù)值恰好相反,在初始值上遞減。在數(shù)據(jù)表中將Student_id字段設(shè)置為標(biāo)識(shí)列,單擊Student_id所在行,然后在列屬性標(biāo)簽頁選擇“標(biāo)識(shí)規(guī)范”|“是標(biāo)識(shí)”,如圖4-4所示?!皹?biāo)識(shí)規(guī)范”選項(xiàng)用于設(shè)置標(biāo)識(shí)列:將其置成“是”,標(biāo)識(shí)列會(huì)自動(dòng)增長(zhǎng);如無其他設(shè)置,將從1開始每次加1。4.1通過圖形方式創(chuàng)建表4.1通過圖形方式創(chuàng)建表步驟05:設(shè)置自動(dòng)編號(hào)。通常,數(shù)據(jù)表中都有一個(gè)字段作為每行數(shù)據(jù)的序號(hào),在實(shí)際使用時(shí)多將該字段設(shè)置為自動(dòng)編號(hào),系統(tǒng)將根據(jù)數(shù)據(jù)記錄的多少自動(dòng)添加其值。本表設(shè)置數(shù)據(jù)表中Student_table字段為自動(dòng)編號(hào),設(shè)置從1開始每次增加常量1,如圖4-5所示。“標(biāo)識(shí)增量”是要設(shè)置的增量,“標(biāo)識(shí)種子”選項(xiàng)是初始值。設(shè)置成標(biāo)識(shí)列后,需取消勾選“允許Null值”,標(biāo)識(shí)列便不會(huì)產(chǎn)生空值。4.1通過圖形方式創(chuàng)建表4.1通過圖形方式創(chuàng)建表步驟06:保存數(shù)據(jù)表。完成數(shù)據(jù)結(jié)構(gòu)創(chuàng)建后,單擊工具欄上的“保存”按鈕或按快捷鍵“Ctrl+S”,系統(tǒng)將彈出“選擇名稱”對(duì)話框,此時(shí)輸入表的名字student_table,單擊“確定”按鈕,完成整個(gè)表的創(chuàng)建,如圖4-6所示。4.1通過圖形方式創(chuàng)建表4.1通過圖形方式創(chuàng)建表步驟07:輸入數(shù)據(jù)。創(chuàng)建數(shù)據(jù)表后,即可在表中添加數(shù)據(jù),添加數(shù)據(jù)的方法有兩種:一是使用圖形管理界面直接輸入數(shù)據(jù),按“Tab”鍵可跳到下一個(gè)輸入框,如圖4-7所示;二是使用Insert語句向數(shù)據(jù)表中插入數(shù)據(jù)。4.1通過圖形方式創(chuàng)建表4.1通過圖形方式創(chuàng)建表【相關(guān)知識(shí)】1.什么是表表(table)是數(shù)據(jù)庫的重要組成部分,通俗地講,表是由行和列組成的信息表。其中每一列代表一個(gè)相同類型的數(shù)據(jù),列(Column)也稱為字段,每列的標(biāo)題就是字段名。在表結(jié)構(gòu)建立完畢時(shí),表中的行(Row)就是一條數(shù)據(jù)記錄。若干記錄構(gòu)成信息集合。表就是記錄的集合。數(shù)據(jù)表由表名、表中的字段和表的記錄3個(gè)部分組成。設(shè)計(jì)數(shù)據(jù)表結(jié)構(gòu)就是定義數(shù)據(jù)表的文件名,確定數(shù)據(jù)表包含哪些字段,各字段的字段名、字段類型及寬度。2.系統(tǒng)表SQLServer2017中包含了很多系統(tǒng)表,這些系統(tǒng)表中存儲(chǔ)了數(shù)據(jù)庫的相關(guān)信息,數(shù)據(jù)庫管理人員或設(shè)計(jì)者可以充分利用系統(tǒng)表對(duì)數(shù)據(jù)進(jìn)行有效管理。4.1通過圖形方式創(chuàng)建表4.2通過命令方式創(chuàng)建數(shù)據(jù)表4.2通過命令方式創(chuàng)建數(shù)據(jù)表【任務(wù)描述】要想成為一名優(yōu)秀的數(shù)據(jù)管理員,不但要會(huì)用圖形方式創(chuàng)建數(shù)據(jù)表,還要會(huì)用命令方式創(chuàng)建數(shù)據(jù)表,有時(shí),通過命令方式創(chuàng)建數(shù)據(jù)表更加靈活、準(zhǔn)確?!救蝿?wù)分析】完成該任務(wù)需要做到以下幾點(diǎn):(1)新建查詢。(2)使用CREATETABLE語句創(chuàng)建數(shù)據(jù)表。(3)在執(zhí)行任務(wù)之前使用如下語句刪除student_table,其中DROPTABLE語句是刪除表格命令,為后面用命令再創(chuàng)建該表做準(zhǔn)備。4.2通過命令方式創(chuàng)建數(shù)據(jù)表【任務(wù)實(shí)現(xiàn)】步驟01:新建查詢。在工具欄中單擊“新建查詢”按鈕,如圖4-8所示,進(jìn)入SQL腳本編輯器。4.2通過命令方式創(chuàng)建數(shù)據(jù)表步驟02:編寫命令。用CREATETABLE語句創(chuàng)建數(shù)據(jù)表,其語法格式為:4.2通過命令方式創(chuàng)建數(shù)據(jù)表在上述格式中,USE用于打開數(shù)據(jù)庫名所制定的數(shù)據(jù)庫,然后在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表并指定相應(yīng)的數(shù)據(jù)表字段。在student數(shù)據(jù)庫中創(chuàng)建student_table表的語句如下:USE
student
--打開student數(shù)據(jù)庫CREATE
TABLE
student_table
--使用CREAT語句創(chuàng)建數(shù)據(jù)表(Student_id
int
primary
key,
--創(chuàng)建Student_id字段并設(shè)為主關(guān)鍵字Name
varchar(10)
NULL, --創(chuàng)建Name字段,允許為空Card
varchar(18)
NULL,
--創(chuàng)建Card字段,允許為空Class_id
varchar(50)
NULL, --創(chuàng)建Class_id字段,允許為空Sex
varchar(2)
NULL, --創(chuàng)建Sex字段,允許為空Birth
datetime
NULL, --創(chuàng)建Birth字段,允許為空)4.2通過命令方式創(chuàng)建數(shù)據(jù)表步驟03:在工具欄中單擊“執(zhí)行”按鈕即可編譯解釋命令。若在結(jié)果提示框中出現(xiàn)“命令已成功完成”,并刷新數(shù)據(jù)庫,說明數(shù)據(jù)表創(chuàng)建完成,如圖4-9所示。4.2通過命令方式創(chuàng)建數(shù)據(jù)表【相關(guān)知識(shí)】1.常用的創(chuàng)建表的參數(shù)4.2通過命令方式創(chuàng)建數(shù)據(jù)表2.操作實(shí)例【例4-1】建立表,同時(shí)將ID字段設(shè)置為自動(dòng)增長(zhǎng),讀者可以試著輸入數(shù)據(jù)以觀察編號(hào)的變化。USE
student
--打開student數(shù)據(jù)庫CREATE
TABLE
student_table1
--創(chuàng)建student_table1數(shù)據(jù)表(Student_idintidentity,--設(shè)置Student_id字段為自動(dòng)編號(hào) Namevarchar(10))4.2通過命令方式創(chuàng)建數(shù)據(jù)表【例4-2】建立表的同時(shí)將ID字段設(shè)置為主關(guān)鍵字,打開數(shù)據(jù)表可以看到一個(gè)鑰匙形狀的標(biāo)志。USE
student
--打開student數(shù)據(jù)庫CREATE
TABLE
student_table2
--創(chuàng)建student_table數(shù)據(jù)表(
Student_idintprimary
key,
--設(shè)置Student_id為主關(guān)鍵字
Namevarchar(10))4.2通過命令方式創(chuàng)建數(shù)據(jù)表【例4-3】建立表,同時(shí)指定Title字段不為空。USE
student
--打開student數(shù)據(jù)庫CREATE
TABLE
student_table3
--創(chuàng)建student_table數(shù)據(jù)表(
Name
varchar(10)
NotNULL,--指定Name字段不允許為空
Namevarchar(10))identity,primarykey,NotNull三者可以相互組合,根據(jù)需要?jiǎng)?chuàng)建所需的表。4.2通過命令方式創(chuàng)建數(shù)據(jù)表4.3修改表的結(jié)構(gòu)4.3修改表的結(jié)構(gòu)【任務(wù)描述】在實(shí)際使用的過程中,常常需要根據(jù)實(shí)際情況對(duì)創(chuàng)建好的表進(jìn)行調(diào)整,此時(shí),可以通過圖形方式或命令方式來完成。本任務(wù)通過圖形方式修改student數(shù)據(jù)庫中的student_table表的結(jié)構(gòu)?!救蝿?wù)分析】本任務(wù)是將表中“Student_id”字段的名字變更為“S_id”,然后增加一個(gè)空列Score,再刪除原有的Score字段。修改之前要打開圖形化修改界面。完成該任務(wù)需要做到以下幾點(diǎn):(1)修改字段名。(2)修改字段長(zhǎng)度。(3)增加列。(4)刪除列。4.3修改表的結(jié)構(gòu)【任務(wù)實(shí)現(xiàn)】步驟01:在“student”數(shù)據(jù)庫中右擊“student_table”數(shù)據(jù)表,在彈出的快捷菜單中選擇“設(shè)計(jì)”,進(jìn)入數(shù)據(jù)表設(shè)計(jì)窗口,如圖4-10所示。4.3修改表的結(jié)構(gòu)步驟02:修改字段名。例如,將student_table數(shù)據(jù)表中的Student_id字段修改為“S_id”,直接在設(shè)計(jì)窗口中修改即可,如圖4-11所示。步驟03:修改字段長(zhǎng)度。主要是針對(duì)字段類型長(zhǎng)度值的修改,注意字段類型長(zhǎng)度的取值范圍。例如,將student_table數(shù)據(jù)表中的Name字段長(zhǎng)度值由“10”改為“14”,直接在設(shè)計(jì)窗口中修改即可,如圖4-12所示。4.3修改表的結(jié)構(gòu)步驟04:增加列。增加列是在已有的數(shù)據(jù)表中增加一個(gè)新的字段。例如,在student_table數(shù)據(jù)表中增加一個(gè)字段名為“Age”的字段,則在要插入該字段的位置上右擊,在彈出的快捷菜單中選擇“插入列”,如圖4-13所示,然后在新插入的列中輸入要添加的字段名,并設(shè)置數(shù)據(jù)類型和是否允許為空,如圖4-14所示。4.3修改表的結(jié)構(gòu)步驟05:刪除列。刪除列是將數(shù)據(jù)表中的某一字段刪除,注意刪除某一列時(shí),屬于此列的全部數(shù)據(jù)都將被刪除。例如,要?jiǎng)h除News數(shù)據(jù)表中的“Age”字段,在Age字段上右擊,在彈出的快捷菜單中選擇“刪除列”即可,如圖4-15所示。4.3修改表的結(jié)構(gòu)【相關(guān)知識(shí)】1.字段類型在建立和修改字段結(jié)構(gòu)的過程中,每個(gè)字段都有數(shù)據(jù)類型。表4-4SQLServer數(shù)據(jù)類型整型數(shù)據(jù)(32位)、整型數(shù)據(jù)(16位)、整型數(shù)據(jù)(8位)、整型數(shù)據(jù)(64位)、浮點(diǎn)精度數(shù)字、貨幣數(shù)據(jù)(64位)、貨幣數(shù)據(jù)(32位)、整數(shù)數(shù)據(jù)、固定精度和小數(shù)位的數(shù)字?jǐn)?shù)據(jù)、浮點(diǎn)精度數(shù)字?jǐn)?shù)據(jù)、日期和時(shí)間數(shù)據(jù)、精確到3.33毫秒、日期和時(shí)間數(shù)據(jù)、精確到100納秒、日期和時(shí)間數(shù)據(jù)、存儲(chǔ)日期、存儲(chǔ)時(shí)間、固定長(zhǎng)度的非Unicode字符數(shù)據(jù)、可變長(zhǎng)度的非Unicode數(shù)據(jù)、可變長(zhǎng)度的非Unicode數(shù)據(jù)、固定長(zhǎng)度的Unicode數(shù)據(jù)、可變長(zhǎng)度的Unicode數(shù)據(jù)、可變長(zhǎng)度的Unicode數(shù)據(jù)、固定長(zhǎng)度的二進(jìn)制數(shù)據(jù)、可變長(zhǎng)度的二進(jìn)制數(shù)據(jù)、可變長(zhǎng)度的二進(jìn)制數(shù)據(jù)、游標(biāo)的引用、存儲(chǔ)SQLServer支持的各種數(shù)據(jù)類型值的數(shù)據(jù)類型、一種特殊的數(shù)據(jù)類型,存儲(chǔ)供以后處理的結(jié)果集、數(shù)據(jù)庫范圍的唯一數(shù)字,每次更新行時(shí)也進(jìn)行更新、全局唯一標(biāo)識(shí)符(GUID)。4.3修改表的結(jié)構(gòu)2.使用命令修改表的結(jié)構(gòu)
利用T-SQL語句修改數(shù)據(jù)表的語法格式如下:ALTERTABLEtable_name
{[ALTERCOLUMNcolumn_name
{newdatatype[(precision[,scale])]
[NULL|NOTNULL]
|ADD
{[<column_definition>][,...n]
|DROP{[CONSTRAINT]constraint_name|COLUMNcolumn_name}[,...n]修改表的結(jié)構(gòu)使用的是ALTERTABLE語句,其常用參數(shù)見表4-5。4.3修改表的結(jié)構(gòu)4.3修改表的結(jié)構(gòu)3.修改表的名稱修改數(shù)據(jù)表的名稱則需要調(diào)用系統(tǒng)的sp_rename存儲(chǔ)過程。其用法為:EXECSP_RENAME‘原數(shù)據(jù)表名’﹐‘新數(shù)據(jù)表名’4.操作舉例【例4-4】將student_table數(shù)據(jù)表名修改為stu_table。打開查詢編輯器,輸入如下語句:USE
student
--打開student數(shù)據(jù)庫EXEC
SP_RENAME'student_table','stu_table'--調(diào)用sp_rename存儲(chǔ)過程,修改數(shù)據(jù)表名稱4.3修改表的結(jié)構(gòu)【例4-5】向數(shù)據(jù)表中添加字段。添加之前在News數(shù)據(jù)表中刪除的Hit字段,其數(shù)據(jù)類型為int。打開查詢編輯器,輸入如下語句:USE
student
--打開student數(shù)據(jù)庫ALTER
TABLE
stu_table --指明對(duì)News表進(jìn)行操作ADD
Age
int
--添加Age字段【例4-6】刪除數(shù)據(jù)表中的字段將stu_table數(shù)據(jù)表中添加的Age字段刪除。打開查詢編輯器,輸入如下語句:USE
student
--打開student數(shù)據(jù)庫ALTER
TABLE
stu_table
--指明對(duì)stu_table表進(jìn)行操作DROP
COLUMN
Age --刪除Age字段4.3修改表的結(jié)構(gòu)【例4-7】修改數(shù)據(jù)表中的字段的類型。將之前在stu_table數(shù)據(jù)表中修改的Name字段的數(shù)據(jù)類型改為原來的nvarchar(50)。打開查詢編輯器,輸入如下語句:USE
student
--打開student數(shù)據(jù)庫ALTER
TABLE
stu_table --指明對(duì)stu_table表進(jìn)行操作DROP
COLUMN
Name
varchar(14)
--修改Name字段的數(shù)據(jù)類型4.3修改表的結(jié)構(gòu)4.4刪除表4.4刪除表【任務(wù)描述】當(dāng)數(shù)據(jù)庫中的某些表失去作用時(shí),就要?jiǎng)h除這張表。刪除表的方式有兩種:一是通過圖形方式;二是通過命令方式。本任務(wù)以刪除student數(shù)據(jù)庫中的stu_table表為例,講解有關(guān)刪除表的知識(shí)?!救蝿?wù)分析】刪除表的同時(shí),表中的數(shù)據(jù)也將被刪除。所以,刪除之前一定要確定此表已不再需要,或者已將此表備份。完成該任務(wù)需要做到以下幾點(diǎn):(1)通過圖形方式刪除表。(2)DROP語句的作用和使用方法。(3)通過命令方式刪除表?!救蝿?wù)實(shí)現(xiàn)】1.通過圖形方式刪除表步驟01:按照前面講述的方法建立一個(gè)表,表名為s_table,用于刪除操作,表結(jié)構(gòu)如圖4-16所示。4.4刪除表步驟02:?jiǎn)?dòng)SSMS,在“對(duì)象資源管理器”中展開樹形目錄,右擊“s_able”數(shù)據(jù)表,在彈出的快捷菜單中選擇“刪除”,如圖4-17所示,打開“刪除對(duì)象”對(duì)話框。4.4刪除表步驟03:在“刪除對(duì)象”對(duì)話框中,如果“進(jìn)度”欄中顯示“就緒”則表明此表已刪除;如果顯示“未就緒”則表明此表正在使用,若要?jiǎng)h除必須先將此表退出,如圖4-18所示。步驟04:在“刪除對(duì)象”對(duì)話框中,單擊“顯示依賴關(guān)系”按鈕,打開“依賴關(guān)系”對(duì)話框。查看此表與數(shù)據(jù)庫中其他表的依賴關(guān)系,以防止因刪除一個(gè)表,而導(dǎo)致數(shù)據(jù)庫中其他表中的數(shù)據(jù)出現(xiàn)錯(cuò)誤,如圖4-19所示。4.4刪除表2.通過命令方式刪除表DROP是數(shù)據(jù)定義語言(DataDefinitionLanguage,DDL)中的一種命令,其作用主要是刪除數(shù)據(jù)庫對(duì)象。其用法簡(jiǎn)單、便于操作,在對(duì)數(shù)據(jù)庫的操作和管理過程中經(jīng)常被使用。其中,數(shù)據(jù)庫對(duì)象可以是數(shù)據(jù)庫、數(shù)據(jù)表、索引、視圖、觸發(fā)器、存儲(chǔ)過程等。語法格式如下:DROP對(duì)象類型數(shù)據(jù)庫對(duì)象名使用DROP語句刪除S_table表的操作如下:在SQL腳本編輯器中輸入如下語句,單擊“執(zhí)行”按鈕,即可完成刪除S_table表的操作。USEstudentDROPTABLES_table4.4刪除表4.5表的索引4.5表的索引【任務(wù)描述】在數(shù)據(jù)庫中使用得最多的操作是查詢。在眾多記錄中查詢某一條時(shí),是從頭到尾一條條查詢,還是有其他更方便、快捷的方法?SQLServer提供了一種名為“索引”的技術(shù),為一個(gè)或多個(gè)字段創(chuàng)建索引,可以大大提高查詢效率。本任務(wù)將為stu_table表創(chuàng)建一個(gè)索引?!救蝿?wù)分析】本任務(wù)是為student數(shù)據(jù)庫中的stu_table數(shù)據(jù)表中的Name字段創(chuàng)建索引。創(chuàng)建索引的目的是提高查詢效率。操作時(shí),先打開圖形化修改界面,再進(jìn)行索引設(shè)置。完成該任務(wù)需要做到以下幾點(diǎn):(1)使用向?qū)?chuàng)建索引。(2)使用命令創(chuàng)建索引。(3)修改索引。(4)刪除索引?!救蝿?wù)實(shí)現(xiàn)】1.使用向?qū)?chuàng)建索引步驟01:?jiǎn)?dòng)SSMS,在“對(duì)象資源管理器”中右擊“stu_table”數(shù)據(jù)表,在彈出的快捷菜單中選擇“設(shè)計(jì)”,打開stu_table數(shù)據(jù)表結(jié)構(gòu),如圖4-20所示。4.5表的索引步驟02:?jiǎn)螕艄ぞ邫谥械摹肮芾硭饕玩I”按鈕,如圖4-21所示;或者右擊Name字段,在彈出的快捷菜單中選擇“索引/鍵”,如圖4-22所示,打開“索引/鍵”對(duì)話框,如圖4-23所示。4.5表的索引4.5表的索引步驟03:?jiǎn)螕糇笙路降摹疤砑印卑粹o,一個(gè)名為“IX_News”的鍵被添加進(jìn)來,如圖4-24所示。名稱的前綴為IX是因?yàn)镾QLServer使用了一種規(guī)范命名系統(tǒng)。在“常規(guī)”分類的“列”欄中單擊“打開”按鈕,彈出“索引列”對(duì)話框,在“列名”欄選擇“Name”字段,“排序順序”默認(rèn)為升序,如圖4-25所示,單擊“確定”按鈕返回“索引/鍵”對(duì)話框。4.5表的索引步驟04:將索引名改為“IX_stu_Name”,這是一個(gè)規(guī)范的名稱。因?yàn)樵摍诒4娴氖菍W(xué)生的姓名,而這個(gè)姓名是有可能重復(fù)的,所以“是唯一的”欄中應(yīng)為“否”。保持“創(chuàng)建為聚集的”欄為“否”,因?yàn)楸舅饕荒鼙WC唯一,所以無法為聚集索引。至此一個(gè)索引就創(chuàng)建完成了,如圖4-26所示。單擊“關(guān)閉”按鈕。4.5表的索引對(duì)于本任務(wù)要?jiǎng)?chuàng)建的索引,可以使用以下語句:USEstudentCREATEINDEXIX_stu_Name索引名on表名(字段名)【例4-8】為學(xué)生數(shù)據(jù)表的Student_id字段創(chuàng)建聚集索引。打開查詢編輯器,輸入以下語句,會(huì)出現(xiàn)如圖4-27所示的提示。USE
student
--打開student數(shù)據(jù)庫CREATE
UNIQUECLUSTEREDINDEXix_student_idONstu_table(student_id) --對(duì)stu_table表的student_id字段創(chuàng)建聚集索引ix_student_id4.5表的索引解決辦法是在“對(duì)象資源管理器”中依次展開“數(shù)據(jù)庫”︱“student”︱“表”︱“dbo.stu_table”︱“索引”,右擊“PK_student_id”,通過快捷菜單命令刪除即可。接著執(zhí)行上述語句。結(jié)果如圖4-28所示。4.5表的索引使用系統(tǒng)存儲(chǔ)過程查看創(chuàng)建索引,語句如下,運(yùn)行結(jié)果如圖4-29所示。4.5表的索引【例4-9】為學(xué)生數(shù)據(jù)表的Name字段創(chuàng)建非聚集索引。打開查詢編輯器,輸入以下語句,會(huì)出現(xiàn)如圖4-30所示的提示信息,說明成功創(chuàng)建了非聚集行索引。可以使用SP_HELPINDEX語句查看結(jié)果。USE
student
--打開student數(shù)據(jù)庫CREATE
UNIQUENONCLUSTEREDINDEXix_nameONstu_table(name) --對(duì)stu_table表的name字段創(chuàng)建非聚集索引ix_name4.5表的索引【例4-10】為學(xué)生數(shù)據(jù)表的Class_id,Sex字段創(chuàng)建復(fù)合索引,索引的名稱是ix_class_sex。復(fù)合索引也叫組合索引,索引列是由多個(gè)列組成。復(fù)合索引可以是聚集索引也可以是非聚集索引。打開查詢編輯器,輸入以下語句,會(huì)出現(xiàn)如圖4-31所示的提示信息,說明成功創(chuàng)建了非聚集行索引。USE
student
--打開student數(shù)據(jù)庫CREATE
UNIQUENONCLUSTEREDINDEXix_card_birthONstu_table(card,birth) --對(duì)stu_table表的card,birth字段創(chuàng)建非聚集索引ix_card_birth4.5表的索引同樣,可以使用SP_HELPINDEX語句查看結(jié)果,結(jié)果如圖4-32所示。USE
student
--打開student數(shù)據(jù)庫GOSP_HELPINDEX'stu_table'4.5表的索引3.修改索引可以通過向?qū)薷乃饕部梢酝ㄟ^命令進(jìn)行修改,下面分別介紹這兩種方法。(1)通過向?qū)薷乃饕2襟E01:在“對(duì)象資源管理器”中打開“stu_table”數(shù)據(jù)表中的“索引”列表。右擊“IX_stu_Name”,在彈出的快捷菜單中選擇“重命名”,輸入索引名稱后按“Enter”鍵確認(rèn),索引名稱就修改成功了。步驟02:在“對(duì)象資源管理器”中打開“stu_table”數(shù)據(jù)表中的“索引”列表。雙擊“IX_stu_Name”,彈出“索引屬性”對(duì)話框,如圖4-33所示?!俺R?guī)”選項(xiàng)卡中列出了此索引的信息,可對(duì)其屬性進(jìn)行修改,修改后單擊“確定”按鈕,即完成對(duì)索引屬性的修改。4.5表的索引步驟03:若要修改索引所使用的列,可以單擊“添加”按鈕,彈出“選擇列”對(duì)話框,如圖4-34所示,勾選要添加的列,然后單擊“確定”按鈕。4.5表的索引4.5表的索引(2)通過命令修改索引??梢酝ㄟ^ALTERINDEX語句修改索引,基本語法格式如下:ALTERINDEXNameonTableRebuildDisable1)Name表示修改的索引名稱。2)Table表示表的名稱。3)Rebuild表示將索引重新生成。4)Disable表示要禁用這個(gè)索引。4.5表的索引例如,要重新生成索引IX_News_CreateDate,可以使用以下語句:ALTERINDEXIX_News_CreateDateon表名Rebuild例如,要禁用索引IX_News_CreateDate,可以使用以下語句:ALTERINDEXIX_News_CreateDateon表名Disable索引可以提高查詢效率,但是創(chuàng)建多個(gè)索引會(huì)浪費(fèi)空間。對(duì)此,可以將沒有必要的索引禁用,需要的時(shí)候再重新啟用。4.5表的索引【例4-11】對(duì)學(xué)生數(shù)據(jù)表的Class_id,Sex字段創(chuàng)建的復(fù)合索引ix_card_birth實(shí)行禁用。打開查詢編輯器,輸入以下語句,會(huì)出現(xiàn)如圖4-35所示的提示信息,說明成功禁止了索引。USEstudentALTERINDEXix_card_birthONstu_tableDisable4.5表的索引【例4-12】查詢視圖sys.indexes,該視圖文件中列數(shù)較多,為此篩選索引名稱列name和索引是否禁止列disable。打開查詢編輯器,輸入以下語句,結(jié)果如圖4-36所示。USEstudentSELECTname,is_disabledFROMsys.indexesWHEREis_disabled=14.5表的索引【例4-13】對(duì)學(xué)生數(shù)據(jù)表的Class_id,Sex字段創(chuàng)建的復(fù)合索引ix_card_birth重新生成。打開查詢編輯器,輸入以下語句,會(huì)出現(xiàn)如圖4-37所示的提示信息,說明已重新生成索引。USEstudentALTERINDEXix_card_birthONstu_tablerebuild4.5表的索引4.刪除索引當(dāng)不再需要某個(gè)索引時(shí),可以將其從數(shù)據(jù)庫中刪除,以釋放當(dāng)前所占用的磁盤空間。(1)通過向?qū)h除索引。步驟:在“對(duì)象資源管理器”中打開“News”數(shù)據(jù)表中的“索引”列表,右擊“IX_News”,在彈出的快捷菜單中選擇“刪除”,在彈出的“刪除對(duì)象”對(duì)話框中單擊“確定”按鈕,即可完成索引的刪除。(2)通過命令刪除索引??梢酝ㄟ^DROPINDEX語句刪除索引,其基本語法格式如下:DROPINDEXNameONTable1)Name表示刪除的索引名稱。2)Table表示表的名稱。對(duì)于本任務(wù)要?jiǎng)h除的索引,可以使用以下語句DROPINDEXIX_TABLE_CreateDateONTABLE4.5表的索引DROPINDEXIX_TABLE_CreateDateONTABLE1)Name表示刪除的索引名稱。2)Table表示表的名稱。對(duì)于本任務(wù)要?jiǎng)h除的索引,可以使用以下語句4.5表的索引【相關(guān)知識(shí)】索引的類型是指在SQLServer中存儲(chǔ)索引和數(shù)據(jù)的物理位置的方式。在表中可以創(chuàng)建不同類型的索引。索引可以在一個(gè)列上創(chuàng)建,稱為簡(jiǎn)單索引;也可以在多個(gè)列上創(chuàng)建,稱為組合索引。列所在的環(huán)境以及列中的數(shù)據(jù)決定了所使用的索引類型。1.聚集索引聚集索引定義了數(shù)據(jù)在表中存儲(chǔ)的物理順序。如果在聚集索引中定義了不止一個(gè)列,數(shù)據(jù)將依次按照指定的順序來存儲(chǔ)各列數(shù)據(jù)。一個(gè)表只能定義一個(gè)聚集索引,這是因?yàn)樗豢赡芡ㄟ^兩種不同的物理順序來存儲(chǔ)數(shù)據(jù)。當(dāng)數(shù)據(jù)插入時(shí),聚集索引會(huì)和要插入的數(shù)據(jù)一起放在指定的位置,就像在有很多書的書架上插入一本新書。如果將聚集索引應(yīng)用到一個(gè)會(huì)大量更新的列上,SQLServer會(huì)頻繁改變數(shù)據(jù)的物理位置,這樣會(huì)大量增加處理時(shí)間。由于聚集索引中包含了數(shù)據(jù)本身,提取數(shù)據(jù)時(shí)需要進(jìn)行的操作更少,所以也就更快。2.非聚集索引非聚集索引并不存儲(chǔ)數(shù)據(jù)本身。相反,非聚集索引只存儲(chǔ)指向數(shù)據(jù)的指針,這些指針就是索引鍵的一部分。在一個(gè)表中可以存在多個(gè)非聚集索引。非聚集索引可以與表分開保存。所以,在與表不同的文件組中創(chuàng)建非聚集索引,查詢和提取數(shù)據(jù)時(shí)可以提高速度。但是索引越多,在更新數(shù)據(jù)時(shí)SQLServer進(jìn)行索引修改所用的時(shí)間也就越長(zhǎng)。索引可以被定義為唯一的或非唯一的。唯一索引確保列中所保存的值在表中出現(xiàn)一次。SQLServer會(huì)自動(dòng)對(duì)帶有唯一索引的列強(qiáng)制其唯一性。如果試圖在列中插入已經(jīng)存在的值,就會(huì)報(bào)錯(cuò),操作就會(huì)失敗。當(dāng)SQLServer對(duì)唯一索引進(jìn)行查找時(shí),找到一個(gè)符合的數(shù)據(jù)之后就會(huì)停止搜索。4.5表的索引任務(wù)4.6添加數(shù)據(jù)4.6添加數(shù)據(jù)【任務(wù)描述】向數(shù)據(jù)表添加數(shù)據(jù)有兩種方式:一是通過圖形方式;二是通過命令方式。本任務(wù)將講解如何向表添加數(shù)據(jù)?!救蝿?wù)分析】建立好數(shù)據(jù)表結(jié)構(gòu)之后,便可向表中添加數(shù)據(jù)行,每個(gè)數(shù)據(jù)行即是一個(gè)記錄,若干記錄構(gòu)成數(shù)據(jù)表。完成該任務(wù)需要做到以下幾點(diǎn):(1)通過圖形方式向表中添加數(shù)據(jù)。(2)通過SQL語句添加數(shù)據(jù)。步驟02:添加數(shù)據(jù)之后按“Tab”鍵將光標(biāo)移動(dòng)到下一個(gè)字段,一個(gè)記錄填好之后光標(biāo)自動(dòng)移動(dòng)到下一個(gè)記錄,記錄會(huì)自動(dòng)保存到數(shù)據(jù)表里。2.使用SQL語句添加數(shù)據(jù)(1)添加一個(gè)完整記錄。添加語句的采用的是INSERT語句,其語法格式如下:INSERTINTO表名(列名1,列名2,......,列名n)VALUES(值1,值2,......值n)值與列之間的數(shù)據(jù)類型與個(gè)數(shù)是一一對(duì)應(yīng)的。例如,向stu_table插入表4-6所示的數(shù)據(jù)。4.6添加數(shù)據(jù)【任務(wù)實(shí)現(xiàn)】1.通過圖形方式添加數(shù)據(jù)步驟01:?jiǎn)?dòng)SSMS,在“對(duì)象資源管理器”中右擊“stu_table”數(shù)據(jù)表,在彈出的快捷菜單中細(xì)致性“編輯前200行”,打開信息編輯窗口,如圖4-39所示。單擊NULL所在位置添加數(shù)據(jù),如圖4-40所示。4.6添加數(shù)據(jù)具體語句如下:USEstudentINSERTINTOstu_tableVALUES(20200102,'欒琪',,
'計(jì)應(yīng)201',
'女',
'2001-11-11')運(yùn)行時(shí)系統(tǒng)會(huì)提示“1行受影響”,可使用SELECT語句查看結(jié)果,格式如下:SELECT*FROM表名4.6添加數(shù)據(jù)(2)添加一個(gè)記錄的某幾列。如果只對(duì)某幾列賦值,在插入數(shù)據(jù)時(shí)使用INSERT語句指定具體列名即可。例如,向stu_table插入學(xué)生的學(xué)號(hào)和姓名,其他情況未知,可使用如下語句:USEstudentINSERTINTOstu_table(Student_id,Name)VALUES(20200103,
'劉雙')執(zhí)行之后系統(tǒng)會(huì)提示“1行受影響”,其運(yùn)行結(jié)果如圖4-42所示。4.6添加數(shù)據(jù)使用SELECT語句查詢結(jié)果,語法格式如下:SELECT*FROMstu_table結(jié)果如圖4-43所示,可以看到其他字段均顯示NULL。4.6添加數(shù)據(jù)任務(wù)4.7修改數(shù)據(jù)4.7修改數(shù)據(jù)【任務(wù)描述】對(duì)于不符合要求的數(shù)據(jù)可以修改,有兩種修改方式:一是通過圖形方式;二是通過命令方式。【任務(wù)分析】若數(shù)據(jù)發(fā)生變化,不必刪除,可以直接修改,直到符合要求為止。完成該任務(wù)需要做到以下幾點(diǎn):(1)通過圖形方式修改數(shù)據(jù)。(2)通過SQL語句修改數(shù)據(jù)?!救蝿?wù)實(shí)現(xiàn)】1.通過圖形方式修改數(shù)據(jù)啟動(dòng)SSMS,在“對(duì)象資源管理器”中右擊“stu_table”數(shù)據(jù)表,在彈出的快捷菜單中選擇“編輯前200行”,打開信息編輯窗口,如圖4-44所示。單擊NULL所在位置修改第3個(gè)記錄的數(shù)據(jù)。4.7修改數(shù)據(jù)2.通過SQL語句修改數(shù)據(jù)可以使用UPDATE語句修改數(shù)據(jù)表中的數(shù)據(jù),其語法格式如下:UPDATE表名SET列名1=值1,列名2=值2,......WHERE條件4.7修改數(shù)據(jù)(1)不設(shè)定條件修改數(shù)據(jù)。如果UPDATE語句省略WHERE語句,不設(shè)定條件,默認(rèn)是修改全部數(shù)據(jù)。為了說明問題,增加一個(gè)入學(xué)時(shí)間字段Admission。使用以下語句將入學(xué)時(shí)間設(shè)定為2020-09-01。UPDATEstudentSETAdmission='2020-09-01'4.7修改數(shù)據(jù)通過SELECT語句查詢結(jié)果,如圖4-46所示。SELECT*FROMstu_table4.7修改數(shù)據(jù)通過SELECT語句查詢結(jié)果,格式如下:SELECT*FROMstu_table班級(jí)“計(jì)應(yīng)201”的入學(xué)時(shí)間更新為“2020-08-31”,如圖4-48所示。4.7修改數(shù)據(jù)(2)按照設(shè)定條件修改數(shù)據(jù)。根據(jù)WHERE語句給出的條件修改數(shù)據(jù)表,將班級(jí)“計(jì)應(yīng)201”的入學(xué)時(shí)間修改為“2020-08-31”,語句如下:UPDATEstu_tableSETAdmission='2020-08-31'WHEREClass_id='計(jì)應(yīng)201'運(yùn)行結(jié)果如圖4-47所示。4.7修改數(shù)據(jù)班級(jí)“計(jì)應(yīng)201”的入學(xué)時(shí)間更新為“2020-08-31”,如圖4-48所示。4.7修改數(shù)據(jù)(3)按照設(shè)定條件修改前n條記錄??梢允褂肨OP語句修改符合條件的前n條記錄,語法格式如下:UPDATETOP(n)表名SET列名1=值1,列名2=值2,......WHERE條件TOP(n)中的n是指前n條記錄,一般是一個(gè)整數(shù)。為說明問題,增加了以下記錄及字段:USEstudentUPDATETOP(2)stu_tableSETMemo='先報(bào)到'WHEREClass_id='計(jì)應(yīng)201'4.7修改數(shù)據(jù)執(zhí)行之后顯示兩行受影響。使用SELECT語句查詢結(jié)果,如圖4-49所示。對(duì)于班級(jí)“計(jì)應(yīng)201”的前兩條記錄,在Memo字段顯示“先報(bào)到”,其余不符合條件的記錄顯示空值。4.7修改數(shù)據(jù)(4)使用其他的表更新數(shù)據(jù)。如果一個(gè)表需要的數(shù)據(jù)是另外一個(gè)表的內(nèi)容,直接復(fù)制即可。例如,表1需要的數(shù)據(jù)正好是表2存儲(chǔ)的數(shù)據(jù),便可直接復(fù)制,語法如下:USE數(shù)據(jù)庫名UPDATE表名1SET列名1=值1,列名2=值2,......FROM表名2WHERE條件4.7修改數(shù)據(jù)上述語句的功能是用USE打開指定的數(shù)據(jù)庫,并使用UPDATE更新指定的數(shù)據(jù)表1,且按照WHERE限定的條件,將FROM指定的數(shù)據(jù)表2的數(shù)據(jù)復(fù)制到表1中,復(fù)制的格式以SET給出。為了說明上述語句,先創(chuàng)建一個(gè)學(xué)生成績(jī)表,如表4-7所示。4.7修改數(shù)據(jù)使用以下語句創(chuàng)建學(xué)生成績(jī)表:USEstudentCREATETABLEScore_table(Student_idintPRIMARYKEY,Namevarchar(10),Scoreint);執(zhí)行上述語句之后,再錄入student_id,其余字段不錄入,接著執(zhí)行如下語句:USEstudentUPDATEscore_tableSETscore_table.Name=stu_table.NameFROMstu_tableWHEREscore_table.student_id=stu_table.student_id4.7修改數(shù)據(jù)以上語句是使用stu_table表中的數(shù)據(jù)更新score_table表中的數(shù)據(jù),條件是score_table.student_id=stu_table.student_id,使用SET語句設(shè)置score_table.Name=stu_table.Name。使用SELECT語句查詢結(jié)果,如圖4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 13207-2025菠蘿罐頭質(zhì)量通則
- 2025年上海市復(fù)旦大學(xué)智能醫(yī)學(xué)研究院招聘周欣課題組行政助理崗位備考題庫及參考答案詳解一套
- 2025年中國(guó)郵政儲(chǔ)蓄銀行蘇州市分行信用卡直銷團(tuán)隊(duì)招聘?jìng)淇碱}庫及參考答案詳解一套
- 2025年威海市檢察機(jī)關(guān)公開招聘聘用制書記員31人備考題庫帶答案詳解
- 2025年北京協(xié)和醫(yī)院基本外科合同制科研助理招聘?jìng)淇碱}庫及答案詳解1套
- 2026年醫(yī)院組織結(jié)構(gòu)調(diào)整合同
- 2026年采空區(qū)合同
- 2025國(guó)家公務(wù)員國(guó)家稅務(wù)總局孝昌縣稅務(wù)局面試試題及答案
- 2025年欽州市靈山生態(tài)環(huán)境局關(guān)于向社會(huì)公開招聘工作人員的備考題庫及答案詳解1套
- 2025年張家港市南豐鎮(zhèn)人民醫(yī)院自主招聘編外合同制衛(wèi)技人員備考題庫及答案詳解一套
- 2025天津大學(xué)管理崗位集中招聘15人筆試備考重點(diǎn)題庫及答案解析
- 2026年人教版(2024)初中美術(shù)七年級(jí)上冊(cè)期末綜合測(cè)試卷及答案(四套)
- 供應(yīng)飯菜應(yīng)急預(yù)案(3篇)
- 2026年遼寧理工職業(yè)大學(xué)單招職業(yè)適應(yīng)性測(cè)試題庫及參考答案詳解
- 2026蘇州大學(xué)附屬第二醫(yī)院(核工業(yè)總醫(yī)院)護(hù)理人員招聘100人(公共基礎(chǔ)知識(shí))測(cè)試題帶答案解析
- 2026中國(guó)儲(chǔ)備糧管理集團(tuán)有限公司湖北分公司招聘33人筆試歷年題庫及答案解析(奪冠)
- 《馬原》期末復(fù)習(xí)資料
- 食品生產(chǎn)企業(yè)GMP培訓(xùn)大綱
- 《圖形創(chuàng)意與應(yīng)用》全套教學(xué)課件
- 科研成果評(píng)審專家意見模板
- 工程教育國(guó)際化路徑-洞察及研究
評(píng)論
0/150
提交評(píng)論