MySQL 学习笔记(3)建表约束

主键约束

它能够唯一确定一张表中的一条记录,也就是我们通过给某个字段添加约束,就可以使得该字段不重复且不为空

create table user(
					id int primary key,
					name varchar(20)
				 );
#下面为表添加记录
insert into user values(1,'张三');
#user表中会添加一条新的记录;

#如果再添加一条新的记录代码,如下:
insert into user values(1,'李四');
#则会报错:错误代码: 1062 Duplicate entry '3' for key 'PRIMARY'.
#因此在约定有主键时,主键是唯一的,不可重复.

insert into user values(null,'王五');
#如果添加的记录中,id为空(NULL),则也会报错:
#错误代码: 1048 Column 'user_id' cannot be null

联合主键

联合主键中,只要主键加起来不重复就可以的;并且,联合主键中,任意一个字段均不能为NULL.

create table user2(
					id int ,
					user_name varchar(20),
					password varchar(20),
					primary key(id,user_name)
					);

insert into user2 values(1,'Lilei','123');
insert into user2 values(2,'Lilei','234');
insert into user2 values(1,'Maria','345');
#上述3中情况,均不会报错的;
insert into user2 values(null,'Lilei','123');
#这种情况,主键id为null,因此会报错.

自增主键

create table user3(
					id int primary key auto_increment,
					name varchar(20)
					);

insert into user3 (name) values('Lilei');
# 此处代码并未设置id(自增主键),仅设置了name字段.

如果在创建表的时候,没有设置主键,后期可以使用代码为其添加主键

create table user4(
					id int,
					name varchar(20)
					);
#修改表结构
#添加主键
alter table user4 add primary key (id);
#删除主键
alter table user4 drop primary key ;
#修改主键
alter table user4 modify id int primary key;
#此代码意义:追加将id设置成主键.

唯一约束

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

create table user5(
					id int,
					name varchar(20)
					);
alter table user5 add unique(name);
#上述代码意义:在表格创建好后,将name字段设置成唯一约束.

或者
create table user5(
					id int,
					name varchar(20),
					unique(name)
					);
alter tabel user5 drop index name;#通过drop删除name字段的唯一约束
alter table user5 modify name varchar(20) unique;#通过modify将name添加唯一约束或者使用add
类似于联合主键的方式:
create table user5(
					id int,
					name varchar(20),
					unique(id,name)
					);

非空约束

修饰的字段不能为空(NULL)

create tabel user6(
					id int,
					name varchar(20) not null   #name字段非空,id字段不受约束
					);

默认约束

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

create table user7(
					id int,
					name varchar(20),
					age int default 10
					);
insert into user7 values(1,'Lilei',20);
#将id=1,name='Lilei',age=20添加进入表格中;此处对age赋值,因此不使用默认约束
insert into user7 values(2,'Maria');
#将id=2,name='Maria'添加进入表格;此处对age没有赋值,因此,使用默认约束,该行记录age=10

外键约束

涉及到两个表:父表/子表
主表/副表
1.主表中没有的数据值,在副表中,是不可以使用的
2.主表中的记录被副表引用,是不可以删除的

-- 班级
create table classes(
					id int primary key,
					name varchar(20)
								);

-- 学生表
create table students(
					id int primart key,
					name varchar(20),
					class_id int,
					foreign key(class_id) reference classes(id)
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值