首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:如何查看一个表上的所有约束?

MySQL:如何查看一个表上的所有约束?
EN

Stack Overflow用户
提问于 2011-02-24 02:02:00
回答 7查看 91.2K关注 0票数 51

我正在学习SQL,让我困扰的是,我似乎找不到一个表上的所有约束。我用以下命令创建了表

代码语言:javascript
复制
create table t2
(a integer not null primary key,
b integer not null, constraint c1 check(b>0),
constraint fk1 foreign key(a) references t1(a));

并添加了一个约束

代码语言:javascript
复制
alter table t2
add constraint c2 check (b<20);

然后,我尝试查看所有(4)个约束

代码语言:javascript
复制
show table status
from tenn #-->the name of my database
like 't2';

然后

代码语言:javascript
复制
show create table t2;

然后

代码语言:javascript
复制
select *
from information_schema.key_column_usage
where table_name='t2';

最后

代码语言:javascript
复制
select *
from information_schema.table_constraints
where table_name='t2';

但这些都没有显示出所有的四个约束。有没有人能告诉我怎么看所有的照片?

非常感谢!

EN

回答 7

Stack Overflow用户

发布于 2013-09-11 22:18:17

代码语言:javascript
复制
select COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME, REFERENCED_TABLE_NAME
from information_schema.KEY_COLUMN_USAGE
where TABLE_NAME = 'table to be checked';
票数 64
EN

Stack Overflow用户

发布于 2016-04-21 01:12:30

查看当前表及其约束的解释的最简单方法是使用:

SHOW CREATE TABLE mytable;

这将准确地向您显示将输入什么SQL来定义当前表单中的表结构。

票数 35
EN

Stack Overflow用户

发布于 2013-03-18 04:59:30

您可以使用以下命令:

代码语言:javascript
复制
select
    table_name,column_name,referenced_table_name,referenced_column_name
from
    information_schema.key_column_usage
where
    referenced_table_name is not null
    and table_schema = 'my_database' 
    and table_name = 'my_table'

或者,为了获得更好的格式化输出,请使用以下内容:

代码语言:javascript
复制
select
    concat(table_name, '.', column_name) as 'foreign key',  
    concat(referenced_table_name, '.', referenced_column_name) as 'references'
from
    information_schema.key_column_usage
where
    referenced_table_name is not null
    and table_schema = 'my_database' 
    and table_name = 'my_table'
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5094948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档