SQLServer 表结构相关查询(快速了解数据库)
- -- 表结构查询
- 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 表结构相关查询(快速了解数据库)的更多相关文章
- SQL Server 一句Sql把表结构全部查询出来
--一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...
- 关于SqlServer表结构 2(回归基础)
关于SqlServer表结构的问题.先来了解一下SqlServer中的数据类型以及它们的用法 整型: 短整型 smallint 整型 int 长整型 bitint 标识列:identity(它是只读的 ...
- Bat脚本备份sqlserver 表结构、存储过程、函数、指定表数据
Bat脚本备份sqlserver 表结构.存储过程.指定表数据: @echo off cd /d %~dp0 ::备份表结构.存储过程和部分配置表的数据 set LogFile=report.log ...
- SqlServer表结构查询
一.前言 近两天项目升级数据迁移,将老版本(sqlserver)的数据迁移到新版本(mysql)数据库,需要整理一个Excel表格出来,映射两个库之间的表格字段,示例如下: Mysql数据库查询表结构 ...
- 查询sqlserver 表结构呀
SQL Server里查询表结构命令 对于SQL Server数据库有两种方法查询表结构 第一种方法 sp_help Accounts_Users 其中Accounts_Users 表示表名 ...
- Oracle表结构转换SqlSERVER表结构 脚本
在审计工作中,有时需要将Oracle的表结构修改后再SqlSERVER中创建表结构,然后将数据导入到SqlSERVER中,在修改表结构的过程中方法狠多.手工修改,最蠢的方法,或者用工具UE批量修改,还 ...
- mysql 个人博客应用的建表和相关查询
一.建表 用户表tb_user create table if not exists tb_user( user_id int auto_increment, ) not null, user_pas ...
- Oracle学习(三)SQL高级--表结构相关(建表、约束)
一.建表语句 CREATE DATABASE(创建数据库) --创建数据库 create database 数据库名字; CREATE TABLE(创建表) --创建表 CREATE TABLE 表名 ...
- mysql表结构的查询与修改
MariaDB [test]> show create table bp \G; #查看bp表结构,id长度为20 *************************** 1. row **** ...
随机推荐
- ios oc 和 swfit 用dispatch_once 创建单例
网上已经有方法了,我这里就是抄了下,原文链接 http://bj007.blog.51cto.com/1701577/649413 http://blog.csdn.net/u010124617/ar ...
- ABAP 将SAP用户ID转换成用户名
FORM frm_coverted_name USING usrid TYPE sy-uname CHANGING name TYPE adrp-name ...
- IP子网划分
CIDR值: 1.掩码255.0.0.0:/8(A类地址默认掩码) 2.掩码255.128.0.0:/9 3.掩码255.192.0.0:/10 4.掩码255.224.0.0:/11 5.掩码255 ...
- Spring@Autowired注解与自动装配
1 配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...
- asp.net mvc htmlHelper
ASP.NET MVC 3.0 HTML辅助方法 HTML辅助方法(html helper)是用来帮助生成HTML的方法. 1.HTML辅助方法应用实例 ◊ 生成form元素 @using (Ht ...
- LeetCode 326 Power of Three
Problem: Given an integer, write a function to determine if it is a power of three. Could you do it ...
- 一个servlet处理来自多个不同页面的请求!
例如有一个用户表,我们要处理 添加,删除 用户以及登录功能 对应的有add.jsp del.jsp login.jsp等 <body> <!-- login.jsp --> & ...
- Android笔记:获取屏幕信息
像素密度(dpi) float xdpi = getResources().getDisplayMetrics().xdpi;float ydpi = getResources().getDispla ...
- 模拟赛1029d1
第二题[题目描述]给你两个日期,问这两个日期差了多少毫秒.[输入格式]两行,每行一个日期,日期格式保证为"YYYY-MM-DD hh:mm:ss"这种形式.第二个日期时间一定比第一 ...
- Codeforces Round #324 (Div. 2) C (二分)
题目链接:http://codeforces.com/contest/734/problem/C 题意: 玩一个游戏,一开始升一级需要t秒时间,现在有a, b两种魔法,两种魔法分别有m1, m2种效果 ...