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

我正在学习SQL,令我困扰的是,我似乎无法在表上找到所有约束。 我用创建表

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));

并添加了一个约束

alter table t2

add constraint c2 check (b<20);

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

show table status

from tenn #-->the name of my database

like 't2';

然后

show create table t2;

and then

select *

from information_schema.key_column_usage

where table_name='t2';

最后

select *

from information_schema.table_constraints

where table_name='t2';

但是这些都不显示所有四个约束。 谁能告诉我如何看到所有这些?

非常感谢!

Alexander asked 2020-08-04T19:55:26Z

8个解决方案

59 votes

select COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME, REFERENCED_TABLE_NAME

from information_schema.KEY_COLUMN_USAGE

where TABLE_NAME = 'table to be checked';

RRM answered 2020-08-04T19:55:39Z

22 votes

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

SHOW CREATE TABLE mytable;

这将向您确切显示将输入什么SQL以定义其当前形式的表结构。

John Foley answered 2020-08-04T19:56:04Z

20 votes

MySQL不支持检查约束。 对该SQL进行解析,接受,然后以静默方式忽略,而不会向用户发送任何消息。

由于未创建检查约束,因此您将看不到它。

a_horse_with_no_name answered 2020-08-04T19:56:28Z

12 votes

您可以使用此:

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'

为了获得更好的格式输出,请使用以下命令:

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'

Abhishek Gupta answered 2020-08-04T19:56:52Z

6 votes

您可以从information_schema.table_constraints像这样获得它:

SELECT *

FROM information_schema.table_constraints

WHERE table_schema = schema()

AND table_name = 'table_name';

blackbishop answered 2020-08-04T19:57:12Z

3 votes

外键约束在以下命令的输出的“注释”列中列出:

SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';

sreimer answered 2020-08-04T19:57:32Z

2 votes

不幸的是,MySQL不支持SQL检查约束。 当您在查询中定义它们时,它们将被忽略。

Karan Motwani answered 2020-08-04T19:57:52Z

0 votes

用SQL导出数据库表。

如果您具有phpmyadmin,则可以通过访问“导出”标签来实现。 如果选择“自定义”导出方法,请确保在“特定于格式的选项”部分下选择“结构”或“结构和数据”。

示例.sql导出代码段:

--

-- Table structure for table `customers`

--

CREATE TABLE `customers` (

`username` varchar(50) NOT NULL,

`fullname` varchar(100) NOT NULL,

`postalcode` varchar(50) NOT NULL,

PRIMARY KEY (`username`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

...

hawk8 answered 2020-08-04T19:58:21Z

mysql 如何查看constraint定义的的所有约束_MySQL:如何查看表上的所有约束?相关推荐

  1. mysql取消外码约束_MySQL 关闭子表的外键约束检察方法

    准备: 定义一个教师表.一个学生表:在学生表中引用教师表ID create table teachers(teacherID int not null auto_increment primary k ...

  2. mysql字段约束_mysql数据库之表操作及字段约束条件

    一.存储引擎 二.表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id name age sex 1 li 12 male 2 liu ...

  3. mysql删除表外键_MySQL删除所有表的外键约束、禁用外键约束

    数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能.在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的关联关 ...

  4. mysql数据库中怎么删除一行_数据库教程_mysql如何删除表中一行数据?- 中国it教程网...

    mysql中使用DELETE语句删除表中一行数据,语句为"DELETE FROM 表名称 WHERE 列名称 = 值".删除所有行的语句为"DELETE FROM tab ...

  5. VS(visual studio)如何查看预处理后的文件?(查看宏定义展开,头文件展开等)(注意如果要运行或调试代码,要把第一步的改回来!!!!)

    如图,右键点击项目,选择属性: 找到预处理器–>预处理到文件,选择是,点击应用 找到项目中需要查看预处理后的文件,点击编译 打开被编译文件所在文件夹 进入debug文件夹 这个main.i就是我 ...

  6. MySQL使用什么关键字添加唯一约束_mysql怎么添加唯一约束?

    方法:1.创建表时,使用"CREATE TABLE 表名(字段名 数据类型 UNIQUE);"语句来添加:2.修改表时,使用"ALTER TABLE 表名 ADD CON ...

  7. mysql删除表主键约束_MySQL添加约束

    MySQL添加约束.删除约束及修改约束 MySQL删除约束 将t_student 删除外键约束:alter table 表名 drop foreign key 外键(区分大小写); alter tab ...

  8. mysql添加字段时定义候选键_MySQL 表约束

    约束概述 对数据表中数据的限制条件叫表的约束,目的是为了保证表中记录的完整和有效.例如非空.唯一等. 查看约束 1 通过查看建表语句 查看表中的约束 show create table tb_name ...

  9. MySQL中外键的定义、作用、添加和删除

    1 简介 在实际开发的项目中,一个健壮数据库中的数据一定有很好的参照完整性.例如学生档案和成绩单两张表,如果成绩单中有张三的成绩,学生档案中张三的档案却被删除了,这样就会产生垃圾数据或者错误数据.为了 ...

最新文章

  1. ubuntu 编译caffe makefile.config
  2. Apollo基础设置
  3. C# 发出异步的Get请求
  4. neo4j与mysql数据库_Neo4j: 迁移MySQL的数据到Neo4j
  5. 解决Sharepoint每天第一次打开速度慢的问题
  6. django-学生列表页的制作
  7. python rabitmq_python使用rabbitmq实例二,工作队列
  8. Mysql-2-数据库基础
  9. Future机制原理
  10. 机器人机构学的数学基础——绪论
  11. Java类加载器的使用
  12. ROS路由器做PCQ限速教程
  13. Doc2Vec 模型参数
  14. java音乐bpm,Java Tempo.setBpm方法代码示例
  15. 【无标题】2021年烷基化工艺证考试及烷基化工艺操作证考试
  16. Java 直接插入 CLOB/BLOB 数据到 Oracle 数据库
  17. OPTA 7模式测试说明
  18. Excel翻译单元格内容
  19. Icon图标 [Java]
  20. 灰狼优化算法(Grey Wolf Optimizer, GWO)

热门文章

  1. 单例设计模式singleton
  2. Linux中source命令的用法
  3. python利用scapy模块写一个TCP路由追踪和扫描存活IP的脚本
  4. iOS macOS的后渗透利用工具:EggShell
  5. d3.js--04(enter和exit)
  6. 利用scrapy和MongoDB来开发一个爬虫
  7. JQuery轻量级网页编辑器 选中即可编辑
  8. sqlserver监控阻塞(死锁)具体情况
  9. 调整linux的时钟
  10. .NET程序员的C情结(二)