MySQL 8 教程

MySQL - 主页 MySQL - 简介 MySQL - 功能 MySQL - 版本 MySQL - 变量 MySQL - 安装 MySQL - 管理 MySQL - PHP 语法 MySQL - Node.js 语法 MySQL - Java 语法 MySQL - Python 语法 MySQL - 连接 MySQL - Workbench

MySQL 8 数据库

MySQL - 创建数据库 MySQL - 删除数据库 MySQL - 选择数据库 MySQL - 显示数据库 MySQL - 复制数据库 MySQL - 数据库导出 MySQL - 数据库导入 MySQL - 数据库信息

MySQL 8 用户

MySQL - 创建用户 MySQL - 删除用户 MySQL - 显示用户 MySQL - 更改密码 MySQL - 授予权限 MySQL - 显示权限 MySQL - 撤销权限 MySQL - 锁定用户账户 MySQL - 解锁用户账户

MySQL 8 表

MySQL - 创建表 MySQL - 显示表 MySQL - 修改表 MySQL - 重命名表 MySQL - 克隆表 MySQL - 截断表 MySQL - 临时表 MySQL - 修复表 MySQL - 描述表 MySQL - 添加/删除列 MySQL - 显示列 MySQL - 重命名列 MySQL - 表锁定 MySQL - 删除表 MySQL - 派生表

MySQL 8 查询

MySQL - 查询 MySQL - 约束 MySQL - INSERT 插入查询 MySQL - SELECT 查询 MySQL - UPDATE 更新查询 MySQL - DELETE删除查询 MySQL - REPLACE 替换查询 MySQL - 忽略插入 MySQL - 重复键更新时插入 MySQL - 插入到另一个表语句

MySQL 8 视图

MySQL - 创建视图 MySQL - 更新视图 MySQL - 删除视图 MySQL - 重命名视图

MySQL 8 索引

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 - NOT EQUAL 运算符 MySQL - IS NULL 运算符 MySQL - IS NOT NULL 运算符 MySQL - Between 运算符 MySQL - UNION 运算符 MySQL - UNION 与 UNION ALL MySQL - MINUS 运算符 MySQL - INTERSECT 运算符 MySQL - INTERVAL 运算符

MySQL 连接

MySQL - 使用连接 MySQL - Inner Join 内连接 MySQL - LEFT JOIN 左连接 MySQL - RIGHT JOIN 右连接 MySQL - CROSS JOIN 交叉连接 MySQL - 全连接 MySQL - 自连接 MySQL - Delete Join 删除连接 MySQL - UPDATE JOIN 更新连接 MySQL - 联合 vs 连接

MySQL 键

MySQL - UNIQUE 唯一键 MySQL - PRIMARY KEY 主键 MySQL - FOREIGN KEY 外键 MySQL - 复合键 MySQL - 备用键

MySQL 触发器

MySQL - 触发器 MySQL - 创建触发器 MySQL - 显示触发器 MySQL - 删除触发器 MySQL - 插入前触发器 MySQL - 插入后触发器 MySQL - 更新前触发器 MySQL - 更新后触发器 MySQL - 删除前触发器 MySQL - 删除后触发器

MySQL 8 数据类型

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 - ngram 全文解析器

MySQL8 函数和运算符

MySQL - 日期和时间函数 MySQL - 算术运算符 MySQL - 数字函数 MySQL - 字符串函数 MySQL - 聚合函数

MySQL 8 其他概念

MySQL - NULL 值 MySQL - 事务 MySQL - 序列 MySQL - 处理重复项 MySQL - SQL 注入 MySQL - 子查询 MySQL - 注释 MySQL - 检查约束 MySQL - 存储引擎 MySQL - 将表导出为 CSV 文件 MySQL - 将 CSV 文件导入数据库 MySQL - UUID MySQL - 通用表表达式 MySQL - 级联删除 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 - 显示进程列表 MySQL - 更改列类型 MySQL - 重置自动增量 MySQL - Coalesce() 函数

MySQL 8 实用资源

MySQL - 实用函数 MySQL - 语句参考 MySQL - 快速指南 MySQL - 实用资源 MySQL - 讨论


MySQL - 重命名表

在某些情况下,用户和数据库管理员可能都希望更改关系数据库中表的名称,以使表的名称更适合特定情况。

MySQL 提供了两种不同的重命名 MySQL 表的方法。我们可以使用 RENAME TABLEALTER TABLE 语句。在本教程中,我们将通过合适的示例来理解它们。

MySQL RENAME TABLE 语句

MySQL RENAME TABLE 语句用于将数据库中的现有表重命名为其他名称。

语法

以下是 MySQL RENAME TABLE 语句的基本语法 -

将表 table_name 重命名为 new_name;

其中,table_name 是现有表的名称,new_name 是要指定的新名称。

示例

