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'