如何在 MySQL 中將所有表和列重新命名為小寫?


您可以在 INFORMATION_SCHEMA.COLUMNS 的幫助下實現此操作。語法如下 -

SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CHANGE `', COLUMN_NAME, '` `',
LOWER(COLUMN_NAME), '` ', COLUMN_TYPE, ';') AS anyAliasName
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ‘yourDatabaseName’;

現在使用有兩個表的資料庫。資料庫名稱如下:“bothinnodbandmyisam”。該資料庫具有以下表 -

  • employee
  • student

employee 表的描述如下 -

mysql> desc employee;

以下是輸出。假設我們在 employee 表中有以下列,它們不是小寫 -

+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| EmployeeId   | int(11)     |  YES |     | NULL    |       |
| EmployeeName | varchar(30) | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

student 表的描述如下。查詢如下 -

mysql> desc student;

以下是輸出。假設我們在 student 表中有以下列,它們不是小寫 -

+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| StudentId   | int(11)     | YES  |     | NULL    |       |
| StudentName | varchar(20) | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

這是將所有表的列名更改為小寫的查詢。查詢如下 -

mysql> SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CHANGE `', COLUMN_NAME, '` `',
   -> LOWER(COLUMN_NAME), '` ', COLUMN_TYPE, ';') AS changeColumnNameToLower
   -> FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'bothinnodbandmyisam';

以下是顯示 ALTER TABLE 命令的輸出,該命令顯示了更新後的列名 -

+------------------------------------------------------------------------+
| changeColumnNameToLower                                                |
+------------------------------------------------------------------------+
| ALTER TABLE employee CHANGE `EmployeeId` `employeeid` int(11);         |
| ALTER TABLE employee CHANGE `EmployeeName` `employeename` varchar(30); |
| ALTER TABLE student CHANGE `StudentId` `studentid` int(11);            |
| ALTER TABLE student CHANGE `StudentName` `studentname` varchar(20);    |
+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

檢視上面的示例輸出,所有列名都已更改為小寫。

更新於: 30-Jul-2019

889 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告