表格中的列是一系列可以存储文本、数字和图像的单元格。每一列为表中的每一行存储一个值。当我们使用 MySQL 服务器时,通常会显示特定表中的列信息。在本节中,我们将讨论如何显示或列出现有表中的列。
MySQL 提供了两种显示列信息的方式:
- MySQL SHOW COLUMNS 语句
- MySQL DESCRIBE 语句
让我们详细讨论两者。
MySQL SHOW COLUMNS 语句
MySQL 中的 SHOW COLUMNS 语句是一种更灵活的方式来显示给定表中的列信息。它还可以支持视图。使用此语句,我们将仅获得我们具有某些特权的列信息。
语法
以下是显示指定表中列信息的语法:
SHOW [EXTENDED] [FULL] {COLUMNS | FIELDS}
{FROM | IN} table_name
[{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
让我们详细讨论语法参数。
EXTENDED 是一个可选关键字来显示信息,包括隐藏的列。MySQL 在内部使用用户无法访问的隐藏列。
FULL 也是一个可选关键字显示列信息,包括整理,注释和我们每一列的权限。
table_name 是我们将要显示列信息的表的名称。
db_name 是包含一个表,从中我们将显示列信息的数据库的名称。
LIKE or WHERE 子句用于仅显示在一个给定表中的匹配列的信息。
我们还可以使用 table_name FROM db_name 语法的替代方案作为 db_name.tbl_name。因此,以下语句是等效的:
SHOW COLUMNS FROM mytable_name FROM mydb_name;
OR,
SHOW COLUMNS FROM mydb_name.mytable_name;
SHOW COLUMNS 语句示例
让我们通过各种例子来了解这条语句在MySQL 中是如何工作的。
假设我们在示例数据库中有一个名为student_info的表,其中包含如下数据:
接下来,如果我们想要获取该表的列信息,可以使用如下语句:
mysql> SHOW COLUMNS FROM student_info;
我们将看到以下输出:
如果要过滤表的列,则需要在语句中使用 LIKE 或WHERE 子句。请参阅以下查询:
mysql> SHOW COLUMNS FROM student_info LIKE 's%';
此查询仅显示以字母 S 开头的列信息。请参阅以下输出:
如果我们想显示隐藏的列信息,我们需要在 SHOW COLUMNS 语句中添加 FULL 关键字,如下所示:
mysql> SHOW FULL COLUMNS FROM student_info;
它返回以下输出,显示示例数据库中 student_info 表的所有列信息。
SHOW COLUMNS 语句为给定表中的每一列提供以下信息:
Field:它表示给定表中列的名称。
Type:表示每列的数据类型。
Collation:用于对特定字符集的顺序进行排序。这里它表示非二进制值的字符串列和其他列的 NULL。只有在使用 FULL 关键字时才会看到此列。
Null:表示列的可空性。如果列可以存储 NULL 值,则返回 YES。如果列不能存储 NULL 值,则它不包含任何值。
Key:表示列的索引为 PRI、UNI 和 MUL。让我们详细了解这个领域。
- 如果我们没有指定任何键,则表示该列未编入索引。否则,索引为多列中的辅助列。
- 如果将列指定为 PRI,则表示该列是 PRIMARY KEY 或多列 PRIMARY KEY 中的字段之一。
- 如果将列指定为 UNI,则表示该列包含 UNIQUE 索引。
- 如果该列指定为 MUL,则表示该列是非唯一索引的第一列,我们可以多次使用给定值。
- 如果该列由多个键值指定,则该字段显示具有最高优先级的键(键优先级按 PRI、UNI 和 MUL 的顺序)。
Default:表示列的默认值。如果该列不包含 DEFAULT 子句或具有显式 NULL 默认值,则它包含一个 NULL 值。
Extra:它表示与给定列相关的附加信息。在以下情况下,此字段非空:
- 如果使用 AUTO_INCREMENT 属性指定列,则其值填充为 auto_increment。
- 如果使用具有 ON UPDATE CURRENT_TIMESTAMP 属性的 TIMESTAMP 或 DATETIME 指定列,则在更新 CURRENT_TIMESTAMP 时填充其值。
- 对于生成的列,其值填充为 VIRTUAL GENERATED 或 VIRTUAL STORED。
- 如果该列包含表达式默认值,则其值填充为 DEFAULT_GENERATED。
Privileges:它表示我们对列的权限。只有在使用 FULL 关键字时才会看到此列。
Comment:它表示我们在列定义中包含的注释。只有在使用 FULL 关键字时才会看到此列。
MySQL DESCRIBE 语句
MySQL 中的 DESCRIBE 语句也提供类似于 SHOW COLUMNS 命令的信息。
句法
以下是在给定表中显示列信息的语法:
{DESCRIBE | DESC} table_name;
在此语法中,DESCRIBE和DESC子句返回相同的结果。
例子
如果我们想显示students_info表的列信息,我们可以执行下面的语句。
mysql> DESCRIBE students_info;
执行成功后,输出如下图: