카테고리 없음
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 : 실제 테이블을 기반으로 한 가상 테이블로, 복잡한 쿼리를 단순화하고 데이터의 특정 부분에
만 접근을 허용할 수 있음