Показать все таблицы. Опишите подобную функциональность
Как я могу отобразить все таблицы в базе данных, похожие на вывод, какDESCRIBE myTable
, Добавление функциональности для:
Замечания:DESCRIBE
Вывод прост и для одной таблицы за раз.
Редактировать:
Хороший отзыв от Рика Джеймса. Я был в растерянности и нуждался в этом мозговом штурме.
Если кто-то хочет добавить функциональность (к моему самоответу), такую как строка с отступом внизу каждой таблицы для
Индексы (возможно, 1 строка на индекс, показывающая имена и имена столбцов, разделенные запятойКоличество элементов в этой строке индекса вышеОграничения внешнего ключаВсе остальное, что есть у вас, может помочь вашим сверстникам.Концептуально иметь весь этот блок, называемый «Расширенная информация», и переключатель (параметр) для Yay или Nay для его создания. Если 'N', то не производите это.Я был бы очень доволен. Естественно, эта информация не будет зависеть от заголовков столбцов, уже показанных мной в ответе на свой вопрос. Таким образом, сразу приходит на ум какой-то визуальный элемент, такой как отступ, а не то, чтобы он был частью таблицы. Грубый вывод в порядке.
Рассмотрите следующие грубые заметки, которые могут оказаться полезными:
create schema x99;
use x99;
create table parent
( -- assume your have only one parent, ok bad example, it's early
id int auto_increment primary key,
fullName varchar(100) not null
)ENGINE=InnoDB;
-- drop table child;
create table child
( id int auto_increment primary key,
fullName varchar(100) not null,
myParent int not null,
CONSTRAINT `mommy_daddy` FOREIGN KEY (myParent) REFERENCES parent(id)
ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE=InnoDB;
create table t3
( id INT AUTO_INCREMENT PRIMARY KEY,
myD DATE NOT NULL,
myI INT NOT NULL,
KEY `t3_001` (myD,myI)
);
create table t4
( someCode CHAR(4) PRIMARY KEY,
codeDescr VARCHAR(500) NOT NULL
);
create table t5
( id INT AUTO_INCREMENT PRIMARY KEY,
theCode CHAR(4) NOT NULL,
d1 DATE NOT NULL,
i1 INT NOT NULL,
someOther DATETIME NOT NULL,
FOREIGN KEY `cd_2_t4` (theCode) REFERENCES t4(someCode),
FOREIGN KEY `cd_2_t3` (d1,i1) REFERENCES t3(myD,myI)
);
-- The below 2 lines are merely to show cardinality which I am sure is
-- read from INFO SCHEMA too
show indexes in child; -- to pick up cardinality (or from INFO SCHEMA)
show indexes in t5; -- ditto
-- So, I am not suggesting to actually call "show indexes"
-- http://dev.mysql.com/doc/refman/5.7/en/key-column-usage-table.html
-- James Goatcher
SELECT CONCAT( table_name, '.',
column_name, ' -> ',
referenced_table_name, '.',
referenced_column_name ) AS list_of_fks
FROM information_schema.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = 'x99'
AND REFERENCED_TABLE_NAME is not null
ORDER BY TABLE_NAME, COLUMN_NAME;
+-----------------------------+
| list_of_fks |
+-----------------------------+
| child.myParent -> parent.id |
| t5.d1 -> t3.myD |
| t5.i1 -> t3.myI |
| t5.theCode -> t4.someCode |
+-----------------------------+
Despite the output suggested by James Goatcher on that Webpage,
perhaps what would look better under table t5 as 2 lines:
t5.d1,i1 -> t3.myD,myI <----- That there would be swell
t5.theCode -> t4.someCode
-- You may make the assumption that all tables are in the same schema
-- If they aren't and it blows up that is fine
drop schema x99;
Я хотел бы наградить эту награду.