DBMS Day14 CASCADE, LOAD DATA

김지원·2022년 6월 28일
0

DBMS

목록 보기
14/17

새로운 예제

krx

< 거래소를 담을 테이블>  <종목을 담는 테이블>   
- KOSPI             -> 005930, 010950, 000660 (주식 이름, 종목)
- KOSDAQ            -> x
  • 각 종목은 0월 0일 얼마라는 주가가 있다.
  • 주가에는 시가 고가 저가 종가로 나눈다.

-> 스키마와 테이블2개(거래소, 종목) 생성

  • code에 unique를 걸게되면 다국적 지원이 될 수 없다. ( 중국도 6자리 사용)

CASCADE

: 제약조건을 사용하여, 부모 테이블의 데이터가 삭제나 변경시 오류가 아닌 자식 테이블의 데이터에도 자동으로 적용되게 해준다.

ON DELETE CASCADE : 삭제할 때 순차적으로 
ON UPDATE CASCADE : 수정할 때 순차적으로

SET FOREIGN_KEY_CHECKS = FALSE;

: 외래키 제약조건 검사 중지

SET FOREIGN_KEY_CHECKS = TRUE;

: 외래키 제약조건 검사 재시작

  • 외래키에 대한 제약조건을 다 무시해 버리고 실행해버린다.
  • 실행 이후에는 무결성 보증이 되지 않는다.
  • 왠만하면 사용하지 않는다(상위 10%의 개발자가 아니라면...ㅎ)

-> data 테이블 생성

  • data 복수형이 아닌 이유 : data의 복수는 data다ㅋㅋ

-> 테이블 데이터 INSERT

  • 거래소 2개
  • 종목 4개

-> 데이터 INSERT

  • 데이터를 메모장으로 불러오게 되면
    열간 구분은 콤마로 행간구분은 엔터로 되어있는 것을 볼 수 있다.
  • 기억해두고 데이터를 INSERT 하러가보자.

그런데 이 많은 데이터를 하나씩 INSERT를 하기에 너무 오래 걸리지 않을까?
그때 사용하는것이 LOAD DATA 이다.

LOAD DATA

: 엄청 많은 데이터를 한번에 불러와서(Bulk Load) INSERT 시키고 싶을 때 사용.

  • 시간이 절약이 된다.

< MAC 에서 터미널로 내 파일의 경로 찾는 방법 >

cd ~
cd Downloads
ls -l
ls -l *.csv 
pwd 

CHARACTER SET utf8          :  디코딩을 utf8로 사용한다는 뜻
TERMINATED BY ', '          :내용을 분석할 때 열은 콤마로 분석한다는 뜻
OPTIONALLY ENCLOSED BY '"'  :  콤마로 구분되어진 값들은 쌍따옴표로 구분되어져 나온다.
IGNORE 1 LINES              : 한줄을 무시해라. (일자와 시가....가 적여있는 줄) 더 있다면 TO라고 해서 적으면 된다.?
(`exchange_code`, `symbol_code`, `date`, `open`, `high`, `low`, `close`,`volume`) 
 : 엑셀파일에는 앞에 이 두개가 존재하기 않기 때문에 선언을 해준다.

  • 데이터가 추가 된 것을 확인 할 수 있다.
profile
Software Developer : -)

0개의 댓글