MYSQL 建表约束

**以下所有约束状态均能用describe查询

1、主键约束:
它能够唯一确定一张表中的一条记录,也就是我们通过某个字段添加约束,就可以是的改字段不重复且不为空。

**①方法一:**
create table user(      # 创建表
	id int primary key,    # 创建主键约束,id将不能重复添加
	Name varchar(20)
);

**②方法二:联合主键,只要主键加起来不重复就可以。**
Create table user2(
	Id int,
	Name varchar(20),
	Password varchar(20),
	Primary key(id, name)  # 在此约束主键,可联合,任一不能为空
);

 insert into user2 value(1, '张三', '123');
 insert into user2 value(2, '张三', '123');  √

**③如果忘记创建主键约束:**
Alter table user4 add primary key(id);   # 修改表格约束,添加主键约束
Alter table user4 drop primary key;   # 删除主键约束
Alter table user4 modify id int primary key;  # 使用modify修改字段,添加主键约束
2、自增约束:在添加记录时将自动增加约束
Create table user3(
	Id int primary key auto_increment,  # 在添加项时id自动增加
	Name varchar(20)
);

Insert into user3 (name)  values('张三');    # id=1
Insert into user3 (name) values('张三');          # id =2
3、唯一约束:约束修饰的字段的值不可以重复(可以为空)
**①方法一**
Create table user5(
	Id int,
	Name varchar(20)
);

Alter table user5 add unique(name);   # 添加位于约束,name不能重复
# 比如身份证

**②方法二:唯一约束也可以组合约束**
Creat table user6(
	Id int,
	Name varchar(20),
	Unique(name)
);

**③方法三**
Creat table user7(
	Id int,
	Name varchar(20) unique

**④修改唯一约束:**
Alter table user7 add unique(name);   #增加唯一约束
Alter table user7 drop index name;    # 删除唯一约束
Alter table user7 modify name varchar(20) unique;    # 修改唯一约束
4、非空约束:修饰的字段不能为空 NULL
Create table user9(
	Id int,
	Name varchar(20) not null
);

Insert into user9 values(1,);    # 由于没有增加namechar,增加失败
非空约束not null也可以使用 add drop modify等进行修改
5、默认约束:当我们插入字段值的时候,如果没有传值,就会使用默认值
Create table user10(
	Id int,
	Name varchar(20),
	Age int default 10
);
6、外键约束:涉及到父表、子表,主表、副表
**--班级表**
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) references classes(id)   # 将学生表的class_id 与班级表中的id绑定
);

 insert into classes values(1,'一班');
 insert into classes values(2,'二班');
 insert into classes values(3,'三班');
 insert into classes values(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没有的数据值,在副表(子表)中是不可以使用的。
--主表中的记录被副表引用,主表中的相应记录是不可以删除的。
Delete from classes where id =4;  # ×
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值