4.2 查看数据表结构

使用SQL语句创建好数据表之后,可以查看表结构的定义,以确认表的定义是否正确。在MySQL中,查看表结构可以使用DESCRIBE和SHOW CREATE TABLE语句。本节将针对这两个语句分别进行详细的讲解。

4.2.1 查看表的基本结构语句DESCRIBE

用DESCRIBE/DESC语句可以查看表的字段信息,其中包括字段名、字段数据类型、是否为主键、是否有默认值等。语法规则如下:

  DESCRIBE 表名;

或者简写如下:

  DESC 表名;

【例4.11】分别使用DESCRIBE和DESC语句查看表tb_dept1和表tb_emp1的表结构。

查看tb_dept1表的结构,使用的SQL语句及其执行结果如下:

  mysql> DESCRIBE tb_dept1;
  +-----------+-------------+------+-----+---------+-------+
  | Field     | Type        | Null | Key | Default | Extra |
  +-----------+-------------+------+-----+---------+-------+
  | id        | int(11)     | NO   | PRI | NULL    |       |
  | name      | varchar(22) | NO   |     | NULL    |       |
  | location  | varchar(50) | YES  |     | NULL    |       |
  +-----------+-------------+------+-----+---------+-------+

查看tb_emp1表的结构,使用的SQL语句及其执行结果如下:

  mysql> DESC tb_emp1;
  +--------+--------------+------+-----+---------+-------+
  | Field  | Type         | Null | Key | Default | Extra |
  +--------+--------------+------+-----+---------+-------+
  | id     | int (11)     | YES  |     | NULL    |       |
  | name   | varchar(25)  | YES  |     | NULL    |       |
  | deptId | int (11)     | YES  |     | NULL    |       |
  | salary | float        | YES  |     | NULL    |       |
  +--------+--------------+------+-----+---------+-------+

上述部分字段的含义解释如下。

● NULL:表示该列是否可以存储NULL值。

● Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。

● Default:表示该列是否有默认值,如果有,值是多少。

● Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

4.2.2 查看表的详细结构语句SHOW CREATE TABLE

用SHOW CREATE TABLE语句可以显示创建表时的CREATE TABLE语句,语法格式如下:

  SHOW CREATE TABLE <表名\G>;

提示 使用SHOW CREATE TABLE语句,不仅可以查看创建表时的详细语句,而且还可以查看存储引擎和字符编码。

如果不加“\G”参数,显示的结果可能非常混乱,加上参数“\G”之后,可使显示的结果更加直观,易于查看。

【例4.12】使用SHOW CREATE TABLE语句查看表tb_emp1的详细信息,结果如下:

  mysql> SHOW CREATE TABLE tb_emp1;
  +--------+--------------------------------------------------------------+
  | Table  | Create Table                                                 |
  +--------+--------------------------------------------------------------+
  | fruits | CREATE TABLE 'fruits' (
    'f_id' char(10) NOT NULL,
    's_id' int(11) NOT NULL,
    'f_name' char(255) NOT NULL,
    'f_price' decimal(8,2) NOT NULL,
    PRIMARY KEY ('f_id'),
    KEY 'index_name' ('f_name'),
    KEY 'index_id_price' ('f_id','f_price')
  ) ENGINE=InnoDB DEFAULT CHARSET=gb2312                                  |
  +--------+--------------------------------------------------------------+

使用参数“\G”之后的结果如下:

  mysql> SHOW CREATE TABLE tb_emp1\G
  *************************** 1. row ***************************
        Table: tb_emp1
  Create Table: CREATE TABLE 'tb_emp1' (
    'id' int(11) DEFAULT NULL,
    'name' varchar(25) DEFAULT NULL,
    'deptId' int(11) DEFAULT NULL,
    'salary' float DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
  1 row in set (0.00 sec)