sql数据库 主键、自增约束、唯一约束、非空约束、默认约束、外键约束

primary key主建

唯一标识表中的每一条数据
不能重复,不能为空

create table if not exists stu(
    id int primary key, <------#主建
    name varchar(20)
);

auto_increment自增约束

自增长字段的值从1开始,每次增加1;
数据不重复,生成唯一的id
自增长字段必须是主键

create table if not exists stu(
    id int auto_increment primary key, <------#主建
    name varchar(20)
);

自增约束可以和逐渐结合在一起使用

如果说我们创建表的时候,忘记创建主键约束

create table user4(
	id int,
	name verchar(20)
);
alter table user4 add primary key(id);

如何删除主键

alter table user4 drop primary key

修改主键约束

使用modify修改字段,添加约束

alter table user4 modify id int primary key;

唯一约束

约束修饰字段的值不可以重复

create table user5(
	id int,
	name varchar(20)
);

alter table user5 add unique(name);
create table user6(
	id int,
	name varchar(20) unique
);
create table user6(
	id int,
	name varchar(20),
	unique(name)
);
create table user6(
	id int,
	name varchar(20),
	unique(id,name)#id和name都不可以重复
);

删除唯一约束

alter table  user7 drop index name;
#不加index会直接把name这个字段删除没

modify添加

alter table user7 modify name varchar(20) unique;

注意

  1. 建表的时候就添加约束
  2. 可以使用alter 。。。。。add。。。
  3. alter。。。modify
  4. 删除alter。。。。 drop

not null非空约束

修饰的字段不能为空

create table user9(
	id int,
	name varchar(20) not null
);

default默认约束

当我们插入字段值的时候,如果没有传值,就会使用默认值

create table user10(
	id int,
	name varchar(20),
	age int default 10
)

在这里插入图片描述

foreigin_key 外键约束

涉及到两个表:父表、子表
主表、副标

#班级表
create table classes(
	id int primary key,
	name varchar(20)
);
#学生表
create table students(
	id int primary key,
	name varchar(20),
	class_id int,
	foreign key(class_id) reference classes(id)
);

在这里插入图片描述

insert into classes value (1,'一班')
insert into classes value (2,'二班')
insert into classes value (3,'三班')
insert into classes value (4,'四班')

在这里插入图片描述

insert into students values(1001,'张三',1)
insert into students values(1002,'张三',2)
insert into students values(1003,'张三',3)
insert into students values(1004,'张三',4)


insert into students values(1005,'张三',5)

在这里插入图片描述
主表中classes中没有的数据值,在副表中,是不可以使用的。
主表中的记录被副表引用,是不可以被删除的。
在这里插入图片描述
参考
参考笔记

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值