This post acts as a quick reference/Cheat code for anyone who would like to query the meta information about different entities in a database using Sql Server.
Get all Views in the Database
SELECT NAME, Object_definition (Object_id(NAME)) FROM sys.views
Get All Tables in the Database
SELECT NAME FROM sys.tables
Get all columns from a table
SELECT c.NAME, c.max_length, c.is_nullable, c.is_identity, t.NAME AS DbType FROM sys.columns AS c INNER JOIN sys.types AS t ON c.user_type_id = t.user_type_id LEFT OUTER JOIN sys.default_constraints AS d ON c.default_object_id = d.object_id WHERE ( c.object_id = Object_id('<TableName>') )
Get All Indices from database
SELECT t.NAME AS ParentTable, ind.NAME, col.NAME AS ColumnName, ind.type_desc AS Type, ic.is_descending_key AS IsDescending, ind.is_unique, ind.index_id FROM sys.indexes ind INNER JOIN sys.index_columns ic ON ind.object_id = ic.object_id AND ind.index_id = ic.index_id INNER JOIN sys.columns col ON ic.object_id = col.object_id AND ic.column_id = col.column_id INNER JOIN sys.tables t ON ind.object_id = t.object_id WHERE ind.is_primary_key = 0 AND ind.is_unique_constraint = 0 ORDER BY ind.index_id
Get All Primary Key Constraints
SELECT TC.table_name, TC.constraint_name, CCU.column_name AS ColumnName FROM information_schema.table_constraints AS TC JOIN information_schema.constraint_column_usage AS CCU ON TC.constraint_name = CCU.constraint_name WHERE TC.table_name = '<TableName>' AND TC.constraint_type = 'PRIMARY KEY'
Get all Unique Key Constraints
select TC.TABLE_NAME, TC.CONSTRAINT_NAME, CCU.COLUMN_NAME as ColumnName from INFORMATION_SCHEMA.TABLE_CONSTRAINTS as TC Join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE as CCU On TC.CONSTRAINT_NAME = CCU.CONSTRAINT_NAME where TC.TABLE_NAME = '<TableName>' and TC.CONSTRAINT_TYPE = 'UNIQUE'
Get all Check Constraints
select TC.TABLE_NAME, TC.CONSTRAINT_NAME , CCU.COLUMN_NAME as ColumnName , CC.CHECK_CLAUSE from INFORMATION_SCHEMA.TABLE_CONSTRAINTS as TC Join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE as CCU On TC.CONSTRAINT_NAME = CCU.CONSTRAINT_NAME Join INFORMATION_SCHEMA.check_constraints as CC On CC.CONSTRAINT_NAME = TC.CONSTRAINT_NAME where TC.TABLE_NAME = '<TableName>' and TC.CONSTRAINT_TYPE = 'CHECK'
Get all Foreign Key Constraints
SELECT RC.constraint_name, KF.table_name AS TableName, KF.column_name AS ColumnName, KP.table_name AS ReferenceTable, KP.column_name AS ReferenceColumn FROM information_schema.referential_constraints RC JOIN information_schema.key_column_usage KF ON RC.constraint_name = KF.constraint_name JOIN information_schema.key_column_usage KP ON RC.unique_constraint_name = KP.constraint_name WHERE KF.table_name = '<TableName>'
Get all Default value Constraints
SELECT con.[name], col.[name] AS ColumnName, con.[definition], ty.NAME AS DbType FROM sys.default_constraints con LEFT OUTER JOIN sys.objects t ON con.parent_object_id = t.object_id LEFT OUTER JOIN sys.all_columns col ON con.parent_column_id = col.column_id AND con.parent_object_id = col.object_id INNER JOIN sys.types AS ty ON col.user_type_id = ty.user_type_id WHERE t.NAME = '<TableName>' ORDER BY con.NAME
That's it from Sql Server. We will attempt to retrieve the same set of information from other Db sources as well in future posts.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.