【问题标题】:SQL server query to get the list of columns in a table along with Data types, NOT NULL, and PRIMARY KEY,Foreignkey constraints in sql serverSQL Server 查询以获取表中的列列表以及 SQL Server 中的数据类型、NOT NULL 和 PRIMARY KEY、外键约束
【发布时间】:2019-11-21 10:09:46
【问题描述】:

如何编写此查询以显示具有给定属性和约束的所有列, 我的预期输出是:

列名 |数据类型 |长度 |是空的 | PK | FK

【问题讨论】:

    标签: sql sql-server sqldatatypes


    【解决方案1】:

    您想要的一切都已经在sp_help 中完成了。

    你执行它传递table这样的名字:

    exec sp_help 'MyTable'
    

    如果您想拥有另一个resultset,您可以从sp_help 中提取所有queries

    exec sp_helptext 'sp_help'
    

    并根据您的需要调整这些queries

    【讨论】:

      【解决方案2】:

      这应该做你想要的

      use [*MyDBName*]    
        Select Column_name, 
               data_type, 
               Character_maximum_length, 
               (Select Tab.Constraint_name 
                from INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab 
                left join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ColU on Tab.Constraint_name = colU.Constraint_name       
                where Tab.Table_name = Col.Table_name AND ColU.COLUMN_NAME = Col.Column_name  and Tab.CONSTRAINT_NAME like 'Pk[_]%'
               )  PK,
               (Select Tab.Constraint_name 
                from INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab 
                left join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ColU on Tab.Constraint_name = colU.Constraint_name       
                where Tab.Table_name = Col.Table_name AND ColU.COLUMN_NAME = Col.Column_name  and Tab.CONSTRAINT_NAME like 'Fk[_]%'
               )  FK
        FROM INFORMATION_SCHEMA.Columns Col
        WHERE Col.TABLE_NAME = '*MyTableName*'
      

      【讨论】:

        【解决方案3】:

        对于特定表的列

        select COLUMN_NAME, DATA_TYPE, character_maximum_length, is_nullable from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'table_name'
        

        对于所有表格列

        select COLUMN_NAME, DATA_TYPE, character_maximum_length, is_nullable from INFORMATION_SCHEMA.COLUMNS
        

        对于约束

        select * from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where table_name ='Table_name'
        

        【讨论】:

          猜你喜欢
          • 2011-01-25
          • 2023-03-31
          • 1970-01-01
          • 2010-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-17
          相关资源
          最近更新 更多