이번주는 설연휴로 스프링수업이 없었고 데이터베이스 중급수업이 있어서 데이터베이스 수업에 대해 리뷰해보고자 합니다.
그나저나 벌써 20주차라니........... 그 어떤 일을 할때보다 시간이 엄청 빨리 지나간 느낌..........ㅠㅠ
인덱스
인덱스란?
데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료구조
- 인덱스 종류(MySQL)
- 클러스터형 인덱스 : 사전과 같은 형태(데이터가 순서대로 정렬)
- 테이블당 하나 설정 가능(primary key 옵션으로 자동생성)
- 보조 인덱스 : 책의 마지막 장의 찾아보기와 같은 형태
- 여러 개의 필드 값을 기반으로 쿼리를 많이 보낼 때 생성
- 클러스터형 인덱스 : 사전과 같은 형태(데이터가 순서대로 정렬)
- 인덱스를 확인하는 방법
SHOW INDEX FROM 테이블이름
인덱스의 생성 & 삭제
인덱스의 생성(2가지 방법)
CREATE INDEX 인덱스명 ON 테이블명 (column1, column2, ...);
ALTER TABLE 테이블명 ADD INDEX 인덱스명 ( column 1, column 2, ... );
UNIQUE INDEX : column명이 유일한 값을 가지고 있어야 한다.
UNIQUE INDEX 인덱스명 (column명);
인덱스 삭제
ALTER TABLE 테이블명 DROP INDEX 인덱스명;
외래키 (FOREIGN KEY)
외래키(Foreign Key)란?
FK라고도 하며, 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는데 사용한다.
- 데이터 무결성(두 테이블간 관계에 있어 데이터의 정확성을 보장하는 제약 조건을 넣는다)
- 현업에서는 꼭 필요한 경우에만 사용하는 경우가 많다. (제약조건이 있는 경우, 예외적인 비즈니스 로직을 처리하기 어렵기 때문이다)
GROUP BY와 HAVING
조건이 여러개인 경우 소그룹화 해서 조건을 검색한다.
- HAVING절은 그룹화된 집계함수를 가지고 조건비교를 할 때 사용한다.
- 집계함수 : 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려준다.
- HAVING절은 GROUP BY절과 함께 사용한다.
- GROUP BY절은 행들을 작은 그룹으로 분류하여 소그룹화한다.
SELECT 칼럼명 FROM 테이블명 GROUP BY 칼럼(Column)명 HAVING 그룹조건식
JOIN구문
JOIN이란?두 개 이상의 테이블로부터 필요한 데이터를 연결해 하나의 포괄적인 구조로 결합시키는 연산
- JOIN의 종류 (보통 INNER JOIN을 많이 사용한다)
- INNER JOIN : 두 테이블의 모두 일치하는 행이 있는 부분만 표기한다.
- OUTER JOIN
- LEFT OUTER JOIN : 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 왼쪽 테이블과 매칭되는 레코드를 붙여서 결과 테이블에 표기된다.
- RIGHT OUTER JOIN : 오른쪽 테이블의 모든 행과 왼쪽 테이블에 오른쪽 테이블과 매칭되는 레코드를 붙여서 결과 테이블에 표기된다.
INNER JOIN (교집합)
SELECT * FROM 테이블1 INNER JOIN 테이블2 ON 두 테이블의 매칭조건
- 두 테이블의 조건이 일치하는 결과만 출력한다.
- 테이블 이름 다음에 한칸 띄고 새로운 이름을(주로테이블명 약자) 쓰면, SQL구문 안에서 해당 이름으로 테이블을 가리킬 수 있다.
(아래 예시는 items 테이블은 약자 a로 표기, ranking 테이블은 약자 b로 표기)
SELECT * FROM items a INNER JOIN ranking b ON a.item_code = b.item_code
WHERE b.main_category = "ALL"
'[패스트캠퍼스]KDT 핀테크 서비스 백엔드 > review' 카테고리의 다른 글
21주차 Review - 스프링 (0) | 2023.02.03 |
---|---|
19주차 Review - Spring/SpringBoot (0) | 2023.01.20 |
18주차 Review - Spring/SpringBoot (0) | 2023.01.13 |
17주차 Review - Spring/SpringBoot (0) | 2023.01.06 |
16주차 Review - Spring/SpringBoot (0) | 2022.12.30 |