select name, initials from players where not exists (select * from penalties where playerno = players.playerno);
1.6 Informatica_schema获取元数据 1.6.1 元数据访问方法查询 INFORMATION_SCHEMA 数据库表。其中包含 MySQL 数据库服务器所管理的所有对象的相关数据
使用 SHOW 语句。用于获取数据库和表信息的 MySQL 专用语句
使用 DESCRIBE(或 DESC)语句。用于检查表结构和列属性的快捷方式
使用 mysqlshow 客户端程序。SHOW 语法的命令行程序
INFORMATION_SCHEMA 数据库优点介绍
充当数据库元数据的中央系统信息库,模式和模式对象,服务器统计信息(状态变量、设置、连接) 。
采用表格式以实现灵活访问,使用任意 SELECT 语句。是“虚拟数据库”,表并非“真实”表(基表),而是“系统视图”,根据当前用户的特权动态填充表。
列出 INFORMATION_SCHEMA 数据库中所有的表:
mysql> USE information_schema; Database changed mysql> SHOW TABLES; +---------------------------------------+ | Tables_in_information_schema | +---------------------------------------+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES |
1.6.2 对 INFORMATION_SCHEMA 使用 SELECT
示例一:
查找引擎是innodb的表。
SELECT TABLE_NAME, ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE= 'innodb';
示例二:
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'set';
sql说明:查找数据类型是set的表
示例三:
SELECT CHARACTER_SET_NAME, COLLATION_NAME,IS_DEFAULT FROM INFORMATION_SCHEMA.COLLATIONS WHERE IS_DEFAULT = 'Yes';
sql说明:查看找默认为yes的表
示例四:
SELECT TABLE_SCHEMA, COUNT(*) FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_SCHEMA;
sql说明:查看每个数据库下表的个数
使用 INFORMATION_SCHEMA 表获取有关创建 shell 命令的信息。
SELECT CONCAT("mysqldump -uroot -p ", TABLE_SCHEMA," ", TABLE_NAME, " >> ", TABLE_SCHEMA,".bak.sql") FROM TABLES WHERE TABLE_NAME LIKE 'Country%'
1.6.3 使用 mysql 命令创建 SQL 语句。mysql -uroot -p123 --silent --skip-column-names -e "SELECT CONCAT('CREATE TABLE ', TABLE_SCHEMA, '.',TABLE_NAME, '_backup LIKE ', TABLE_SCHEMA, '.',TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'world_innodb';"
1.6.4 MySQL中的show语句
SOHW databases:列出所有数据库 SHOW TABLES:列出默认数据库中的表 SHOW TABLES FROM <database_name>:列出指定数据库中的表 SHOW COLUMNS FROM <table_name>:显示表的列结构 SHOW INDEX FROM <table_name>:显示表中有关索引和索引列的信息 SHOW CHARACTER SET:显示可用的字符集及其默认整理 SHOW COLLATION:显示每个字符集的整理 SHOW STATUS:列出当前数据库状态 SHOW VARIABLES:列出数据库中的参数定义值
1.6.5 DESCRIBE 语句
DESCRIBE 语句 等效于 SHOW COLUMNS
一般语法:
mysql> DESCRIBE <table_name>;
显示 INFORMATION_SCHEMA 表信息