- MySQL 基础
- MySQL - 首页
- MySQL - 简介
- MySQL - 特性
- MySQL - 版本
- MySQL - 变量
- MySQL - 安装
- MySQL - 管理
- MySQL - PHP 语法
- MySQL - Node.js 语法
- MySQL - Java 语法
- MySQL - Python 语法
- MySQL - 连接
- MySQL - Workbench
- MySQL 数据库
- MySQL - 创建数据库
- MySQL - 删除数据库
- MySQL - 选择数据库
- MySQL - 显示数据库
- MySQL - 复制数据库
- MySQL - 数据库导出
- MySQL - 数据库导入
- MySQL - 数据库信息
- MySQL 用户
- MySQL - 创建用户
- MySQL - 删除用户
- MySQL - 显示用户
- MySQL - 修改密码
- MySQL - 授予权限
- MySQL - 显示权限
- MySQL - 收回权限
- MySQL - 锁定用户账户
- MySQL - 解锁用户账户
- MySQL 表
- MySQL - 创建表
- MySQL - 显示表
- MySQL - 修改表
- MySQL - 重命名表
- MySQL - 克隆表
- MySQL - 截断表
- MySQL - 临时表
- MySQL - 修复表
- MySQL - 描述表
- MySQL - 添加/删除列
- MySQL - 显示列
- MySQL - 重命名列
- MySQL - 表锁定
- MySQL - 删除表
- MySQL - 派生表
- MySQL 查询
- MySQL - 查询
- MySQL - 约束
- MySQL - 插入查询
- MySQL - 选择查询
- MySQL - 更新查询
- MySQL - 删除查询
- MySQL - 替换查询
- MySQL - 插入忽略
- MySQL - 插入重复键更新
- MySQL - 插入到选择
- MySQL 运算符和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 运算符
- MySQL - OR 运算符
- MySQL - LIKE 运算符
- MySQL - IN 运算符
- MySQL - ANY 运算符
- MySQL - EXISTS 运算符
- MySQL - NOT 运算符
- MySQL - 不等于运算符
- MySQL - IS NULL 运算符
- MySQL - IS NOT NULL 运算符
- MySQL - BETWEEN 运算符
- MySQL - UNION 运算符
- MySQL - UNION 与 UNION ALL
- MySQL - MINUS 运算符
- MySQL - INTERSECT 运算符
- MySQL - INTERVAL 运算符
- MySQL 连接
- MySQL - 使用连接
- MySQL - 内连接
- MySQL - 左连接
- MySQL - 右连接
- MySQL - 交叉连接
- MySQL - 全连接
- MySQL - 自连接
- MySQL - 删除连接
- MySQL - 更新连接
- MySQL - UNION 与 JOIN
- MySQL 触发器
- MySQL - 触发器
- MySQL - 创建触发器
- MySQL - 显示触发器
- MySQL - 删除触发器
- MySQL - 插入前触发器
- MySQL - 插入后触发器
- MySQL - 更新前触发器
- MySQL - 更新后触发器
- MySQL - 删除前触发器
- MySQL - 删除后触发器
- MySQL 数据类型
- MySQL - 数据类型
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正则表达式
- MySQL - 正则表达式
- MySQL - RLIKE 运算符
- MySQL - NOT LIKE 运算符
- MySQL - NOT REGEXP 运算符
- MySQL - regexp_instr() 函数
- MySQL - regexp_like() 函数
- MySQL - regexp_replace() 函数
- MySQL - regexp_substr() 函数
- MySQL 函数和运算符
- MySQL - 日期和时间函数
- MySQL - 算术运算符
- MySQL - 数值函数
- MySQL - 字符串函数
- MySQL - 聚合函数
- MySQL 杂项概念
- MySQL - NULL 值
- MySQL - 事务
- MySQL - 使用序列
- MySQL - 处理重复项
- MySQL - SQL 注入
- MySQL - 子查询
- MySQL - 注释
- MySQL - 检查约束
- MySQL - 存储引擎
- MySQL - 将表导出到 CSV 文件
- MySQL - 将 CSV 文件导入到数据库
- MySQL - UUID
- MySQL - 公共表表达式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分区
- MySQL - 垂直分区
- MySQL - 游标
- MySQL - 存储函数
- MySQL - Signal
- MySQL - Resignal
- MySQL - 字符集
- MySQL - 校对
- MySQL - 通配符
- MySQL - 别名
- MySQL - ROLLUP
- MySQL - 今日日期
- MySQL - 字面量
- MySQL - 存储过程
- MySQL - Explain
- MySQL - JSON
- MySQL - 标准差
- MySQL - 查找重复记录
- MySQL - 删除重复记录
- MySQL - 选择随机记录
- MySQL - 显示 Processlist
- MySQL - 更改列类型
- MySQL - 重置自动递增
- MySQL - Coalesce() 函数
- MySQL 有用资源
- MySQL - 有用函数
- MySQL - 语句参考
- MySQL - 快速指南
- MySQL - 有用资源
- MySQL - 讨论
MySQL - 显示列
MySQL Show Columns 语句
要检索表的全部信息,我们使用 DESCRIBE、DESC 或 SHOW COLUMNS 语句。
所有这些 MySQL 语句都可以用来检索/显示表所有列的描述,因为它们都检索相同的结果集。
获取列信息在多种情况下都很有用,例如将值插入表中(基于列数据类型)、更新或删除列,或者只是简单地了解表的结构。
在本章中,让我们详细了解如何使用 SHOW COLUMNS 语句。
语法
以下是 MySQL SHOW COLUMNS 语句的语法:
SHOW [EXTENDED] [FULL] {COLUMNS | FIELDS} {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]
示例
让我们从使用以下查询创建一个名为 TUTORIALS 的数据库开始:
CREATE DATABASE TUTORIALS;
执行以下语句切换到 TUTORIALS 数据库:
USE TUTORIALS;
在以下查询中,我们使用以下 CREATE TABLE 语句创建一个名为 CUSTOMERS 的表:
CREATE TABLE CUSTOMERS ( ID INT AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
现在,我们使用 **SHOW COLUMNS** 语句检索有关 CUSTOMERS 表列的信息:
SHOW COLUMNS FROM CUSTOMERS;
输出
以下是 CUSTOMERS 表中列的信息:
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | auto_increment |
NAME | varchar(20) | 否 | NULL | ||
AGE | int | 否 | NULL | ||
ADDRESS | char(25) | 是 | NULL | ||
SALARY | decimal(18,2) | 是 | NULL |
示例
我们也可以使用 **IN 子句** 代替 FROM,如下面的查询所示:
SHOW COLUMNS IN CUSTOMERS;
输出
正如我们观察到的输出,它与之前的输出完全相同。
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | auto_increment |
NAME | varchar(20) | 否 | NULL | ||
AGE | int | 否 | NULL | ||
ADDRESS | char(25) | 是 | NULL | ||
SALARY | decimal(18,2) | 是 | NULL |
示例
我们可以指定 **数据库名称** 以及表名,如下面的查询所示:
SHOW COLUMNS IN CUSTOMERS FROM TUTORIALS;
输出
以下是 TUTORIALS 数据库中 CUSTOMERS 表中列的信息。
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | auto_increment |
NAME | varchar(20) | 否 | NULL | ||
AGE | int | 否 | NULL | ||
ADDRESS | char(25) | 是 | NULL | ||
SALARY | decimal(18,2) | 是 | NULL |
示例
我们可以用 **FIELDS** 替换 **COLUMNS** 子句并获得相同的结果:
SHOW FIELDS IN CUSTOMERS;
输出
正如我们看到的输出,我们得到了与 COLUMNS 子句相同的结果。
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | auto_increment |
NAME | varchar(20) | 否 | NULL | ||
AGE | int | 否 | NULL | ||
ADDRESS | char(25) | 是 | NULL | ||
SALARY | decimal(18,2) | 是 | NULL |
LIKE 子句
在 MySQL 中,使用 LIKE 子句,您可以指定模式来检索有关特定列的信息。
示例
以下查询从 CUSTOMERS 表中检索以字母“P”开头的列名。
SHOW COLUMNS FROM CUSTOMERS LIKE 'N%';
输出
执行上面的查询将产生以下输出:
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
NAME | varchar(20) | 否 | NULL |
WHERE 子句
我们可以使用 SHOW COLUMNS 语句的 MySQL WHERE 子句来检索与指定条件匹配的列信息。
示例
在以下示例中,我们使用 WHERE 子句检索类型为 **int** 的列。
SHOW COLUMNS FROM CUSTOMERS WHERE Type= 'int';
输出
执行上面的查询将产生以下输出:
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | auto_increment |
AGE | int | 否 | NULL |
FULL 子句
通常,SHOW COLUMNS 语句提供的信息包含字段类型、是否可以为空、键、默认值和一些额外详细信息。如果使用 full 子句,则会添加诸如排序规则、权限和注释之类的详细信息。
示例
在以下示例中,我们使用带有 SHOW COLUMNS 的 FULL 子句来检索 CUSTOMERS 表的额外详细信息:
SHOW FULL COLUMNS IN CUSTOMERS FROM tutorials;
执行上面的查询将产生以下输出:
字段 | 类型 | 排序规则 | 空 | 键 | 默认值 |
---|---|---|---|---|---|
ID | int | NULL | 否 | PRI | NULL |
NAME | varchar(20) | utf8mb4 0900 ai ci | 否 | NULL | |
AGE | int | NULL | 否 | NULL | |
ADDRESS | char(25) | utf8mb4 0900 ai ci | 是 | NULL | |
SALARY | decimal(18,2) | NULL | 是 | NULL |
使用客户端程序显示表的列
除了使用 MySQL 查询在 MySQL 数据库中显示表的列之外,我们还可以使用客户端程序执行 SHOW COLUMNS 操作。
语法
以下是使用各种编程语言显示 MySQL 表列的语法:
要通过 PHP 程序显示 MySQL 表的列,我们需要使用 **mysqli** 函数 **query()** 执行 **Show Columns** 语句,如下所示:
$sql="Show Table_name"; $mysqli->query($sql);
要通过 Node.js 程序显示 MySQL 表的列,我们需要使用 **mysql2** 库的 **query()** 函数执行 **Show** 语句,如下所示:
sql="SHOW COLUMNS FROM table_name"; con.query(sql);
要通过 Java 程序显示 MySQL 表的列,我们需要使用 **JDBC** 函数 **executeUpdate()** 执行 **Show** 语句,如下所示:
String sql="SHOW COLUMNS FROM table_name FROM database"; statement.executeQuery(sql);
要通过 Python 程序显示 MySQL 表的列,我们需要使用 MySQL **Connector/Python** 的 **execute()** 函数执行 **Show** 语句,如下所示:
sql="SHOW COLUMNS FROM table_name FROM database"; cursorObj.execute(sql);
示例
以下是程序:
$dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'password'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if ($mysqli->connect_errno) { printf("Connect failed: %s
", $mysqli->connect_error); exit(); } // printf('Connected successfully.
'); //column can be shown by the following queries // $sql = "SHOW COLUMNS FROM tut_tbl"; $sql = "SHOW COLUMNS FROM sales FROM tutorials"; if ($show_clmn = $mysqli->query($sql)) { printf("show column executed successfully!.
"); while ($col = mysqli_fetch_array($show_clmn)) { echo "\n{$col['Field']}"; } } if ($mysqli->errno) { printf("Columns could be shown by the above query!.
", $mysqli->error); } $mysqli->close();
输出
获得的输出如下所示:
show column executed successfully!. ID ProductName CustomerName DispatchDate DeliveryTime Price Location
var mysql = require('mysql2'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "Nr5a0204@123" }); //Connecting to MySQL con.connect(function (err) { if (err) throw err; console.log("Connected!"); console.log("--------------------------"); sql = "CREATE DATABASE demo" con.query(sql); sql = "USE demo" con.query(sql); sql = "CREATE TABLE sales(ID INT, ProductName VARCHAR(255), CustomerName VARCHAR(255), DispatchDate date, DeliveryTime time, Price INT, Location VARCHAR(255));" con.query(sql); //Displaying all the columns from the Sales table sql = "SHOW COLUMNS FROM sales;" con.query(sql, function(err, result){ if (err) throw err console.log(result); }); });
输出
产生的输出如下所示:
Connected! -------------------------- [ { Field: 'ID', Type: 'int', Null: 'YES', Key: '', Default: null, Extra: '' }, { Field: 'ProductName', Type: 'varchar(255)', Null: 'YES', Key: '', Default: null, Extra: '' }, { Field: 'CustomerName', Type: 'varchar(255)', Null: 'YES', Key: '', Default: null, Extra: '' }, { Field: 'DispatchDate', Type: 'date', Null: 'YES', Key: '', Default: null, Extra: '' }, { Field: 'DeliveryTime', Type: 'time', Null: 'YES', Key: '', Default: null, Extra: '' }, { Field: 'Price', Type: 'int', Null: 'YES', Key: '', Default: null, Extra: '' }, { Field: 'Location', Type: 'varchar(255)', Null: 'YES', Key: '', Default: null, Extra: '' } ]
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ShowColumn { public static void main(String[] args) { String url = "jdbc:mysql://127.0.0.1:3306/TUTORIALS"; String username = "root"; String password = "password"; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection(url, username, password); Statement statement = connection.createStatement(); System.out.println("Connected successfully...!"); //show column String sql = "SHOW COLUMNS FROM tutorials_tbl FROM TUTORIALS"; ResultSet resultSet = statement.executeQuery(sql); System.out.println("Column has been shown successfully...!"); while (resultSet.next()) { System.out.print(resultSet.getString(1)); System.out.println(); } connection.close(); } catch (Exception e) { System.out.println(e); } } }
输出
获得的输出如下所示:
Connected successfully...! Column has been shown successfully...! ID tutorial_title tutorial_author
import mysql.connector #establishing the connection connection = mysql.connector.connect( host='localhost', user='root', password='password', database='tut' ) table_name = 'NOVELS' #Creating a cursor object cursorObj = connection.cursor() show_columns_query = f"SHOW COLUMNS FROM {table_name}" cursorObj.execute(show_columns_query) columns_info = cursorObj.fetchall() print(f"Columns of table '{table_name}':") for column in columns_info: print(f"Column Name: {column[0]}, Type: {column[1]}, Null: {column[2]}, Key: {column[3]}, Default: {column[4]}") cursorObj.close() connection.close()
输出
以下是上述代码的输出:
Columns of table 'tutorials_tbl': Column Name: tutorial_id, Type: b'int', Null: NO, Key: PRI, Default: None Column Name: tutorial_title, Type: b'varchar(100)', Null: NO, Key: , Default: None Column Name: tutorial_author, Type: b'varchar(40)', Null: NO, Key: , Default: None Column Name: submission_date, Type: b'date', Null: YES, Key:, Default: None Column Name: tutorial_name, Type: b'varchar(20)', Null: YES, Key: , Default: None