Get database schema with one query?

情到浓时终转凉″ 提交于 2019-12-05 02:36:09

The INFORMATION_SCHEMA.COLUMNS table has what you're asking for.

SELECT table_name, column_name
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_schema = 'YourDBName'
    ORDER BY table_name, ordinal_position
SELECT t.name AS tblName,
SCHEMA_NAME(schema_id) AS [schemaName],
c.name AS colName
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
ORDER BY tblName;
SELECT * 
FROM information_schema.tables t
JOIN information_schema.columns c ON t.TABLE_NAME = c.TABLE_NAME 
 AND t.TABLE_CATALOG=c.TABLE_CATALOG 
 AND t.TABLE_SCHEMA=c.TABLE_SCHEMA

works for SQLSERVER 2005. The column names might be different for MySQL (I assume that's what you're using), but the concept is the same.

"Show databases", "Show tables" and "describe table" are the best, fastest way I know of in MySql.

But they are MySql-specific.

If you want:

a) a portable way to query your database schema

 ... AND ...

b) more granular control over your query, then look at INFORMATION_SCHEMA:

http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

SYNTAX:

SELECT table_name FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'db_name'
  [AND table_name LIKE 'wild']

After a few trials, i made this sql code to see the columns in my table.

SELECT 
TABLE_NAME as table_name, 
COLUMN_NAME as column_name, 
COLUMN_TYPE as data_type, 
COLUMN_DEFAULT as default_value, 
IS_NULLABLE as nullable,
COLUMN_KEY as constraints, 
EXTRA as constraints2, 
CHARACTER_SET_NAME as charset, 
COLLATION_NAME as collation 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_schema = '<YOUR_DATABASE_NAME>' 
AND TABLE_NAME='<YOUR_TABLE_NAME>' 
ORDER BY table_name, ordinal_position
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!