programing

MySQL에서 '참조' 키워드를 사용하는 방법은?

sourcejob 2023. 10. 16. 21:48
반응형

MySQL에서 '참조' 키워드를 사용하는 방법은?

어때요?references표를 만들 때 사용하는 키워드는?

예를 들어 두 개의 테이블을 만들고자 합니다.person그리고.hobby그리고 취미 테이블 아이디가 사람의 아이디를 참고하길 원합니다.

person table
- id
- name

hobby
- id
- person_id
- hobby_name

그걸 어떻게 하는 거죠?

다음과 유사하게 취미 테이블을 만듭니다.

CREATE TABLE hobby (
  id INT NOT NULL AUTO_INCREMENT,
  person_id INT NOT NULL,
  hobby_name VARCHAR(255),
  PRIMARY KEY(id),
  FOREIGN KEY(person_id) REFERENCES person(id))

MySQL 웹사이트에서 직접 가져온 예는 다음과 같습니다.

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (id INT, parent_id INT,
                    INDEX par_ind (parent_id),
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
                    ON DELETE CASCADE
) ENGINE=INNODB;
CREATE TABLE person (person_id INT NOT NULL, 
PRIMARY KEY (person_id));

CREATE TABLE hobby (hobby_id INT NOT NULL, person_id INT NOT NULL,
PRIMARY KEY(hobby_id),
FOREIGN KEY(person_id) REFERENCES person(person_id));

references 키워드는 외부 키 관계에서 사용되는 테이블과 열을 정의하는 데 사용됩니다.이 말은 이 사건의 기록이hobby테이블은 반드시 있어야 합니다.person_id에 존재하는person삽입할 때 table 또는 other를 입력하면 키가 존재하지 않는다는 오류가 나타납니다.

무엇에 대한 위의 질문에 대답하기 위해.ON DELETE CASCADE실행합니다. 부모 키 레코드를 삭제할 수 있습니다.person표) 그리고 그것은 그에 상응하는 어린이 기록입니다.hobby먼저 모든 어린이 기록을 삭제하지 않아도 됩니다.

명확하게 설명하자면, 기본 키 항목에 자식 레코드가 연결되어 있고 다음과 같이 기본 키 항목을 삭제하려고 할 경우입니다.

DELETE FROM person where person_id = 1;

을 갖지 않고DELETE ON CASCADE, 취미의 레코드 중 person_id가 1이면 오류가 발생합니다.위에서 삭제하기 전에 먼저 해당 레코드를 모두 삭제해야 합니다.와 함께DELETE ON CASCADE사용된, 위의 삭제는 성공할 것이고 테이블 취미 테이블에서 모든 기록을 자동으로 삭제할 것입니다.person_id기본 키 테이블에서 삭제됩니다.

참조 키워드는 실제로 외부 키가 어디로 왔는지 알기 위해 사용됩니다.그것은 어떤 것이 테이블 이름이고 그 테이블에 있는 이것의 이름이 무엇인지를 의미합니다.

저는 이것이 옳다고 생각합니다.

CREATE TABLE person (person_id INT NOT NULL, 
PRIMARY KEY (person_id));

CREATE TABLE hobby (hobby_id INT NOT NULL, person_id INT NOT NULL,
PRIMARY KEY(hobby_id),
FOREIGN KEY(person_id) REFERENCES person(person_id));

그럼, 이 선을 보세요.

FOREIGN KEY(person_id) REFERENCES person(person_id));

여기서person_id외국의 열쇠이고 그것은 유래했습니다.person테이블 그리고 그 테이블안에 그것의 이름은.person_id...바로 그겁니다.

여기에 사용 방법에 대한 예시가 있습니다.

create table hobby(id int references person(id),person_id int,hobby_varchar(20), primary key(id));

무슨 뜻인지는 모르겠지만,references외부 키가 참조하는 대상 테이블 열을 지정할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2192280/how-to-use-the-keyword-references-in-mysql

반응형