mysql查询不超过19_MySQL-19(主键/外键/唯一/检查/非空约束)

本文详细介绍了MySQL中的五种约束:主键约束确保数据唯一性和非空,唯一约束允许空值但保证唯一,默认约束设定数据默认值,外键约束用于表间关联,检查约束限制列数据范围,但MySQL中不实际生效。通过示例展示了各种约束的创建和使用方法。
摘要由CSDN通过智能技术生成

#    1. 约束的理解

约束可以理解为是一种机制,一种为了维护数据完整性和正确性的机制

五大约束:

主键约束:(Primary Key Coustraint),非空/唯一

唯一约束:(Unique Coustraint),唯一/可以为空

默认约束:(Default Coustraint),数据默认值

外键约束:(Froeign Key Coustraint),从表应用主表

检查约束:(Check Coustraint),对列数据的范围和格式的限制,MySql中支持语法,没有实际效果

#    2. 主键 primary key 约束

基本用法:

/*    在列声明中,声明主键字段    */

column_name  字段类型  primary  key;

主键约束具有唯一性和不重复性,一般每个table中都有一个主键用来保证数据的唯一性,多为整数类型列

例如:

create table test(id int primary key,name varchar(6))charset=utf8;

注意细节:

1> primary key 具有唯一性和非空特点,即插入数据时不能重复和空值;

2> 每个table 最多只能有一个主键,可以是复合主键,

如: (即 也是两种主键定义格式)

单一主键:create table tb_name(id int primary key,name varchar(6) default '');

复合主键:create table tb_name (id int   ,name varchar(6) default '' ,primary key(id,name));

3> 使用desc table_name 和 create table tb_name 查看主键定义情况;

#    3. unique约束

基本用法:

/*    在列声明中,声明唯一约束unique    */

column_name  字段类型  unique;

unique约束具有唯一性,定义了该字段数据的唯一非重复

注意细节:

1> 在字段没有指定 not null 非空的约束下,unique 可以为空,null不等同于数据,即可以有多个null存在;

2> 在字段指定not null 非空的约束下,unique 不能为空,且不能有重复,效果等同与主键约束;

3> 同一个table 中可以存在多个 unique 约束的column;

#    4. 外键 foreign key 约束

基本用法:外键约束主要用来定义 主表和从表之间的关系,在从表中定义外键,外键要与主表中的主键声明列或者unique声明列关联,外键列数据必须在主表的主键列存在或者为null值

/*    在从表的列声明中,声明外键与主表的列对应关联    */

foreign keycolumn_name(本表)  referencestable_name(column_name)(主表);

例如:f133f5eddb4fc3acd1d42c81d970d99a.png外键关联

例如:

创建主表: create table san_class(class_id int primary key ,name varchar(8) default '');

创建从表: create table san_stu(id int primary key ,name varchar(6),class int ,foreign key class references san_class(class_id) );

注意细节:

1> 从表中定义的外键要指向主表中的主键约束或unique约束的列,否则主从表无法关联;

2> 表的类型是innodb才支持外键;

3> 外键所在字段类型要与主键字段的类型一致(长度可以不同);

4> 外键的值要在主键中出现,或者为null;

#    5. 检查 check 约束

基本用法:用来强制行数据必须满足的条件,例如在整数列定义了 check 约束,要求数据值在1-100之间,超出范围 报错

/*    在列声明中强制定义条件    */

column_name 字段类型  check (check条件);

例如:

stu_num  int  check (20-100)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值