程序员社区

MySQL系列教程 --- 24、MySQL 显示列(SHOW COLUMNS)

表格中的列是一系列可以存储文本、数字和图像的单元格。每一列为表中的每一行存储一个值。当我们使用 MySQL 服务器时,通常会显示特定表中的列信息。在本节中,我们将讨论如何显示或列出现有表中的列。

MySQL 提供了两种显示列信息的方式:

  1. MySQL SHOW COLUMNS 语句
  2. 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的表,其中包含如下数据:

file

接下来,如果我们想要获取该表的列信息,可以使用如下语句:

mysql> SHOW COLUMNS FROM student_info;  

我们将看到以下输出:

file

如果要过滤表的列,则需要在语句中使用 LIKE 或WHERE 子句。请参阅以下查询:

mysql> SHOW COLUMNS FROM student_info LIKE 's%';  

此查询仅显示以字母 S 开头的列信息。请参阅以下输出:

file

如果我们想显示隐藏的列信息,我们需要在 SHOW COLUMNS 语句中添加 FULL 关键字,如下所示:

mysql> SHOW FULL COLUMNS FROM student_info;   

它返回以下输出,显示示例数据库中 student_info 表的所有列信息。

file

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;    

在此语法中,DESCRIBEDESC子句返回相同的结果。

例子

如果我们想显示students_info表的列信息,我们可以执行下面的语句。

mysql> DESCRIBE students_info;  

执行成功后,输出如下图:

file

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL系列教程 --- 24、MySQL 显示列(SHOW COLUMNS)

一个分享Java & Python知识的社区