版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、、基础(建表、建约束、关系)约束(Constraint)是MicrosoftSQLServer提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9章)。在SQLServer中有5种约束:主关键字约束(PrimaryKeyConstraint)、外关键字约束(ForeignKeyConstraint)、惟一性约束(UniqueConstraint)、检查约束(CheckConstraint)和缺省约束(DefaultConstraint)。(最后几页介绍SQL基础约束)1、说明:创建数据库CREATEDATABASEdatabase-
2、name2、说明:删除数据库dropdatabasedbname3、说明:备份sqlserver创建备份数据的deviceUSEmasterEXECsp_addumpdevicedisk,testBack,c:mssql7backupMyNwind_1.dat开始备份BACKUPDATABASEpubsTOtestBack4、说明:创建新表createtabletabname(col1type1notnullprimarykey,col2type2notnull,.)-建表、建约束、关系createtabletableok(col1int,col2_notnullintnotnull,col3
3、_defaultnchar(1)notnulldefault(男),-默认男col4_defaultdatetimenotnulldefault(getdate(),-默认得到系统时间col5_checkintnotnullcheck(col5_check=18andcol5_check=55),-添加约束,数据值在18到55之间col6_checknchar(9)notnullcheck(col6_checklikemsd09020-9A6-9),-添加约束,数据值前7位必须是msd0902倒数第两位可以是0-9中任意一个数字,最后一位不是6-9之间的数字。cola_primarynchar
4、(5)notnullprimarykey,-建立主键colb_uniqueintunique,-唯一约束col7_Identityintnotnullidentity(100,1),-自增长,从100开始,每列值增加1个col8_identitynumeric(5,0)notnullidentity(1,1)-自增长,从1开始,每列值增加1个,最大值是5位的整数col9_guiduniqueidentifiernotnulldefault(newid()-使用newid()函数,随机获取列值)-alter-主外键/引用/关系约束altertable从表名withcheck-启用withnoch
5、eck-禁用约束addconstraintFK_主表名_从表名foreignkey(从表中的字段名)references主表名(主表中的字段名)-其它非主外键约束altertablewfaddconstraint约束名约束类型具体的约束说明altertablewf-修改联合主键addconstraintPk_cola_primaryprimarykey(cola_primary,col1)根据已有的表创建新表:A:createtabletab_newliketab_old(使用旧表创建新表)B:createtabletab_newasselectcol1,col2.fromtab_olddef
6、initiononly5、说明:删除新表droptabletabname6、说明:增加一个列Altertabletabnameaddcolumncoltype注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。7、说明:添加主键:Altertabletabnameaddprimarykey(col)说明:删除主键:Altertabletabnamedropprimarykey(col)8、说明:创建索引:createuniqueindexidxnameontabname(col.)删除索引:dropindexidxname注:索引是不可更改的
7、,想更改必须删除重新建。9、说明:创建视图:createviewviewnameasselectstatement删除视图:dropviewviewname10、说明:几个简单的基本的sql语句选择:select*fromtable1where范围插入:insertintotable1(field1,field2)values(value1,value2)删除:deletefromtable1where范围更新:updatetable1setfield1=value1where范围查找:select*fromtablelwherefieldllike%value1%like的语法很精妙,查资料
8、!排序:select*fromtablelorderbyfield1,field2desc总数:selectcountastotalcountfromtable1求和:selectsum(field1)assumvaluefromtable1平均:selectavg(field1)asavgvaluefromtable1最大:selectmax(field1)asmaxvaluefromtable1最小:selectmin(field1)asminvaluefromtable111、说明:几个高级查询运算词A:UNION运算符UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE
9、2)并消去表中任何重复行而派生出一个结果表。当ALL随UNION起使用时(即UNIONALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1就是来自TABLE2。B:EXCEPT运算符EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。当ALL随EXCEPT一起使用时(EXCEPTALL),不消除重复行。C:INTERSECT运算符INTERSECT运算符通过只包括TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。当ALL随INTERSECT一起使用时(INTERSECTALL),不消除重复行。注:使用
10、运算词的几个查询结果行必须是一致的。12、说明:使用外连接A、left(outer)join:左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.cB:right(outer)join:右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。C:full/cross(outer)join:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。12、分组:Groupby:一张表,一旦分组完成后,查询后只能得到组相关的信息。组相关
11、的信息:(统计信息)count,sum,max,min,avg分组的标准)在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据在selecte统计函数中的字段,不能和普通的字段放在一起;13、对数据库进行操作:分离数据库:sp_detach_db;附加数据库:sp_attach_db后接表明,附加需要完整的路径名14.如何修改数据库的名称:sp_renamedbold_name,new_name二、提升1、说明:复制表(只复制结构,源表名:a新表名:b)(Access可用)法一:select*intobfromawhere11(仅用于SQlServer)法
12、二:selecttop0*intobfroma2、说明:拷贝表(拷贝数据,源表名:a目标表名:b)(Access可用)insertintob(a,b,c)selectd,e,ffromb;3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径)(Access可用)insertintob(a,b,c)selectd,e,ffrombin具体数据库where条件例子:.frombin&Server.MapPath(.)&data.mdb&where.4、说明:子查询(表名1:a表名2:b)selecta,b,cfromawhereaIN(selectdfromb)或者:selecta,b,cfrom
13、awhereaIN(1,2,3)5、说明:显示文章、提交人和最后回复时间selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b6、说明:外连接查询(表名1:a表名2:b)selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c7、说明:在线视图查询(表名1:a)select*from(SELECTa,b,cFROMa)Twheret.a1;8、说明:between的用法between限
14、制查询数据范围时包括了边界值,notbetween不包括select*fromtable1wheretimebetweentime1andtime2selecta,b,c,fromtable1whereanotbetween数值1and数值29、说明:in的使用方法select*fromtablelwhereanotin(值1,值2,值4,值6)10、说明:两张关联表,删除主表中已经在副表中没有的信息deletefromtable1wherenotexists(select*fromtable2wheretable1.field1=table2.field1)11、说明:四表联查问题:sele
15、ct*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere12、说明:日程安排提前五分钟提醒SQL:select*from日程安排wheredatediff(minute,f开始时间,getdate()513、说明:一条sql语句搞定数据库分页selecttop10b.*from(selecttop20主键字段,排序字段from表名orderby排序字段desc)a,表名bwhereb.主键字段=a.主键字段orderbya.排序字段具体实现:关于数据库分页:declarestartint,en
16、dintsqlnvarchar(600)setsql=selecttop+str(end-start+1)+fromTwhereridnotin(selecttop+str(str-1)+RidfromTwhereRid-1)execsp_executesqlsql注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)14、说明:前10条记录sele
17、cttop10*formtable1where范围15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)selecta,b,cfromtablenametawherea=(selectmax(a)fromtablenametbwheretb.b=ta.b)16、说明:包括所有在TableA中但不在TableB和TableC中的行并消除所有重复行而派生出一个结果表(selectafromtableA)except(selectafromtableB)except(selectafromtableC)1
18、7、说明:随机取出10条数据selecttop10*fromtablenameorderbynewid()18、说明:随机选择记录selectnewid()19、说明:删除重复记录1),deletefromtablenamewhereidnotin(selectmax(id)fromtablenamegroupbycol1,col2,.)2),selectdistinct*intotempfromtablenamedeletefromtablenameinsertintotablenameselect*fromtemp评价:这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作3),例如
19、:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段altertabletablename-添加一个自增列addcolumn_bintidentity(1,1)deletefromtablenamewherecolumn_bnotin(selectmax(column_b)fromtablenamegroupbycolumn1,column2,.)altertabletablenamedropcolumncolumn_b20、说明:列出数据库里所有的表名selectnamefromsysobjec
20、tswheretype=U/U代表用户21、说明:列出表里的所有的列名selectnamefromsyscolumnswhereid=object_id(TableName)22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select中的case。selecttype,sum(casevenderwhenAthenpcselse0end),sum(casevenderwhenCthenpcselse0end),sum(casevenderwhenBthenpcselse0end)FROMtablenamegroupbytype显示结果
21、:typevenderpcs电脑A1电脑A1光盘B2光盘A2手机B3手机C323、说明:初始化表table1TRUNCATETABLEtable124、说明:选择从10到15的记录selecttop5*from(selecttop15*fromtableorderbyidasc)table_别名orderbyiddesc三、技巧1、1=1,1=2的使用,在SQL语句组合时用的较多“where1=1”是表示选择全部“where1=2”全部不选,如:ifstrWhere!=beginsetstrSQL=selectcount(*)asTotalfrom+tblName+where+strWhere
22、endelsebeginsetstrSQL=selectcount(*)asTotalfrom+tblName+end我们可以直接写成错误!未找到目录项。setstrSQL=selectcount(*)asTotalfrom+tblName+where1=1安定+strWhere2、收缩数据库-重建索引DBCCREINDEXDBCCINDEXDEFRAG-收缩数据和日志DBCCSHRINKDBDBCCSHRINKFILE3、压缩数据库dbccshrinkdatabase(dbname)4、转移数据库给新用户以已存在用户权限execsp_change_users_loginupdate_one,
23、newname,oldnamego5、检查备份集RESTOREVERIFYONLYfromdisk=E:dvbbs.bak6、修复数据库ALTERDATABASEdvbbsSETSINGLE_USERGODBCCCHECKDB(dvbbs,repair_allow_data_loss)WITHTABLOCKGOALTERDATABASEdvbbsSETMULTI_USERGO7、日志清除SETNOCOUNTONDECLARELogicalFileNamesysname,MaxMinutesINT,NewSizeINTUSEtablename-要操作的数据库名SELECTLogicalFileN
24、ame=tablename_log,-日志文件名MaxMinutes=10,-Limitontimeallowedtowraplog.NewSize=1-你想设定的日志文件的大小(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、说明:更改某个表execsp_changeobjectownertablename,dbo9、存储更改全部表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中直接循环写入数据declareiintseti=1whilei30begin
30、insertintotest(userid)values(i)seti=i+1end案例:有如下表,要求就裱中所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格:NamescoreZhangshan80Lishi59Wangwu50Songquan69while(selectmin(score)fromtb_table)60)beginupdatetb_tablesetscore=score*1.01wherescore60breakelsecontinueend数据开发-经典1.按姓氏笔画排序:Select*FromTableNameOrderByCustomerNameColla
31、teChinese_PRC_Stroke_ci_as/从少到多2.数据库加密: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.查看硬盘分区:EXECmaster.xp_fixeddrives5比较A,B表是否相等:if(selectchecksum_agg(binary_checksum(*)fromA)(selectchecksum_agg(binary_checksum(*)fromB)print相等elseprint不相等6.杀掉所有的事件探察器进程:DECLAREhcforeachCURSORGLOBALFORSELECTkill+RTRIM(spid)FROMmaster.dbo.
33、sysprocessesWHEREprogram_nameIN(SQLprofiler,NSQL事件探查器)EXECsp_msforeach_worker?7.记录搜索:开头到N条记录SelectTopN*From表N到M条记录(要有主索引ID)SelectTopM-N*From表WhereIDin(SelectTopMIDFrom表)OrderbyIDDescN到结尾记录SelectTopN*From表OrderbyIDDesc案例例如1:一张表有一万多条记录,表的第一个字段RecID是自增长字段,写一个SQL语句,找出表的第31到第40个记录。selecttop10recidfromAwh
34、ererecidnotin(selecttop30recidfromA)分析:如果这样写会产生某些问题,如果recid在表中存在逻辑索引。selecttop10recidfromAwhere是从索引中查找,而后面的selecttop30recidfromA则在数据表中查找,这样由于索引中的顺序有可能和数据表中的不一致,这样就导致查询到的不是本来的欲得到的数据。解决方案1,用orderbyselecttop30recidfromAorderbyricid如果该字段不是自增长,就会出现问题2,在那个子查询中也加条件:selecttop30recidfromAwhererecid-1例2:查询表中的
35、最后以条记录,并不知道这个表共有多少数据,以及表结构。sets=selecttop1*fromTwherepidnotin(selecttop+str(count-1)+pidfromT)printsexecsp_executesqls9:获取当前数据库中的所有用户表selectNamefromsysobjectswherextype=uandstatus=010:获取某一个表的所有字段selectnamefromsyscolumnswhereid=object_id(表名)selectnamefromsyscolumnswhereidin(selectidfromsysobjectswher
36、etype=uandname=表名)两种方式的效果相同11:查看与某一个表相关的视图、存储过程、函数selecta.*fromsysobjectsa,syscommentsbwherea.id=b.idandb.textlike%表名%12:查看当前数据库中所有存储过程selectnameas存储过程名称fromsysobjectswherextype=P13:查询用户创建的所有数据库select*frommaster.sysdatabasesDwheresidnotin(selectsidfrommaster.sysloginswherename=sa)或者selectdbid,nameAS
37、DB_NAMEfrommaster.sysdatabaseswheresid0 x0114:查询某一个表的字段和数据类型selectcolumn_name,data_typefrominformation_schema.columnswheretable_name=表名15:不同服务器数据库之间的数据操作-创建链接服务器execsp_addlinkedserverITSV,SQLOLEDB,远程服务器名或ip地址execsp_addlinkedsrvloginITSV,false,null,用户名,密码-查询示例select*fromITSV.数据库名.dbo.表名-导入示例select*in
38、to表fromITSV.数据库名.dbo.表名-以后不再使用时删除链接服务器execsp_dropserverITSV,droplogins-连接远程/局域网数据(openrowset/openquery/opendatasource)-1、openrowset-查询示例select*fromopenrowset(SQLOLEDB,sql服务器名;用户名;密码,数据库名.dbo.表名)-生成本地表select*into表fromopenrowset(SQLOLEDB,sql服务器名;用户名;密码,数据库名.dbo.表名)-把本地表导入远程表insertopenrowset(SQLOLEDB,s
39、ql服务器名;用户名;密码,数据库名.dbo.表名)select*from本地表-更新本地表updatebsetb.列A=a.列Afromopenrowset(SQLOLEDB,sql服务器名;用户名;密码,数据库名.dbo.表名)asainnerjoin本地表bona.column1=b.column1-openquery用法需要创建一个连接-首先创建一个连接创建链接服务器execsp_addlinkedserverITSV,SQLOLEDB,远程服务器名或ip地址-查询select*FROMopenquery(ITSV,SELECT*FROM数据库.dbo.表名)-把本地表导入远程表ins
40、ertopenquery(ITSV,SELECT*FROM数据库.dbo.表名)select*from本地表-更新本地表updatebsetb.列B=a.列BFROMopenquery(ITSV,SELECT*FROM数据库.dbo.表名)asainnerjoin本地表bona.列A=b.列A-3、opendatasource/openrowsetSELECT*FROMopendatasource(SQLOLEDB,DataSource=ip/ServerName;UserID=登陆名Password=密码).test.dbo.roy_ta-把本地表导入远程表insertopendatasou
41、rce(SQLOLEDB,DataSource=ip/ServerName;UserID=登陆名;Password=密码).数据库.dbo.表名select*from本地表SQLServer基本函数SQLServer基本函数1.字符串函数长度与分析用datalength(Char_expr)返回字符串包含字符数,但不包含后面的空格substring(expression,start,length)取子串,字符串的下标是从1”,start为起始位置,length为字符串长度,实际应用中以len(expression)取得其长度right(char_expr,int_expr)返回字符串右边第in
42、t_expr个字符,还用left于之相反4,isnull(check_expression,replacement_value)如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作类5,Sp_addtype自定義數據類型例如:使返回的结果中不包含有关受语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。设置是在执行或运行时设置,而不是在分析时设置。为时,不返回计数(表示受语句影响的行数)。为时,返回计数常识在查询中:后最多可以跟多少
43、张表或视图:在语句中出现查询时,先排序,后取在中,一个字段的最大容量是,而对于由于是码。同步复制技术实现步骤一、预备工作发布服务器订阅服务器都创建一个同名的用户并设置相同的密码做为发布快照文件夹的有效访问用户管理工具计算机管理用户和组右键用户新建用户建立一个隶属于组的登陆的用户()在发布服务器上新建一个共享目录做为发布的快照文件的存放目录操作我的电脑新建一个目录名为右键这个新建的目录属性共享选择共享该文件夹通过权限按纽来设置具体的用户权限保证第一步中创建的用户具有对该文件夹的所有权限确定设置代理服务的启动用户发布订阅服务器均做此设置开始管程管序管管管理工具管管服务右键属性登陆选择此账户输入或者
44、选择第一步中创建的登录用户名()密码中输入该用户的密码设置身份验证模式解决连接时的权限问题发布订阅服务器均做此设置企业管理器右键实例属性-安全性-身份验证TOC o 1-5 h z选择和确定5在.发布服务器和订阅服务器上互相注册企业管理器右键组新建注册下一步可用的服务器中输入你要注册的远程服务器名添加下一步连接使用选择第二个身份验证下一步输入用户名和密码()下一步选择组也可以创建一个新组新下新一步新新完成对于只能用不能用计算机名的为其注册服务器别名(此步在实施中没用到)在连接端配置比如在订阅服务器上配置的话服务器名称中输入的是发布服务器的开始程序客户端网络实用工具别名添加网络库选择服务器别名输
45、入服务器名连接参数服务器名称中输入服务器地址如果你修改了的端口取消选择动态决定端口并输入对应的端口号二、正式配置1、配置发布服务器打开企业管理器,在发布服务器(、)上执行以下步骤(1从)工具下拉菜单的复制子菜单中选择配置发布、订阅服务器和分发出现配置发布和分发向导(2)下一步选择分发服务器可以选择把发布服务器自己作为分发服务器或者其他的服务器(选择自己)(3)下一步设置快照文件夹采用默认(4)下一步自定义配置可以选择:是并让我设置分发数据库属性启用发布服务器或设置发布设置否并使用下列默认设置(推荐)(5)下一步设置分发数据库名称和位置采用默认值(6)下一步启用发布服务器选择作为发布的服务器下一
46、步选择需要发布的数据库和发布类型(8)下一步选择注册订阅服务器(9)下一步完成配置2、创建出版物发布服务器、上从工具菜单的复制子菜单中选择创建和管理发布命令选择要创建出版物的数据库,然后单击创建发布(3在)创建发布向导的提示对话框中单击下一步系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)(4单)击下一步系统要求指定可以订阅该发布的数据库服务器类型,允许在不同的数据库如或之间进行数据复制。但是在这里我们选择运行的数据库服务器单击下一步系统就弹出一个定义文章的对话框也就是选择要出版的表注意如果前面选择了事务发布则再这一步中
47、只能选择带有主键的表(6选)择发布名称和描述(7自)定义发布属性向导提供的选择:是我将自定义数据筛选,启用匿名订阅和或其他自定义属性否根据指定方式创建发布(建议采用自定义的方式)(8下)一步选择筛选发布的方式(9下)一步可以选择是否允许匿名订阅1如)果选择署名订阅,则需要在发布服务器上添加订阅服务器方法:工具-复制-配置发布、订阅服务器和分发的属性-订阅服务器中添加否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅如果仍然需要匿名订阅则用以下解决办法企业管理器-复制-发布内容-属性-订阅选项选择允许匿名请求订阅2如)果选择匿名订阅,则配置订阅服务器时不会出现以上提示(10下)一步设
48、置快照代理程序调度(11下)一步完成配置当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库有数据库名有字段库名有字段库操名.a增加记录则库名记录增加库操名.a的字段更新,则库名对应字段更新要求:大-致的处理步骤在上创建连接服务器以便在中操作实现同步的实例名或用户名密码分布式事务处理服务并且在和这两台电脑中启动设置为自动启动。我的电脑-控制面板-管理工具-服-务-右键属性启动并将启动类型设置为自动启动-然-后创建一个作业定时调用上面的同步处理存储过程就行了企业管理器启管启理代理右键作业启新启建作业启启常规项中输入作业名称启启步骤项启新启建启启步骤名中输入步骤名类型中选择脚本启启数据库
49、选择执行命令的数据库启启命令中输入要执行的语句:execp_proce启确启定启启调度项-新建调度-名称中输入调度名称-调度类型中选择你的作业执行安排如-果选择反复出现点-更改来设置你的时间安排然后将服务启动并设置为自动启动否则你的作业不会被执行设置方法我的电脑控制面板管理工具服务右键属性启动类型选择自动启动确定实现同步处理的方法定时同步在中创建如下的同步处理存储过程更控新修改过的数据库名插控入新增的数据库名库名删控除已经删除的数据(如果需要的话库名SQL基础创建约束约束(Constraint)是MicrosoftSQLServer提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个
50、列中的数据的限制条件(有关数据完整性的介绍请参见第9章)。在SQLServer中有5种约束:主关键字约束(PrimaryKeyConstraint)、外关键字约束(ForeignKeyConstraint)、惟一性约束(UniqueConstraint)、检查约束(CheckConstraint)和缺省约束(DefaultConstraint)。7.2.1主关键字约束主关键字约束指定表的一列或几列的组合的值在表中具有惟一性,即能惟一地指定一行记录。每个表中只能有一列被指定为主关键字,且IMAGE和TEXT类型的列不能被指定为主关键字,也不允许指定主关键字列有NULL属性。定义主关键字约束的语法
51、如下:CONSTRAINTconstraint_namePRIMARYKEYCLUSTERED|NONCLUSTERED(column_name1,column_name2,.,column_name16)各参数说明如下:constraint_name指定约束的名称约束的名称。在数据库中应是惟一的。如果不指定,则系统会自动生成一个约束名。CLUSTERED|NONCLUSTERED指定索引类别,CLUSTERED为缺省值。其具体信息请参见下一章。column_name指定组成主关键字的列名。主关键字最多由16个列组成。例7-3:创建一个产品信息表,以产品编号和名称为主关键字createtabl
52、eproducts(p_idchar(8)notnull,p_namechar(10)notnull,pricemoneydefault0.01,quantitysmallintnull,constraintpk_p_idprimarykey(p_id,p_name)onprimary7.2.2外关键字约束外关键字约束定义了表之间的关系。当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它适合哪个表中哪些列相关联。这样,当在定义主关键字约束的表中更新列值,时其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新。
53、外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联的表的列中无与插入的外关键字列值相同的值时,系统会拒绝插入数据。与主关键字相同,不能使用一个定义为TEXT或IMAGE数据类型的列创建外关键字。外关键字最多由16个列组成。定义外关键字约束的语法如下:CONSTRAINTconstraint_nameFOREIGNKEY(column_name1,column_name2,.,column_name16)REFERENCESref_table(ref_column1,ref_column2,.,ref_column16)ONDELETECASCADE|NOACTIONON
54、UPDATECASCADE|NOACTIONNOTFORREPLICATION各参数说明如下:REFERENCES指定要建立关联的表的信息。ref_table指定要建立关联的表的名称。ref_column指定要建立关联的表中的相关列的名称。ONDELETECASCADE|NOACTION指定在删除表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在删除父表数据行时会将子表中对应的数据行删除;如果指定的是NOACTION,则SQLServer会产生一个错误,并将父表中的删除操作回滚。NOACTION是缺省值。ONUPDATECASCADE|NOACTION指定在更新表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育机构学生心理健康辅导手册(标准版)
- 建筑行业招标投标规范手册
- 网络安全防护与监测操作手册(标准版)
- 2026年1月广东广州市天河区旭日雅苑幼儿园编外人员招聘2人备考题库附答案详解(研优卷)
- 2026上半年重庆事业单位联考重庆市属单位招聘242人备考题库含答案详解(模拟题)
- 采购流程规范手册
- 企业内部控制制度与执行手册
- 2026云南临沧市老年大学招聘手机常用软件使用和手机视频制作兼职教师备考题库含答案详解(新)
- 2026广东依顿电子科技股份有限公司招聘绩效专员等岗位2人备考题库附参考答案详解(典型题)
- 2026上半年安徽事业单位联考铜陵市郊区招聘17人备考题库及参考答案详解(新)
- 2025年秋季散学典礼校长讲话:以四马精神赴新程携温暖期许启寒假
- 2026贵州省黔晟国有资产经营有限责任公司面向社会招聘中层管理人员2人备考考试试题及答案解析
- 躁狂发作的护理诊断及护理措施
- 第六节暂准进出口货物课件
- 通信工程冬季施工安全培训
- 中医外科乳房疾病诊疗规范诊疗指南2023版
- 压实沥青混合料密度 表干法 自动计算
- 田口三次设计
- 《我的戒烟》阅读答案
- GB/T 7442-2007角向磨光机
- GB/T 324-2008焊缝符号表示法
评论
0/150
提交评论