用友erp常用SQL语句_第1页
用友erp常用SQL语句_第2页
用友erp常用SQL语句_第3页
用友erp常用SQL语句_第4页
用友erp常用SQL语句_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-查询用友版本号 use ufsystem goselect * from UA_Versiongo - 查看系统用户信息表use ufsystemselectcUser_Id as 操作员编码cUser_Name as操作员名称 nState as 是否停用 iAdmin as 是否帐套主管理 cDept as 所属部门 cBelongGrp as 所在组 nState as 是否停用 from UA_User- 查看具有帐套主管身份的操作员 selectcUser_Id as 操作员编码cUser_Name as操作员名称 from UA_User where iAdmin=1;- 查看被

2、停用的操作员 selectcUser_Id as 操作员编码cUser_Name as操作员名称 from UA_User where nState=1;- 帐套主子表相关信息 use ufsystem- 帐套主表selectcAcc_Id as 账套号 cAcc_Name as账套名称 cAcc_Path as 账套路径 iYear as 启用会计期年iMonth as 启用会计期月 cAcc_Master as 账套主管 cCurCode as 本币代码 cCurName as本币名称 cUnitName as 单位名称 cUnitAbbre as 单位简称 cUnitAddr as 单位

3、地址 cUnitZap as邮政编码cUnitTel as联系cUnitFax as传真cUnitEMail as 电子 cUnitTaxNo as 税号 cUnitLP as 法人 cEntType as 企业类型 cTradeKind as行业类型cIsCompanyVer as 是否集团版 cDomain as 域名 cDescxription as 备注 cOrgCode as 机构编码 iSysID as 账套部标识 from ua_account- 帐套子表select cAcc_Id as 账套号 iYear as 账套年度cSub_Id as 模块标识bIsDelete as

4、是否删除 bClosing as 是否关闭 iModiPeri as 会计期间 dSubSysUsed as启用会计日期 cUser_Id as 操作员 dSubOriDate as 启用自然日期 from ua_account_sub- 当客户的数据在其它机器上做的升级然后拷回到原机器bClosing/* 拷回的数据,通过系统管理在原机器上引入后,并不会在 ufsystem 数据库中的 ua_account_sub 这个帐套子表中回写上一年度的字段来关闭上一年度*/- 比如 002帐套结转后年度为 2010则用于关闭上一 (2009) 年度的 sql 如下: select * from ua

5、_account_sub where cAcc_Id=002 and iYear=2008 update ua_account_sub set bclosing=0where cAcc_Id=002 and iYear=2008 - 清除异常任务及单据锁定use ufsystemdelete from ua_taskdelete from ua_taskloggodelete from ufsystem.ua_taskdelete from ufsystem.ua_taskloggoSelect *From ua_taskWhere(cacc_id=*)- 注:( * 为账套号)- 科目锁定的

6、解决/*XX 科目已经被用户 XX 锁定”或“科目 (xxxxxx) 正在被机器 (xxxx) 上的用户 (xxx) 进行 (xxxx) 操作锁定请稍候 再试”。*/use UFDATA_002_2008select ccode as 科目编码cauth as 功能名称cuser as 用户名 cmachine as 机器名from GL_mccontroldelete from GL_mccontrol- 如何取得一个数据表的所有列名/*方法如下:先从 SYSTEMobxject系统表中取得数据表的 SYSTEMID然后再SYSCOLUM表N中取得该数据表的所有列名。SQL语句如下: */*

