• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 1. 서버에 연결 그리고 서버와 연결 끊기
    2. 쿼리 입력
    3. 데이터베이스 생성 및 사용
    4. 데이터베이스 및 테이블 정보 가져 오기
    5. 배치 모드에서의 MySQL의 사용
    6. 일반적인 쿼리의 예제
    1. 컬럼의 최대 값
    2. 특정 컬럼의 최대 값이 저장되는 행
    3. 그룹별 컬럼의 최대 값
    4. 특정 컬럼 그룹별 최대 값이 저장되는 행
    5. 사용자 정의 변수 사용
    6. 외부 키의 사용
    7. 두 개의 키를 사용하여 검색
    8. 일일 방​​문자수 계산
    9. AUTO_INCREMENT 사용
    7. Apache와 MySQL 사용
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

3.6.6 외부 키의 사용

MySQL에서 InnoDB 테이블에서 외래 키 제약 조건의 확인을 지원하고 있습니다. 제 14 장 "InnoDB 저장 엔진" , 섹션 1.8.2.4 "외래 키 차이" 를 참조하십시오.

2 개의 테이블을 조인하는 경우에만 외부 키 제약은 필요 없습니다. InnoDB 이외의 스토리지 엔진의 경우, 컬럼을 정의 할 때 REFERENCES tbl_name ( col_name ) 어구를 사용할 수 있습니다. 이것은 실제 효과는 없지만 현재 정의하려고하는 컬럼이 다른 테이블의 컬럼을 참조 할 예정이라는 자신의 메모 또는 주석으로 도움이됩니다. 이 구문을 사용할 때는 다음 사항을 이해하는 것이 매우 중요합니다.

  • MySQL은 col_name 이 실제로 tbl_name 에 있는지 (또한 그 tbl_name 자체가 존재하는지)를 확인하기위한 어떤 CHECK 도 수행하지 않습니다.

  • MySQL은 tbl_name 에 대해 어떤 조치도 수행하지 않습니다. 예를 들어, 정의하려고하는 테이블의 행에 실행 된 작업에 해당하는 행을 삭제하는 것 등은 없습니다. 즉,이 구문은 어떤 ON DELETE 동작 및 ON UPDATE 동작도하지 않습니다. ( REFERENCES 절 일부로 ON DELETE 절과 ON UPDATE 절을 설명 할 수 있지만이 무시됩니다.)

  • 이 구문은 열을 만듭니다. 어떤 인덱스 나 키도 생성하지 않습니다.

이렇게 생성 된 컬럼을 다음과 같이 결합 열로 사용할 수 있습니다.

 CREATE TABLE person (
     id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
     name CHAR (60) NOT NULL,
     PRIMARY KEY (id)
 );

 CREATE TABLE shirt (
     id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
     style ENUM ( 't-shirt', 'polo', 'dress') NOT NULL,
     color ENUM ( 'red', 'blue', 'orange', 'white', 'black') NOT NULL,
     owner SMALLINT UNSIGNED NOT NULL REFERENCES person (id)
     PRIMARY KEY (id)
 );

 INSERT INTO person VALUES (NULL 'Antonio Paz');

 SELECT @last : = LAST_INSERT_ID ();

 INSERT INTO shirt VALUES
 (NULL 'polo', 'blue', @last)
 (NULL 'dress', 'white', @last)
 (NULL 't-shirt', 'blue', @last);

 INSERT INTO person VALUES (NULL 'Lilliana Angelovska');

 SELECT @last : = LAST_INSERT_ID ();

 INSERT INTO shirt VALUES
 (NULL 'dress', 'orange', @last)
 (NULL 'polo', 'red', @last)
 (NULL 'dress', 'blue', @last)
 (NULL 't-shirt', 'white', @last);

 SELECT * FROM person;
+----+---------------------+
| id | name                |
+----+---------------------+
|  1 | Antonio Paz         |
|  2 | Lilliana Angelovska |
+----+---------------------+

SELECT * FROM shirt;
+----+---------+--------+-------+
| id | style   | color  | owner |
+----+---------+--------+-------+
|  1 | polo    | blue   |     1 |
|  2 | dress   | white  |     1 |
|  3 | t-shirt | blue   |     1 |
|  4 | dress   | orange |     2 |
|  5 | polo    | red    |     2 |
|  6 | dress   | blue   |     2 |
|  7 | t-shirt | white  |     2 |
+----+---------+--------+-------+


SELECT s.* FROM person p INNER JOIN shirt s
   ON s.owner = p.id
 WHERE p.name LIKE 'Lilliana%'
   AND s.color <> 'white';

+----+-------+--------+-------+
| id | style | color  | owner |
+----+-------+--------+-------+
|  4 | dress | orange |     2 |
|  5 | polo  | red    |     2 |
|  6 | dress | blue   |     2 |
+----+-------+--------+-------+

이 방법으로 사용하는 경우 REFERENCES 절은 SHOW CREATE TABLE 또는 DESCRIBE 의 출력에 표시되지 않습니다.

 SHOW CREATE TABLE shirt \ G
 *************************** 1. row ******************** *******
 Table : shirt
 Create Table : CREATE TABLE`shirt` (
 `id` smallint (5) unsigned NOT NULL auto_increment,
 `style` enum ( 't-shirt', 'polo', 'dress') NOT NULL,
 `color` enum ( 'red', 'blue', 'orange', 'white', 'black') NOT NULL,
 `owner` smallint (5) unsigned NOT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE = MyISAM DEFAULT CHARSET = latin1

REFERENCES 을 이렇게 컬럼 정의의 코멘트 또는 「알림」로서 사용하는 방법은 MyISAM 테이블에서 작동합니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved