Ответ 1
Нет инструкции, что describe
все таблицы сразу. Но вы можете сделать что-то вроде этого:
SELECT * FROM information_schema.columns WHERE table_schema = 'db_name';
Есть ли инструкция, которая может описывать все таблицы в базе данных?
Что-то вроде этого:
describe * from myDB;
Нет инструкции, что describe
все таблицы сразу. Но вы можете сделать что-то вроде этого:
SELECT * FROM information_schema.columns WHERE table_schema = 'db_name';
потому что другие предложения очень сильно помешали на экране или просто не сделали трюк, вот взлом для маленького db:
describe table_a; describe table_b; describe table_c;
и т.д.
Я использую linux-путь. Сначала создайте файл ~/.my.cnf, чтобы сохранить имя пользователя и пароль для mysql. Затем используйте нижеприведенный фрагмент и запустите его в терминале linux.
Создайте список таблиц и фильтруйте заголовок и awk для генерации столбца. Затем используйте тот же метод для DESC table_name.
for i in $(mysql MYDBNAME -e 'SHOW TABLES' | grep -v "Tables_in" | awk '{print $1}'); do echo "TABLE: $i"; mysql MYDBNAME -e "DESC $i"; done
Надеюсь, это поможет.
По умолчанию Mysql не описывает все таблицы в базе данных. Основная причина Основная цель базы данных Просто децентрализовать власть и позаботиться о метаданных, но не индексировать данные.
Подключиться к базе данных: mysql [-u имя_пользователя] [-h имя_хоста] имя-базы данных
Чтобы перечислить все базы данных, введите в командной строке MySQL: показать базы данных
Затем выберите нужную базу данных: используйте MyDB;
Список всех таблиц в базе данных: показать таблицы;
Опишите таблицу: desc table-name или описать имя таблицы
mysql -B -N -u root -pPASSWORD -h somehost \
-e "SELECT DISTINCT CONCAT('describe ', table_name, ';') AS query FROM information_schema.tables WHERE table_schema='DATABASE_NAME_HERE' " | \
mysql -B -N -u root -pPASSWORD -h somehost DATABASE_NAME_HERE