版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
實驗3表與視圖的基礎(chǔ)操作實驗3表與視圖的基礎(chǔ)操作實驗3表與視圖的基礎(chǔ)操作實驗3表與視圖的基礎(chǔ)操作實驗3表與視圖的基礎(chǔ)操作實驗3表與視圖的基礎(chǔ)操作實驗3表與視圖的基礎(chǔ)操作實驗示例
3.1創(chuàng)建和修改表1、創(chuàng)建表SQLServer2005提供了兩種方法創(chuàng)建數(shù)據(jù)庫表,第一種方法是利用ManagementStudio交互式創(chuàng)建表;另一種方法是利用T-SQL語句中的CREATETABLE命令創(chuàng)建表。(1)利用ManagementStudio創(chuàng)建表
實驗3表與視圖的基礎(chǔ)操作實驗3表與視圖的基礎(chǔ)操作實驗示例--
3.1創(chuàng)建和修改表(1)利用ManagementStudio創(chuàng)建表實驗3表與視圖的基礎(chǔ)操作圖3-2創(chuàng)建表結(jié)構(gòu)對話框?qū)嶒炇纠?-
3.1創(chuàng)建和修改表(1)利用ManagementStudio創(chuàng)建表實驗3表與視圖的基礎(chǔ)操作圖3-3表設(shè)計器菜單與表設(shè)計器工具欄實驗3表與視圖的基礎(chǔ)操作實驗示例--
3.1創(chuàng)建和修改表(2)利用CREATETABLE命令創(chuàng)建表。實驗3表與視圖的基礎(chǔ)操作例3.1創(chuàng)建一個雇員信息表的createtable命令如下:CREATETABLEemployee(empidintnotnullprimarykeyclustered,namevarchar(20)NOTNULL,sexchar(2)NULL,birthdaydatetimenull,hire_datedatetimeNOTNULLDEFAULT(getdate()),professional_titlevarchar(10)null,salarymoneynullcheck(salaryisnullorsalary>=450),memontextnull)實驗示例--
3.1創(chuàng)建和修改表(2)利用CREATETABLE命令創(chuàng)建表。實驗3表與視圖的基礎(chǔ)操作例3.2創(chuàng)建一個學(xué)生信息表的createtable命令如下:CREATETABLEstudent(snochar(8)NOTNULLPRIMARYKEY,snamechar(20)NOTNULL,sclasschar(10)NULLDEFAULT('本科'),ssexchar(2)NULLDEFAULT('男')CHECK(ssex='男'orssex='女'),sdhvarchar(14)NULL,scsrqdatetimeNULL,srxrqdatetimeNULL,saddrvarchar(50)NULL,smemovarchar(200)NULL,spnochar(4)NULL,csnochar(4)NULL,CONSTRAINTFK_student_classFOREIGNKEY(csno)REFERENCESclass(csno),CONSTRAINTFK_student_specialityFOREIGNKEY(spno)REFERENCESspeciality(spno));實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作(3)臨時表的創(chuàng)建以下示例將創(chuàng)建一個table變量,用于儲存UPDATE語句的OUTPUT子句中指定的值。在它后面的兩個SELECT語句返回@MyTableVar中的值以及Employee表中更新操作的結(jié)果。USEAdventureWorks;DECLARE@MyTableVartable(EmpIDintNOTNULL,OldVacationHoursint,NewVacationHoursint,ModifiedDatedatetime);UPDATETOP(10)HumanResources.EmployeeSETVacationHours=VacationHours*1.25OUTPUTINSERTED.EmployeeID,DELETED.VacationHours,INSERTED.VacationHours,INSERTED.ModifiedDateINTO@MyTableVar;SELECTEmpID,OldVacationHours,NewVacationHours,ModifiedDateFROM@MyTableVar;--顯示table變量所含有的記錄集GOSELECTTOP(10)EmployeeID,VacationHours,ModifiedDateFROMHumanResources.Employee;--觀察修改觸發(fā)器作用后ModifiedDate的值實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作(4)創(chuàng)建、重命名、使用及刪除用戶定義的數(shù)據(jù)類型1)創(chuàng)建用戶定義的數(shù)據(jù)類型。SQLSERVER2005利用CREATETYPE命令來創(chuàng)建別名數(shù)據(jù)類型或用戶自定義類型,替代原SP_addtype系統(tǒng)存儲過程。其語法:CREATETYPE[schema_name.]type_name{FROMbase_type[(precision[,scale])][NULL|NOTNULL]|EXTERNALNAMEassembly_name[.class_name]}[;]使用T-SQL語句創(chuàng)建一個名為nametype、數(shù)據(jù)長度為8、定長字符型、不允許為空的自定義數(shù)據(jù)類型。USEjxgl--以下命令的原命令ExecSP_addtypenametype,'char(8)','notnull'CREATETYPEnametypeFROMchar(8)notnull2)重命名用戶定義的數(shù)據(jù)類型。使用系統(tǒng)存儲過程sp_rename能重命名用戶自定義的數(shù)據(jù)類型:ExecSP_renamenametype,domain_name實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作(4)創(chuàng)建、重命名、使用及刪除用戶定義的數(shù)據(jù)類型3)使用自定義數(shù)據(jù)類型。一旦創(chuàng)建了用戶定義的數(shù)據(jù)類型后,創(chuàng)建表結(jié)構(gòu)時,能如使用系統(tǒng)標(biāo)準(zhǔn)類型一樣使用自定義的類型。如:創(chuàng)建學(xué)生表的命令為:CREATETABLEST(snochar(5)primarykey,snamedomain_name)4)刪除用戶定義的數(shù)據(jù)類型。刪除用戶自定義類型的命令DROPTYPE,其語法:DROPTYPE[schema_name.]type_name[;]例如:DROPTYPEdomain_name--DROPTABLEST,需要先刪除表ST的使用系統(tǒng)存儲過程sp_droptype也能刪除用戶自定義的數(shù)據(jù)類型。Execsp_droptypedomain_name實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作2、修改表(1)在ManagementStudio中交互方式修改表實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作2、修改表(1)在ManagementStudio中交互方式修改表圖3-4表設(shè)計器菜單與表設(shè)計器工具欄實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作2、修改表(2)T-SQL命令方式修改表修改表相關(guān)的T-SQL命令主要有:①表結(jié)構(gòu)的修改命令:ALTERTABLE,其語法為:ALTERTABLE[database_name.[schema_name].|schema_name.]table_name{ALTERCOLUMNcolumn_name{[type_schema_name.]type_name[({precision[,scale]|max|xml_schema_collection})][NULL|NOTNULL][COLLATEcollation_name]|{ADD|DROP}{ROWGUIDCOL|PERSISTED}}|[WITH{CHECK|NOCHECK}]ADD{<column_definition>|<computed_column_definition>|<table_constraint>}[,...n]|DROP{[CONSTRAINT]constraint_name[WITH(<drop_clustered_constraint_option>[,...n])]|COLUMNcolumn_name}[,...n]|[WITH{CHECK|NOCHECK}]{CHECK|NOCHECK}CONSTRAINT{ALL|constraint_name[,...n]}|{ENABLE|DISABLE}TRIGGER{ALL|trigger_name[,...n]}|SWITCH[PARTITIONsource_partition_number_expression]TO[schema_name.]target_table[PARTITIONtarget_partition_number_expression]}[;]實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作2、修改表(2)T-SQL命令方式修改表例3.3添加新列,本例將添加一個允許空值的列,而且沒有通過DEFAULT定義提供的值。在該新列中,每一行都將有NULL值。CREATETABLEtb1(column_aINT);ALTERTABLEtb1ADDcolumn_bVARCHAR(20)NULL;EXECsp_helptb1;例3.4刪除列,本例將修改一個表以刪除列。ALTERTABLEtb1DROPCOLUMNcolumn_b;--后面例題要用column_b,請刪除后能再添加本列例3.5更改列的數(shù)據(jù)類型,本例將表中列的數(shù)據(jù)類型由INT更改為DECIMAL。ALTERTABLEtb1ALTERCOLUMNcolumn_aDECIMAL(5,2);例3.6添加包含約束的列,本例給列column_b添加一個UNIQUE約束。ALTERTABLEtb1ADDCONSTRAINTtb1_uniqueUNIQUE(column_b);實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作2、修改表(2)T-SQL命令方式修改表例3.7在現(xiàn)有列中添加一個未經(jīng)驗證的CHECK約束,本例將在表中的現(xiàn)有列中添加一個約束。該列包含一個違反約束的值。因此,將使用WITHNOCHECK以避免根據(jù)現(xiàn)有行驗證該約束,從而允許添加該約束。ALTERTABLEtb1WITHNOCHECKADDCONSTRAINTtb1_checkCHECK(column_a>1);EXECsp_helptb1;例3.8在現(xiàn)有列中添加一個DEFAULT約束,本例將創(chuàng)建一個包含兩列的表,在第一列插入一個值,另一列保持為NULL。然后在第二列中添加一個DEFAULT約束。驗證是否已應(yīng)用了默認(rèn)值,另一個值是否已插入第一列以及是否已查詢表。ALTERTABLEtb1ADDCONSTRAINTcol_b_defDEFAULT50FORcolumn_a;INSERTINTOtb1(column_b)VALUES('10');SELECT*FROMtb1;實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作2、修改表(2)T-SQL命令方式修改表②重命名命令:SP_RENAME在當(dāng)前數(shù)據(jù)庫中更改用戶創(chuàng)建對象的名稱。此對象可以是表、索引、列、別名數(shù)據(jù)類型或.NETFramework公共語言運行時(CLR)用戶定義類型。其語法為:SP_RENAME[@objname=]'object_name',[@newname=]'new_name'[,[@objtype=]'object_type']例3.16重命名表,本例將SalesTerritory表重命名為SalesTerr,然后再恢復(fù)為SalesTerritory。EXECSP_RENAME'Sales.SalesTerritory','SalesTerr';GOEXECSP_RENAME'Sales.SalesTerr','SalesTerritory';--再改還來實驗示例--
3.1創(chuàng)建和修改表實驗3表與視圖的基礎(chǔ)操作2、修改表(2)T-SQL命令方式修改表例3.17重命名列,本例將SalesTerritory表中的TerritoryID列重命名為TerrID,查看后再恢復(fù)原列名。EXECSP_RENAME'Sales.SalesTerritory.TerritoryID','TerrID','COLUMN';SELECT*FROMSales.SalesTerritoryGOEXECSP_RENAME'Sales.SalesTerritory.TerrID','TerritoryID','COLUMN';③更改表的架構(gòu):ALTERSCHEMAALTERSCHEMA實現(xiàn)在架構(gòu)之間傳輸對象,語法為:ALTERSCHEMAschema_nameTRANSFERobject_name例3.18本例通過將表Address從架構(gòu)Person傳輸?shù)紿umanResources架構(gòu)來修改該架構(gòu),然后再恢復(fù)回來。USEAdventureWorks;--如下把表Address從架構(gòu)Person傳輸?shù)紿umanResources架構(gòu)ALTERSCHEMAHumanResourcesTRANSFERPerson.Address;GO--如下把表Address從架構(gòu)HumanResources傳輸回Person架構(gòu),恢復(fù)原樣ALTERSCHEMAPersonTRANSFERHumanResources.Address;實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作1、查看表格元信息在數(shù)據(jù)庫中創(chuàng)建表之后,可能需要查找有關(guān)表屬性的信息(例如,列的名稱、數(shù)據(jù)類型或其索引的性質(zhì)),但最重要的是需要查看表中的數(shù)據(jù)。還可以顯示表的依賴關(guān)系來確定哪些對象(如視圖、存儲過程和觸發(fā)器)是由表決定的。在更改表時,相關(guān)對象可能會受到影響。查看表的定義:sp_help;查看表中的數(shù)據(jù):SELECT命令;獲取有關(guān)表的信息:SELECT*FROMsys.tables;獲取有關(guān)表列的信息:SELECT*FROMsys.columns;查看表的依賴關(guān)系:SELECT*FROMsys.sql_dependencies。實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作1、查看表格元信息
COLUMNPROPERTY返回有關(guān)列或過程參數(shù)的信息,其語法:COLUMNPROPERTY(id,column,property),其參數(shù):id一個表達式,
其中包含表或過程的標(biāo)識符(ID);column一個表達式,其中包含列或參數(shù)的名稱;property一個表達式,其中包含要為id返回的信息,具體略。例3.19本例返回LastName列的長度。SELECTCOLUMNPROPERTY(OBJECT_ID('Person.Contact'),'LastName','PRECISION')AS'Col_Length';實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作2、查看表格數(shù)據(jù)信息(1)查看表格的定義:在如上修改表結(jié)構(gòu)時即能查看到表的定義信息,除此外,如圖3-5所示,能查看到表的創(chuàng)建信息:在表上鼠標(biāo)右鍵菜單→“編寫表腳本為”→“CREATE到”→“新查詢編輯器窗口”,在新打開的查詢編輯器窗口中能看到生成的一系列命令,其中“CREATE”命令能看到表的結(jié)構(gòu)定義信息。還有系統(tǒng)存儲過程sp_help也能查看到關(guān)于表的信息。實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作2、查看表格數(shù)據(jù)信息圖3-5查看表創(chuàng)建腳本實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作2、查看表格數(shù)據(jù)信息(2)查看與維護表格中的數(shù)據(jù):在“對象資源管理器”中選中某表,鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“打開表”,即可網(wǎng)格方式查看表格中的數(shù)據(jù)。如圖3-6所示,還能直接修改表中數(shù)據(jù),能在表的最后交互式添加記錄,在選中一行或多行時,彈出快捷菜單能實現(xiàn)選中記錄的刪除、復(fù)制等操作。實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作2、查看表格數(shù)據(jù)信息圖3-6添加、編輯、刪除表記錄實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作2、查看表格數(shù)據(jù)信息(3)查看表格與其它數(shù)據(jù)庫對象的依賴關(guān)系:打開某數(shù)據(jù)庫的“數(shù)據(jù)庫關(guān)系圖”,能直觀地創(chuàng)建某表與其它表間的依賴關(guān)系。如圖3-7是SC、S與C的依賴關(guān)系。還可以在表上鼠標(biāo)右鍵菜單→“查看依賴關(guān)系”菜單,在出現(xiàn)的“對象依賴關(guān)系”對話框中查看某表依賴的對象或依賴于的對象,圖略。實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作2、查看表格數(shù)據(jù)信息圖3-7SC、S與C的依賴關(guān)系實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作3、對表查詢SQLServer2005在ManagementStudio中交互式查詢的功能合并于“打開表”功能。右鍵單擊某表,從彈出的快捷菜單中選擇“打開表”,出現(xiàn)打開的表如圖3-6。同時ManagementStudio中出現(xiàn)“查詢設(shè)計器”菜單與“查詢設(shè)計器”工具欄,操作時還能利用打開表的快捷菜單,操作方法如圖3-8所示。實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作3、對表查詢圖3-8查詢表的菜單、工具欄與快捷菜單實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作3、對表查詢來舉個查詢的例子,先打開S表;在出現(xiàn)的“查詢設(shè)計器”工具欄上依次按“顯示關(guān)系圖窗格”按鈕、“顯示SQL窗格”按鈕、“顯示條件窗格”按鈕;在關(guān)系圖窗格中按鼠標(biāo)右鍵,在彈出菜單中單擊“添加表”菜單,在添加表對話框中選SC表,兩表因已設(shè)定了參照關(guān)系,自動顯示出關(guān)系;在條件窗格中設(shè)置顯示列、篩選條件、排序要求等等;SQL窗格中能自動顯示出對應(yīng)的SQL命令;按“執(zhí)行SQL”工具條按鈕;結(jié)果窗格中顯示出要查詢的結(jié)果。最后的結(jié)果與窗格布局情況請參見圖3-9。不妨自己來學(xué)習(xí)實踐各種查詢操作。實驗示例
3.2表信息的交互式查詢與維護實驗3表與視圖的基礎(chǔ)操作3、對表查詢圖3-9查詢結(jié)果表與四個窗格的布局實驗示例3.3刪除表實驗3表與視圖的基礎(chǔ)操作有些情況下必須刪除表:例如,要在數(shù)據(jù)庫中實現(xiàn)一個新的設(shè)計或釋放空間時。刪除表后,該表的結(jié)構(gòu)定義、數(shù)據(jù)、全文索引、約束和索引都從數(shù)據(jù)庫中永久刪除;原來存儲表及其索引的空間可用來存儲其它表。如果要刪除通過FOREIGNKEY和UNIQUE或PRIMARYKEY約束相關(guān)聯(lián)的表,則必須先刪除具有FOREIGNKEY約束的表。如果要刪除FOREIGNKEY約束中引用的表但不能刪除整個外鍵表,則必須刪除FOREIGNKEY約束。如果要刪除表中的所有數(shù)據(jù)但不刪除表本身,則可以截斷該表??墒褂肨RUNCATETABLE刪除所有行。實驗示例3.3刪除表實驗3表與視圖的基礎(chǔ)操作(1)利用ManagementStudio刪除表在ManagementStudio的對象資源管理器中,展開指定的數(shù)據(jù)庫和表,用右鍵單擊要刪除的表,從快捷菜單中選擇“刪除”菜單項,則會出現(xiàn)刪除對象對話框,單擊“確定”按鈕,即可真正刪除選定的表。(2)利用DROPTABLE語句刪除表DROPTABLE語句可以刪除一個表和表中的數(shù)據(jù)及其與表有關(guān)的所有索引、觸發(fā)器、約束、和權(quán)限規(guī)范等。DROPTABLE語句的語法形式為:DROPTABLE<table_name>例3.20刪除表employee的命令為:DROPTABLEemployee。實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作在SQLServer2005中,有三種視圖,它們是標(biāo)準(zhǔn)視圖、索引視圖和分區(qū)視圖。其中標(biāo)準(zhǔn)視圖,它組合了一個或多個表中的數(shù)據(jù),使用它可以獲得大多數(shù)好處,包括將重點放在特定數(shù)據(jù)上及簡化對數(shù)據(jù)的操作等。1、創(chuàng)建視圖(1)利用ManagementStudio創(chuàng)建與修改視圖在ManagementStudio的對象資源管理器中,展開指定的數(shù)據(jù)庫,點按“視圖”,按鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“新建視圖”菜單項,能出現(xiàn)如圖3-10所示的新建視圖對話框,在該對話框中,通過選定一個或多個表,指定多個字段,設(shè)定連接或限定條件,最后按保存工具按鈕,給視圖取個名稱,就完成了視圖的創(chuàng)建,請參閱圖3-11。在ManagementStudio的對象資源管理器中修改視圖,只要找到該視圖后,按鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“修改”菜單項,均可即時修改,如圖3-11。實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作圖3-10設(shè)計視圖前選定表實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作圖3-11交互式設(shè)計視圖實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作(2)使用T-SQL命令創(chuàng)建數(shù)據(jù)庫創(chuàng)建視圖的T-SQL命令是CREATEVIEW,掌握該命令的語法結(jié)構(gòu)后,可直接書寫命令創(chuàng)建視圖。①利用CREATEVIEW創(chuàng)建視圖。創(chuàng)建一個虛擬表,該表以另一種方式表示一個或多個表中的相關(guān)數(shù)據(jù)。CREATEVIEW必須是查詢批處理中的第一條語句。CREATEVIEW語法:CREATEVIEW[schema_name.]view_name[(column[,...n])][WITH<view_attribute>[,...n]]ASselect_statement[WITHCHECKOPTION][;]實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作例3.21創(chuàng)建視圖View_S_SC,要求顯示出學(xué)生的學(xué)號、姓名、課程號與該課程成績。其命令為:CREATEVIEWView_S_SCasselectS.Sno,S.SN,S.SEX,SC.Cno,SC.SCOREfromSinnerjoinSConS.Sno=SC.Sno例3.22本示例使用WITHENCRYPTION、WITHCHECKOPTION選項,創(chuàng)建加密并允許進行數(shù)據(jù)修改的視圖。PurchaseOrderDetail為采購訂單明細(xì)表,其中ReceivedQty為實際從供應(yīng)商收到的數(shù)量,RejectedQty為檢查時拒收的數(shù)量(一般為0),DueDate為到貨日期。USEAdventureWorks;--缺省時均認(rèn)為使用AdventureWorks數(shù)據(jù)庫IFOBJECT_ID('PurchaseOrderReject','view')ISNOTNULLDROPVIEWPurchaseOrderReject;CREATEVIEWPurchaseOrderRejectWITHENCRYPTIONASSELECTPurchaseOrderID,ReceivedQty,RejectedQtyFROMPurchasing.PurchaseOrderDetailWHERERejectedQty/ReceivedQty>0ANDDueDate>'06/30/2001'WITHCHECKOPTION;實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作例3.23使用分區(qū)數(shù)據(jù),本示例將使用名稱分別為SUPPLY1、SUPPLY2、SUPPLY3和SUPPLY4的表。這些表對應(yīng)于位于四個國家/地區(qū)的四個辦事處的供應(yīng)商表。--創(chuàng)建并插入記錄CREATETABLESUPPLY1(SIDINTPRIMARYKEYCHECK(SIDBETWEEN1and150),supplierCHAR(50));CREATETABLESUPPLY2(SIDINTPRIMARYKEYCHECK(SIDBETWEEN151and300),supplierCHAR(50));CREATETABLESUPPLY3(SIDINTPRIMARYKEYCHECK(SIDBETWEEN301and450),supplierCHAR(50));CREATETABLESUPPLY4(SIDINTPRIMARYKEYCHECK(SIDBETWEEN451and600),supplierCHAR(50));INSERTSUPPLY1VALUES('1','加利福尼亞');--其它插入記錄略INSERTSUPPLY2VALUES('231','遠(yuǎn)東');--其它插入記錄略INSERTSUPPLY3VALUES('321','歐洲集團');--其它插入記錄略INSERTSUPPLY4VALUES('475','印度');--其它插入記錄略GOCREATEVIEWall_supplier_viewAS--組合各地區(qū)供應(yīng)商構(gòu)成分區(qū)視圖SELECT*FROMSUPPLY1UNIONALLSELECT*FROMSUPPLY2UNIONALLSELECT*FROMSUPPLY3UNIONALLSELECT*FROMSUPPLY4;實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作②通過模板創(chuàng)建視圖對CREATEVIEW命令不熟悉的話,還可利用SQLSERVER2005提供的命令模板,產(chǎn)生創(chuàng)建視圖的命令腳本,修改參數(shù)后執(zhí)行即可。方法為:①在標(biāo)準(zhǔn)工具欄上單擊模板資源管理器按鈕,在ManagementStudio右邊,能出現(xiàn)的模板資源管理器;②展開“View”節(jié)點。其中包含了關(guān)于視圖的一些模板如:CreateIndexedView、CreateView、DropView等;③雙擊模板“CreateView”,出現(xiàn)“連接到數(shù)據(jù)庫引擎”對話框,指定連接信息后按“連接”按鈕,在打開的新查詢窗口中已生成了創(chuàng)建標(biāo)準(zhǔn)視圖腳本。腳本中含有待替換的參數(shù);④在“SQL編輯器”工具條上按“指定模板參數(shù)的值”工具按鈕n。點選后出現(xiàn)“指定模板參數(shù)的值”對話框,給各參數(shù)指定值后,按“確定”按鈕,仔細(xì)確認(rèn)后可按按鈕分析代碼的語法結(jié)構(gòu),按按鈕執(zhí)行腳本,順利的話一個你要的視圖好了。實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作2、使用視圖視圖的使用基本同基本表的使用,不同處是有些視圖是不可更新的,只能對這些不可更新視圖作查詢操作,不能通過它們更新數(shù)據(jù)。通過視圖修改基表的數(shù)據(jù),修改方式與通過UPDATE、INSERT和DELETE語句或使用bcp實用工具和BULKINSERT語句修改表中數(shù)據(jù)的方式是一樣的。但是,以下限制應(yīng)用于更新視圖,但不應(yīng)用于表:①任何修改(包括UPDATE、INSERT和DELETE語句)都只能引用一個基表的列。②視圖中被修改的列必須直接引用表列中的基礎(chǔ)數(shù)據(jù)。它們不能通過其它方式派生,例如通過:聚合函數(shù)(AVG、COUNT、SUM、MIN、MAX、GROUPING、STDEV、STDEVP、VAR和VARP)計算,不能通過表達式并使用列計算出其它列。使用集合運算符(UNION、UNIONALL、CROSSJOIN、EXCEPT和INTERSECT)形成的列得出的計算結(jié)果不可更新。③正在修改的列不受GROUPBY、HAVING或DISTINCT子句的影響。實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作2、使用視圖圖3-12交互式打開視圖后,顯示的視圖記錄如圖3-13,通過圖3-13所示的視圖能直接更新數(shù)據(jù),更新的數(shù)據(jù)將最終更新到視圖View_S_SC基于的基本表S或SC中,請嘗試。實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作圖3-12交互式打開視圖實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作圖3-13打開的視圖實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作2、使用視圖可以象對基本表一樣,通過命令操作可更新視圖View_S_SC。如下是舉例的命令序列,圖3-14是其運行結(jié)果。select*fromSCwheresno='S2'andcno='C3'--先查詢S2學(xué)生選課程C3的記錄情況。select*fromView_S_SCwheresno='S2'--通過視圖查詢S2學(xué)生的信息及選課情況。--通過視圖修改S2學(xué)生選課程C3的成績,改為82。updateView_S_SCsetscore=82wheresno='S2'andcno='C3'--再次通過視圖查詢S2學(xué)生的信息及選課情況,應(yīng)該發(fā)現(xiàn)選課程C3的成績改變了。select*fromView_S_SCwheresno='S2'select*fromSCwheresno='S2'andcno='C3'--能發(fā)現(xiàn)真正的成績修改在SC表中發(fā)生了。實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作3、視圖定義信息的查閱(1)使用ManagementStudio查閱視圖定義信息實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作3、視圖定義信息的查閱(1)使用ManagementStudio查閱視圖定義信息圖3-15查看編寫視圖的腳本實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作實驗示例3.4視圖的創(chuàng)建與使用實驗3表與視圖的基礎(chǔ)操作4、視圖的修改與刪除例如,AdventureWorks數(shù)據(jù)庫中的employees_view視圖的定義為:CREATEVIEWemployees_viewASSELECTEmployeeIDFROMHumanResources.Employee。--存儲過程employees_proc的定義為:(基于視圖創(chuàng)建存儲過程)CREATEPROCemployees_procASSELECTEmployeeIDfromemployees_view--將employees_view修改為檢索LastName列而不是EmployeeID:ALTERVIEWemployees_viewASSELECTLastNameFROMPerson.ContactcJOINHumanResources.EmployeeeONc.ContactID=e.ContactID此時執(zhí)行employ
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年秋蘇少版(2024)初中美術(shù)七年級上冊期末知識點復(fù)習(xí)卷及答案(三套)
- 氣道護理中的風(fēng)險評估
- 產(chǎn)后傷口護理與注意事項
- 埃博拉出血熱患者的家庭護理和家庭照顧
- 大豐市小海中學(xué)高二生物三同步課程講義第講激素的調(diào)節(jié)(三)
- 2025年辦公區(qū)域網(wǎng)絡(luò)布線協(xié)議
- 瓷磚鋪貼施工技術(shù)規(guī)程
- 城市更新項目評價
- 2025年共同富裕背景下農(nóng)村基礎(chǔ)設(shè)施管護
- 2025年中國運動康復(fù)行業(yè)市場研究報告 碩遠(yuǎn)咨詢
- 2025年煙花爆竹經(jīng)營單位安全管理人員考試試題及答案
- 旋挖鉆機地基承載力驗算2017.7
- 24春國家開放大學(xué)《知識產(chǎn)權(quán)法》形考任務(wù)1-4參考答案
- 小米員工管理手冊
- 自身免疫性肝病的診斷和治療
- 國家開放大學(xué)化工節(jié)能課程-復(fù)習(xí)資料期末復(fù)習(xí)題
- xx鄉(xiāng)鎮(zhèn)衛(wèi)生院重癥精神病管理流程圖
- 2023年印江縣人民醫(yī)院緊缺醫(yī)學(xué)專業(yè)人才招聘考試歷年高頻考點試題含答案解析
- 安徽綠沃循環(huán)能源科技有限公司12000t-a鋰離子電池高值資源化回收利用項目(重新報批)環(huán)境影響報告書
- 公路工程標(biāo)準(zhǔn)施工招標(biāo)文件第八章-工程量清單計量規(guī)則(2018年版最終稿)
- DB44-T 2197-2019配電房運維服務(wù)規(guī)范-(高清現(xiàn)行)
評論
0/150
提交評論