카테고리 없음

8주차 학습일지 - SQL

dulcetsay 2024. 4. 11. 15:00

1. 외래키 (FOREIGN KEY)

  • 외래키 지정
CREATE TABLE buyTbl (
          FOREIGN KEY (userID) REFERENCES userTbl (userID)
);
  • userTbl의 userID를 참조하므로 userTbl에 userID가 없는 데이터는 buyTbl에 INSERT할 수 없음
    -> userTbl에 데이터를 넣은 후 buyTbl에 추가 가능
  • buyTbl 에서 참조하는 userID가 있는 경우 userTbl의 데이터를 삭제 할 수 없음

 

2. 인덱스

  • 클러스터링 인덱스
    - 영어사전과 같이 데이터 자체가 이미 정렬되어있는 형태
    - 테이블에 PRIMARY KEY로 정의한 컬럼이 있을 경우 해당 컬럼 기준으로 자동 정렬됨
    - 테이블 당 하나의 클러스터형 인덱스만 가짐
  • 보조 인덱스
    - 데이터 정렬 X, 위치만 저장하는 테이블이 만들어짐
    - 컬럼에 UNIQUE 제약을 넣으면 만들어짐, 여러 칼럼에 대하여 생성 가능

 

3. 문자열 함수

  • LENGTH(string) : 문자열 길이 반환
  • UPPER(string) : 문자열을 대문자로 반환
  • LOWER(string) : 문자열을 소문자로 변환
  • CONCAT(string1, string2, ...) : 두 개 이상의 문자열을 하나로 연결
  • SUBSTRING(string, start, length) : 문자열에서 부분 문자열을 추출

 

4. 날짜/시간 함수

  • NOW() : 현재 날짜와 시간 반환
  • CURDATE() : 현재 날짜를 반환
  • CURTIME() : 현재 시간을 반환
  • DATE_ADD(date, INTERVAL unit) : 날짜에 간격을 추가
    ex) DATE_ADD(rental_date, INTERVAL 7 DAY)
  • DATE_SUB(date, INTERVAL unit) : 날짜에서 간격을 뺌
  • EXTRACT(field FROM source) : 날짜 필드에서 특정 부분(예: 년, 월, 일 등)을 추출
    ex) EXTRACT(YEAR FROM payment_date)
  • YEAR() , MONTH() , DAY() , HOUR(),  MINUTE(),  SECOND() : EXTRACT 와 유사한 작업을 수행
  • TIMESTAMPDIFF(unit, start_datetime, end_datetime) : 두 날짜 또는 시간 값 사이의 차이를 계산
  • DATE_FORMAT(date, format) : 날짜 또는 시간 데이터를 특정 형식의 문자열로 변환
    - 형식 문자열에서 자주 사용되는 지시자 몇 가지(format) :
    %Y : 4자리 연도
    %y : 2자리 연도
    %M : 월 이름
    %m : 2자리 월
    %D : 일 (영문 접미사 포함, 예: 2nd, 3rd, ...)
    %d : 2자리 일
    %H : 24시간 형식의 2자리 시간
    %h : 12시간 형식의 2자리 시간
    %i : 2자리 분
    %s : 2자리 초

 

5. 트랜잭션, COMMIT, ROLLBACK

  • COMMIT : 현재 트랜잭션에서 만든 모든 변경 사항을 저장, COMMIT 문 바로 다음에 새 트랜잭션이 시작됨
  • ROLLBACK : 현재 트랜잭션에서 만든 일부 또는 모든 변경 사항을 취소, 또한 현재 트랜잭션을 종료하며 새로운 트랜잭션이 시작됨

 

6. VIEW실제 테이블을 기반으로 한 가상 테이블로, 복잡한 쿼리를 단순화하고 데이터의 특정 부분에
만 접근을 허용할 수 있음