Запрос MySQL для получения всех имен столбцов из всех таблиц из определенной базы данных

#mysql

Вопрос:

Мне нужно было бы найти все экземпляры %phone% из всех таблиц в определенной базе данных.

Это мой сценарий, с которым я пытаюсь работать, но все еще получаю все базы данных (мне нужно только из DB1).:

 use DB1;
SELECT  *
FROM
    information_schema.columns
WHERE
    column_name LIKE '%phone%';
 

Я тоже пытался писать так:

 SELECT  *
FROM
    DB1.information_schema.columns
WHERE
    column_name LIKE '%phone%';
 

но у меня есть пятерка SQL Error [1064] [42000] за этот синтаксис.

Каков был бы правильный способ запросить это?

Ответ №1:

INFORMATION_SCHEMA Для всех баз данных на сервере существует только одна база данных. База данных таблиц находится в table_schema столбце columns таблицы.

 SELECT *
FROM information_schema.columns
WHERE table_schema = 'DB1' AND column_name LIKE '%phone%';
 

Комментарии:

1. Так просто и красноречиво, спасибо.

Ответ №2:

Я использовал следующее для » %email%», и это сработало.

Так что, я думаю, это было бы и для тебя тоже:

 SELECT
    DISTINCT TABLE_NAME
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE
    COLUMN_NAME LIKE ('%phone%') AND TABLE_SCHEMA='DB1';
 

Ответ №3:

используйте параметр TABLE_SCHEMA, чтобы выбрать вашу схему/базу данных

 SELECT  *
FROM
    information_schema.columns
WHERE
    column_name LIKE '%phone%'
    AND TABLe_SCHEMA = 'DB1';