收集的一些SQL知识

--获得系统所有数据库,
 select * from   master..sysdatabases

--指定数据库的所有表
 select * from information_schema.tables

--指定数据库的指定表的所有字段
select * from information_schema.columns

--检查 sa 用户 登陆,正在使用的数据库
select   db_name(dbid)   from   master.dbo.sysprocesses   where   loginame= 'SA'

--如何用SQL语句,查出数据库中所有记录为空的表?
方法1:
select sysobjects.name,rows from   sysobjects,sysindexes where sysobjects.name=sysindexes.name and xtype='u' and rows=0 

 

方法2:

select distinct o.name from sysobjects o left join  sysindexes i
on o.id =i.id
where o.type='u' and i.rowcnt=0

 

--在 SQL 里如何对数据进行分页?
 select top 5 id from ygda
 where id not in (select top 10 id from ygda order by id)
 order by id
 /*     
    SELECT   TOP   页大小   *  
    FROM   TestTable  
    WhERE   (ID   NOT   IN  
                         (SELECT   TOP   页大小*页数   id  
                      FROM   表  
                       ORDER   BY   id))  
    ORDER   BY   ID  
*/

--清空表的记录后,如何将 自动递增 的字段 重置为1
truncate table 表名
-- 一般这样写就可以了,但如果该表有 主外键 关系,无法使用该语句,可以使用以下语句:
delete 表名
DBCC CHECKIDENT(表名,RESEED,0) //重置 自动递增 字段
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--查找当前数据库所有触发器:
select   *   from   sysobjects   where   xtype='TR' 
----查找当前数据库 某个表的 所有触发器:
select   *   from   sysobjects   where   xtype='TR'  and   parent_obj=object_id('表名')

--查找当前数据库所有触发器(明细):

select     *     from     syscomments     c,sysobjects     o     where     o.id=c.id     and     o.xtype='TR'


--禁用触发器
alter table 表名

disable trigger all      --all 也可以改为 触发器名

 

--恢复触发器
alter table 表名
enable trigger all     --all 也可以改为 触发器名


--查询触发器的禁用/启用状态  
 select   表名=object_name(parent_obj),触发器名=name  
 ,状态=case   status   &   power(2,11)   when   power(2,11)   then   '禁用'   else   '启用'   end  
 from   sysobjects    
 where   type='TR'


----------------------------------------(查看表结构字段,主键,外键,递增,描述方法)---------------------------------------------------
1. 获取表的基本字段属性 :

SELECT syscolumns.name as 字段名,systypes.name as 数据类型,syscolumns.isnullable as 是否为空, syscolumns.length as 大小
FROM syscolumns, systypes  WHERE syscolumns.xusertype = systypes.xusertype  AND syscolumns.id = object_id('表名')
 

2.单独查询表的递增字段 :
select [name] from syscolumns where  id=object_id('表名') and COLUMNPROPERTY(id,name,'IsIdentity')=1


3.获取表的主外键:
exec sp_helpconstraint 'cpzl'

4:一条牛B语句,查看表的全明细:
SELECT (case when a.colorder=1 then d.name else '' end)表名,a.colorder 字段序号, a.name 字段名,
       (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,
       (case when (SELECT count(*) FROM sysobjects WHERE (name in
       (SELECT name FROM sysindexes WHERE (id = a.id) AND (indid in
       (SELECT indid FROM sysindexkeys WHERE (id = a.id) AND (colid in
       (SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name))))))) AND
       (xtype = 'PK'))>0 then '√' else '' end) 主键, b.name 类型,a.length 占用字节数, COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
       isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,(case when a.isnullable=1 then '√'else '' end) 允许空,
       isnull(e.text,'') 默认值, isnull(g.[value],'') AS 字段说明 FROM  syscolumns  a left join systypes b
       on  a.xtype=b.xusertype inner join sysobjects d on a.id=d.id  and  d.xtype='U' and  d.name<>'dtproperties' left join syscomments e on a.cdefault=e.id
       left join sysproperties g on a.id=g.id AND a.colid = g.smallid  order by a.id,a.colorder

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如果 sa 密码忘记了,可以使用以下语句修复:
exec sp_password null,"新密码","sa"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值