是否有可以描述数据库中所有表的语句?
这样的事情:
describe * from myDB;
答案 0 :(得分:59)
没有声明同时describe
所有表格。但你可能想做这样的事情:
SELECT * FROM information_schema.columns WHERE table_schema = 'db_name';
答案 1 :(得分:7)
因为其他建议在屏幕上造成了很多混乱,或者只是没有做到这里的技巧是一个小数据库的黑客攻击:
describe table_a; describe table_b; describe table_c;
等等
答案 2 :(得分:6)
我正在使用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
希望这会有所帮助。
答案 3 :(得分:2)
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
答案 4 :(得分:2)
这是@ AlexShaffer的优秀评论的变体,经过修改,以反映Mac终端的mysql监视器在被要求描述表时输出的内容。
USE information_schema;
SELECT TABLE_NAME 'Table', COLUMN_NAME 'Field', COLUMN_TYPE 'Type', IS_NULLABLE 'Null',
COLUMN_KEY 'Key', COLUMN_DEFAULT 'Default', EXTRA 'Extra'
FROM information_schema.columns
WHERE table_schema = 'your_db'
ORDER BY TABLE_NAME;
答案 5 :(得分:1)
请创建如下的bash脚本,它会提示您输入详细信息。
LINUX ONLY - BASH SCRIPT - describe-all-tables.sh
#!/bin/sh
echo ""
read -p 'MySQL db: ' DB
echo ""
read -p 'MySQL user: ' USER
echo ""
read -e -p 'MySQL host: ' -i "localhost" HOSTNAME
echo ""
read -s -p 'MySQL password: ' PASSWORD
echo ""
mysql -N -u${USER} ${DB} -p${PASSWORD} -h ${HOSTNAME} --execute="show tables" | while read table; do mysql -u${USER} -h ${HOSTNAME} ${DB} -p${PASSWORD} -v -t --execute="describe $table"; echo -e "\n"; done
USAGE - / bin / sh describe-all-tables.sh
答案 6 :(得分:0)
默认情况下,Mysql不描述数据库中的所有表。数据库主要意图的主要原因只是分散权力并处理元数据,而不是索引数据。
连接到数据库: mysql [-u username] [-h hostname] database-name
要列出所有数据库,请在MySQL提示符下键入: 显示数据库
然后选择正确的数据库: 使用MyDB;
列出数据库中的所有表格: show tables;
描述一个表格: desc table-name 或 描述表名
答案 7 :(得分:0)
不确定是否有办法让结果显示在"表格中#34;从mysql提示符运行命令时的格式,但这应该描述垂直格式化的所有表。
mysql -N -uUSER -pPASSWORD DATABASE_NAME --execute="show tables" | while read table; do mysql -uUSER -pPASSWORD DATABASE_NAME --execute="describe $table \G"; done