sql1复习笔记3
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 --修改表结构,添加主键。
- 删除
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.主表的记录被副表引用时,是不可以删除的。