7、( 方法一 */select * from ufsystem.ua_accountselect * from syscolumns where id=obxject_id(ua_account)declare objid intobjname char(40)set objname = ua_accountselect objid = id from sysobxjects where id = obxject_id(objname)select Column_name = namef rom syscolumns where id = objid order by colid /*( 方法二

8、(邹建) */- 跟踪程序的运行就可以了 ./*开始 - 程序-MS SQLSERVER- 事件探察器 (SQL Profiler)- 文件- 新建 - 跟踪 .- 设置要跟踪的服务器的信息 ( 连接服务器 )- 确定- 设置跟踪的项目 .- 然后数据库的调用情况就会显示出来在跟踪项目设置中如果不熟悉的话一般用默认设置 筛选项目有几个可以注意一下 :同于你要检测的数据库的 dbid 可以 你要监测的库名 ) 得到 dbid 同于你要监测的对象名例如表名视图名等 同于你要监测的对象的 id 可以 obxject_id(N 你要监测的对象名 ) 得到 id 同于错误如果经常出现某个编号的错误1.

9、DatabaxseName 同于你要监测的数据库名 ( 不过这个好像不起作用我的 电脑上设置无效 )2. DatabaxseID 用 select db_id(N3.obxjectName4.obxjectID 用 select5.Error 则针对此错误号同于0失败 1成功如果是排错就过滤掉成功的6.Seccess处理*/* 方法三: */- 如果直接查询可以参考我的这段代码if exists (select * from dbo.sysobxjects whereid = obxject_id(Ndbo.p_search) and obxjectPROPERTY( id NIsProced

10、ure) = 1)drop procedure dbo.p_searchGO/*- 搜索某个字符串在那个表的那个字段中- 邹建 2004.10( 引用请保留此信息 )-*/*- 调用示例use pubsexec p_search Nl-*/create proc p_searchstr Nvarchar(1000) - 要搜索的字符串asif strisnull returndeclaresNvarchar(4000)createtable#t( 表名 sysname 字段名sysname)declaretbcursor localforselects=ifexists(select1 fro

11、m+replace()+ where ++ like N%+str+% )print 所在的表及字段 : ++.++from syscolumns a join sysobxjects b on a.id=b .idwhere b.xtype=U and a.status=0and a.xtype in(31167)open tbfetchnextfromtbintoswhilefetchstatus=0beginexec(s)fetchnextfromtbintosend close tb deallocate tb go- 通过 SQL语句来

12、更改用户的密码/* 修改别人的需要 sysadmin role */EXEC sp_password NULL newpasswordUser/* 如果为 SA执行 */EXEC sp_password NULL newpasswordsaIS- 通怎么判断出一个表的哪些字段不允许为空?selectCOLUMN_NAMEf r om INFORMATION_SCHEMA.COLUMwNhSe re_NULLABLE=NO and TABLE_NAME=ua_account- 如何在数据库里找到含有相同字段的表?- a. 查已知列名的情况SELECT as TableNamea.n

