Sqlserver常用sql语句

来源:互联网 发布:天正软件教学 编辑:程序博客网 时间:2024/05/03 21:36

1.Sqlserve的系统数据库是sys,其中一个很重要的表为sysobjects表(系统对象表),具体可以百度
2.通过sysobjects表我们可以获取某个数据库所有表名称:SELECT name FROM sys.sysobjects Where XType='U'

3.查找某个数据库非空数据表方法:

   --这个根据存储区来判断     select  B.name   from sys.partitions A inner join sys.objects Bon A.object_id=B.object_id      where B.type='U' and  A.rows>0   --这个根据索引表来判断    select B.name  from sysindexes A inner join sys.objects Bon A.id=B.object_id      where B.type='U' And A.rows >0

4.查找某个字符串在哪张表的方法
use  hswinrun2declare   @str   varchar(100)   set   @str='缺省利率组别'     --要搜索的字符串       declare   @s   varchar(8000)    declare   tb   cursor   local   for    select   s='if   exists(select   1   from   ['+b.name+']   where   ['+a.name+']   like  ''%'+@str+'%'')   print   ''所在的表及字段:   ['+b.name+'].['+a.name+']'''    from   syscolumns   a   join   sysobjects   b   on   a.id=b.id    where   b.xtype='U'   and   a.status>=0       and   a.xusertype   in(175,239,231,167)    open   tb    fetch   next   from   tb   into   @s    while   @@fetch_status=0    begin    exec(@s)    fetch   next   from   tb   into   @s    end    close   tb    deallocate   tb
5.内连接、外连接、交叉连接

sql连接方式有:(inner)join(内连接)、left join(左连接)、right join( 右连接)、full join(全连接)、cross join(交叉连接)
其中left join(左连接)、right join( 右连接)、full join(全连接)属于外连接

inner join:列出双方共有的部分
left  join:左边为主表全部显示,右边相等部分列出,不等部分用null表示
right join:右边为主表全部显示,左边相等部分列出,不等部分用null表示
full  join:显示连个表的全部信息,不等的部分均用null表示
cross join:两个表的笛卡尔积

6.帮助语句

1.查看表结构 sp_help 
2.查看生成视图的sql语句 sp_helptext

7sqlserver 中sql变量赋值有两种方法:set 和select
 1.set 返回空值,则变量被赋null
 2.select  返回空值,则变量保持原值
 3.select  返回多值,保存最后一个
 4.set  不可用于返回多值

8查询某个字段在那张表
use db_nameselect [name] from sysobjects where [id] in (select [id] from syscolumns where [name]='col_name') 
其中 db_name 是待查的数据库名称,col_name 是待查列名

9.查询某表 某列 的长度
if exists(select * from sysobjects where name = 'sp_helpcol')    drop procedure sp_helpcolgocreate procedure sp_helpcol   @table_name  varchar(255),   @col_name    varchar(255)as    select    @table_name  =ISNULL(@table_name,''),   @col_name    =ISNULL(@col_name,'') select name,[length] from syscolumns where id=object_id(@table_name)  and name=@col_name
使用方式如下:sp_helpcol 'loanrival','vc_rival_roles'

7.增加列后,可能存在约束这样 直接在sqlserver上删除约束或者列会不奏效,那么可以用sql语句删除  如
use hswinrun2declare  @vc_table_name  varchar(255),  @vc_col_name    varchar(255),  @constrant      varchar(255),  @vc_sql         varchar(8000)select   @vc_table_name='intrustplanbasicinfo',  @vc_col_name='vc_main_stock_no',  @constrant='',  @vc_sql=''  select @constrant=c.name from sysconstraints a inner join syscolumns b on a.colid=b.colid inner join sysobjects c on a.constid=c.id where a.id=object_id(@vc_table_name) and b.name=@vc_col_nameset @vc_sql='alter table hswinrun2..'+@vc_table_name+'  drop constraint  '+@constrant  exec(@vc_sql) -- 删除约束set @vc_sql='alter table hswinrun2..'+@vc_table_name+'  drop column      '+@vc_col_nameexec(@vc_sql) -- 删除字段go

5. 查找数据库实例包含的所有数据库(原因 排查死锁时 经常给的是数据库id 所以要查一下)
select * from master..sysdatabases




0 0
原创粉丝点击