MySql中的约束

1. 约束

什么是约束?

就是在表中为某些列添加约束,使该列得值必须符合这个约束。

分类:

 约束是作用于表中==字段==上的,可以再==创建表==/==修改表==的时候添加约束。


create table t_teacher(
    id int primary key auto_increment, -- 要求该列得值必须唯一且不能为null.
	  tname varchar(20) unique, -- unique 唯一约束 表示该列得值必须唯一。但是可以运行多个null
		age int not null, -- not null 非空约束 表示该列得值不能为null.
		sex char(2) default '男' -- default 默认约束 表示如果该列没有给定值 则默认为男
)
select * from t_teacher;
insert into t_teacher(id,tname,age,sex) values(null,'刘德华',15,'女');
-- Duplicate entry '刘德华' for key 'tname' 由于tname具有唯一约束 表中有名字为刘德华 所以不能在添加刘德华名称
insert into t_teacher(id,tname,age,sex) values(null,'刘德华',18,'男');
-- Column 'age' cannot be null 因为age设置了非空约束所以 添加数据时年龄必须有值。
insert into t_teacher(id,tname,age,sex) values(null,'张学友',null,'男');

-- 因为sex有默认约束 所以在添加数据时可以不为sex设置值,则采用默认值。
insert into t_teacher(id,tname,age) values(null,'张学友',22);

2. 外键约束 

外键约束用来让两张图的数据之间建立连接,保证数据的一致性和完整性。 

-- 外键
create table t_class(
    cid int primary key auto_increment,
		cname varchar(20)
);
create table t_stu(
     sid int primary key auto_increment,
		 sname varchar(20),
		 classid int -- 表示外键列。
);
-- add contraint 约束得名称  foregin key 外键得列名 REFERENCES 主表名(主键)  

-- alter table 从表名 add contraint 约束名随便起 foreign key 外键列名 references  主表(主键)
alter table t_stu add CONSTRAINT fk_stu_class FOREIGN key (classid) REFERENCES t_class(cid);

insert into t_class values(null,'QY145'),(null,'QY151');

insert into t_stu values(null,'李青华',2);
-- 因为classid=3 这个值 在我们得班级表中不存在。所以不能添加
insert into t_stu values(null,'张青',1);

注意: 外键列得数据类型 必须和主表中主键得数据类型一致。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值