




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、、基礎(chǔ)(建表、建約束、關(guān)系)約束(Constraint)是MicrosoftSQLServer提供的自動(dòng)保持?jǐn)?shù)據(jù)庫(kù)完整性的一種方法,定義了可輸入表或表的單個(gè)列中的數(shù)據(jù)的限制條件(有關(guān)數(shù)據(jù)完整性的介紹請(qǐng)參見(jiàn)第9章)。在SQLServer中有5種約束:主關(guān)鍵字約束(PrimaryKeyConstraint)、外關(guān)鍵字約束(ForeignKeyConstraint)、惟一性約束(UniqueConstraint)、檢查約束(CheckConstraint)和缺省約束(DefaultConstraint)。(最后幾頁(yè)介紹SQL基礎(chǔ)約束)1、說(shuō)明:創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASEdatabase-
2、name2、說(shuō)明:刪除數(shù)據(jù)庫(kù)dropdatabasedbname3、說(shuō)明:備份sqlserver創(chuàng)建備份數(shù)據(jù)的deviceUSEmasterEXECsp_addumpdevicedisk,testBack,c:mssql7backupMyNwind_1.dat開(kāi)始備份BACKUPDATABASEpubsTOtestBack4、說(shuō)明:創(chuàng)建新表createtabletabname(col1type1notnullprimarykey,col2type2notnull,.)-建表、建約束、關(guān)系createtabletableok(col1int,col2_notnullintnotnull,col3
3、_defaultnchar(1)notnulldefault(男),-默認(rèn)男col4_defaultdatetimenotnulldefault(getdate(),-默認(rèn)得到系統(tǒng)時(shí)間col5_checkintnotnullcheck(col5_check=18andcol5_check=55),-添加約束,數(shù)據(jù)值在18到55之間col6_checknchar(9)notnullcheck(col6_checklikemsd09020-9A6-9),-添加約束,數(shù)據(jù)值前7位必須是msd0902倒數(shù)第兩位可以是0-9中任意一個(gè)數(shù)字,最后一位不是6-9之間的數(shù)字。cola_primarynchar
4、(5)notnullprimarykey,-建立主鍵colb_uniqueintunique,-唯一約束col7_Identityintnotnullidentity(100,1),-自增長(zhǎng),從100開(kāi)始,每列值增加1個(gè)col8_identitynumeric(5,0)notnullidentity(1,1)-自增長(zhǎng),從1開(kāi)始,每列值增加1個(gè),最大值是5位的整數(shù)col9_guiduniqueidentifiernotnulldefault(newid()-使用newid()函數(shù),隨機(jī)獲取列值)-alter-主外鍵/引用/關(guān)系約束altertable從表名withcheck-啟用withnoch
5、eck-禁用約束addconstraintFK_主表名_從表名foreignkey(從表中的字段名)references主表名(主表中的字段名)-其它非主外鍵約束altertablewfaddconstraint約束名約束類型具體的約束說(shuō)明altertablewf-修改聯(lián)合主鍵addconstraintPk_cola_primaryprimarykey(cola_primary,col1)根據(jù)已有的表創(chuàng)建新表:A:createtabletab_newliketab_old(使用舊表創(chuàng)建新表)B:createtabletab_newasselectcol1,col2.fromtab_olddef
6、initiononly5、說(shuō)明:刪除新表droptabletabname6、說(shuō)明:增加一個(gè)列Altertabletabnameaddcolumncoltype注:列增加后將不能刪除。DB2中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加varchar類型的長(zhǎng)度。7、說(shuō)明:添加主鍵:Altertabletabnameaddprimarykey(col)說(shuō)明:刪除主鍵:Altertabletabnamedropprimarykey(col)8、說(shuō)明:創(chuàng)建索引:createuniqueindexidxnameontabname(col.)刪除索引:dropindexidxname注:索引是不可更改的
7、,想更改必須刪除重新建。9、說(shuō)明:創(chuàng)建視圖:createviewviewnameasselectstatement刪除視圖:dropviewviewname10、說(shuō)明:幾個(gè)簡(jiǎn)單的基本的sql語(yǔ)句選擇:select*fromtable1where范圍插入:insertintotable1(field1,field2)values(value1,value2)刪除:deletefromtable1where范圍更新:updatetable1setfield1=value1where范圍查找:select*fromtablelwherefieldllike%value1%like的語(yǔ)法很精妙,查資料
8、!排序:select*fromtablelorderbyfield1,field2desc總數(shù):selectcountastotalcountfromtable1求和:selectsum(field1)assumvaluefromtable1平均:selectavg(field1)asavgvaluefromtable1最大:selectmax(field1)asmaxvaluefromtable1最?。簊electmin(field1)asminvaluefromtable111、說(shuō)明:幾個(gè)高級(jí)查詢運(yùn)算詞A:UNION運(yùn)算符UNION運(yùn)算符通過(guò)組合其他兩個(gè)結(jié)果表(例如TABLE1和TABLE
9、2)并消去表中任何重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng)ALL隨UNION起使用時(shí)(即UNIONALL),不消除重復(fù)行。兩種情況下,派生表的每一行不是來(lái)自TABLE1就是來(lái)自TABLE2。B:EXCEPT運(yùn)算符EXCEPT運(yùn)算符通過(guò)包括所有在TABLE1中但不在TABLE2中的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng)ALL隨EXCEPT一起使用時(shí)(EXCEPTALL),不消除重復(fù)行。C:INTERSECT運(yùn)算符INTERSECT運(yùn)算符通過(guò)只包括TABLE1和TABLE2中都有的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng)ALL隨INTERSECT一起使用時(shí)(INTERSECTALL),不消除重復(fù)行。注:使用
10、運(yùn)算詞的幾個(gè)查詢結(jié)果行必須是一致的。12、說(shuō)明:使用外連接A、left(outer)join:左外連接(左連接):結(jié)果集幾包括連接表的匹配行,也包括左連接表的所有行。SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.cB:right(outer)join:右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。C:full/cross(outer)join:全外連接:不僅包括符號(hào)連接表的匹配行,還包括兩個(gè)連接表中的所有記錄。12、分組:Groupby:一張表,一旦分組完成后,查詢后只能得到組相關(guān)的信息。組相關(guān)
11、的信息:(統(tǒng)計(jì)信息)count,sum,max,min,avg分組的標(biāo)準(zhǔn))在SQLServer中分組時(shí):不能以text,ntext,image類型的字段作為分組依據(jù)在selecte統(tǒng)計(jì)函數(shù)中的字段,不能和普通的字段放在一起;13、對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作:分離數(shù)據(jù)庫(kù):sp_detach_db;附加數(shù)據(jù)庫(kù):sp_attach_db后接表明,附加需要完整的路徑名14.如何修改數(shù)據(jù)庫(kù)的名稱:sp_renamedbold_name,new_name二、提升1、說(shuō)明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a新表名:b)(Access可用)法一:select*intobfromawhere11(僅用于SQlServer)法
12、二:selecttop0*intobfroma2、說(shuō)明:拷貝表(拷貝數(shù)據(jù),源表名:a目標(biāo)表名:b)(Access可用)insertintob(a,b,c)selectd,e,ffromb;3、說(shuō)明:跨數(shù)據(jù)庫(kù)之間表的拷貝(具體數(shù)據(jù)使用絕對(duì)路徑)(Access可用)insertintob(a,b,c)selectd,e,ffrombin具體數(shù)據(jù)庫(kù)where條件例子:.frombin&Server.MapPath(.)&data.mdb&where.4、說(shuō)明:子查詢(表名1:a表名2:b)selecta,b,cfromawhereaIN(selectdfromb)或者:selecta,b,cfrom
13、awhereaIN(1,2,3)5、說(shuō)明:顯示文章、提交人和最后回復(fù)時(shí)間selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b6、說(shuō)明:外連接查詢(表名1:a表名2:b)selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c7、說(shuō)明:在線視圖查詢(表名1:a)select*from(SELECTa,b,cFROMa)Twheret.a1;8、說(shuō)明:between的用法between限
14、制查詢數(shù)據(jù)范圍時(shí)包括了邊界值,notbetween不包括select*fromtable1wheretimebetweentime1andtime2selecta,b,c,fromtable1whereanotbetween數(shù)值1and數(shù)值29、說(shuō)明:in的使用方法select*fromtablelwhereanotin(值1,值2,值4,值6)10、說(shuō)明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒(méi)有的信息deletefromtable1wherenotexists(select*fromtable2wheretable1.field1=table2.field1)11、說(shuō)明:四表聯(lián)查問(wèn)題:sele
15、ct*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere12、說(shuō)明:日程安排提前五分鐘提醒SQL:select*from日程安排wheredatediff(minute,f開(kāi)始時(shí)間,getdate()513、說(shuō)明:一條sql語(yǔ)句搞定數(shù)據(jù)庫(kù)分頁(yè)selecttop10b.*from(selecttop20主鍵字段,排序字段from表名orderby排序字段desc)a,表名bwhereb.主鍵字段=a.主鍵字段orderbya.排序字段具體實(shí)現(xiàn):關(guān)于數(shù)據(jù)庫(kù)分頁(yè):declarestartint,en
16、dintsqlnvarchar(600)setsql=selecttop+str(end-start+1)+fromTwhereridnotin(selecttop+str(str-1)+RidfromTwhereRid-1)execsp_executesqlsql注意:在top后不能直接跟一個(gè)變量,所以在實(shí)際應(yīng)用中只有這樣的進(jìn)行特殊的處理。Rid為一個(gè)標(biāo)識(shí)列,如果top后還有具體的字段,這樣做是非常有好處的。因?yàn)檫@樣可以避免top的字段如果是邏輯索引的,查詢的結(jié)果后實(shí)際表中的不一致(邏輯索引中的數(shù)據(jù)有可能和數(shù)據(jù)表中的不一致,而查詢時(shí)如果處在索引則首先查詢索引)14、說(shuō)明:前10條記錄sele
17、cttop10*formtable1where范圍15、說(shuō)明:選擇在每一組b值相同的數(shù)據(jù)中對(duì)應(yīng)的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷(xiāo)產(chǎn)品分析,按科目成績(jī)排名,等等.)selecta,b,cfromtablenametawherea=(selectmax(a)fromtablenametbwheretb.b=ta.b)16、說(shuō)明:包括所有在TableA中但不在TableB和TableC中的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表(selectafromtableA)except(selectafromtableB)except(selectafromtableC)1
18、7、說(shuō)明:隨機(jī)取出10條數(shù)據(jù)selecttop10*fromtablenameorderbynewid()18、說(shuō)明:隨機(jī)選擇記錄selectnewid()19、說(shuō)明:刪除重復(fù)記錄1),deletefromtablenamewhereidnotin(selectmax(id)fromtablenamegroupbycol1,col2,.)2),selectdistinct*intotempfromtablenamedeletefromtablenameinsertintotablenameselect*fromtemp評(píng)價(jià):這種操作牽連大量的數(shù)據(jù)的移動(dòng),這種做法不適合大容量但數(shù)據(jù)操作3),例如
19、:在一個(gè)外部表中導(dǎo)入數(shù)據(jù),由于某些原因第一次只導(dǎo)入了一部分,但很難判斷具體位置,這樣只有在下一次全部導(dǎo)入,這樣也就產(chǎn)生好多重復(fù)的字段,怎樣刪除重復(fù)字段altertabletablename-添加一個(gè)自增列addcolumn_bintidentity(1,1)deletefromtablenamewherecolumn_bnotin(selectmax(column_b)fromtablenamegroupbycolumn1,column2,.)altertabletablenamedropcolumncolumn_b20、說(shuō)明:列出數(shù)據(jù)庫(kù)里所有的表名selectnamefromsysobjec
20、tswheretype=U/U代表用戶21、說(shuō)明:列出表里的所有的列名selectnamefromsyscolumnswhereid=object_id(TableName)22、說(shuō)明:列示type、vender、pcs字段,以type字段排列,case可以方便地實(shí)現(xiàn)多重選擇,類似select中的case。selecttype,sum(casevenderwhenAthenpcselse0end),sum(casevenderwhenCthenpcselse0end),sum(casevenderwhenBthenpcselse0end)FROMtablenamegroupbytype顯示結(jié)果
21、:typevenderpcs電腦A1電腦A1光盤(pán)B2光盤(pán)A2手機(jī)B3手機(jī)C323、說(shuō)明:初始化表table1TRUNCATETABLEtable124、說(shuō)明:選擇從10到15的記錄selecttop5*from(selecttop15*fromtableorderbyidasc)table_別名orderbyiddesc三、技巧1、1=1,1=2的使用,在SQL語(yǔ)句組合時(shí)用的較多“where1=1”是表示選擇全部“where1=2”全部不選,如:ifstrWhere!=beginsetstrSQL=selectcount(*)asTotalfrom+tblName+where+strWhere
22、endelsebeginsetstrSQL=selectcount(*)asTotalfrom+tblName+end我們可以直接寫(xiě)成錯(cuò)誤!未找到目錄項(xiàng)。setstrSQL=selectcount(*)asTotalfrom+tblName+where1=1安定+strWhere2、收縮數(shù)據(jù)庫(kù)-重建索引DBCCREINDEXDBCCINDEXDEFRAG-收縮數(shù)據(jù)和日志DBCCSHRINKDBDBCCSHRINKFILE3、壓縮數(shù)據(jù)庫(kù)dbccshrinkdatabase(dbname)4、轉(zhuǎn)移數(shù)據(jù)庫(kù)給新用戶以已存在用戶權(quán)限execsp_change_users_loginupdate_one,
23、newname,oldnamego5、檢查備份集RESTOREVERIFYONLYfromdisk=E:dvbbs.bak6、修復(fù)數(shù)據(jù)庫(kù)ALTERDATABASEdvbbsSETSINGLE_USERGODBCCCHECKDB(dvbbs,repair_allow_data_loss)WITHTABLOCKGOALTERDATABASEdvbbsSETMULTI_USERGO7、日志清除SETNOCOUNTONDECLARELogicalFileNamesysname,MaxMinutesINT,NewSizeINTUSEtablename-要操作的數(shù)據(jù)庫(kù)名SELECTLogicalFileN
24、ame=tablename_log,-日志文件名MaxMinutes=10,-Limitontimeallowedtowraplog.NewSize=1-你想設(shè)定的日志文件的大小(M)Setup/initializeDECLAREOriginalSizeintSELECTOriginalSize=sizeFROMsysfilesWHEREname=LogicalFileNameSELECTOriginalSizeof+db_name()+LOGis+CONVERT(VARCHAR(30),OriginalSize)+8Kpagesor+CONVERT(VARCHAR(30),(Original
25、Size*8/1024)+MBFROMsysfilesWHEREname=LogicalFileNameCREATETABLEDummyTrans(DummyColumnchar(8000)notnull)DECLARECounterINT,StartTimeDATETIME,TruncLogVARCHAR(255)SELECTStartTime=GETDATE(),TruncLog=BACKUPLOG+db_name()+WITHTRUNCATE_ONLYDBCCSHRINKFILE(LogicalFileName,NewSize)EXEC(TruncLog)-Wrapthelogifnec
26、essary.WHILEMaxMinutesDATEDIFF(mi,StartTime,GETDATE()-timehasnotexpiredANDOriginalSize=(SELECTsizeFROMsysfilesWHEREname=LogicalFileName)AND(OriginalSize*8/1024)NewSizeBEGIN-Outerloop.SELECTCounter=0WHILE(CounterOriginalSize/16)AND(Counter50000)BEGIN-updateINSERTDummyTransVALUES(FillLog)DELETEDummyTr
27、ansSELECTCounter=Counter+1ENDEXEC(TruncLog)ENDSELECTFinalSizeof+db_name()+LOGis+CONVERT(VARCHAR(30),size)+8Kpagesor+CONVERT(VARCHAR(30),(size*8/1024)+MBFROMsysfilesWHEREname=LogicalFileNameDROPTABLEDummyTransSETNOCOUNTOFF8、說(shuō)明:更改某個(gè)表execsp_changeobjectownertablename,dbo9、存儲(chǔ)更改全部表CREATEPROCEDUREdbo.User
28、_ChangeObjectOwnerBatchOldOwnerasNVARCHAR(128),NewOwnerasNVARCHAR(128)ASDECLARENameasNVARCHAR(128)DECLAREOwnerasNVARCHAR(128)DECLAREOwnerNameasNVARCHAR(128)DECLAREcurObjectCURSORFORselectName=name,Owner=user_name(uid)fromsysobjectswhereuser_name(uid)=OldOwnerorderbynameOPENcurObjectFETCHNEXTFROMcurO
29、bjectINTOName,OwnerWHILE(FETCH_STATUS=0)BEGINifOwner=OldOwnerbeginsetOwnerName=OldOwner+.+rtrim(Name)execsp_changeobjectownerOwnerName,NewOwnerend-selectname,NewOwner,OldOwnerFETCHNEXTFROMcurObjectINTOName,OwnerENDclosecurObjectdeallocatecurObjectGO10、SQLSERVER中直接循環(huán)寫(xiě)入數(shù)據(jù)declareiintseti=1whilei30begin
30、insertintotest(userid)values(i)seti=i+1end案例:有如下表,要求就裱中所有沒(méi)有及格的成績(jī),在每次增長(zhǎng)0.1的基礎(chǔ)上,使他們剛好及格:NamescoreZhangshan80Lishi59Wangwu50Songquan69while(selectmin(score)fromtb_table)60)beginupdatetb_tablesetscore=score*1.01wherescore60breakelsecontinueend數(shù)據(jù)開(kāi)發(fā)-經(jīng)典1.按姓氏筆畫(huà)排序:Select*FromTableNameOrderByCustomerNameColla
31、teChinese_PRC_Stroke_ci_as/從少到多2.數(shù)據(jù)庫(kù)加密:selectencrypt(原始密碼)selectpwdencrypt(原始密碼)selectpwdcompare(原始密碼,加密后密碼)=1-相同;否則不相同encrypt(原始密碼)selectpwdencrypt(原始密碼)selectpwdcompare(原始密碼,加密后密碼)=1-相同;否則不相同3.取回表中字段:declarelistvarchar(1000),sqlnvarchar(1000)selectlist=list+,+fromsysobjectsa,syscolumnsbwherea.id=b
32、.idand=表Asetsql=select+right(list,len(list)-1)+from表Aexec(sql)4.查看硬盤(pán)分區(qū):EXECmaster.xp_fixeddrives5比較A,B表是否相等:if(selectchecksum_agg(binary_checksum(*)fromA)(selectchecksum_agg(binary_checksum(*)fromB)print相等elseprint不相等6.殺掉所有的事件探察器進(jìn)程:DECLAREhcforeachCURSORGLOBALFORSELECTkill+RTRIM(spid)FROMmaster.dbo.
33、sysprocessesWHEREprogram_nameIN(SQLprofiler,NSQL事件探查器)EXECsp_msforeach_worker?7.記錄搜索:開(kāi)頭到N條記錄SelectTopN*From表N到M條記錄(要有主索引ID)SelectTopM-N*From表WhereIDin(SelectTopMIDFrom表)OrderbyIDDescN到結(jié)尾記錄SelectTopN*From表OrderbyIDDesc案例例如1:一張表有一萬(wàn)多條記錄,表的第一個(gè)字段RecID是自增長(zhǎng)字段,寫(xiě)一個(gè)SQL語(yǔ)句,找出表的第31到第40個(gè)記錄。selecttop10recidfromAwh
34、ererecidnotin(selecttop30recidfromA)分析:如果這樣寫(xiě)會(huì)產(chǎn)生某些問(wèn)題,如果recid在表中存在邏輯索引。selecttop10recidfromAwhere是從索引中查找,而后面的selecttop30recidfromA則在數(shù)據(jù)表中查找,這樣由于索引中的順序有可能和數(shù)據(jù)表中的不一致,這樣就導(dǎo)致查詢到的不是本來(lái)的欲得到的數(shù)據(jù)。解決方案1,用orderbyselecttop30recidfromAorderbyricid如果該字段不是自增長(zhǎng),就會(huì)出現(xiàn)問(wèn)題2,在那個(gè)子查詢中也加條件:selecttop30recidfromAwhererecid-1例2:查詢表中的
35、最后以條記錄,并不知道這個(gè)表共有多少數(shù)據(jù),以及表結(jié)構(gòu)。sets=selecttop1*fromTwherepidnotin(selecttop+str(count-1)+pidfromT)printsexecsp_executesqls9:獲取當(dāng)前數(shù)據(jù)庫(kù)中的所有用戶表selectNamefromsysobjectswherextype=uandstatus=010:獲取某一個(gè)表的所有字段selectnamefromsyscolumnswhereid=object_id(表名)selectnamefromsyscolumnswhereidin(selectidfromsysobjectswher
36、etype=uandname=表名)兩種方式的效果相同11:查看與某一個(gè)表相關(guān)的視圖、存儲(chǔ)過(guò)程、函數(shù)selecta.*fromsysobjectsa,syscommentsbwherea.id=b.idandb.textlike%表名%12:查看當(dāng)前數(shù)據(jù)庫(kù)中所有存儲(chǔ)過(guò)程selectnameas存儲(chǔ)過(guò)程名稱fromsysobjectswherextype=P13:查詢用戶創(chuàng)建的所有數(shù)據(jù)庫(kù)select*frommaster.sysdatabasesDwheresidnotin(selectsidfrommaster.sysloginswherename=sa)或者selectdbid,nameAS
37、DB_NAMEfrommaster.sysdatabaseswheresid0 x0114:查詢某一個(gè)表的字段和數(shù)據(jù)類型selectcolumn_name,data_typefrominformation_schema.columnswheretable_name=表名15:不同服務(wù)器數(shù)據(jù)庫(kù)之間的數(shù)據(jù)操作-創(chuàng)建鏈接服務(wù)器execsp_addlinkedserverITSV,SQLOLEDB,遠(yuǎn)程服務(wù)器名或ip地址execsp_addlinkedsrvloginITSV,false,null,用戶名,密碼-查詢示例select*fromITSV.數(shù)據(jù)庫(kù)名.dbo.表名-導(dǎo)入示例select*in
38、to表fromITSV.數(shù)據(jù)庫(kù)名.dbo.表名-以后不再使用時(shí)刪除鏈接服務(wù)器execsp_dropserverITSV,droplogins-連接遠(yuǎn)程/局域網(wǎng)數(shù)據(jù)(openrowset/openquery/opendatasource)-1、openrowset-查詢示例select*fromopenrowset(SQLOLEDB,sql服務(wù)器名;用戶名;密碼,數(shù)據(jù)庫(kù)名.dbo.表名)-生成本地表select*into表fromopenrowset(SQLOLEDB,sql服務(wù)器名;用戶名;密碼,數(shù)據(jù)庫(kù)名.dbo.表名)-把本地表導(dǎo)入遠(yuǎn)程表insertopenrowset(SQLOLEDB,s
39、ql服務(wù)器名;用戶名;密碼,數(shù)據(jù)庫(kù)名.dbo.表名)select*from本地表-更新本地表updatebsetb.列A=a.列Afromopenrowset(SQLOLEDB,sql服務(wù)器名;用戶名;密碼,數(shù)據(jù)庫(kù)名.dbo.表名)asainnerjoin本地表bona.column1=b.column1-openquery用法需要?jiǎng)?chuàng)建一個(gè)連接-首先創(chuàng)建一個(gè)連接創(chuàng)建鏈接服務(wù)器execsp_addlinkedserverITSV,SQLOLEDB,遠(yuǎn)程服務(wù)器名或ip地址-查詢select*FROMopenquery(ITSV,SELECT*FROM數(shù)據(jù)庫(kù).dbo.表名)-把本地表導(dǎo)入遠(yuǎn)程表ins
40、ertopenquery(ITSV,SELECT*FROM數(shù)據(jù)庫(kù).dbo.表名)select*from本地表-更新本地表updatebsetb.列B=a.列BFROMopenquery(ITSV,SELECT*FROM數(shù)據(jù)庫(kù).dbo.表名)asainnerjoin本地表bona.列A=b.列A-3、opendatasource/openrowsetSELECT*FROMopendatasource(SQLOLEDB,DataSource=ip/ServerName;UserID=登陸名Password=密碼).test.dbo.roy_ta-把本地表導(dǎo)入遠(yuǎn)程表insertopendatasou
41、rce(SQLOLEDB,DataSource=ip/ServerName;UserID=登陸名;Password=密碼).數(shù)據(jù)庫(kù).dbo.表名select*from本地表SQLServer基本函數(shù)SQLServer基本函數(shù)1.字符串函數(shù)長(zhǎng)度與分析用datalength(Char_expr)返回字符串包含字符數(shù),但不包含后面的空格substring(expression,start,length)取子串,字符串的下標(biāo)是從1”,start為起始位置,length為字符串長(zhǎng)度,實(shí)際應(yīng)用中以len(expression)取得其長(zhǎng)度right(char_expr,int_expr)返回字符串右邊第in
42、t_expr個(gè)字符,還用left于之相反4,isnull(check_expression,replacement_value)如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作類5,Sp_addtype自定義數(shù)據(jù)類型例如:使返回的結(jié)果中不包含有關(guān)受語(yǔ)句影響的行數(shù)的信息。如果存儲(chǔ)過(guò)程中包含的一些語(yǔ)句并不返回許多實(shí)際的數(shù)據(jù),則該設(shè)置由于大量減少了網(wǎng)絡(luò)流量,因此可顯著提高性能。設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。為時(shí),不返回計(jì)數(shù)(表示受語(yǔ)句影響的行數(shù))。為時(shí),返回計(jì)數(shù)常識(shí)在查詢中:后最多可以跟多少
43、張表或視圖:在語(yǔ)句中出現(xiàn)查詢時(shí),先排序,后取在中,一個(gè)字段的最大容量是,而對(duì)于由于是碼。同步復(fù)制技術(shù)實(shí)現(xiàn)步驟一、預(yù)備工作發(fā)布服務(wù)器訂閱服務(wù)器都創(chuàng)建一個(gè)同名的用戶并設(shè)置相同的密碼做為發(fā)布快照文件夾的有效訪問(wèn)用戶管理工具計(jì)算機(jī)管理用戶和組右鍵用戶新建用戶建立一個(gè)隸屬于組的登陸的用戶()在發(fā)布服務(wù)器上新建一個(gè)共享目錄做為發(fā)布的快照文件的存放目錄操作我的電腦新建一個(gè)目錄名為右鍵這個(gè)新建的目錄屬性共享選擇共享該文件夾通過(guò)權(quán)限按紐來(lái)設(shè)置具體的用戶權(quán)限保證第一步中創(chuàng)建的用戶具有對(duì)該文件夾的所有權(quán)限確定設(shè)置代理服務(wù)的啟動(dòng)用戶發(fā)布訂閱服務(wù)器均做此設(shè)置開(kāi)始管程管序管管管理工具管管服務(wù)右鍵屬性登陸選擇此賬戶輸入或者
44、選擇第一步中創(chuàng)建的登錄用戶名()密碼中輸入該用戶的密碼設(shè)置身份驗(yàn)證模式解決連接時(shí)的權(quán)限問(wèn)題發(fā)布訂閱服務(wù)器均做此設(shè)置企業(yè)管理器右鍵實(shí)例屬性-安全性-身份驗(yàn)證TOC o 1-5 h z選擇和確定5在.發(fā)布服務(wù)器和訂閱服務(wù)器上互相注冊(cè)企業(yè)管理器右鍵組新建注冊(cè)下一步可用的服務(wù)器中輸入你要注冊(cè)的遠(yuǎn)程服務(wù)器名添加下一步連接使用選擇第二個(gè)身份驗(yàn)證下一步輸入用戶名和密碼()下一步選擇組也可以創(chuàng)建一個(gè)新組新下新一步新新完成對(duì)于只能用不能用計(jì)算機(jī)名的為其注冊(cè)服務(wù)器別名(此步在實(shí)施中沒(méi)用到)在連接端配置比如在訂閱服務(wù)器上配置的話服務(wù)器名稱中輸入的是發(fā)布服務(wù)器的開(kāi)始程序客戶端網(wǎng)絡(luò)實(shí)用工具別名添加網(wǎng)絡(luò)庫(kù)選擇服務(wù)器別名輸
45、入服務(wù)器名連接參數(shù)服務(wù)器名稱中輸入服務(wù)器地址如果你修改了的端口取消選擇動(dòng)態(tài)決定端口并輸入對(duì)應(yīng)的端口號(hào)二、正式配置1、配置發(fā)布服務(wù)器打開(kāi)企業(yè)管理器,在發(fā)布服務(wù)器(、)上執(zhí)行以下步驟(1從)工具下拉菜單的復(fù)制子菜單中選擇配置發(fā)布、訂閱服務(wù)器和分發(fā)出現(xiàn)配置發(fā)布和分發(fā)向?qū)В?)下一步選擇分發(fā)服務(wù)器可以選擇把發(fā)布服務(wù)器自己作為分發(fā)服務(wù)器或者其他的服務(wù)器(選擇自己)(3)下一步設(shè)置快照文件夾采用默認(rèn)(4)下一步自定義配置可以選擇:是并讓我設(shè)置分發(fā)數(shù)據(jù)庫(kù)屬性啟用發(fā)布服務(wù)器或設(shè)置發(fā)布設(shè)置否并使用下列默認(rèn)設(shè)置(推薦)(5)下一步設(shè)置分發(fā)數(shù)據(jù)庫(kù)名稱和位置采用默認(rèn)值(6)下一步啟用發(fā)布服務(wù)器選擇作為發(fā)布的服務(wù)器下一
46、步選擇需要發(fā)布的數(shù)據(jù)庫(kù)和發(fā)布類型(8)下一步選擇注冊(cè)訂閱服務(wù)器(9)下一步完成配置2、創(chuàng)建出版物發(fā)布服務(wù)器、上從工具菜單的復(fù)制子菜單中選擇創(chuàng)建和管理發(fā)布命令選擇要?jiǎng)?chuàng)建出版物的數(shù)據(jù)庫(kù),然后單擊創(chuàng)建發(fā)布(3在)創(chuàng)建發(fā)布向?qū)У奶崾緦?duì)話框中單擊下一步系統(tǒng)就會(huì)彈出一個(gè)對(duì)話框。對(duì)話框上的內(nèi)容是復(fù)制的三個(gè)類型。我們現(xiàn)在選第一個(gè)也就是默認(rèn)的快照發(fā)布(其他兩個(gè)大家可以去看看幫助)(4單)擊下一步系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫(kù)服務(wù)器類型,允許在不同的數(shù)據(jù)庫(kù)如或之間進(jìn)行數(shù)據(jù)復(fù)制。但是在這里我們選擇運(yùn)行的數(shù)據(jù)庫(kù)服務(wù)器單擊下一步系統(tǒng)就彈出一個(gè)定義文章的對(duì)話框也就是選擇要出版的表注意如果前面選擇了事務(wù)發(fā)布則再這一步中
47、只能選擇帶有主鍵的表(6選)擇發(fā)布名稱和描述(7自)定義發(fā)布屬性向?qū)峁┑倪x擇:是我將自定義數(shù)據(jù)篩選,啟用匿名訂閱和或其他自定義屬性否根據(jù)指定方式創(chuàng)建發(fā)布(建議采用自定義的方式)(8下)一步選擇篩選發(fā)布的方式(9下)一步可以選擇是否允許匿名訂閱1如)果選擇署名訂閱,則需要在發(fā)布服務(wù)器上添加訂閱服務(wù)器方法:工具-復(fù)制-配置發(fā)布、訂閱服務(wù)器和分發(fā)的屬性-訂閱服務(wù)器中添加否則在訂閱服務(wù)器上請(qǐng)求訂閱時(shí)會(huì)出現(xiàn)的提示:改發(fā)布不允許匿名訂閱如果仍然需要匿名訂閱則用以下解決辦法企業(yè)管理器-復(fù)制-發(fā)布內(nèi)容-屬性-訂閱選項(xiàng)選擇允許匿名請(qǐng)求訂閱2如)果選擇匿名訂閱,則配置訂閱服務(wù)器時(shí)不會(huì)出現(xiàn)以上提示(10下)一步設(shè)
48、置快照代理程序調(diào)度(11下)一步完成配置當(dāng)完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫(kù)也就變成了一個(gè)共享數(shù)據(jù)庫(kù)有數(shù)據(jù)庫(kù)名有字段庫(kù)名有字段庫(kù)操名.a增加記錄則庫(kù)名記錄增加庫(kù)操名.a的字段更新,則庫(kù)名對(duì)應(yīng)字段更新要求:大-致的處理步驟在上創(chuàng)建連接服務(wù)器以便在中操作實(shí)現(xiàn)同步的實(shí)例名或用戶名密碼分布式事務(wù)處理服務(wù)并且在和這兩臺(tái)電腦中啟動(dòng)設(shè)置為自動(dòng)啟動(dòng)。我的電腦-控制面板-管理工具-服-務(wù)-右鍵屬性啟動(dòng)并將啟動(dòng)類型設(shè)置為自動(dòng)啟動(dòng)-然-后創(chuàng)建一個(gè)作業(yè)定時(shí)調(diào)用上面的同步處理存儲(chǔ)過(guò)程就行了企業(yè)管理器啟管啟理代理右鍵作業(yè)啟新啟建作業(yè)啟啟常規(guī)項(xiàng)中輸入作業(yè)名稱啟啟步驟項(xiàng)啟新啟建啟啟步驟名中輸入步驟名類型中選擇腳本啟啟數(shù)據(jù)庫(kù)
49、選擇執(zhí)行命令的數(shù)據(jù)庫(kù)啟啟命令中輸入要執(zhí)行的語(yǔ)句:execp_proce啟確啟定啟啟調(diào)度項(xiàng)-新建調(diào)度-名稱中輸入調(diào)度名稱-調(diào)度類型中選擇你的作業(yè)執(zhí)行安排如-果選擇反復(fù)出現(xiàn)點(diǎn)-更改來(lái)設(shè)置你的時(shí)間安排然后將服務(wù)啟動(dòng)并設(shè)置為自動(dòng)啟動(dòng)否則你的作業(yè)不會(huì)被執(zhí)行設(shè)置方法我的電腦控制面板管理工具服務(wù)右鍵屬性啟動(dòng)類型選擇自動(dòng)啟動(dòng)確定實(shí)現(xiàn)同步處理的方法定時(shí)同步在中創(chuàng)建如下的同步處理存儲(chǔ)過(guò)程更控新修改過(guò)的數(shù)據(jù)庫(kù)名插控入新增的數(shù)據(jù)庫(kù)名庫(kù)名刪控除已經(jīng)刪除的數(shù)據(jù)(如果需要的話庫(kù)名SQL基礎(chǔ)創(chuàng)建約束約束(Constraint)是MicrosoftSQLServer提供的自動(dòng)保持?jǐn)?shù)據(jù)庫(kù)完整性的一種方法,定義了可輸入表或表的單個(gè)
50、列中的數(shù)據(jù)的限制條件(有關(guān)數(shù)據(jù)完整性的介紹請(qǐng)參見(jiàn)第9章)。在SQLServer中有5種約束:主關(guān)鍵字約束(PrimaryKeyConstraint)、外關(guān)鍵字約束(ForeignKeyConstraint)、惟一性約束(UniqueConstraint)、檢查約束(CheckConstraint)和缺省約束(DefaultConstraint)。7.2.1主關(guān)鍵字約束主關(guān)鍵字約束指定表的一列或幾列的組合的值在表中具有惟一性,即能惟一地指定一行記錄。每個(gè)表中只能有一列被指定為主關(guān)鍵字,且IMAGE和TEXT類型的列不能被指定為主關(guān)鍵字,也不允許指定主關(guān)鍵字列有NULL屬性。定義主關(guān)鍵字約束的語(yǔ)法
51、如下:CONSTRAINTconstraint_namePRIMARYKEYCLUSTERED|NONCLUSTERED(column_name1,column_name2,.,column_name16)各參數(shù)說(shuō)明如下:constraint_name指定約束的名稱約束的名稱。在數(shù)據(jù)庫(kù)中應(yīng)是惟一的。如果不指定,則系統(tǒng)會(huì)自動(dòng)生成一個(gè)約束名。CLUSTERED|NONCLUSTERED指定索引類別,CLUSTERED為缺省值。其具體信息請(qǐng)參見(jiàn)下一章。column_name指定組成主關(guān)鍵字的列名。主關(guān)鍵字最多由16個(gè)列組成。例7-3:創(chuàng)建一個(gè)產(chǎn)品信息表,以產(chǎn)品編號(hào)和名稱為主關(guān)鍵字createtabl
52、eproducts(p_idchar(8)notnull,p_namechar(10)notnull,pricemoneydefault0.01,quantitysmallintnull,constraintpk_p_idprimarykey(p_id,p_name)onprimary7.2.2外關(guān)鍵字約束外關(guān)鍵字約束定義了表之間的關(guān)系。當(dāng)一個(gè)表中的一個(gè)列或多個(gè)列的組合和其它表中的主關(guān)鍵字定義相同時(shí),就可以將這些列或列的組合定義為外關(guān)鍵字,并設(shè)定它適合哪個(gè)表中哪些列相關(guān)聯(lián)。這樣,當(dāng)在定義主關(guān)鍵字約束的表中更新列值,時(shí)其它表中有與之相關(guān)聯(lián)的外關(guān)鍵字約束的表中的外關(guān)鍵字列也將被相應(yīng)地做相同的更新。
53、外關(guān)鍵字約束的作用還體現(xiàn)在,當(dāng)向含有外關(guān)鍵字的表插入數(shù)據(jù)時(shí),如果與之相關(guān)聯(lián)的表的列中無(wú)與插入的外關(guān)鍵字列值相同的值時(shí),系統(tǒng)會(huì)拒絕插入數(shù)據(jù)。與主關(guān)鍵字相同,不能使用一個(gè)定義為T(mén)EXT或IMAGE數(shù)據(jù)類型的列創(chuàng)建外關(guān)鍵字。外關(guān)鍵字最多由16個(gè)列組成。定義外關(guān)鍵字約束的語(yǔ)法如下:CONSTRAINTconstraint_nameFOREIGNKEY(column_name1,column_name2,.,column_name16)REFERENCESref_table(ref_column1,ref_column2,.,ref_column16)ONDELETECASCADE|NOACTIONON
54、UPDATECASCADE|NOACTIONNOTFORREPLICATION各參數(shù)說(shuō)明如下:REFERENCES指定要建立關(guān)聯(lián)的表的信息。ref_table指定要建立關(guān)聯(lián)的表的名稱。ref_column指定要建立關(guān)聯(lián)的表中的相關(guān)列的名稱。ONDELETECASCADE|NOACTION指定在刪除表中數(shù)據(jù)時(shí),對(duì)關(guān)聯(lián)表所做的相關(guān)操作。在子表中有數(shù)據(jù)行與父表中的對(duì)應(yīng)數(shù)據(jù)行相關(guān)聯(lián)的情況下,如果指定了值CASCADE,則在刪除父表數(shù)據(jù)行時(shí)會(huì)將子表中對(duì)應(yīng)的數(shù)據(jù)行刪除;如果指定的是NOACTION,則SQLServer會(huì)產(chǎn)生一個(gè)錯(cuò)誤,并將父表中的刪除操作回滾。NOACTION是缺省值。ONUPDATECASCADE|NOACTION指定在更新表中數(shù)據(jù)時(shí),對(duì)關(guān)聯(lián)表所做的相關(guān)操作。在子表中有數(shù)據(jù)行與父表中的對(duì)應(yīng)數(shù)據(jù)行相
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 實(shí)驗(yàn)學(xué)校課題申報(bào)書(shū)
- 課題幼兒申報(bào)書(shū)怎么寫(xiě)
- 聲樂(lè)表演創(chuàng)新課題申報(bào)書(shū)
- 化學(xué)品研發(fā)項(xiàng)目合同范例
- 課題申報(bào)書(shū)研究?jī)r(jià)值部分
- 農(nóng)村荒山轉(zhuǎn)租合同范本
- 農(nóng)田承包流轉(zhuǎn)合同范本
- 公司文員聘用合同范本
- 人造草坪回收合同范本
- 醫(yī)學(xué)脊柱外科課題申報(bào)書(shū)
- GB 16899-2011自動(dòng)扶梯和自動(dòng)人行道的制造與安裝安全規(guī)范
- 高中信息技術(shù)《人工智能》優(yōu)質(zhì)教學(xué)課件
- 2023年南平建陽(yáng)市工會(huì)系統(tǒng)招聘考試筆試題庫(kù)及答案解析
- 2022標(biāo)準(zhǔn)方法驗(yàn)證報(bào)告(安檢)
- 學(xué)術(shù)論文寫(xiě)作與規(guī)范課件
- 口腔診所藥品管理制度
- 中醫(yī)子午流注十二時(shí)辰養(yǎng)生法
- 養(yǎng)老院風(fēng)險(xiǎn)管控手冊(cè)
- 標(biāo)準(zhǔn)田字格帶拼音模板空白A4直接打印
- 小學(xué)語(yǔ)文 部編版 六年級(jí)下冊(cè) 第二單元 習(xí)作《寫(xiě)作品梗概》
- 4.7 數(shù)學(xué)建?;顒?dòng):生長(zhǎng)規(guī)律的描述教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論