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

MySQLを使用してすべてのテーブルに存在する列を識別する方法は?


列名を識別するには、MySQLでINFORMATION_SCHEMA.COLUMNSを使用します。構文は次のとおりです-

select table_name,column_name
from INFORMATION_SCHEMA.COLUMNS
where table_schema = SCHEMA()
andcolumn_name='anyColumnName';

すべてのテーブルに存在する列を識別するために、上記のクエリを実装しましょう。ここでは、列EmployeeAge-

の存在を見つけています。
mysql> select table_name,column_name
   FROM INFORMATION_SCHEMA.COLUMNS
   WHERE table_schema = SCHEMA()
   AND column_name='EmployeeAge';

これにより、特定の列「EmployeeAge」-

を持つテーブルを表示する次の出力が生成されます。
+---------------+-------------+
| TABLE_NAME    | COLUMN_NAME |
+---------------+-------------+
| demotable1153 | EmployeeAge |
| demotable1297 | EmployeeAge |
| demotable1303 | EmployeeAge |
| demotable1328 | EmployeeAge |
| demotable1378 | EmployeeAge |
| demotable1530 | EmployeeAge |
| demotable1559 | EmployeeAge |
| demotable1586 | EmployeeAge |
| demotable1798 | EmployeeAge |
| demotable1901 | EmployeeAge |
| demotable511  | EmployeeAge |
| demotable912  | EmployeeAge |
+---------------+-------------+
12 rows in set (0.00 sec)

証明するために、上記の表のいずれかの説明を確認しましょう-

mysql> desc demotable1153;

これにより、demotable1153-

にEmployeeAge列が存在することを示す次の出力が生成されます。
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| EmployeeId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| EmployeeName | varchar(40) | YES  | MUL | NULL    |                |
| EmployeeAge  | int(11)     | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

  1. MySQLで特定の列名を持つテーブルを見つける方法は?

    列名を見つけるには、information_schema.columnsを使用します。以下は構文です- select distinct table_name from information_schema.columns where column_name like '%yourSearchValue%' and table_schema=database(); さまざまなテーブルで列名を見つけるために、上記の構文を実装しましょう。ここでは、特定の列名が「クライアント」という単語を持つテーブル名のみが必要です- mysql> select distinct table_

  2. MySQLを使用するサーバー上のすべてのデータベースのすべてのテーブルでSELECTを付与するにはどうすればよいですか?

    このために、以下の構文のようにGRANTSELECTステートメントを使用できます- GRANT SELECT ON *.* TO 'yourUserName'@'yourHostName'; まず、すべてのユーザー名とホストを一覧表示します- mysql> select user,host from mysql.user; これにより、次の出力が生成されます- +------------------+-----------+ | user             |