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)
上記のサンプル出力を見てください。すべての列名が小文字に変更されています。
-
単一のクエリでMySQLのすべての列名を小文字にします
まず、-を作成しましょう mysql> create table DemoTable1 -> ( -> StudentFirstName varchar(20), -> StudentLastName varchar(20), -> StudentAge int, -> StudentCountryName varchar(20) -> ); Query OK, 0 rows affected (4
-
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 (