首先,我们使用 CREATE 语句在 MySQL 数据库中创建一个名为 CUSTOMERS 的表,如下所示 -

CREATE TABLE CUSTOMERS (
	ID INT,
	NAME VARCHAR(20),
	AGE INT
);

在这里,我们使用以下查询将上面创建的 CUSTOMERS 表重命名为 BUYERS -

将 CUSTOMERS 表重命名为 BUYERS;

输出

表已重命名,没有任何错误。

Query OK, 0 rows affected (0.01 sec)

验证

执行以下查询以检索 CUSTOMERS 表的描述 -

DESC CUSTOMERS;

显示错误,因为我们已将 CUSTOMERS 表名称更改为 BUYERS,而数据库中没有 CUSTOMERS 表。

ERROR 1146 (42S02): Table 'tutorials.customers' doesn't exist

重命名多个表

使用 MySQL RENAME TABLE 语句,我们还可以在单​​个查询中重命名多个表。

语法

以下是使用 MySQL RENAME TABLE 语句重命名多个表的语法 -

RENAME TABLE old_table1 TO new_table1,
   old_table2 TO new_table2,
   old_table3 TO new_table3;

示例

在下面的示例中,我们将创建三个不同的表,分别为 Cust1Cust2Cust3 -

CREATE TABLE Cust1(ID INT);
CREATE TABLE Cust2(ID INT);
CREATE TABLE Cust3(ID INT);

在这里,我们使用以下查询来验证上述表是否已创建 -

SHOW TABLES;

正如我们在下面的输出中看到的,上述表已成功创建。

Tables_in_tutorials
cust1
cust2
cust3

现在,让我们使用以下查询重命名上面创建的所有表 -

RENAME TABLE Cust1 TO Buyer1, Cust2 TO Buyer2, Cust3 TO Buyer3;

输出

所有三个表均已重命名,并且没有任何错误。

Query OK, 0 rows affected (0.03 sec)

验证

让我们再次验证表列表,看看表名是否已更改 -

SHOW TABLES;

正如我们在下面看到的输出,所有三个表都已成功重命名。

Tables_in_tutorials
buyer1
buyer2
buyer3

使用 ALTER TABLE 语句重命名表

在 MySQL 中,我们还可以使用 ALTER TABLE 语句中的 RENAME 来修改现有表的名称。

语法

以下是使用 ALTER TABLE 语句重命名表的语法 -

ALTER TABLE existing_table_name RENAME TO new_table_name

示例

在下面的查询中,我们将创建一个名为 PLAYERS 的表。

CREATE TABLE PLAYERS (
	ID INT,
	NAME VARCHAR(20),
	AGE INT
);

现在,让我们使用以下查询将上面创建的表重命名为新名称 TEAMS -

ALTER TABLE PLAYERS RENAME TO TEAMS;

输出

表已重命名,没有任何错误。

Query OK, 0 rows affected (0.02 sec)

验证

执行以下查询以检索 PLAYERS 表的描述 -

DESC PLAYERS;

它会显示一个错误,因为我们已将 PLAYERS 表重命名为 TEAMS,而数据库中没有 PLAYERS 表。

ERROR 1146 (42S02): Table 'tutorials.players' doesn't exist

使用客户端程序重命名表

除了使用 MySQL 查询重命名 MySQL 数据库中的表之外,我们还可以使用客户端程序对表执行 RENAME TABLE 操作。

语法

以下是在各种编程语言中重命名 MySQL 数据库中表的语法 -

要通过 PHP 程序将表重命名到 MySQL 数据库中,我们需要使用 mysqli 函数 query() 执行 RENAME TABLE 语句,如下所示:-

$sql = "RENAME TABLE old_table_name TO new_table_name";
$mysqli->query($sql);

要通过 Node.js 程序将表重命名到 MySQL 数据库中,我们需要使用 mysql2 库中的 query() 函数执行 RENAME TABLE 语句,如下所示:-

sql = "RENAME TABLE table_name TO new_name";
con.query(sql);

要通过 Java 程序将表重命名到 MySQL 数据库中,我们需要使用 JDBC 函数 executeUpdate() 执行 RENAME TABLE 语句,如下所示:-

String sql = "RENAME TABLE old_table_name TO new_table_name";
statement.executeUpdate(sql);

要通过 Python 程序将表重命名到 MySQL 数据库中,我们需要使用 MySQL Connector/Pythonexecute() 函数执行 RENAME TABLE 语句,如下所示:-

sql = "RENAME TABLE old_table_name TO new_table_name"
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.
'); $sql = "RENAME TABLE tutorials_table TO tutorials_tbl "; if ($mysqli->query($sql)) { printf("table renamed successfully.
"); } if ($mysqli->errno) { printf("table could not rename: %s
", $mysqli->error); } $mysqli->close();

