MySQL查表结构:快速搞定方法(mysql查表结构)

今天我们将介绍如何使用MySQL查看表结构,有效地查看表结构有助于您更好地理解数据库,以便建立正确的查询。

## 一、怎样查看某张表的结构

在MySQL中,我们可以使用以下查询来查看某张表的结构:

`DESCRIBE tbl_name;`

例如:

`DESCRIBE customer;`

我们可以看到表customer的结构信息:

“`sql

mysql> DESCRIBE customer;

+——————+————-+——+—–+———+—————-+

| Field | Type | Null | Key | Default | Extra |

+——————+————-+——+—–+———+—————-+

| cust_id | int(11) | NO | PRI | NULL | auto_increment |

| cust_name | varchar(50) | NO | | NULL | |

| cust_address | varchar(50) | NO | | NULL | |

| cust_city | varchar(50) | NO | | NULL | |

| cust_state | varchar(50) | NO | | NULL | |

| cust_zip | varchar(10) | NO | | NULL | |

| cust_country | varchar(50) | NO | | NULL | |

| cust_contact | varchar(50) | YES | | NULL | |

| cust_email | varchar(255)| YES | | NULL | |

+——————+————-+——+—–+———+—————-+

9 rows in set (0.00 sec)


一般来说,DESCRIBE命令只用于查看表结构中列名、列类型、列默认值等基本信息,而并不能查看表索引、约束、主、外键等信息。

## 二、SHOW COLUMNS和SHOW CREATE TABLE 查看表结构

SHOW COLUMNS命令用于显示字段的类型,它不能显示其他信息,如默认值、主键、外键和索引等。

`SHOW COLUMNS FROM tbl_name;`

例如:

`SHOW COLUMNS FROM customer;`

而`SHOW CREATE TABLE`命令则可以显示表结构的更多信息,包括表的索引等。

`SHOW CREATE TABLE tbl_name;`

例如:

`SHOW CREATE TABLE customer;`

该命令的输出为:
```sql
CREATE TABLE `customer` (
`cust_id` int(11) NOT NULL AUTO_INCREMENT,
`cust_name` varchar(50) NOT NULL,
`cust_address` varchar(50) NOT NULL,
`cust_city` varchar(50) NOT NULL,
`cust_state` varchar(50) NOT NULL,
`cust_zip` varchar(10) NOT NULL,
`cust_country` varchar(50) NOT NULL,
`cust_contact` varchar(50) DEFAULT NULL,
`cust_email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

## 三、使用INFORMATION_SCHEMA数据库查看表结构

MySQL有一个特殊的INFORMATION_SCHEMA数据库,该数据库可用于存储存储引擎独立的元数据,用户可以使用INFORMATION_SCHEMA数据库的不同表来查看表结构、字段、索引等信息。

如下所示:

`SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ‘customer’;`

“`sql

+—————+———–+————+——+—–+———+——-+————-+———————————+———–+

| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | COLUMN_DEFAULT | IS_NULLABLE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | NUMERIC_PRECISION |

+—————+———–+————+——+—–+———+——-+————-+———————————+———–+

| def | test | customer | cust_id | 1 | NULL | NO | int | NULL | 11 |

| def | test | customer | cust_name | 2 | NULL | NO | varchar | 50 | NULL |

| def | test | customer | cust_address | 3 | NULL | NO | varchar | 50 | NULL |

| def | test | customer | cust_city | 4 | NULL | NO | varchar | 50 | NULL |

| def | test | customer | cust_state | 5 | NULL | NO | varchar | 50 | NULL |

| def | test | customer | cust_zip | 6 | NULL | NO | varchar | 10 | NULL |

| def | test | customer | cust_country | 7 | NULL | NO | varchar | 50 | NULL |

| def | test | customer | cust_contact | 8 | NULL | YES | varchar | 50 | NULL |

| def | test | customer | cust_email | 9 | NULL | YES | varchar | 255 | NULL |

+—————+———–+————+——+—–+———+——-+————-+———————————+———–+

10 rows in set (0.00 sec)


通过上述查询,可以获取表customer的列名、列类型、默认值等信息。 INFORMATION_SCHEMA.COLUMNS也可以用来查看表索引,只要添加一些筛选条件:

`SELECT columns.column_name,indexes.index_name
FROM information_schema.statistics as indexes
JOIN information_schema.columns AS columns
WHERE indexes.table_schema = 'test'
AND indexes.table_name = 'customer'


数据运维技术 » MySQL查表结构:快速搞定方法(mysql查表结构)