T-SQL List Tables, Columns

前端 未结 2 1887
隐瞒了意图╮
隐瞒了意图╮ 2021-02-02 08:57

In T-SQL (SQL Server 2000). How can I list all tables and columns in a database? Also, in a separate query is there a way to list all columns along with data type and constrai

相关标签:
2条回答
  • 2021-02-02 09:36

    Please check out the information schema.

    select *
    from MyDatabaseName.information_schema.columns
    order by table_name, ordinal_position
    
    0 讨论(0)
  • 2021-02-02 09:55

    Many ways to do it. Below are couple of ways that you can list :

    Option 1:

    SELECT db_name() as DATABASE_NAME, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION,
           COLUMN_DEFAULT, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH,
           NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE,
           DATETIME_PRECISION
    FROM INFORMATION_SCHEMA.COLUMNS
    

    Option 2:

    DECLARE @SQL VARCHAR(8000)
    SELECT  @SQL = ''
    SELECT  @SQL = @SQL + 'UNION
    SELECT ''' + name + ''' [DataBaseName], t.name [TableName], c.name [ColumnName], st.name [DataType] FROM ' + name + '..sysobjects t INNER JOIN ' + name + '..syscolumns c ON t.id = c.id INNER JOIN '+ name + '..systypes st on c.xtype = st.xtype where t.xtype = ''U'''
    FROM master..sysdatabases
    WHERE name IN ('databasename1', 'databaseName2')  -- change here !!
    SELECT @SQL = RIGHT(@SQL, LEN(@SQL)-5) + ' ORDER BY 1, 2, 3'
    EXEC(@SQL)
    

    Option 3:

    select db_name() as database_name
        ,table_name = sysobjects.name
        ,column_name = syscolumns.name
        ,datatype = systypes.name
        ,length = syscolumns.length
    from sysobjects
    inner join syscolumns on sysobjects.id = syscolumns.id
    inner join systypes on syscolumns.xtype = systypes.xtype
    where sysobjects.xtype = 'U'
    order by sysobjects.name
        ,syscolumns.colid
    
    0 讨论(0)
提交回复
热议问题