>  기사  >  데이터 베이스  >  mysql 외래 키 란 무엇입니까?

mysql 외래 키 란 무엇입니까?

藏色散人
藏色散人원래의
2023-04-11 10:45:473416검색

Mysql 외래 키는 테이블 간의 데이터를 빠르게 업데이트할 수 있는 매우 유용한 데이터 처리 기능입니다. 간단히 말해서 두 테이블 간의 연결을 설정하고 하나의 테이블을 운영할 수 있습니다. 이때 다른 테이블의 데이터도 동시에 변경됩니다.

mysql 외래 키 란 무엇입니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, mysql8 버전, Dell G3 컴퓨터.

mysql 외래 키란 무엇입니까?

Mysql 외래 키 사용

외래 키는 매우 사용하기 쉬운 기능이며, 간단히 말해서 많은 관계형 데이터베이스에 있는 기능이기도 합니다. 두 테이블 사이에 관계가 형성되어 한 테이블이 작동하면 다른 테이블의 데이터도 동시에 변경될 수 있습니다.

예:
一个学生表里面有学生的所有信息,其中有一个字段是班级id,又有一个班级表,记录着所有的班级信息,按照逻辑来说,如果我们删除了班级
表里面的某个班级,学生表里面是这个班级id的信息就应该修改。

위의 예는 프로그램을 사용하면 정상적으로 완료될 수 있습니다. 먼저 해당 수업을 삭제한 다음 학생 테이블에서 이 수업의 학생 정보인 수업 ID 필드를 수정합니다. 두 부분. 그러나 외래 키를 사용하면 한 단계만 수행하면 외래 키 중 하나가 자동으로 업데이트됩니다. 이는 프로그램에 더 적합합니다. 더욱 간편해졌습니다

사용 전 주의 사항
  1. 데이터베이스용 스토리지 엔진을 선택할 때 mysql의 기본 스토리지 엔진인 innodb와 같이 외래 키에 맞는 스토리지 엔진을 선택해야 합니다
  2. 관련 외래 키의 필드 유형 필드는 일관성을 유지해야 합니다. 학생 테이블의 class_id 유형이 int인 경우 클래스 테이블의 class_id 유형도 int 유형이어야 합니다. 이는 매우 중요합니다
new table
	create table stu_study (
	  sid int primary key auto_increment,-- 定义Sid  
      sname varchar(15) not null,
      course_id int default null,  -- 定义课程id 课程id是外键所以要与关联的主表的字段类型保持一致
      constraint stu_study_class -- 一个表里可能有多个表之间关联,所以外键需要起一个名字
      foreign key (class_id) -- 关联的外键名
      references classes(id)  -- 关联的主表和主表的字段
      on delete cascade  -- 当删除的时候触发
    )engine=InnoDB default charset utf8  -- 默认存储引擎和编码的字符串

mysql 외래 키 란 무엇입니까?

기존 테이블에 외래 키 추가 및 삭제
  1. Delete foreign key
    ···
    – 외래 키 삭제(외래 키 제약 조건)
    alter table stu_study drop 외래 키 stu_study_classes;
    ·· ·
    mysql 외래 키 란 무엇입니까?
    외래 키를 삭제하려면 테이블에 있는 외래 키 이름을 기준으로 삭제하세요. 이는 외래 키 이름이 반복될 수 없다는 것을 간접적으로 알려줍니다.
  2. 외래 키 추가
	-- 添加外键
  alter table stu_study add
  constraint stu_study_classes  -- 外键名 是一定不能够重复的,通常会用关联的两个表名进行命名
  foreign key(course_id)
  references classes(id)
  on delete cascade;

mysql 외래 키 란 무엇입니까?
기존 테이블에 외래 키를 추가하는 것은 테이블을 생성할 때 외래 키를 추가하는 것과 매우 유사합니다. 한 가지 세부 사항은 외래 키 이름을 설정하려면 제약 조건 외래 키 이름을 사용해야 한다는 것입니다.
외래 키를 추가하고 수정하는 것은 테이블 필드를 추가하고 수정하는 것과 매우 유사하다는 것을 알 수 있습니다. 사용되는 키워드는 추가, 삭제 등입니다.

관련 작업의 작업

하위 테이블
mysql 외래 키 란 무엇입니까?
메인 테이블
mysql 외래 키 란 무엇입니까?
외래 키가 설정된 테이블이 하위 테이블이므로 간단히 테이블과 하위 테이블이라는 단어로 이해하면 됩니다.
관련 작업에는 다음과 같은 여러 가지 유형이 있습니다. cascade,set Nullno action 외래 키를 설정할 때 이 세 가지가 모두 설정됩니다.
mysql 외래 키 란 무엇입니까?
은 삭제 시 수행되는 작업을 의미하므로 주요 차이점은 다음과 같습니다.

  1. cascade 删除主表的某个字段的时候,子表含有这个字段的数据会被清空,这个还是属于相对危险的一个操作的
  2. +set null 删除主表的某个字段的时候,子表含有这个字段的这个哪一行的这个字段会用null来显示,但是有个细节就是设置外键的这个字段字段类型就不能设置为not null类型的,否则会报错
  3. no action 这个字段会比较有意思,也就是说当主表要删除某个行的时候,如果外键关联有含有这个主表的外键的字段数据的话,就不会删除成功,系统会直接报错
关联更新操作

之前是主要讲了关联删除,是因为外键在使用的时候关联删除操作是使用的比较频繁的,关联更新的频率是相对来说低一点儿的
关联更新的三个关联操作和删除时一样的,分别是cascade,set null,no action意思是也是一样的,主表某个字段更新了,子表也会更新那个字段!!,主表更新的某条数据,子表的使用的那个数据会变成空,和子表在使用的情况下,主表就不能够更新数据

	alter table stu_study drop foreign key stu_study_classes;  -- 删除外键
	-- 添加外键
	alter table stu_study add 
    constraint stu_study_classes 
    foreign key (course_id) 
    references classes(id) 
    on delete set null -- 一次性设置外键的两种动作
    on update cascade

mysql 외래 키 란 무엇입니까?
mysql 외래 키 란 무엇입니까?

总结
  • 数据库的外键是非常非常好用的一个技术,可以让我们快速的进行表之间的数据的更新
  • 外键可以简单的理解成会自动的替我们做一个数据变动的处理

推荐学习:《MySQL视频教程

위 내용은 mysql 외래 키 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.