mysql1复习笔记3

sql1复习笔记3

1.约束-主键约束-建表后添加与删除

  1. 添加
    创建表的时候忘记创建主键约束,如何添加/删除?
create table user4(
	id int,
	name varchar(20)
);
alter table user4 add primary key(id);

或者使用modify修改字段改主键。

alter table user4 modify id int primary key;

alter table --修改表结构,添加主键。

  1. 删除
alter table user4 drop primary key;

2.约束-唯一约束-unique

他要约束该字段的值不能重复。和联合主键的区别就是数据可以为空。

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

alter table user5 add unique(name);

insert into user5 value(1,'zhangsan');
insert into user5 value(1,'lisi');
insert into user5 value(1,null);

create table user6(
id int,
name varchar(20),
unique(name)
);

create table user7(
id int,
name varchar(20)
unique
);
//这里虽然放在最后但只是针对name

create table user8(
id int,
name varchar(20),
unique(id,name)
);//这里说明说id+name唯一即可,可以id或name不唯一
insert into user8 value(1,'zhangsan');
insert into user8 value(2,'zhangsan');
insert into user8 value(1,'lisi');

//删除唯一约束
alter table user7 drop index name;

//通过modify形式添加
alter table user7 modify name varchar(20) unique;

总结:
1.可以建表就添加约束如
create table user7(
id int,
name varchar(20)
unique
);
2.可以后补约束1如
alter table user5 add unique(name);
3.可以后补约束2-----使用modify添加如
alter table user7 modify name varchar(20) unique;
4.删除是
alter table user7 drop index name;

3.约束-非空约束-not_null

修饰的字段不能为空

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

insert into user9 values(1,'张三');
insert into user9 values(null,'李四');

总结:
1.可以建表就添加约束如
create table user7(
id int,
name varchar(20)
not null
);
2.可以后补约束1如
alter table user5 add not null(name);
3.可以后补约束2-----使用modify添加如
alter table user7 modify name varchar(20) not null;
4.删除未知,应该是
alter table user7 drop XXX name;

4.约束-默认约束-default

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

create table user10(
	id int,
	name varchar(20),
	age int default 10
);
insert into user10 (id,name) values(1,'张三');
insert into user10 values(2,'张三','123');//传值后就不会使用默认值

1.可以建表就添加约束如
create table user7(
id int,
name varchar(20)
default
);
2.可以后补约束1如
alter table user5 add default(name);
3.可以后补约束2-----使用modify添加如
alter table user7 modify name varchar(20) default;
4.删除未知,应该是
alter table user7 drop xxx name;

5.约束-外键约束-foreign_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) references classes(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);//我子表里不能添加一个相应的row。班级表是主表,学生表是副表,副表无法添加。

insert into classes values(5,'五班');
insert into students values(1005,'李四',5);

delete from classes where id=4;

//正确删除方法,先删子表,再删父表。
delete from students where class_id=4;
delete from classes where id=4;

1 主表 classes 没有的值,父表不能使用和添加;
2.主表的记录被副表引用时,是不可以删除的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值