Sqlserver常用sql语句

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  hswinrun2
declare   @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_name
select [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_helpcol
go
create 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 hswinrun2
declare
  @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_name


set @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_name
exec(@vc_sql) -- 删除字段
go

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




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值