版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第二章系統(tǒng)數(shù)據(jù)類型介紹p24創(chuàng)建用戶自定義數(shù)據(jù)類型:sp_addtypetype_name,phystype[(length)|([precision,scale]),null|notnull|identity]查看,重命名,刪除用戶定義的數(shù)據(jù)類型:sp_h(yuǎn)elptype_name查看用戶自定義數(shù)據(jù)類型的特性;sp_renametype_name給用戶自定義數(shù)據(jù)類型重新命名;sp_droptypetype_name刪除一個已經(jīng)定義且未被使用的用戶自定義數(shù)據(jù)類型。定義局部變量:DECLAER{@local_variabledata_type}[…n]設(shè)定局部變量的值,必須使用SELECT命令或者SET命令。其語法形式為:SET{{@local_variable=expression}或者SELECT{@local_variable=expression}[,...n]全局變量:全局變量分為兩類,一是與SQLServer連接有關(guān)的全局變量,如@@rowcount表達(dá)受最近一個語句影響的行數(shù);二是關(guān)于系統(tǒng)內(nèi)部信息有關(guān)的全局變量,如@@version表達(dá)SQLServer的版本號。SQLServer運(yùn)算符的優(yōu)先級別數(shù)學(xué)函數(shù):字符串函數(shù):日期函數(shù):轉(zhuǎn)換函數(shù):系統(tǒng)函數(shù):聚合函數(shù):批和腳本:批解決:包含一個或多個T-SQL語句的組,它將一次性地發(fā)送到SQLServer中執(zhí)行,用GO來告知SQLServer一批T-SQL語句的結(jié)束。腳本就是一系列順序提交的批。流程控制:各語句的作用:BEGIN…END用來設(shè)定一程序塊IF…ELSE用來判斷當(dāng)某一條件成立時執(zhí)行某段程序,條件不成立時執(zhí)行另一段程序。CASE語句為多分支語句WHILE…CONTINUE…BREAK循環(huán)語句WAITFOR語句用來暫時停止程序執(zhí)行GOTO語句用來改變程序執(zhí)行的流程RETURN語句用于結(jié)束當(dāng)前程序(所在的批、存儲過程和觸發(fā)器)的執(zhí)行,返回到上一個調(diào)用它的程序或其它程序。PRINT語句的作用是在屏幕上顯示用戶信息。RAISERROR語句的作用是將錯誤信息顯示在屏幕上,同時也可以記錄在日記中。各語句的形式:IF…ELSE語句的語法形式:IFBoolean_expression?
sql_statement|statement_block?[ELSE
sql_stat(yī)ement|statement_block]BEGIN…END語句的語法形式:BEGIN
sql_statement
|statement_block
?ENDCase語句:見p37WHILE…CONTINUE…BREAK語法形式:WHILEBoolean_expression?
sql_statement|statement_block?
[BREAK]?
sql_statement|statement_block
[CONTINUE]WAITFOR語句的語法形式為:WAITFOR{DELAY'time'|TIME'time'}RETURN語句的語法形式為:RETURN[integer_expression]GOTO和RAISERROR見p39-40第三章數(shù)據(jù)庫的邏輯結(jié)構(gòu)從邏輯角度,SQLServer2023將數(shù)據(jù)庫組織成為各種數(shù)據(jù)庫對象,如數(shù)據(jù)表、視圖、索引、數(shù)據(jù)類型、存儲過程、觸發(fā)器等。(各對象的定義見p48)。數(shù)據(jù)庫的物理結(jié)構(gòu)從物理角度,SQLServer2023數(shù)據(jù)庫以多種操作系統(tǒng)文獻(xiàn)形式存儲在計(jì)算機(jī)硬盤上,一般一個數(shù)據(jù)庫被組織成數(shù)據(jù)文獻(xiàn)和日記文獻(xiàn)兩種類型的文獻(xiàn)。重要數(shù)據(jù)文獻(xiàn)(.mdf),該文獻(xiàn)包含數(shù)據(jù)庫的啟動信息,并用于存儲數(shù)據(jù)次要數(shù)據(jù)文獻(xiàn)(.ndf),它具有不能置于重要數(shù)據(jù)文獻(xiàn)中的數(shù)據(jù),可以有多個,并分布在不同磁盤上。日記文獻(xiàn)(.ldf),記錄了用戶對數(shù)據(jù)庫的所有操作。文獻(xiàn)組文獻(xiàn)組是數(shù)據(jù)庫中數(shù)據(jù)文獻(xiàn)的邏輯組合。每個數(shù)據(jù)庫有一個重要文獻(xiàn)組。此文獻(xiàn)組包含重要數(shù)據(jù)文獻(xiàn)和未放入其他文獻(xiàn)組的所有次要文獻(xiàn)??梢詣?chuàng)建用戶定義的文獻(xiàn)組,用于將數(shù)據(jù)文獻(xiàn)集合起來,以便于管理、數(shù)據(jù)分派和放置。數(shù)據(jù)文獻(xiàn)的組織方式:數(shù)據(jù)文獻(xiàn)由若干個大小為64KB的區(qū)組成,每個區(qū)由8個8KB大小的連續(xù)空間組成,這些連續(xù)空間被成為數(shù)據(jù)頁。在數(shù)據(jù)頁上,數(shù)據(jù)行緊接著頁首按順序存放。頁尾有一個行偏移表,表中頁上的每一行都有一個條目,每個條目記錄那一行的第一個字節(jié)與頁首的距離。SQLServer2023有兩種區(qū),統(tǒng)一區(qū)和混合區(qū)。統(tǒng)一區(qū)屬于單個數(shù)據(jù)庫對象所有,區(qū)所有的數(shù)據(jù)頁只能由擁有該區(qū)的對象使用;混合區(qū)最多可以由8個邏輯對象來使用。事務(wù)日記:事務(wù)日記是數(shù)據(jù)庫中已經(jīng)發(fā)生的一連串修改和操作的記錄。SQLServer2023包含兩種類型的數(shù)據(jù)庫:系統(tǒng)數(shù)據(jù)庫和用戶數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫存儲有關(guān)數(shù)據(jù)庫系統(tǒng)的信息,例如master、model、msdb、tempdb。master數(shù)據(jù)庫記錄SQLServer2023的所有系統(tǒng)級信息,涉及登錄帳戶和系統(tǒng)配置設(shè)立。model數(shù)據(jù)庫為用戶創(chuàng)建新的數(shù)據(jù)庫提供模板。msdb數(shù)據(jù)庫是代理服務(wù)使用的數(shù)據(jù)庫,代理程序調(diào)度警報(bào)作業(yè)以及記錄操作員的操作時使用。tempdb數(shù)據(jù)庫保存所有的臨時表和臨時存儲過程。創(chuàng)建用戶數(shù)據(jù)庫:CREATEDATABASEdatabase_nameON{[PRIMARY](NAME=logical_file_name,FILENAME=’os_file_name’,[,SIZE=size][,MAXSIZE={max_size|UNLIMTED}][,FILEGROWTH=grow_increment])}[,…n]LOGON{(NAME=logical_file_name,FILENAME=’os_file_name’[,SIZE=size][,MAXSIZE={max_size|UNLIMTED}][,FILEGROWTH=grow_increment])}[,…n]參數(shù)說明:參數(shù)說明database_name要建立的數(shù)據(jù)庫名稱PRIMARY在主文獻(xiàn)組中指定文獻(xiàn)。ON指定存儲數(shù)據(jù)庫數(shù)據(jù)部分的磁盤文獻(xiàn)(數(shù)據(jù)文獻(xiàn))。LOGON指定建立數(shù)據(jù)庫的日記文獻(xiàn)。NAME指定數(shù)據(jù)或日記文獻(xiàn)的文獻(xiàn)名稱FILENAME指定文獻(xiàn)的操作系統(tǒng)文獻(xiàn)名和途徑。os_file_name中的途徑必須指定為SQLServer所安裝服務(wù)器上的某個文獻(xiàn)夾。SIZE指定數(shù)據(jù)或日記文獻(xiàn)的大小。用戶可以以MB為單位指定大小,也可以使用默認(rèn)單位MB來指定大小。假如沒有為主文獻(xiàn)提供size,則數(shù)據(jù)庫引擎
將使用model數(shù)據(jù)庫中的主文獻(xiàn)的大小。假如指定了輔助數(shù)據(jù)文獻(xiàn)或日記文獻(xiàn),但未指定該文獻(xiàn)的size,則數(shù)據(jù)庫引擎
將以1MB作為該文獻(xiàn)的大小。。MAXSIZE指定文獻(xiàn)可以增長到的最大長度。默認(rèn)單位為MB,用戶也可以以MB來指定該長度。假如沒有指定長度的話,文獻(xiàn)將一直增長直到磁盤滿為止。要建立的數(shù)據(jù)庫大小單位為MB。FILEGROWTH指定文獻(xiàn)的增長增量。該參數(shù)設(shè)立不能超過MAXSIZE參數(shù)。指定值的默認(rèn)單位為MB,用戶也可以以KB為單位進(jìn)行指定,此外還可以使用比例(%)。假如該參數(shù)沒有指定的話,默認(rèn)值為10%,最小值為64KB。修改數(shù)據(jù)庫:ALTERDATABASEdatabasename{ADDfile<filespec>[,…n][TOfilegroupfilegroupname]|ADDlogfile<filespec>[,…n]|REMOVEfilelogical_file_name[withdelete]|MODIFYfile<filespec>|MODIFYname=new_databasename|ADDfilegroupfilegroup_name|REMOVEfilegroupfilegroup_name|MODIFYfilegroupfilegroup_name{filegroup_property|name=new_filegroup_name}}查看數(shù)據(jù)庫狀態(tài):sys.databases:數(shù)據(jù)庫和文獻(xiàn)目錄視圖,可以查看有關(guān)數(shù)據(jù)庫的基本信息。MicrosoftSQLServer實(shí)例中的每個數(shù)據(jù)庫都相應(yīng)一行sys.databases_files:可以查看有關(guān)數(shù)據(jù)庫文獻(xiàn)的信息。每個存儲在數(shù)據(jù)庫自身中的數(shù)據(jù)庫文獻(xiàn)在表中占用一行。sys.master_files:可以查看數(shù)據(jù)庫文獻(xiàn)的基本信息和狀態(tài)信息。master數(shù)據(jù)庫中的每個文獻(xiàn)相應(yīng)一行。增長用戶數(shù)據(jù)庫容量:ALTERDATABASEdatabase_nameMODIFYFILE(NAME=file_name,SIZE=newsize)縮減用戶數(shù)據(jù)庫容量:P65DBCCSHRINKDATABASE(‘dat(yī)abase_name’|database_id|0[,target_percent])[WITHNO_INFOMSGS]數(shù)據(jù)庫快照的作用:1、維護(hù)歷史數(shù)據(jù)以生成報(bào)表。2、將查詢實(shí)行在數(shù)據(jù)庫的快照上,可以釋放主體數(shù)據(jù)庫上的資源。3、使用快照將數(shù)據(jù)庫恢復(fù)到生成快照時的狀態(tài)比從備份還原快得多。創(chuàng)建快照數(shù)據(jù)庫語法格式CREATEDATABASEdatabase_snapshot_nameON(NAME=logical_file_name,FILENAME='os_file_name')[,...n]ASSNAPSHOTOFsource_database_name數(shù)據(jù)庫更名與刪除:p69更名:execsp_renamedb‘old_name’,’new_name’刪除:dropdatabasedatabase_name第四章數(shù)據(jù)表中行和列的作用:每行代表一唯一的記錄,每列代表記錄中的一個域。創(chuàng)建數(shù)據(jù)庫:CREATETABLE[database_name.[owner].|owner.]table_name({<column_definition>|column_nameAScomputed_column_expression|<table_constraint>::=[CONSTRAINTconstraint_name]}|[{PRIMARYKEY|UNIQUE}[,...n]][ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}]<column_definition>::={column_namedata_type}[COLLATE<collation_name>]……修改表結(jié)構(gòu):ALTERTABLEtable_name{[ALTERCOLUMNcolumn_name{new_dat(yī)a_type[(precision[,scale])][COLLATE<collation_name>][NULL|NOTNULL]|ADD{[<column_definition>][,...n]|DROP{[CONSTRAINT]constraint_name|COLUMNcolumn_name}[,...n]插入、更新和刪除表數(shù)據(jù):查看表結(jié)構(gòu):使用系統(tǒng)存儲過程sp_help查看表結(jié)構(gòu)[EXECUTE]sp_help[table_name]數(shù)據(jù)插入:INSERT命令完畢數(shù)據(jù)插入。INSERT[INTO]table_name[(column1,column2…)]values(value1,value2…)更新表中現(xiàn)存記錄中的數(shù)據(jù):UPDATE語句可以更新表中現(xiàn)存記錄中的數(shù)據(jù)UPDATEtable_nameSETcolumn1=modified_value1[,column2=modified_values[,…]][WHEREcolumn1=value1][,column2=value2]刪除數(shù)據(jù):DELETE語句可以從表中刪除一行或多行記錄。DELETEFROMtable_name[WHEREcolumn1=value1],[column2=value2]數(shù)據(jù)完整性:存儲在數(shù)據(jù)庫中數(shù)據(jù)的一致性和對的性。數(shù)據(jù)完整性分為:實(shí)體完整性、參照完整性、域完整性和用戶定義完整性四種。約束:CHECK約束限制輸入到一列或多列的值的范圍DEFAULT約束假如沒有為列指定數(shù)據(jù),系統(tǒng)將默認(rèn)值賦給列PRIMARYKEY約束假如某列或多列的值能惟一標(biāo)記表中的每一行,這樣的列稱為表的主鍵,通過它可以強(qiáng)制表的實(shí)體完整性。FOREIGNKEY約束外鍵(ForeignKey)是用于建立和加強(qiáng)兩個表(主表與從表)的一列或多列數(shù)據(jù)之間的鏈接,當(dāng)數(shù)據(jù)添加、修改或刪除時,通過參照完整性保證它們之間數(shù)據(jù)的一致性。定義表之間的參照完整性是先定義主表的主鍵,再對從表定義外鍵約束UNIQUE約束保證表中的兩個數(shù)據(jù)行在非主鍵列中沒有相同的列值約束的創(chuàng)建與刪除:CHECK約束的創(chuàng)建ALTERTABLEtable_nameADD[CONSTRAINTconstraint_name]CHECK(logical_expression)Check約束的刪除:DROPCONSTRAINTconstraint_name創(chuàng)建和刪除DEFAULT約束ALTERTABLEtable_nameADD[CONSTRAINTconstraint_name]DEFAULTconstraint_expressionDROPCONSTRAINTconstraint_name創(chuàng)建和刪除PRIMARYKEY約束ALTERTABLEtable_nameADD[CONSTRAINTconstraint_name]PRIMARYKEY[CLUSTERED|NONCLUSTERED]constraint_expressionDROPCONSTRAINTconstraint_name創(chuàng)建和刪除FOREIGNKEY約束ALTERTABLEtable_nameADD[CONSTRAINTconstraint_name][FOREIGNKEY]REFERENCESreferenced_table_name[(ref_column)]DROPCONSTRAINT[FOREIGNKEY]constraint_name創(chuàng)建和刪除UNIQUE約束ALTERTABLEtable_nameADD[CONSTRAINTconstraint_name]UNIQUEconstraint_expression[CLUSTERED|NONCLUSTERED]ALTERTABLEtable_nameDROPCONSTRAINTUNIQUEconstraint_name創(chuàng)建默認(rèn)值和將其綁定到表上的某列CREATEDEFAULTdefault_nameASconstraint_expressionEXECsp_bindefaultdefault_name'table_name.[column_name[,…]|user_dat(yī)etype]'第五章SELECT語句的形式:SELECTselect_list[INTOnew_table_name]FROMtable_list[WHEREsearch_conditions][GROUPBYgroup_by_list][HAVINGsearch_conditions][ORDERBYorder_list[ASC|DESC]][COMPUTErow_aggregate(column_name)[BYcolumn_name]]簡樸查詢:SELECT[ALL|DISTINCT]*|{table_name|view_name}.*|c(diǎn)olumn_name[AS]column_titleFROMtable_name|view_name各個子句的作用:FROM子句:指定SELECT語句查詢的一個或多個表,最多可以指定16個表,每一個表名用逗號分隔。即從指定的數(shù)據(jù)表table_name1[,table_name2,...]的記錄中,檢索(SELECT)出指定的列column_name1,column_name2[,...n]形成結(jié)果集。但是,FROM后面的表名在兩個或者兩個以上時,SELECT列表中應(yīng)當(dāng)采用table_name.[column_name]形式限定列所屬的表。使用SELECT…INTO語句可以在查詢數(shù)據(jù)的基礎(chǔ)上創(chuàng)建新的數(shù)據(jù)表。通常,可使用這種方法來創(chuàng)建臨時表,以便在隨后的開發(fā)過程中使用。SELECTcolumn_name1,column_name2[,...n][INTOnew_table]FROMtable_nameWhere子句:從整個表中選出滿足指定條件的內(nèi)容,這就要用到WHERE子句。SELECTcolumn_name1,column_name2[,...n]FROMtable_nameWHEREsearch_conditionORDERBYcolumn_name1[ASC|DESC][,column_name2[ASC|DESC][,...]]ORDERBY是一個可選的子句,假如有ORDERBY子句,將按照排序列名column_name1[,column_name2[,...]]進(jìn)行排序,其結(jié)果表還要按選項(xiàng)的值升序(ASC)或降序(DESC)排列。缺省時為查詢結(jié)果按升序排列。使用GROUPBY子句可以按一定的條件對查詢到的結(jié)果進(jìn)行分組,再對每一組數(shù)據(jù)計(jì)算記錄信息。SELECTcolumn_name1,column_name2[,...n]FROMtable_nameWHEREsearch_conditionGROUPBYgroup_by_expressionHAVINGsearch_conditionGROUPBY將查詢結(jié)果按(group_by_expression)進(jìn)行分組,該屬性列相等的記錄為一個組。通常,在每組中通過聚合函數(shù)來計(jì)算一個或者多個列。假如GROUP帶有HAVING,則只有滿足search_condition的組才干輸出。Compute子句:SELECTcolumn_name1,column_name2[,...n]FROMtable_nameWHEREsearch_conditionORDERBYcolumn_name[ASC|DESC][,...]COMPUTErow_aggregate(column_name)[,row_aggregat(yī)e(column_name)…][BYcolumn_name[,column_name…]其中,row_aggregate表達(dá)行聚合函數(shù),如AVG(),COUNT(),MAX(),MIN(),SUM()。COMPUTE子句生成合計(jì)作為附加的匯總列出現(xiàn)在結(jié)果集的最后。當(dāng)與BY一起使用時,COMPUTE子句在結(jié)果集內(nèi)對指定列進(jìn)行分類匯總??稍谕徊樵儍?nèi)指定COMPUTEBY和COMPUTE。內(nèi)連接:內(nèi)連接是用比較運(yùn)算符比較兩個表中列值,將兩個表中滿足連接條件的行組合起來作為結(jié)果,它是最常見的表連接形式。內(nèi)連接分為:等值連接,在SELECT列表中使用星號(*)的和在結(jié)果集中顯示冗余列數(shù)據(jù)的連接。不等值連接,在連接條件中使用除等于運(yùn)算符以外的其它比較運(yùn)算符(>、>=、<=、<、!>、!<、<>),來比較被連接列的列值。自然連接,對結(jié)果集的冗余列數(shù)據(jù)進(jìn)行限制的連接。在連接條件中使用等號(=)運(yùn)算符比較被連接列的列值,但它使用選擇列表指定查詢結(jié)果聚合中所涉及的列,并刪除連接表中的反復(fù)列。P109第六章視圖的概念視圖是基于某個查詢結(jié)果的一個虛擬表,只是用來查看數(shù)據(jù)的窗口而已。視圖與真正的表很類似,也是由一組命名的列和數(shù)據(jù)行所組成,其內(nèi)容由查詢所定義。但是視圖并不是以一組數(shù)據(jù)的形式存儲在數(shù)據(jù)庫中,數(shù)據(jù)庫中只存放視圖的定義而不存放視圖相應(yīng)的數(shù)據(jù),這些數(shù)據(jù)仍存放在導(dǎo)出視圖的基表中。當(dāng)基表中的數(shù)據(jù)發(fā)生變化時,從視圖中查詢出來的數(shù)據(jù)也隨之改變。創(chuàng)建視圖:CREATEVIEWview_name[(column_name[,...n])][WITHENCRYPTION]ASSELECT_statement[WITHCHECKOPTION]通過視圖查詢數(shù)據(jù)p131第七章索引的概念:索引是一個表中所包含的值的列表,它說明了表中包含各個值的行所在的存儲位置。索引中數(shù)據(jù)的存儲:在沒有建立索引的表內(nèi),使用堆的集合的方法組織數(shù)據(jù)頁。在堆集中,數(shù)據(jù)行不按任何順序進(jìn)行存儲,數(shù)據(jù)頁序列也沒有任何特殊順序。因此掃描這些數(shù)據(jù)堆集花費(fèi)的時間肯定較長。在建有索引的表內(nèi),數(shù)據(jù)行基于索引的鍵值按順序存放,將改善系統(tǒng)查詢數(shù)據(jù)的速度。索引的分類:按照索引存儲方式的不同,可以將索引分為聚集索引和非聚集索引。在聚集索引(ClusteredIndex)中,行的物理存儲順序與索引順序完全相同,即索引的順序決定了表中行的存儲順序,由于行是通過排序的,所以每個表中只能有一個聚集索引。非聚集索引(NonclusteredIndex)并不在物理上排列數(shù)據(jù),即索引中的邏輯順序并不等同于表中行的物理順序,索引僅僅記錄指向表中行的位置的指針,這些指針自身是有序的,通過這些指針可以在表中快速地定位數(shù)據(jù)。按照索引取值方式可以將索引分為唯一索引和非唯一索引。唯一索引和非唯一索引既可以是聚集索引,也可以是非聚集索引。唯一索引是指索引值必須是唯一的,不允許數(shù)據(jù)表中具有兩行相同的索引值。創(chuàng)建PRIMARYKEY或UNIQUE,默認(rèn)建立一個唯一索引。索引視圖:為視圖創(chuàng)建獨(dú)特的聚集索引,從而讓訪問此類視圖的查詢性能得以極大的改善。創(chuàng)建索引:CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_nameON{table|view}(column[ASC|DESC][,...n])[WITH[PAD_INDEX][[,]FILLFACTOR=fillfactor][[,]IGNORE_DUP_KEY][[,]DROP_EXISTING][[,]STATISTICS_NORECOMPUTE][[,]SORT_IN_TEMPDB]][ONfilegroup]索引的查看:通過系統(tǒng)視圖sys.indexs可查看數(shù)據(jù)庫中的索引信息,通過sys.index_columns可查看索引列信息。P157索引的更名p157sp_rename[@objname=]'object_name',[@newname=]'new_name'[,[@objtype=]'object_type']刪除索引:DROPINDEXtable_name.index_name[,…n]第八章存儲過程:一組完畢特定功能的T-SQL語句集,經(jīng)編譯后以特定的名稱存儲在數(shù)據(jù)庫中,用戶通過指定存儲過程的名字并給出參數(shù)(假如該存儲過程帶有參數(shù))來執(zhí)行存儲過程。創(chuàng)建不帶參數(shù)的存儲過程CREATEPROC[EDURE]procedure_nameASsql_statementsprocedure_name為所創(chuàng)建的存儲過程的名字;sql_statements為在存儲過程中需要執(zhí)行的數(shù)據(jù)庫操作。創(chuàng)建帶參數(shù)的存儲過程:CREATEPROC[EDURE]procedure_name[{@parameterdata_type}[=DEFAULT][OUTPUT]][,…n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTI○N}]ASsql_statements使用ALTERPROCEDURE命令A(yù)LTERPROC[EDURE]procedure_name[{@parameterdata_type}[=DEFAULT][OUTPUT]][,…n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYTION}]ASSql_statement[,…n]觸發(fā)器的概念:觸發(fā)器也是一種存儲過程,一種在基表被修改時自動執(zhí)行的內(nèi)嵌過程,重要通過事件進(jìn)行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名字而被直接調(diào)用。當(dāng)對某一表進(jìn)行諸如UPDATE、INSERT、DELETE這些操作時,SQLServer就會自動執(zhí)行觸發(fā)器所定義的SQL語句。從而保證對數(shù)據(jù)的解決必須符合由這些SQL語句所定義的規(guī)則。觸發(fā)器的重要作用就是其可以實(shí)現(xiàn)由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)的一致性。創(chuàng)建觸發(fā)器:CREATETRIGGERtrigge_nameON{table|view}{FOR|AFTER|INSTEADOF}{[INSERT],[UPDATE],[DELETE]}[WITHENCRYPTION]ASIFUPDATE(column_name)[{and|or}UPDATE(column_name)…]sql_statesments修改觸發(fā)器:ALTERTRIGGERtrigge_nameON{table|view}{FOR|AFTER|INSTEADOF}{INSERT,UPDATE,DELETE}[WITHENCRYPTION]ASIFUPDATE(column_name){and|or}UPDATE(columnname)…]sql_stat(yī)esments第九章事務(wù)的概念:事務(wù)是由一系列的數(shù)據(jù)查詢操作或更新操作構(gòu)成的。從用戶的觀點(diǎn)來看,根據(jù)業(yè)務(wù)規(guī)則,這些操作是一個整體,不能分割,即要么所有的操作都順利完畢,要么一個也不要做。絕不能只完畢了部分操作,而尚有一些操作沒有完畢。事務(wù)中任何一個語句執(zhí)行時犯錯,系統(tǒng)都會返回到事務(wù)開始前的狀態(tài)。事務(wù)的(原子性、一致性、隔離性、持久性)4個特性一般簡稱為事務(wù)的ACID特性事務(wù)的管理:使用BEGINTRANSACTION建立事務(wù)BEGINTRAN[SACTION][transaction_name|@tran_name_variable[WITHMARK['description']]]使用COMMITTRANSACTION標(biāo)記事務(wù)結(jié)束COMMIT[TRAN[SACTION][transaction_name|@tran_name_variable]]使用COMMITWORK語句標(biāo)記事務(wù)結(jié)束COMMIT[WORK]功能與COMMITTRANSACTION相同,但COMMITTRANSACTION接受用戶定義的事務(wù)名稱。使用ROLLBACKTRANSACTION回滾到事務(wù)的指定點(diǎn)ROLLBACK[TRAN[SACTION][transaction_name|@tran_name_variable|savepoint_name|@savepoint_variable]]使用ROLLBACKWORK回滾到事務(wù)的起點(diǎn)ROLLBACK[WORK]此語句的功能與ROLLBACKTRANSACTION相同,但ROLLBACKTRANSACTION接受用戶定義的事務(wù)名稱。嵌套事務(wù)時,ROLLBACKWORK始終回滾到最遠(yuǎn)的BEGINTRANSACTION語句,并將@@TRANCOUNT系統(tǒng)函數(shù)減為0。事務(wù)模式:顯式事務(wù)由用戶在其中定義事務(wù)的啟動和結(jié)束隱式事務(wù)隱式事務(wù)是指在當(dāng)前事務(wù)提交或回滾后,自動啟動新事務(wù)自動事務(wù)模式在自動事務(wù)模式下,每個Transact_SQL語句在成功執(zhí)行完畢后,都被自動提交;假如碰到錯誤,則自動回滾該語句。該模式為系統(tǒng)默認(rèn)的事務(wù)管理模式。事務(wù)日記的內(nèi)容各個事務(wù)的開始標(biāo)記、結(jié)束標(biāo)記、所有更新操作,每個記錄的內(nèi)容包含:事務(wù)標(biāo)記(標(biāo)明是哪個事務(wù))操作的類型(插入、刪除或修改)操作對象(記錄內(nèi)部標(biāo)記)更新前數(shù)據(jù)的舊值(對插入操作而言,此項(xiàng)為空值)更新后數(shù)據(jù)的新值(對刪除操作而言,此項(xiàng)為空值)游標(biāo)的概念:游標(biāo)是一種解決數(shù)據(jù)的方法,為了查看或者解決結(jié)果集中的數(shù)據(jù),游標(biāo)提供了在結(jié)果集中向前或者向后瀏覽數(shù)據(jù)的能力。某些業(yè)務(wù)規(guī)則規(guī)定對結(jié)果集逐行執(zhí)行操作,而不是對整個結(jié)果集執(zhí)行操作。游標(biāo)正是這樣一種基于逐行操作結(jié)果集的方法,它對SELECT語句的查詢結(jié)果集中的記錄行逐行解決,而不是整個結(jié)果集作同一解決,并基于游標(biāo)的當(dāng)前位置,更新或刪除表或視圖中的行。游標(biāo)的使用:聲明或創(chuàng)建游標(biāo)→打開游標(biāo)→推動游標(biāo)指針從游標(biāo)的結(jié)果集中提取數(shù)據(jù)→逐行解決操作游標(biāo)指針?biāo)赶虻男袛?shù)據(jù)→關(guān)閉和釋放游標(biāo)聲明游標(biāo)DECLAREcursor_nameCURSORFORselect_statement[FOR{READONLY|UPDATE[OFcolumn_name_list[,…]]}]打開游標(biāo)OPENcrusor_name讀取游標(biāo)中的數(shù)據(jù)FETCH[[NEXT|PRIOR|FIRST|LAST]FROM]cursor_name[INTOfetch_target_list]刪除數(shù)據(jù)DELETE[FROM]{table_name|view_name}WHERECURRENTOFcursor_name更新數(shù)據(jù)UPDATE{table_name|view_name}SET[table_name.|view.]column_name1={expression1|NULL|(select_stat(yī)ement)}[,column_name2={expression2|
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房產(chǎn)買賣協(xié)議案例
- 臨時借款補(bǔ)充協(xié)議范本
- 銀行貸款續(xù)期合同
- 冰雪路面防滑安全行動
- 消防安全責(zé)任合同簽訂指南
- 綠化工程勞務(wù)分包協(xié)議
- 招標(biāo)采購文件編寫標(biāo)準(zhǔn)
- 五金工具采購合同
- 管理保證書優(yōu)化企業(yè)資源配置的關(guān)鍵
- 招標(biāo)文件備案快速指南
- 2022年FURUNO電子海圖完整題庫
- 重大第八版三年級上信息技術(shù)期末試題
- 加固工程竣工驗(yàn)收資料(質(zhì)量驗(yàn)收表全套)
- 衛(wèi)生技術(shù)人員執(zhí)業(yè)監(jiān)管記錄
- eviews軟件對于我國城鎮(zhèn)居民消費(fèi)性支出和可支配收入的分析
- 2022年檔案管理員資格考試題庫及答案-精簡版
- CA6140型車床電氣控制線路的檢修
- 堿爐安裝淺談
- 硬筆書法田字格紙張
- 概率論與數(shù)理統(tǒng)計(jì)課后習(xí)題與答案
- 上海市醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范實(shí)施細(xì)則
評論
0/150
提交評論