免费的源代码分享有哪些网站,如何设计并制作各级网页,上海做网站的,58和百度哪个推广效果好一、外键约束
外键约束——将一个列添加外键约束与另一张表的主键#xff08;唯一列#xff09;进行关联之后#xff0c;这个外键约束的列添加的数据必须要在关联的主键字段中存在
案例 创建原则#xff1a;先创建不含外键的表也就是班级表
添加外键的方式 一般使用第一…一、外键约束
外键约束——将一个列添加外键约束与另一张表的主键唯一列进行关联之后这个外键约束的列添加的数据必须要在关联的主键字段中存在
案例 创建原则先创建不含外键的表也就是班级表
添加外键的方式 一般使用第一种第二种主要用于修改已创建的表为副表当约束再添加时也应起名字。
constraint 自定义关键字约束名 foreign key字段名 references 表名字段名
constraint FK_STUDENTS_CLASSES foreign key(cid) references classes(class_id)
代码实现
#使用数据库
use fine;#展示数据库
show databases;#展示当前数据库所有表
show tables;#创建数据库
create database db_test1;#使用新建数据库
use db_test1;#显示数据库中某表
desc classes ;#先创建不包含外键的表
create table classes(class_id int(20) primary key auto_increment,#自增操作class_name varchar(40) not null unique,class_remark varchar(200)
);#添加外键表方式一
#创建对应关联的学员表 包含外键
create table students(stu_num char(8) primary key,#主键约束stu_name varchar(20) not null,#非空约束stu_gender char(2) not null,#非空约束stu_age int not null,#不为空cid int not null unique,#约束符合实际constraint FK_STUDENTS_CLASSES foreign key(cid) references classes(class_id)
);#删除表
drop table students ;
drop table classes ;#已经创建好表如何进行修改
#添加外键表方式二 创建表再修改
#创建对应关联的学员表
create table students(stu_num char(8) primary key,#主键约束stu_name varchar(20) not null,#非空约束stu_gender char(2) not null,#非空约束stu_age int not null,#不为空cid int not null unique#要与另一表中的主键类型对应
);#修改表数据,添加约束,具体的约束名称关联的表和关联的属性
alter table students add constraint
FK_STUDENTS_CLASSES foreign key(cid)
references classes(class_id);#添加班级数据
insert into classes(class_name,class_remark) values(Java2201,.......);
insert into classes(class_name,class_remark) values(Java2202,.......);
insert into classes(class_name,class_remark) values(Java2203,.......);
insert into classes(class_name,class_remark) values(Java2204,.......);
insert into classes(class_name,class_remark) values(Java2205,.......);
insert into classes(class_name,class_remark) values(C2206,.......);#添加学员数据
insert into students (stu_num,stu_name,stu_gender,stu_age,cid)
values(20220101,张三,男,20,1);insert into students (stu_num,stu_name,stu_gender,stu_age,cid)
values(20220102,李四,女,19,2);insert into students (stu_num,stu_name,stu_gender,stu_age,cid)
values(20220103,王五,男,21,3);insert into students (stu_num,stu_name,stu_gender,stu_age,cid)
values(20220104,赵六,女,22,5);#class表映射于students表中共有两种方式可以在创建时约定外键也可以先创建在修改
二、外键约束——级联
与其他表进行关联了的数据不能进行修改和删除操作
如何修改与其他表关联了的表数据
1.将引用了表字段的学生记录中的关联字段修改为NULL;
2.在修改班级信息表中课程信息的id编号
3.在表中关联字段设置为NULL的记录的数据关联字段重新修改为引用字段的新id 代码实现
显示某表
select * from 表名
显示students表
select * from students s ; 显示班级表
select * from classes c ; 修改操作
update 表名 set 修改的字段 修改为 where 限制条件
update classes set class_id 7 where class_name C2206;
update classes set class_name Java2206 where class_name C2206;
update classes set class_id 6 where class_name Java2206; 如何修改与其他表关联了的表数据
——分为三步
#1.先取消此条数据的主外键关系让外键的id值null
update students set cidnull where cid 3;
#2.再更改classes表中曾经引用的班级数据id7
update classes set class_id 7 where class_name Java2206;
#3.再重新让students表中的数据cid进行外键引用新的id值7
update students set cid7 where stu_num 20220104;一步实现用级联操作实现
#级联操作
#删除students表的外键约束
alter table students drop foreign key FK_STUDENTS_CLASSES;#重新给students表添加外键约束但是同时要设置级联的修改和删除
alter table students add constraint FK_STUDENTS_CLASSES
foreign key(cid) references classes(class_id)
on update cascade on delete cascade;#添加级联操作修改/删除一张表时另一张表会同时修改#级联关系改变时另一条与他关联的数据也会进行改变
update classes set class_id3 where class_name Java2203;#删除一关联的表
delete from classes where class_id1; 级联操作指的是先去删除原有的外键再去添加外键并设置级联关系
再去修改/删除时关联的两条数据同时操作
实现过程 #使用数据库
use fine;#展示数据库
show databases;#展示当前数据库所有表
show tables;#创建数据库
create database db_test1;#使用新建数据库
use db_test1;#显示数据库中某表
desc classes ;#1.先创建不包含外键的表
create table classes(class_id int(20) primary key auto_increment,#自增操作class_name varchar(40) not null unique,class_remark varchar(200)
);#2.添加外键表方式一
#创建对应关联的学员表 包含外键
create table students(stu_num char(8) primary key,#主键约束stu_name varchar(20) not null,#非空约束stu_gender char(2) not null,#非空约束stu_age int not null,#不为空cid int not null unique,#约束符合实际constraint FK_STUDENTS_CLASSES foreign key(cid) references classes(class_id)
);#删除表
drop table students ;
drop table classes ;#1.先创建不包含外键的表
create table classes(class_id int(20) primary key auto_increment,#自增操作class_name varchar(40) not null unique,class_remark varchar(200)
);#3.已经创建好表如何进行修改
#添加外键表方式二 创建表再修改
#创建对应关联的学员表
create table students(stu_num char(8) primary key,#主键约束stu_name varchar(20) not null,#非空约束stu_gender char(2) not null,#非空约束stu_age int not null,#不为空cid int #要与另一表中的主键类型对应
);#修改表数据,添加约束,具体的约束名称关联的表和关联的属性
alter table students add constraint
FK_STUDENTS_CLASSES foreign key(cid)
references classes(class_id);#添加班级数据
insert into classes(class_name,class_remark) values(Java2201,.......);
insert into classes(class_name,class_remark) values(Java2202,.......);
insert into classes(class_name,class_remark) values(Java2203,.......);
insert into classes(class_name,class_remark) values(Java2204,.......);
insert into classes(class_name,class_remark) values(Java2205,.......);
insert into classes(class_name,class_remark) values(C2206,.......);#添加学员数据
insert into students (stu_num,stu_name,stu_gender,stu_age,cid)
values(20220101,张三,男,20,1);insert into students (stu_num,stu_name,stu_gender,stu_age,cid)
values(20220102,李四,女,19,2);insert into students (stu_num,stu_name,stu_gender,stu_age,cid)
values(20220103,王五,男,21,3);insert into students (stu_num,stu_name,stu_gender,stu_age,cid)
values(20220104,赵六,女,22,3);#class表映射于students表中共有两种方式可以在创建时约定外键也可以先创建在修改#外键约束————级联
#简单理解当前两表中关联的数据如要修改需要同步操作
select * from students s ;
select * from classes c ;#修改操作
update classes set class_id 7 where class_name C2206;
update classes set class_name Java2206 where class_name C2206;
update classes set class_id 6 where class_name Java2206;#关联了的数据不能进行修改和删除操作
#1.先取消此条数据的主外键关系让外键的id值null
update students set cidnull where cid 3;
#2.再更改classes表中曾经引用的班级数据id7
update classes set class_id 7 where class_name Java2206;
#3.再重新让students表中的数据cid进行外键引用新的id值7
update students set cid7 where stu_num 20220104;#级联操作
#删除students表的外键约束
alter table students drop foreign key FK_STUDENTS_CLASSES;#重新给students表添加外键约束但是同时要设置级联的修改和删除
alter table students add constraint FK_STUDENTS_CLASSES
foreign key(cid) references classes(class_id)
on update cascade on delete cascade;#添加级联操作修改/删除一张表时另一张表会同时修改#级联关系改变时另一条与他关联的数据也会进行改变,将班级名为Java2203的班级班级序号改为3
update classes set class_id3 where class_name Java2203;#删除一关联的class_id1的表;
delete from classes where class_id1;