일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- codeigniter
- 공모주 청약
- 공모주
- Eclipse
- linux
- 제이쿼리
- Stock ipo
- JavaScript
- 6월 공모주 청약 일정
- 코드이그나이터
- Oracle
- css
- 주식 청약
- 리눅스
- 7월 공모주 청약 일정
- IPO
- MYSQL
- 자바
- SQL
- java
- 주식
- 오라클
- jquery
- html
- Stock
- 맥
- 공모주 청약 일정
- 주식 청약 일정
- 자바스크립트
- php
- Today
- Total
개발자의 끄적끄적
[SQL][DDL] Foreign Key : 외래 키 본문
[SQL][DDL] Foreign Key : 외래 키
외래 키(Foreign Key)가 하나(또는 복수) 다른 테이블의 기본 키 필드를 가리키는 데이터의 참조 무결성(referential integrity)을 확인하기 위하여 사용된다. 즉, 허용된 데이터 값만 데이터베이스에 저장되는 것이다.
외레키 예제 예제
예를 들어, 만일 두 개의 테이블이 있다고 하자. 하나는 customer 테이블에서 모든 고객 데이터가 기록되는 것이고, 또 하나는 orders 테이블에서 고객의 주문이 모두 기록되는 것이다. 그리고 하나의 제약이 있으며, 모든 주문 데이터 고객이 customer 테이블에 존재한다. 여기서 orders 테이블에 외래 키를 설정하고 외래 키가 customer 테이블의 기본 키가 된다. 그러면 orders 테이블에 있는 고객이 모든 customer 테이블에 존재하는 것을 보장할 수 있다. 즉, orders 테이블은 모든 customer 테이블에 있는 고객의 데이터이다.
그 두 테이블의 구조는 다음과 같다.
customer 테이블
필드명특성
sid | 기본 키 |
last_name | |
first_name |
orders 테이블
필드명특성
order_id | 기본 키 |
order_date | |
customer_sid | 외래키 |
amount |
위의 예제에서, orders 테이블에 있는 customer_sid 필드는 customer 테이블의 sid 필드를 가리키는 외래 키이다.
다음은 orders 테이블을 만들 때에 사용되는 외래 키의 지정 방법을 몇 가지 들어 있다.
MySQL:
CREATE TABLE orders (
order_id INTEGER,
order_date DATE,
customer_sid INTEGER,
amount DOUBLE,
PRIMARY KEY (order_id),
FOREIGN KEY (customer_sid) REFERENCES customer (sid)
);
Oracle:
CREATE TABLE orders (
order_id INTEGER PRIMARY KEY,
order_date DATE,
customer_sid INTEGER REFERENCES customer (sid),
amount DOUBLE
);
SQL Server:
CREATE TABLE orders (
order_id integer PRIMARY KEY,
order_date DATETIME,
customer_sid INTEGER REFERENCES customer(sid),
amount DOUBLE
);
이어서 테이블 구조 변경으로 인해, 외래 키를 지정하는 예제를 보도록 하겠다. 여기서는 orders 테이블이 이미 만들어진 외래 키가 지정되지 않았으면 가정한다.
MySQL:
ALTER TABLE orders
ADD FOREIGN KEY (customer_sid) REFERENCES customer (sid);
Oracle:
ALTER TABLE orders
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES customer(sid);
SQL Server:
ALTER TABLE orders
ADD FOREIGN KEY (customer_sid) REFERENCES customer (sid);
출처: https://araikuma.tistory.com/495 [프로그램 개발 지식 공유]
'개발 > sql' 카테고리의 다른 글
[oracle]오라클 select해서 insert 하기 [펌] (0) | 2020.08.02 |
---|---|
[sql/oracle] 오라클 다양한 INSERT INTO 방법 (0) | 2020.08.01 |
[Stored Procedure] 2. MySQL Stored Procedure 시작하기 [펌] (0) | 2020.07.31 |
[MySQL] TRIGGER(트리거) 및 DELIMITER(델리미터) 개념과 사용법 [펌] (0) | 2020.07.30 |
[ Database ] 무료 SQL DB Tool 추천 - DBever [펌] (0) | 2020.07.25 |