描述表结构


84

哪个查询将为表结构提供SQL中的列定义?


3
您应该指定数据库供应商,因为命令有所不同。


2
它不是重复的,因为在那里指定了数据库。
schmijos

2
@schmijos:实际上,这是暗含的。“ sql”并不表示“ MS Sql Server”,令人不安的是,似乎有很多人认为使用通用术语来指定特定供应商是可以接受的。“ sql”表示结构化查询语言,Microsoft并不是唯一的“ sql”。
班恩

2
@bane我实际上也这么认为,并试图回答通用的“ SQL”问题。但是OP删除了我的答案。这就是暗示的原因。同时,问题已从MSSQL修改为SQL。所以我不再明白了。
schmijos

Answers:



57

这取决于您使用的数据库。这是不完整的清单:

  • sqlite3: .schema table_name
  • Postgres(psql): \d table_name
  • SQL Server :(sp_help table_namesp_columns table_name仅用于列)
  • Oracle DB2:desc table_namedescribe table_name
  • MySQL :(describe table_nameshow columns from table_name仅适用于列)


18
select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='<Table Name>'

您可以通过此查询获取列数据类型和大小之类的详细信息


11
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'student'





1

对于SQL,请使用关键字“ sp_help” 在此处输入图片说明


1

在Sybase的DBTools中,它是sp_columns your_table_name


0

SQL服务器

DECLARE @tableName nvarchar(100)
SET @tableName = N'members' -- change with table name
SELECT
    [column].*,
    COLUMNPROPERTY(object_id([column].[TABLE_NAME]), [column].[COLUMN_NAME], 'IsIdentity') AS [identity]
FROM 
    INFORMATION_SCHEMA.COLUMNS [column] 
WHERE
    [column].[Table_Name] = @tableName

0

对于SQL Server,请使用exec sp_help

USE db_name;
exec sp_help 'dbo.table_name'

对于MySQL,请使用describe

DESCRIBE table_name;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.