打印表的结构/架构

时间:2009-02-14 21:04:24

标签: sql-server database-design

我在数据库RentalEase中有20个左右的表,我想将它们打印出来(物理上),这样我就可以更容易地查看它们了。我不太关心它们中的数据,只关注它们的结构。我怎么能这样做?

这是一个SQL Express服务器,我正在使用Microsoft SQL Server Management Studio Express来管理它。我记得当我使用MySQL和PHP时,我可以使用DESCRIBE打印出来,但我不记得我是怎么做到的。似乎没有SQL Server的DESCRIBE

5 个答案:

答案 0 :(得分:32)

尝试:

sp_help <table_name>

答案 1 :(得分:12)

您始终可以检查INFORMATION_SCHEMA视图,以查找有关表及其列的所有有趣信息。

本身并不称为“描述” - 但此查询会向您显示大量信息:

select * from Information_schema.Columns
where table_name = '(your table here)'

马克

答案 2 :(得分:7)

在Management Studio中,

  1. 单击数据库旁边的“+”,展开其下方的对象,然后单击“Tables”
  2. 选择“查看” - &gt;打开“表详细信息”视图菜单中的“对象资源管理器详细信息”
  3. 现在选择所有表格(在对象详细信息的右侧)
  4. 右键单击任何选定的表格(在右侧)
  5. “脚本表格为” - &gt; “创建到”
  6. “文件”或“剪贴板”
  7. 这将生成一个包含所有选定文件架构定义的脚本文件。

答案 3 :(得分:3)

您可以使用数据库架构图设计工具。只需删除那里的所有表,您将获得包含所有键的数据库图表

答案 4 :(得分:2)

这是我编写的一个脚本,它只是以下列格式列出每个表及其列:

表格列

table1 column1,column2 ... columnX

脚本是:

declare @max_tables int
declare @max_columns int
declare @sql nvarchar(400)
declare @x int
declare @y int
declare @table varchar(50)
declare @columns varchar(800)

create table #c ([Table] varchar(50),[Columns] varchar(800))

select ROW_NUMBER() OVER(ORDER BY name) AS Row, name 
into #table_list
from sys.objects 
where type_desc = 'USER_TABLE' 
order by name

set @max_tables = (select count(*) from sys.objects where type_desc = 'USER_TABLE')
set @y = 0

while @y < @max_tables
    begin
        set @y = @y + 1
        set @table = (select name from #table_list where row = @y)

        create table #t (c int)

        set @sql = 'select count(*) as c from Information_schema.Columns where table_name = ''' + @table + ''''
        insert into #t exec sp_executesql @sql

        set @max_columns = (select top 1 c from #t)

        DROP TABLE #t

        set @x = 0
        set @columns = ''

        while @x < @max_columns 
            begin
                set @x = @x + 1
                set @columns = @columns + (select column_name from Information_schema.Columns where table_name = @table and ordinal_position = @x)
                if @x < @max_columns set @columns = @columns + ', '
            end

        insert into #c select @table,@columns

    end

select * from #c

DROP TABLE #c
DROP TABLE #table_List