MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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’;

次に、2つのテーブルを持つデータベースを使用します。データベース名は「bothinnodbandmyisam」です。このデータベースには次のテーブルがあります-

  • 従業員
  • 学生

従業員テーブルの説明は次のとおりです-

mysql> desc employee;

以下は出力です。従業員テーブルに小文字ではない次の列があるとします-

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

学生テーブルの説明は次のとおりです。クエリは次のとおりです-

mysql> desc 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';

以下は、更新された列名を示すALTERTABLEコマンドを表示する出力です-

+------------------------------------------------------------------------+
| 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)

上記のサンプル出力を見てください。すべての列名が小文字に変更されています。


  1. 単一のクエリでMySQLのすべての列名を小文字にします

    まず、-を作成しましょう mysql> create table DemoTable1    -> (    -> StudentFirstName varchar(20),    -> StudentLastName varchar(20),    -> StudentAge int,    -> StudentCountryName varchar(20)    -> ); Query OK, 0 rows affected (4

  2. 1つのMySQLテーブルからすべてのレコードを取得し、それを別のテーブルに挿入しますか?

    このために、CREATE TABLEASSELECTステートメントの概念を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1518    -> (    -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> EmployeeName varchar(20)    -> )AUTO_INCREMENT=101; Query OK, 0 rows affected (