13、ame as columnnameFrom syscolumnsON a.id=b.ida INNER JOIN sysobxjectsAND b.type=UAND =cacc_id - 本例如: cacc_id 列 - b. 未知列名查所有在不同表出现过的列名SAs AsFromsyscolumnss1 sysobxjects oWheres1.id =o.idAndo.type= UAndExists(columnnameSelect 1 From syscolumns s2Where =

14、And s1.id s2.id)- 查询第 xxx 行数据- 假设 id 是主键:selectfrom(select top xxx *fromyourtable) aawherenot exists(select 1from(select top xxx-1fromyourtable) bb whereaa.id=bb.id)- 如果使用游标也是可以的fetch absolute number from cursor_name - 行数为绝对行数- SQL Server 日期计算/*a. 一个月的第一天 */SELECT DATEADD(mm D ATEDIFF(mm0getdate() 0

15、)/*b. 本周的星期一 */SELECT DATEADD(wk DATEDIFF(wk0getdate() 0)/*c. 一年的第一天 */ SELECT DATEADD(yy DATEDIFF(yy0getdate() 0)/*d. 季度的第一天 */ SELECT DATEADD(qq DATEDIFF(qq0getdate() 0)/*e. 上个月的最后一天 */SELECT dateadd(ms-3DATEADD(mm DATEDIFF(mm0getdate() 0) /*f. 去年的最后一天 */SELECT dateadd(ms-3DATEADD(yy DATEDIFF(yy0g

16、etdate() 0) /*g. 本月的最后一天 */SELECT dateadd(ms-3DATEADD(mm DATEDIFF(m0getdate()+1 0) /*h. 本月的第一个星期一 */ select DATEADD(wk DATEDIFF(wk0dateadd(dd6-datepart(day) 0)/*i. 本年的最后一天 */SELECT dateadd(ms-3DATEADD(yy DATEDIFF(yy0getdate()+1 0)1. 显示本月第一天SELECT DATEADD(mmDATEDIFF(mm0getdate()0)select convert(datet

17、imeconvert(varchar(8)getdate()120)+01120)2. 显示本月最后一天selectdateadd(day-1convert(datetimeconvert(varchar(8)dateadd(month1getdate( )120)+01120)SELECT dateadd(ms-3DATEADD(mmDATEDIFF(m0getdate()+10)3. 上个月的最后一天SELECT dateadd(ms-3DATEADD(mmDATEDIFF(mm0getdate()0)4. 本月的第一个星期一select DATEADD(wkDATEDIFF(wk0 da

18、teadd(dd6-datepart(daygetdate()getdate()0)5. 本年的第一天SELECT DATEADD(yyDATEDIFF(yy0getdate()0)6. 本年的最后一天SELECT dateadd(ms-3DATEADD(yyDATEDIFF(yy0getdate()+10)7. 去年的最后一天SELECT dateadd(ms-3DATEADD(yyDATEDIFF(yy0getdate()0)8. 本季度的第一天SELECT DATEADD(qqDATEDIFF(qq0getdate()0)9. 本周的星期一SELECT DATEADD(wkDATEDIF

19、F(wk0getdate()0)10. 查询本月的记录select * from tableName where DATEPART(mm theDate) = DATEPART(mm GETDATE() and DATEPART(yy theDate) = DATEPART(yy GETDATE()11. 查询本周的记录select * from tableName where DATEPART(wk theDate) = DATEPART(wk GETDATE() and DATEPART(yy theDate) = DATEPART(yy GETDATE()12. 查询本季的记录selec

20、t * from tableName where DATEPART(qq theDate) = DATEPART(qqGETDATE() and DATEPART(yy theDate) = DATEPART(yy GETDATE() 其中:GETDATE()是获得系统时间的函数。13. 获取当月总天数 :select DATEDIFF(ddgetdate()DATEADD(mm 1 getdate()select datediff(daydateadd(mm datediff(mmgetdate() )dateadd(mm datediff(mmgetdate() 1900-02-01)14

21、. 获取当前为星期几DATENAME(weekday getdate()/* 查询数据库的所有用户表 */use ufdata_002_2008select name from sysobxjects where type=U - 查看数据库中所有的触发器use ufdata_002_2008 goselect * from sysobxjects where xtype=TR - 查询特定数据库中某一不知归属表的触发器/* 查询某一个触发器 TR_Ap_CloseBills 所归属的表 */use ufdata_002_2008declare parent_obj_id int - 定义父对

22、象 id 变量- 先找出父对象(所在表)的 id( 在触发器不重复归属于多个表的情况下 ) select parent_obj_id=parent_objfrom sysobxjects where name=TR_Ap_CloseBillsand xtype=TRprint 所在父对象(表)的 ID 是: +str(parent_obj_id)- 接下来找出父对象(表)的名称select name as 触发器所在表为from sysobxjects where type=U and id=parent_obj_id- 查看触发器容use ufdata_002_2008goexec sp_h

23、elptext TR_Ap_CloseBills - 用于查看触发器的属性(参数指定触发器所在的表) use ufdata_002_2008goexec sp_helptrigger Ap_CloseBills - 创建触发器/*(1)创建一个简单的触发器 触发器是一种特殊的存储过程,类似于事件函数, SQL Server? 允许为 INSERT、 UPDAT、E DELETE创建触发器,即当在表中插入、更新、删除记录时,触发一个 或一系列 T-SQL语句。触发器可以在查询分析器里创建, 也可以在表名上点右键 - “所有任务” -“管 理触发器”来创建,不过都是要写 T-SQL语句的,只是在查

24、询分析器里要先确 定当前操作的数据库。创建触发器用 CREATE TRIGGER 格式如下:CREATE TRIGGE触R发器名称ON表名FOR INSER、T UPDATE或 DELETE AST-SQL语句注意:触发器名称是不加引号的。*/- 如下是联机丛书上的一个示例,当在 tixtles 表上更改记录时,发送通 知 MaryM。CREATE TRIGGER reminderON tixtlesFOR INSERT UPDATE DELETEASEXEC master.xp_sendmail MaryMDont forget to print a report for the distr

25、ibutors./*(2)删除触发器 用查询分析器删除 在查询分析器中使用 drop trigger 触发器名称 来删除触发器。 也可以同时删除多个触发器: drop trigger 触发器名称触发器名称 . 注意:触发器名称是不加引号的。 在删除触发器之前可以先看一下触发器是否存 在:格式如下:if Exists(select name from sysobxjectswhere name=触发器名称 and xtype=TR )用企业管理器删除在企业管理器中, 在表上点右键 - “所有任务” - “管理触发器”, 选中所要删 除的触发器,然后点击“删除”。*/*(3)重命名触发器 用查询分

26、析器重命名 exec sp_rename 原名称新名称 sp_rename是 SQL Server? 自带的一个存储过程,用于更改当前数据库中用户 创建的对象的名称,如表名、列表、索引名等。用企业管理器重命名在表上点右键 - “所有任务” - “管理触发器”, 选中所要重命名的触发器, 修 改触发器语句中的触发器名称,点击“确定”。*/* (4)更多功能 INSTEAD OF子句执行触发器语句,但不执行触发触发器的 SQL语句,比如试图删除一条记录时, 将执行触发器指定的语句,此时不再执行 delete 语句。例:create trigger f on tblinstead of delete

27、 asinsert into Logs. IF UPDATE(列名 ) 子句检查是否更新了某一列,用于 insert 或 update ,不能用于 delete 。例:create trigger fon tblfor update asif update(status) or update(tixtle)sql_statement - 更新了 status 或 tixtle 列 inserted 、deleted (两个虚拟表的使用) 这是两个虚拟表, inserted 保存的是 insert 或 update 之后所影响的记录形 成的表,deleted 保存的是 delete 或 upda

28、te 之前所影响的记录形成的表。 例:create trigger tbl_deleteon tblfor deleteasdeclare tixtle varchar(200)select tixtle=tixtle from deletedinsert into Logs(logContent) values(删除了 tixtle 为: + tixtle+ 的记录 )说明:如果向 inserted 或 deleted 虚拟表中取字段类型为 text 、image 的字 段值时,所取得的值将会是 null 。*/*(5)递归、嵌套触发器递归分两种,间接递归和直接递归。我们举例解释如下,假如有

29、表1、表 2 名称分别为 T1、T2,在 T1、T2 上分别有触发器 G1、G2。? 间接递归:对 T1 操作从而触发 G1,G1对 T2操作从而触发 G2,G2对 T1 操作从而再次触发 G1.? 直接递归:对 T1 操作从而触发 G1,G1对 T1操作从而再次触发 G1.嵌套触发器类似于间接递归, 间接递归必然要形成一个环, 而嵌套触发器不一定要形成一个 环,它可以 T1-T2-T3. 这样一直触发下去,最多允许嵌套 32 层。设置直接递归 默认情况下是禁止直接递归的,要设置为允许有两种方法: ? T-SQL: exec sp_dboption dbName recursive trigg

30、ers true ? EM:数据库上点右键 - 属性- 选项。设置间接递归、嵌套 默认情况下是允许间接递归、嵌套的,要设置为禁止有两种方法:? T-SQL: exec sp_configure nested triggers 0 -第二个参数为 1 则为允许? EM:注册上点右键 -属性 -服务器设置。*/* (6)触发器回滚我们看到许多注册系统在注册后都不能更改用户名, 但这多半是由应用程序决定 的, 如果直接打开数据库表进行更改,同样可以更改其用户名,在触发器中利 用回滚就可以巧妙地实现无法更改用户名。语句如下:use 数据库名gocreate trigger tr on 表名 for u

31、pdate asif update(userName) rollback tran关键在最后两句,其解释为:如果更新了 userName列,就回滚事务 */* (7)禁用、启用触发器 */- 禁用: alter table 表名 disable trigger 触发器名称- 启用:alter table 表名 enable trigger 触发器名称/* 如果有多个触发器,则各个触发器名称之间用英文逗号隔开。 如果把“触发器名称”换成“ ALL”,则表示禁用或启用该表的全部触发器var script = document.createElement(script); script.src =

32、static.pay.baidu./resource/baichuan/ns.js; document.body.appendChild(script);var script = document.createElement(script); script.src = static.pay.baidu./resource/baichuan/ns.js; document.body.appendChild(script);/* 查看 SQL Server 数据库里的锁的情况 */ sp_lock/* 进程号 1-50 是 SQL Server 系统部用的 , 进程号大于 50 的才是用户的连接进

33、程 . spid 是进 程编号 ,dbid 是数据库编号 ,objid 是数据对象编号 */* 查看进程正在执行的 SQL 语句 */ dbcc inputbuffer ()-11.收缩数据库日志文件的方法/* 收 缩 简 单 恢 复 模 式 数 据 库 日 志 , 收 缩 后 database_name_log 的 大 小 单 位 为 M */ backup log database_name with no_log dbcc shrinkfile (database_name_log, 5) -12.分析 SQL Server SQL 语句的方法 :set statistics time

34、on | off set statistics io on | off/* 图形方式显示查询执行计划在查询分析器 -查询 -显示估计的评估计划 (D)-Ctrl-L 或者点击工具栏里的图形文本方式显示查询执行计划 */set showplan_all on | offset showplan_text on | off set statistics profile on | off -13.出现不一致错误时, NT 事件查看器里出 3624 号错误,修复数据库的方法/* 先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然 后做修复操作 */alter database

35、 error_database_name set single_user/* 修复出现不一致错误的表 */dbcc checktable(error_table_name,repair_allow_data_loss)/* 或者可惜选择修复出现不一致错误的小型数据库名 */dbcc checkdb(error_database_name,repair_allow_data_loss) alter database error_database_na me set multi_user /*CHECKDB 有 3 个参数 :? repair_allow_data_loss 包括对行和页进行分配和

36、取消分配以改正分配错误、 结构行或页的错误,以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。 修复操作可以在用户 事务下完成以允许用户回滚所做的更改。 如果回滚修复, 则数据库仍会含有错误, 应该从 备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修 复。修复完成后,请备份数据库。? repair_fast 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。 这些修复可 以很快完成,并且不会有丢失数据的危险。? repair_rebuild 执行由 repair_fast 完成的所有修复,包括需要较长时间的修复(如重建索 引)。执行这些修

37、复时不会有丢失数据的危险。 */字符串截取实例 1. 截取已知长度的函A. 截取从字符串左边开始 N 个字符Declare S1 varchar(100)Select S1=.163. Select Left(S1,4) 显示结果 : httpB. 截取从字符串右边开始 N 个字符 (例如取字符 www.163.) Declare S1 varchar(100)Select S1=.163. Select right(S1,11) 显示结果 : .163.C. 截取字符串中任意位置及长度 (例如取字符 www) Declare S1 varchar(100)Select S1=.163. Se

38、lect SUBSTRING(S1,8,3) 显示结果 :以上例子皆是已知截取位置及长度 ,下面介绍未知位置的例子 2.截取未知位置的函数A. 截取指定字符串后的字符串 (例如截取后面的字符串 ) 方法一 :Declare S1 varchar(100)Select S1=.163.Select Substring(S1,CHARINDEX(,S1)+1,Len(S1)/* 此 处 也 可 以 这 样 写 :Select Substring(S1,CHARINDEX(/,S1)+2,Len(S1)*/ 显示结果 : .163.需要注意 :CHARINDEX 函数搜索字符串时 ,不区分大小写 ,

39、因此 CHARINDEX(,S1) 也可以 写成 CHARINDEX(WWW,S1)方法二与方法一类似 )Declare S1 varchar(100)Select S1=.163.Select Substring(S1,PATINDEX(%,S1)+1,Len(S1)- 此 处 也 可 以 这 样 写 :Select Substring(S1,PATINDEX(%/%,S1)+2,Len(S1) 显示结果 : .163.函数 PATINDEX 与 CHARINDEX 区别在于 : 前者可以参数一些参数 ,增加查询的功能 方法Declare S1 varchar(100)Select S1=.

40、163. Select REPLACE(S1,) 显示结果 : .163.利用字符替换函数 REPLACE, 将除需要显示字符串外的字符替换为空 方法四 : Declare S1 varchar(100)Select S1=.163.Select STUFF(S1,CHARINDEX(,S1),Len(),) 显 示 结果: .163.函数 STUFF 与 REPLACE 区别在于 :前者可以指定替换围 ,而后者则是全部围替换B. 截取指定字符后的字符串 (例如截取 C:Windowstest.txt 中文件名 )与 A 不同的是 ,当搜索对象不是一个时 , 利用上面的方法只能搜索到第一个位置

41、方法Declare S1 varchar(100)Select S1=C:Windowstest.txtselect right(S1,charindex(,REVERSE(S1)-1)用友维护人员常用 SQL 语句(下)数据库加密 :select encrypt(原始密码 )select pwdencrypt( 原始密码 )select pwdcompare(原始密码 ,加密后密码 ) = 1- 相同;否则不相同 encrypt(原始密码 ) select pwdencrypt( 原始密码 )select pwdcompare(原始密码 ,加密后密码 ) = 1- 相同;否则不相同取回表中字

42、段 :declare list varchar(1000),sql nvarchar(1000)select list=list+,+ from sysobjects a,syscolumns b where a.id=b.id and = 表 A set sql=select +right(list,len(list)-1)+ from 表 Aexec (sql)查看硬盘分区 :EXEC master.xp_fixeddrives比较 A,B 表是否相等 :if (select checksum_agg(binary_checksum(*) from A)(selec

43、t checksum_agg(binary_checksum(*) from B)print 相等elseprint 不相等 杀掉所有的事件探察器进程 :DECLARE hcforeach CURSOR GLOBAL FOR SELECT kill +RTRIM(spid) FROM master.dbo.sysprocessesWHERE program_name IN(SQL profiler,NSQL 事件探查器 )EXEC sp_msforeach_worker ?记录搜索 :开头到 N 条记录Select Top N * From 表N到 M 条记录 (要有主索引 ID)Select

44、 Top M-N * From 表 Where ID in (Select Top M ID From 表 ) Order by ID DescN 到结尾记录Select Top N * From 表 Order by ID Desc修改数据库的名称 : sp_renamedb old_name, new_name获取当前数据库中的所有用户表select Name from sysobjects where xtype=u and status=0获取某一个表的所有字段select name from syscolumns where id=object_id( 表名 )查看与某一个表相关的视

45、图、存储过程、函数select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like % 表名 %查看当前数据库中所有存储过程select name as 存储过程名称 from sysobjects where xtype=P查询用户创建的所有数据库select * from master.sysdatabases D where sid not in(select sid from master.syslogins where name=sa) 或者select dbid, name AS DB_NAM

46、E from master.sysdatabases where sid 0x01查询某一个表的字段和数据类型select column_name,data_type from information_schema.columns where table_name = 表名 n. 标题 :Select * From TableName Order By CustomerNamen. 标题 :Select * From TableName Order By CustomerName -建表时自动建立主键约束:create table a(b char(4),c int,constraint 主键

47、名 primary key(c)-或者: create table a(a char(4) cint primary key)-或者:create table a(a char(4) cint constraint 主键名 primary key) 创建:create table 表名 add constraint 约束名 unique 约束条件修改:alter table 表名 add constraint 约束名 unique 约束条件删除:alert table 表名 drop constraint 约束名 如不知道或忘记了约束可用 sp_help 来查询-创建索引:create ind

48、ex 索引名 on 表名 ( 字段名 ) -为一个表添加外键:alter table 表名 add constraint 外键名 foreign key( 字段) references 表名(字段)-创建一个标识列rangeidentity(seed,range) 创建一个标识列, 与 null,not null 并列。 seed 表示种子, 即初始值; 表示增长幅度。使用一个数据库之前要引用他: use 数据库名exists() 判断子查询的结果是否存在,返回 true or false object_id(对象名 ) 返回该对象名对应的 Id,该 id 存储在 sysobjects 表中。

49、局部临时表 #xxx ,只能被当前会话访问,在该会话结束后自动消失。全局临时表 #xx , 可以供多个用户使用,在该会话结束后自动消失。为表 添加 / 修改 / 删除列 :alter table 表名 add 列名 type/alter column 列名 newtype/drop 列 名 用系统过程 sp_reZGXX_XM 重新命名表和列: sp_reZGXX_XM 原表名 ,新表名 sp_reZGXX_XM 表名.原列名 ,新列名如果想显示的在 identity 列中插入值,则需要先设置: set identity_insert 表名 on 插入完毕后最好设置: set identity

50、_insert 表名 offtruncate table 表名 删除表格的所有数据,速度很快。统计函数中除了 count(*) 之外,都忽略空值( null).由于 text 和 image 类型数据很长,在查询之前可以通过设置全局变量 textsize 来指定返回数 据的长度, set textsize 50如果想查阅全局变量 textsize 的值: select textsize通过 reaDtext 读取 text 的数据:declare var varbinary(16)select var=textptr(c) from test where a=10readtext test.c

51、 var 4 3利用 writetext 往 text 或 image 列中写入值: declare var varbinary(16) select var=textptr(c) from test where a=10 writetext test.c var zhongguo like 也是唯一可以在 text 列上使用的操作符 逻辑操作符优先级: NOT AND OR在 group by 一个记录集时,所有的 null 组成一组。带有 group by 子句的 select 中可以有 where 子句,但是 where 子句必须放在 group by 前面。如果 group by 子句

52、中用了 all, 即 group by all xxx , 则不符合检索条件的记录也显示,但不参 与统计。having 中,只能包含 group by 子句中 指定的列,也可以包含统计函数。 where 中可指定任 何列,但是不能用统计函数having 子句从最终结果中将不满足该条件的分组去掉 不带 group by 子句时也可以使用 having 子句,并将整个查询结果作为一个组,但是,由于 出现在选择列表中的列和出现在 having 子句中的列必须是 group by 子句中的列,所以,当不带 group by 子句 时,不能在 having 子句和选择列表中直接使用列名,只能使用统计函数

53、。当在 group by 子句后指定 order by 子句时, 只能在 order by 子句中指定 group by 子句中的列 或者统计函数 在进行 union 运算时,自动删除结果中的重复行,如果使用 all 选项 ,则可以将所有行显示 在结果中: union all在 union 时,合并结果集中的列名有第一个查询给出, 所以后面进行排旬时一定要注意 order by 子句中的字段名 可以通过 select fieldslist into 新表名 from 表名,来创建一个新表,并将当前表中的数据全 部插入到新表中,但是做这个操作之前需要保证数据库选项 select into/bul

54、kcopy 设置为 true。方法 如下:use master /*设置命令必须在 master 数据库中进行 */sp_dboption 数据库 a 名, select into/bulkcopy,true /* 设置数据库选项 */ use 数据库 a 名checkpoint /* 使设置结果生效 */如果要将统计结果或者计算结果插入到新表中,必须以标题的形式给出列名,如: select a,b=avg(c) into mm from nn group by a随即取出 N 条记录的方法: select top N * from 表名 order by newid()创建唯一约束: create table a(b int not nul constraint 约束名 unique,c char(10) null) 或者: create table a(b int,c char(10),constraint 约束名 unique(b)为变量赋值方法: set xxx=? ,如果变量的值取自一个查询的话,需要用 select, 如: select xxx=? from ? where ?如果要返回一个记录集, 但是不是从一个表格, 而是全部是系统变量或自定义变量组成。 则不必写 from 子句:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论