获取现有表语法的 SQL 查询

Cde*_*eez 2 mysql syntax

是否有任何SQL查询可以获取 MySql 数据库中现有表的语法?

意图: 我处于使用数据库的早期阶段,我正在使用 MySql 工作台来创建表并在需要时更新它们。在某些时候,在某些情况下,我希望拥有表格现在持有的语法,以便记录它或将其粘贴到 StackOverflow 之类的论坛中(期望我可以显示所有约束,实际上是表上的外键约束以一种简单的方式)。

请让我知道是否有任何解决方法。

小智 7

您可以使用SHOW CREATE TABLE <table_name>;来获取 CREATE TABLE 语句。例如。SHOW CREATE TABLE acl_user_role;这将显示表名和 CREATE TABLE 语句,例如:

CREATE TABLE `acl_user_role` (
  `UserId` INT(10) UNSIGNED NOT NULL,
  `RoleId` SMALLINT(5) UNSIGNED NOT NULL,
  PRIMARY KEY (`UserId`,`RoleId`),
  KEY `FK_UserRole_Role` (`RoleId`),
  CONSTRAINT `FK_UserRole_Role` FOREIGN KEY (`RoleId`) REFERENCES `acl_role` (`RoleId`),
  CONSTRAINT `FK_UserRole_User` FOREIGN KEY (`UserId`) REFERENCES `user` (`UserId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

如果您想了解特定表的键,请使用类似 SHOW KEYS FROM acl_user_role;

如果您想获取所有引用其他表的键和约束(如外键引用),请使用:

SELECT * FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE TABLE_NAME = '<your_table_name>' AND TABLE_SCHEMA = '<your_database_name>';

-- Example
SELECT * FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE TABLE_NAME = 'acl_user_role' AND TABLE_SCHEMA = 'db_shop';
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助你...