mysql列级约束和表级约束

本文介绍了MySQL中的列级约束和表级约束,包括非空约束、唯一性约束、主键约束和外键约束。通过示例解释了如何创建这些约束,以及它们在数据库中的作用。例如,unique约束确保字段的唯一性,而表级约束可以用于联合约束多个字段。此外,还提到了如何在信息模式的table_constraints表中查看约束信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非空: (not null)
唯一性:( unique)
主键:(primary key,PK)
外键:(foreign key,FK)

unique约束的字段具有唯一性,不可重复,但是可以为null
例如列级约束:
drop table if exists t_student;
create table t_student(
id int not null,
name varchar(32) not null,
email varchar(64) unique)
表示本表格中电子邮箱是唯一的,不能重复

(drop table if exists t_student 检查t_student表格是否存在,如果存在,则删除,后续重新创建)

表级约束:
drop table if exists t_student;
create table t_student(
id int not null,
name varchar(32) not null,
email varchar(64) ,
unique(email))
本例中表级约束和列级约束的作用是一样的

但可以实用表级约束联合约束多个字段:
drop table if exists t_student;
create table t_student(
id int not null,
name varchar(32) not null,
email varchar(64) ,
unique(name,email));
name,email两个都重复时才算重复

表级约束可以给约束起名字,方便以后删除:
例如:
create table t_student(
id int not null,
name varchar(32) not null,
email varchar(64) ,
constraint t_student_email_unique unique(email));

table_contraints 中专门存储约束信息:

mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| liu |
| mysql |
| performance_schema |
| sys |
| test |
±-------------------+
6 rows in set (0.00 sec)

mysql> use information_schema;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
±--------------------------------------+
| Tables_in_information_schema |
±--------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| KEY_COLUMN_USAGE |
| OPTIMIZER_TRACE |
| PARAMETERS |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
| PROFILING |
| REFERENTIAL_CONSTRAINTS |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| SESSION_STATUS |
| SESSION_VARIABLES |
| STATISTICS |
| TABLES |
| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
| INNODB_LOCKS |
| INNODB_TRX |
| INNODB_SYS_DATAFILES |
| INNODB_FT_CONFIG |
| INNODB_SYS_VIRTUAL |
| INNODB_CMP |
| INNODB_FT_BEING_DELETED |
| INNODB_CMP_RESET |
| INNODB_CMP_PER_INDEX |
| INNODB_CMPMEM_RESET |
| INNODB_FT_DELETED |
| INNODB_BUFFER_PAGE_LRU |
| INNODB_LOCK_WAITS |
| INNODB_TEMP_TABLE_INFO |
| INNODB_SYS_INDEXES |
| INNODB_SYS_TABLES |
| INNODB_SYS_FIELDS |
| INNODB_CMP_PER_INDEX_RESET |
| INNODB_BUFFER_PAGE |
| INNODB_FT_DEFAULT_STOPWORD |
| INNODB_FT_INDEX_TABLE |
| INNODB_FT_INDEX_CACHE |
| INNODB_SYS_TABLESPACES |
| INNODB_METRICS |
| INNODB_SYS_FOREIGN_COLS |
| INNODB_CMPMEM |
| INNODB_BUFFER_POOL_STATS |
| INNODB_SYS_COLUMNS |
| INNODB_SYS_FOREIGN |
| INNODB_SYS_TABLESTATS |
±--------------------------------------+
61 rows in set (0.00 sec)

mysql> desc table_constraints;
±-------------------±-------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±-------------------±-------------±-----±----±--------±------+
| CONSTRAINT_CATALOG | varchar(512) | NO | | | |
| CONSTRAINT_SCHEMA | varchar(64) | NO | | | |
| CONSTRAINT_NAME | varchar(64) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| CONSTRAINT_TYPE | varchar(64) | NO | | | |
±-------------------±-------------±-----±----±--------±------+

查找约束相关情况:
select constraint_name from table_constraints where table_name=“t_student”;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值