您的位置:首页 > 数据库

收集的一些SQL知识

2010-08-10 11:52 375 查看
--获得系统所有数据库,
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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: