융융이'Blog

mySQL 명령어(관계형) 본문

2022이전/Mysql

mySQL 명령어(관계형)

바로퇴장 2020. 1. 6. 17:15

관계형 데이터베이스(relational database)란?

관계형 데이터베이스는 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류입니다. 관계형 데이터베이스는 테이블(table)로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타냅니다.

이처럼 데이터의 종속성을 관계(relationship)로 표현하는 것이 관계형 데이터베이스의 특징입니다.

관계형 데이터베이스의 특징

  1. 데이터의 분류, 정렬, 탐색 속도가 빠릅니다.

  2. 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장해 줍니다.

  3. 기존에 작성된 스키마를 수정하기가 어렵니다.

  4. 데이터베이스의 부하를 분석하는 것이 어렵니다.

관계(relationship)

  1. 일대일(one-to-one) 관계

  1. 일대다(one-to-many) 관계

  1. 다대다(many-to-many) 관계

외래키(FOREIGN KEY)

관계형 테이블(Table)에서 가장 중요하게 사용되는 제약조건 입니다.

외래키(FOREIGN KEY)는 한 테이블을 다른 테이블과 연결해주는 역할을 합니다. 외래키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력됩니다. 외래키 제약조건을 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약조건이 설정되어 있어야 합니다.

CREATE 문으로 FOREIGN KEY 설정

CREATE TABLE 테이블이름 ( 필드이름 필드타입, ..., [CONSTRAINT 제약조건이름] FOREIGN KEY (필드이름) REFERENCES 테이블이름 (필드이름) )

 CREATE TABLE Test2
 (
    ID INT,
    ParentID INT,
     FOREIGN KEY (ParentID)
     REFERENCES Test1(ID) ON UPDATE CASCADE
 ); ALTER TABLE Reservation
 ADD CONSTRAINT CustomerID
 FOREIGN KEY (ID)
 REFERENCES Customer (ID); ALTER TABLE Reservation
 DROP FOREIGN KEY CustomerID; CREATE TABLE Test2
 (
    ID INT,
    ParentID INT,
     FOREIGN KEY (ParentID)
     REFERENCES Test1(ID) ON UPDATE CASCADE ON DELETE RESTRICT
 );

참조: http://tcpschool.com/

  1. RESTRICT : 참조하는 테이블에 데이터가 남아 있으면, 참조되는 테이블의 데이터를 삭제하거나 수정할 수 없습니다.

  1. SET DEFAULT : 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 필드의 기본값으로 설정됩니다.

  1. NO ACTION : 참조되는 테이블에서 데이터를 삭제하거나 수정해도, 참조하는 테이블의 데이터는 변경되지 않습니다.

  1. SET NULL : 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 NULL로 변경됩니다.

  1. CASCADE : 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어집니다.

 

이때 설정할 수 있는 동작은 다음과 같습니다.

또한, 참조되는 테이블의 값이 수정될 경우의 동작은 ON UPDATE 구문으로 설정할 수 있습니다.

참조되는 테이블의 값이 삭제될 경우의 동작은 ON DELETE 구문으로 설정할 수 있습니다.

ON DELETE ON UPDATE

 

이때 참조하고 있는 테이블의 동작은 다음 키워드를 사용하여 FOREIGN KEY 제약 조건에서 미리 설정할 수 있습니다.

FOREIGN KEY 제약 조건에 의해 참조되는 테이블에서 데이터의 수정이나 삭제가 발생하면, 참조하고 있는 테이블의 데이터도 같이 영향을 받습니다.

ON DELETE, ON UPDATE

DROP FOREIGN KEY 제약조건이름

ALTER TABLE 테이블이름

FOREIGN KEY 제약조건 삭제하기

REFERENCES 테이블이름 (필드이름)

FOREIGN KEY (필드이름)

ADD [CONSTRAINT 제약조건이름]

ALTER TABLE 테이블이름

ALTER문으로 FOREIGN KEY 설정

'2022이전 > Mysql' 카테고리의 다른 글

[디버깅] Mysql table 권한 설정시 오류  (0) 2020.06.24
Mysql 관련 용어  (0) 2020.01.08
mySQL 명령어(컬럼)  (0) 2020.01.06