DDL语言(Data Definition Language)——(4)约束条件

1,约束条件

  • 约束:含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性

  • 分类:六大约束

NOT NULL:非空,用于保证该字段的值不能为空比如姓名、学号等

DEFAULT:默认,用于保证该字股有默认值比如性别

PRIMARY KEY:主键用于保证该字段的值具有唯一性,并且非空比如学号,员工编号等

UNIQUE:唯一,用于保证该字段的值具有唯一性可以为空比如座位号

CHECK:检查约束[mysq1中不支持]比如年龄、性别

FOREIGN KEY:外键 用于限制两个表的关系(在从表添加外键约束,用于引用主表中某列的值

是否保证唯一性是否允许为空一个表中可以有多少个约束条件是否允许组合
主键不允许至多有一个
唯一允许可以有多个

外键特点:

1、要求在从表设置外键关系 (语法: FOREIGN KEY(字段) references 外键表名(外键列名)?

2、从表的外键列的类型和主表的外键列的类型要求一致或兼容,名称无要求

3、主表的关联列必须是一个key (一般是主健或唯一

4、插入数据时,先插入主表,再插入从表

5,删除数据时,先删除从表,再删除主表

外键应用场景:
a b 两个表

a表中存有 客户号,客户名称

b表中存有 每个客户的订单

有了外键后

你只能在确定b 表中没有客户x的订单后,才可以在a表中删除客户x

————————————————————————————
外键特点演示:创建客户,和订单两个表并用外键关联

创建customer表语法:
CREATE TABLE customer(
name VARCHAR(10) NOT NULL,
id INT UNSIGNED UNIQUE,
cid INT PRIMARY KEY
)

customer表(主表)
在这里插入图片描述
创建order表的语法:
CREATE TABLE orders(
number INT UNIQUE,
oid INT,
FOREIGN KEY(oid) REFERENCES customer(cid)
);

order表(从表)
在这里插入图片描述
这时主表从表建立了关系
——————————————————

  • 添加约束的时机:

1:创建表时

2:修改表时

  • 约束的添加分类

列级约束:六大约束都支持,但外键约束没有效果

表级约束:除了非空,默认,其他约束都支持

1.1约束条件——创建表时添加列级约束和表级约束

列级约束语法:直接在字段和类型后面追加约束类型即可

表级约束语法:在各个字段的最后面加 constraint 约束名 约束类型(字段名); (constraint 约束名 可以省略
————————————————————
演示:创建test3表,用上列级约束语法和表级约束语法

创建语法:
CREATE TABLE test3(
name VARCHAR(10) NOT NULL,
id INT PRIMARY KEY auto_increment,
oid INT,
UNIQUE KEY(oid)
);

查看test3表的结构语法:DESC test3;

在这里插入图片描述
————————————————————————

1.2 约束条件——修改表时添加列级约束和表级约束

添加列级约束语法:

alter table 表名 modify column 字段名 字段类型 新约束;

添加表级约束

alter table 表名 add【constraint 约束名】 新约束类型(字段名)【外键的引用】;
————————————————————————
演示:分别修改test3表中的name为UNIQUE
test3表的结构

在这里插入图片描述
修改语法:
ALTER TABLE test3 MODIFY COLUMN id INT UNIQUE;

结果:
在这里插入图片描述
——————————————————

2,标识列

含义:可以不用手动插入值,系统提供默认的序列

语法:只可以在键的后面加入 auto_increment

特点:1:标识列必须和键搭配(主键,外键,唯一)

2:一个表只可以有一个标识列

3:标识列类型只可以是数值型
——————————————
演示:在test3表中运用标识列

创建语法:
CREATE TABLE test3(
name VARCHAR(10) NOT NULL,
id INT PRIMARY KEY auto_increment,
oid INT,
UNIQUE KEY(oid)
);

查看test3表的结构语法:DESC test3;

在这里插入图片描述
——————————————————————-

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值