--    表结构查询
SELECT
表名 = case when a.colorder=1 then d.name else '' end,
表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序号 = a.colorder,
字段名 = a.name,
标识 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主键 = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
类型 = b.name,
占用字节数 = a.length,
长度 = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数 = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空 = case when a.isnullable=1 then '√'else '' end,
默认值 = isnull(e.text,''),
字段说明 = isnull(g.[value],'')
FROM syscolumns a left join systypes b
on a.xusertype=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 sys.extended_properties g
on a.id=g.major_id and a.colid=g.minor_id
left join sys.extended_properties f
on d.id=f.major_id and f.minor_id=0
where d.name='tableName' --如果只查询指定表,加上此条件
order by a.id,a.colorder -------------------------------------------------------------------------------------------------
--查看数据库中所有外键
select oMain.name AS [主表名称]
,oSub.name AS [子表名称]
,fk.name AS [外键名称]
,MainCol.name AS [主表列名]
,SubCol.name AS [子表列名]
from sys.foreign_keys fk
JOIN sys.all_objects oSub ON (fk.parent_object_id = oSub.object_id)
JOIN sys.all_objects oMain ON (fk.referenced_object_id = oMain.object_id)
JOIN sys.foreign_key_columns fkCols ON (fk.object_id = fkCols.constraint_object_id)
JOIN sys.columns SubCol ON (oSub.object_id = SubCol.object_id
AND fkCols.parent_column_id = SubCol.column_id)
JOIN sys.columns MainCol ON (oMain.object_id = MainCol.object_id
AND fkCols.referenced_column_id = MainCol.column_id) ------------------------------------------------------------------------------------ --(导出扩展属性脚本)
SELECT 表名 = d.name,字段名 = a.name, 字段说明 = isnull(g.[value],'')
,'EXEC sys.sp_addextendedproperty @name=N''MS_Description'', @value=N'''+CONVERT(VARCHAR(MAX),g.[value])
+''',@level0type=N''SCHEMA'',@level0name=N''dbo'',@level1type=N''TABLE'',@level1name=N'''+CONVERT(VARCHAR(MAX),d.name)
+''',@level2type=N''COLUMN'',@level2name=N'''+CONVERT(VARCHAR(MAX),a.name)+''''
FROM syscolumns a left join systypes b on a.xusertype=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 sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
WHERE g.[value] IS NOT NULL
ORDER BY d.name,a.name ---------------------------------------------------------------------- --当前数据库表大小及行数
SELECT SCHEMA_NAME(tbl.schema_id) [Schema],tbl.name AS [TableName],
(CAST(ISNULL((select 8 * SUM(CASE WHEN a.type <> 1 THEN a.used_pages WHEN p.index_id < 2 THEN a.data_pages ELSE 0 END)
FROM sys.indexes as i
JOIN sys.partitions as p ON p.object_id = i.object_id and p.index_id = i.index_id
JOIN sys.allocation_units as a ON a.container_id = p.partition_id
where i.object_id = tbl.object_id),0.0)*1.0/1024 AS DECIMAL(18,3))) AS [DataSpaceUsed(MB)],SI.[rows]
FROM sys.tables AS tbl LEFT JOIN sys.sysindexes si ON tbl.object_id=si.id AND si.indid IN(0,1)
ORDER BY [Schema],[DataSpaceUsed(MB)] DESC ----------------------------------------------------------------------------------------- -- 查看表中的自增列是否为主键
SELECT
表名= D.NAME,
列名= A.NAME,
是否自增= CASE WHEN COLUMNPROPERTY( A.ID,A.NAME, 'ISIDENTITY ')=1 THEN '√'ELSE '' END,
主键= CASE WHEN EXISTS(SELECT 1 FROM SYSOBJECTS WHERE XTYPE= 'PK ' AND PARENT_OBJ=A.ID AND NAME IN (
SELECT NAME FROM SYSINDEXES WHERE INDID IN(
SELECT INDID FROM SYSINDEXKEYS WHERE ID = A.ID AND COLID=A.COLID))) THEN '√' ELSE '' END
FROM SYSCOLUMNS A
LEFT JOIN SYSTYPES B ON A.XUSERTYPE=B.XUSERTYPE
INNER JOIN SYSOBJECTS D ON A.ID=D.ID AND D.XTYPE= 'U' AND D.NAME <> 'DTPROPERTIES '
where COLUMNPROPERTY( A.ID,A.NAME, 'ISIDENTITY ')=1 ------------------------------------------------------------------ --各表对象下的其他对象
select t1.[object_id],t1.[type],t1.name,t2.[object_id],t2.[type],t2.name
from sys.objects t1
inner join sys.objects t2 on t1.[object_id]=t2.parent_object_id
order by t1.[type],t1.name,t2.[type],t2.name select t1.id,t1.xtype,t1.name,t2.id,t2.xtype,t2.name
from sys.sysobjects t1
inner join sys.sysobjects t2 on t1.id=t2.parent_obj
order by t1.xtype,t1.name,t2.xtype,t2.name -----------------------------------------------------------------------------
--唯一键约束
SELECT tbl.name tab,i.name AS [Name]
FROM sys.tables AS tbl
INNER JOIN sys.indexes AS i ON (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tbl.object_id)
WHERE (i.is_primary_key + 2*i.is_unique_constraint=2) and SCHEMA_NAME(tbl.schema_id)='dbo'
ORDER BY [Name] ASC ------------------------------------------------------------------------------------
--查看数据库约束
SELECT OBJECT_NAME(parent_object_id) as TableName,name,definition
FROM sys.default_constraints ORDER BY TableName,name --------------------------------------------------------------------------------------- --表各列约束
select OBJECT_NAME(t2.object_id) as TabName,t2.name as ColumnName,t1.name as [Constraint]
from sys.default_constraints t1
inner join sys.columns t2
on t1.parent_object_id=t2.object_id and t1.parent_column_id=t2.column_id
order by TabName,ColumnName,[Constraint] ---------------------------------------------------------------------------------- -- 当前数据库文件增长设置情况
SELECT Name, FileName
, CAST((Size * 8 / 1024) AS varchar(10)) + 'MB' AS FileSize
, MaxSize = CASE MaxSize WHEN -1 THEN 'Unlimited' ELSE CAST((Maxsize / 128) AS varchar(10)) + 'MB' END
FROM sys.sysfiles; -- 所有数据库文件增长设置情况
select DB_NAME(database_id) as dbName,file_id,(size*8/1024) as [size(mb)]
,case when is_percent_growth = 1 then '10%' else CONVERT(varchar(10),growth*8/1024)+'M' end as growth
,type_desc,physical_name
from sys.master_files
where state = 0 --and database_id=DB_id() ----------------------------------------------------------------------------------------------------------------- --数据库的一些关键属性
SELECT db.[name] AS [Database Name], db.recovery_model_desc AS [Recovery Model],
db.log_reuse_wait_desc AS [Log Reuse Wait Description],
ls.cntr_value AS [Log Size (KB)], lu.cntr_value AS [Log Used (KB)],
CAST(CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT)AS DECIMAL(18,2)) *
100 AS [Log Used %], db.[compatibility_level] AS [DB Compatibility Level],
db.page_verify_option_desc AS [Page Verify Option], db.is_auto_create_stats_on,
db.is_auto_update_stats_on, db.is_auto_update_stats_async_on,
db.is_parameterization_forced,
db.snapshot_isolation_state_desc, db.is_read_committed_snapshot_on,
is_auto_shrink_on, is_auto_close_on
FROM sys.databases AS db WITH (NOLOCK)
INNER JOIN sys.dm_os_performance_counters AS lu WITH (NOLOCK)
ON db.name = lu.instance_name
INNER JOIN sys.dm_os_performance_counters AS ls WITH (NOLOCK)
ON db.name = ls.instance_name
WHERE lu.counter_name LIKE N'Log File(s) Used Size (KB)%'
AND ls.counter_name LIKE N'Log File(s) Size (KB)%'
AND ls.cntr_value > 0 OPTION (RECOMPILE); ---------------------------------------------------------------------------------------- --最近一周内数据库备份情况
SELECT user_name AS [User]
,server_name AS [Server]
,database_name AS [Database]
,recovery_model AS RecoveryModel
,case type when 'D' then '数据库'
when 'I' then '差异数据库'
when 'L' then '日志'
when 'F' then '文件或文件组'
when 'G' then '差异文件'
when 'P' then '部分'
when 'Q' then '差异部分' else type end as [backupType]
,convert(numeric(10,2),backup_size/1024/1024) as [Size(M)]
,backup_start_date AS backupStartTime
,backup_finish_date as backupFinishTime
,name
,expiration_date
from msdb.dbo.backupset
where backup_start_date >= DATEADD(D,-7,GETDATE()) ----------------------------------------------------------------------- -- 作业启用情况和所有者
select a.job_id,a.name,a.enabled,b.name
from msdb.dbo.sysjobs a
inner join master.sys.syslogins b on a.owner_sid=b.sid and a.owner_sid<>'0x01'
order by a.name -- 更改作业所有者
EXEC msdb.dbo.sp_update_job @job_id=N'job_id', @owner_login_name=N'sa' ----------------------------------------------------------------------------------------------
-- 索引 主键/类型/列 情况
;with tb as(
SELECT tbl.name AS TableName,i.name AS IndexName,clmns.name AS ColumName,i.is_primary_key AS isPrimaryKey,i.type_desc
FROM sys.tables AS tbl
INNER JOIN sys.indexes AS i ON (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tbl.object_id)
INNER JOIN sys.index_columns AS ic ON (ic.column_id > 0
AND (ic.key_ordinal > 0 or ic.partition_ordinal = 0 or ic.is_included_column != 0))
AND (ic.index_id=CAST(i.index_id AS int) AND ic.object_id=i.object_id)
INNER JOIN sys.columns AS clmns ON clmns.object_id = ic.object_id and clmns.column_id = ic.column_id
WHERE SCHEMA_NAME(tbl.schema_id) = N'dbo'
)
SELECT DISTINCT TableName,IndexName,isPrimaryKey,type_desc
,STUFF((SELECT ','+ColumName FROM tb B WHERE A.TableName=B.TableName AND A.IndexName=B.IndexName FOR XML PATH('')),1,1,'') AS ColumName
FROM tb A ORDER BY TableName,IndexName,isPrimaryKey,type_desc ---------------------------------------------------------------------------------------------------------------------------------------------------------- --表主键对应的列
SELECT OBJECT_NAME(C.id) AS TAB,B.name,A.name AS PrimaryKey ,E.type_desc,fill_factor
FROM SYSCOLUMNS A,SYSOBJECTS B,SYSINDEXES C,SYSINDEXKEYS D , SYS.INDEXES E
WHERE B.xtype = 'PK'
AND B.parent_obj = A.id
AND C.id = A.id
AND B.name = C.name
AND D.id = A.id
AND D.indid = C.indid
AND A.colid = D.colid
AND B.name=E.name
ORDER BY TAB,B.name,PrimaryKey SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_NAME),'ISPRIMARYKEY')=1
--AND TABLE_NAME='TABLE_NAME' ------------------------------------------------------------------------------------------------------- --所有表索引对应的键列和包含列
SELECT OBJECT_NAME(t1.id) as tab,t1.name
,STUFF((SELECT ','+t3.name FROM sys.sysindexkeys t2,sys.syscolumns t3
WHERE t1.indid=t2.indid and t1.id=t2.id and t2.id=t3.id and t2.colid=t3.colid and t2.keyno <> 0
FOR XML PATH('')),1,1,'') AS IndexCols
,STUFF((SELECT ','+t3.name FROM sys.sysindexkeys t2,sys.syscolumns t3
WHERE t1.indid=t2.indid and t1.id=t2.id and t2.id=t3.id and t2.colid=t3.colid and t2.keyno = 0
FOR XML PATH('')),1,1,'') AS IncludeCols
FROM sys.sysindexes t1
WHERE t1.root is not null
AND EXISTS(SELECT * FROM sys.tables t4 WHERE t1.id=t4.object_id)
ORDER BY tab,IndexCols ------------------------------------------------------------------------------------------------------------
-- 查看表分区情况
select OBJECT_NAME(object_id) as tab,COUNT(partition_number) as part
from sys.partitions
where index_id in(0,1)
and OBJECT_NAME(object_id) not like 'conflict%'
and OBJECT_NAME(object_id) not like 'sys%'
group by object_id order by tab -------------------------------------------------------------------------------------------
-- 查看表备注信息
select distinct
表名 = case when a.colorder=1 then d.name else '' end
,表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end
from syscolumns a
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
inner join sys.extended_properties f on d.id=f.major_id
where f.minor_id=0
--and CHARINDEX('',convert(varchar(max),f.value))<>0 ------------------------------------------------------------------------------------------- -- 查看表中各列的属性及创建扩展属性脚本(默认架构dbo)
select o.name,c.name,p.name,p.value
,N'EXEC sys.sp_addextendedproperty @name=N'''+p.name+ N''', @value=N'''+convert(nvarchar(4000),p.value)
+N''' , @level0type=N''SCHEMA'',@level0name=N''dbo'', @level1type=N''TABLE'',@level1name=N'''
+o.name+ N''', @level2type=N''COLUMN'',@level2name=N'''+c.name+ N'''' as script_addextendedproperty
from sys.sysobjects o
inner join sys.syscolumns c on o.id = c.id
inner join sys.extended_properties p on c.id=p.major_id and c.colid=p.minor_id
where o.xtype = N'U' --and o.name = 'tableName' ------------------------------------------------------------------------------------------- -- 查看对象定义脚本
--exec sp_helptext 'object_name' SELECT * from INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION' AND ROUTINE_NAME=''
SELECT * from INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME=''
SELECT * from sys.sql_modules M WHERE EXISTS(SELECT * from sys.triggers T WHERE M.object_id=T.object_id) SELECT o.name,o.type,o.create_date,o.modify_date,sm.definition
FROM sys.sql_modules sm inner join sys.objects o on sm.object_id=o.object_id
ORDER BY o.type,o.name SELECT * from sys.sql_modules
SELECT * from sys.all_sql_modules
SELECT * from sys.system_sql_modules --------------------------------------------------------------------------------------------------------------------

SQLServer 表结构相关查询(快速了解数据库)的更多相关文章

  1. SQL Server 一句Sql把表结构全部查询出来

    --一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...

  2. 关于SqlServer表结构 2(回归基础)

    关于SqlServer表结构的问题.先来了解一下SqlServer中的数据类型以及它们的用法 整型: 短整型 smallint 整型 int 长整型 bitint 标识列:identity(它是只读的 ...

  3. Bat脚本备份sqlserver 表结构、存储过程、函数、指定表数据

    Bat脚本备份sqlserver 表结构.存储过程.指定表数据: @echo off cd /d %~dp0 ::备份表结构.存储过程和部分配置表的数据 set LogFile=report.log ...

  4. SqlServer表结构查询

    一.前言 近两天项目升级数据迁移,将老版本(sqlserver)的数据迁移到新版本(mysql)数据库,需要整理一个Excel表格出来,映射两个库之间的表格字段,示例如下: Mysql数据库查询表结构 ...

  5. 查询sqlserver 表结构呀

    SQL Server里查询表结构命令 对于SQL Server数据库有两种方法查询表结构 第一种方法 sp_help Accounts_Users     其中Accounts_Users 表示表名 ...

  6. Oracle表结构转换SqlSERVER表结构 脚本

    在审计工作中,有时需要将Oracle的表结构修改后再SqlSERVER中创建表结构,然后将数据导入到SqlSERVER中,在修改表结构的过程中方法狠多.手工修改,最蠢的方法,或者用工具UE批量修改,还 ...

  7. mysql 个人博客应用的建表和相关查询

    一.建表 用户表tb_user create table if not exists tb_user( user_id int auto_increment, ) not null, user_pas ...

  8. Oracle学习(三)SQL高级--表结构相关(建表、约束)

    一.建表语句 CREATE DATABASE(创建数据库) --创建数据库 create database 数据库名字; CREATE TABLE(创建表) --创建表 CREATE TABLE 表名 ...

  9. mysql表结构的查询与修改

    MariaDB [test]> show create table bp \G; #查看bp表结构,id长度为20 *************************** 1. row **** ...

随机推荐

  1. FindinFiles - Windows文件内查找插件

    FindInFiles for Windows 今天分享一个不错的插件工具:FindInFiles.如其名,其功能和Visual Studio的Ctrl+H快捷键类似,方便Windows使用者在资源管 ...

  2. 【leetcode】Implement strStr() (easy)

    Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...

  3. 【HOG】

    http://blog.csdn.net/masibuaa/article/details/12917961 把这份资料大概看完了 大概了解Hog了

  4. NCPC 2015 October 10, 2015 Problem D

    NCPC 2015Problem DDisastrous DowntimeProblem ID: downtimeClaus Rebler, cc-by-saYou’re investigating ...

  5. 20145213祁玮のJava课程总结

    20145213のJava学习总结 每周学习笔记 1.第一周读书笔记 2.第二周读书笔记 3.第三周读书笔记 4.第四周读书笔记 5.第五周读书笔记 6.第六周读书笔记 7.第七周读书笔记 8.第八周 ...

  6. 获取http请求响应头

    一直都是在给服务器端发送请求的时候可能会出现设置头文件的情况,但这次获取HTTP 返回的头文件,着实让我纠结一番,但最终还是实现了,总结一下.(PS:其实最后方法很简单,只是分享一下纠结过程) 先看一 ...

  7. 闭包(block)

    block主要解决反向传值和传值问题 1.block申明的公式       返回值类型 (^名字)(参数列表); 2.block实现的公式       名字= ^(参数列表){}; 3.局部变量   ...

  8. Java自定义注解开发

    一.背景 最近在自己搞一个项目时,遇到可需要开发自定义注解的需求,对于没有怎么关注这些java新特性的来说,比较尴尬,索性就拿出一些时间,来进行研究下自定义注解开发的步骤以及使用方式.今天在这里记下, ...

  9. [Android] 查看Android中的AlarmManager事件

    reference to : https://segmentfault.com/a/1190000000404684 有时候我们需要设置一个alarmmanager事件 但是如果这个事件的时间是凌晨三 ...

  10. MongoDB 基础 -安全性-(权限操作)

    和其他所有数据库一样,权限的管理都差不多一样.mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名.密码和数据库信息.mongodb默认不启用授权认证,只要 ...