输出

获得的输出如下 −

table renamed successfully.
var mysql = require('mysql2');
var con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "Nr5a0204@123"
});
 //连接到 MySQL
  con.connect(function (err) {
  if (err) throw err;
  console.log("Connected!");
  console.log("--------------------------");
 //创建数据库
  sql = "CREATE DATABASE tutorials"
  con.query(sql);
 //选择数据库
  sql = "USE tutorials"
  con.query(sql);
 //Creating DEMO table
  sql = "CREATE TABLE Demo(ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255));"
  con.query(sql);
 //插入记录
  sql = "INSERT INTO Demo VALUES(1, 'Shikhar', 'Dhawan'),(2, 'Jonathan', 'Trott'),(3, 'Kumara', 'Sangakkara');"
  con.query(sql);
 //Fetching the DEMO table
  sql = "SELECT * FROM Demo;"
  con.query(sql, function(err, result){
    if (err) throw err
    console.log("**Following is the DEMO table**");
    console.log(result);
    console.log("--------------------------");
  });
 //Renaming the DEMO table as PLAYERS
  sql = "RENAME TABLE Demo to Players;"
  con.query(sql, function(err, result){
    if (err) throw err
    console.log("**Renamed the DEMO table as Players**");
    console.log(result);
    console.log("--------------------------");
  });
 //Trying to Retrieve the DEMO table, Leads to an error.
  sql = "SELECT * FROM Demo;"
  con.query(sql, function(err, result){
    if (err) throw err
    console.log("Trying to retrieve DEMO table");
    console.log(result);
  });
});                   

输出

生成的输出如下 -

Connected!
--------------------------
**Following is the DEMO table**
[
  { ID: 1, First_Name: 'Shikhar', Last_Name: 'Dhawan' },
  { ID: 2, First_Name: 'Jonathan', Last_Name: 'Trott' },
  { ID: 3, First_Name: 'Kumara', Last_Name: 'Sangakkara' }
]
--------------------------
**Renamed the DEMO table as Players**
ResultSetHeader {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  info: '',
  serverStatus: 2,
  warningStatus: 0,
  changedRows: 0
}
--------------------------
C:\Users\Lenovo\desktop\JavaScript\connectDB.js:52
    if (err) throw err
             ^

Error: Table 'tutorials.demo' doesn't exist
    at Packet.asError (C:\Users\Lenovo\desktop\JavaScript
ode_modules\mysql2\lib\packets\packet.js:728:17)
    at Query.execute (C:\Users\Lenovo\desktop\JavaScript
ode_modules\mysql2\lib\commands\command.js:29:26)
    at Connection.handlePacket (C:\Users\Lenovo\desktop\JavaScript
ode_modules\mysql2\lib\connection.js:478:34)
    at PacketParser.onPacket (C:\Users\Lenovo\desktop\JavaScript
ode_modules\mysql2\lib\connection.js:97:12)
    at PacketParser.executeStart (C:\Users\Lenovo\desktop\JavaScript
ode_modules\mysql2\lib\packet_parser.js:75:16)
    at Socket. (C:\Users\Lenovo\desktop\JavaScript
ode_modules\mysql2\lib\connection.js:104:25)
    at Socket.emit (node:events:513:28)
    at addChunk (node:internal/streams/readable:315:12)
    at readableAddChunk (node:internal/streams/readable:289:9)
    at Socket.Readable.push (node:internal/streams/readable:228:10) {
  code: 'ER_NO_SUCH_TABLE',
  errno: 1146,
  sqlState: '42S02',
  sqlMessage: "Table 'tutorials.demo' doesn't exist",
  sql: 'SELECT * FROM Demo;',
  fatal: true
}        
import java.sql.*;
public class RenameTable {
    public static void main(String[] args){
        String url = "jdbc:mysql://localhost: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...!");
           //Rename tables...!
            String sql = "RENAME TABLE tutorials_tbl TO new_table";
            statement.executeUpdate(sql);
            System.out.println("Table renamed successfully successfully...!");
            connection.close();
        }
        catch(Exception e){
            System.out.println(e);
        }
    }
}                                

输出

获得的输出如下所示 -

Table renamed successfully successfully...!      
import mysql.connector
#建立连接
connection = mysql.connector.connect(
    host='localhost',
    user='root',
    password='password',
    database='tut'
)
old_table_name = 'tutorials_tbl'
new_table_name = 'tutorials_table'
#Creating a cursor object
cursorObj = connection.cursor()
cursorObj.execute(f"RENAME TABLE {old_table_name} TO {new_table_name}")
print(f"Table '{old_table_name}' is renamed to '{new_table_name}' successfully.")
cursorObj.close()
connection.close()                                           

输出

以下是上述代码的输出 -

Table 'tutorials_tbl' is renamed to 'tutorials_table' successfully.