23.12.04
HAVING
조건은 WHERE절에서 사용하는데 HAVING은 왜 사용하지?
WHERE절에서는 집계함수를 사용할 수 없기에 HAVING절을 사용해야함
SELECT provider
FROM items
GROUP BY provider
HAVING COUNT(*)>=100;
SQL 실행 순서
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
JOIN
JOIN은 두 개 이상의 테이블로부터 필요한 데이터를 연결해 하나의 포괄적인 구조로 결합시키는 연산
JOIN은 다음과 같이 세분화될 수 있지만, 보통은 INNER JOIN을 많이 사용함
INNER JOIN : 두 테이블에 해당 필드값이 매칭되는 (두 테이블의 모든 필드로 구성된) 레코드만 가져옴 (일종의 교집합)
LEFT OUTER JOIN: 왼쪽 테이블에서 모든 레코드와 함께, 오른쪽 테이블에 왼쪽 테이블 레코드와 매칭되는 레코드를 붙여서 가져옴
RIGHT OUTER JOIN: 오른쪽 테이블에서 모든 레코드와 함께, 왼쪽 테이블에 왼쪽 테이블 레코드와 매칭되는 레코드를 붙여서 가져옴
OUTER JOIN의 개념이 처음에 이해하기 쉽지 않았는데, 기준이 되는 방향은 고정시키고 나머지 테이블을 기준이 되는 방향에 붙인다고 생각하면 편함
SELECT * FROM items I
JOIN ranking R
ON I.item_code = R.item_code
WHERE R.main_category ='ALL';
JOIN에 붙일 테이블을 적고
ON에 매칭 될 조건을 적는다
서브 쿼리(SubQuery)
SQL문 안에 포함되어 있는 SQL문
SQL문 안에서 괄호() 를 사용해서, 서브쿼리문을 추가할 수 있다
테이블과 테이블간의 검색시, 검색 범위(테이블 중 필요한 부분만 먼저 가져오도록)를 좁히는 기능에 주로 사용
SELECT title
FROM items
INNER JOIN ranking ON items.item_code = ranking.item_code
WHERE ranking.sub_category = '여성신발';
# 위와 같은데 서브쿼리로 처리하는 방법임
SELECT title
FROM items
WHERE item_code IN
(SELECT item_code FROM ranking WHERE sub_category = '여성신발');
서브 쿼리를 활용하는 것이 난이도가 높다고 생각되며 연습이 많이 필요하다
23.12.06
INDEX
index 만드는 이유 : 데이터를 빠르게 찾으려고
*sql은 파이썬과 다르게 인덱스를 따로 만들어야함
# 생성된 테이블에 인덱스 추가 예제 (**CREATE INDEX** 사용)
CREATE INDEX idx_name ON userTbl (name);
# 생성된 테이블에 인덱스 추가 예제 (**ALTER TABLE** 사용)
ALTER TABLE userTbl ADD INDEX idx_addr (addr); # 괄호에는 지정할 칼럼 입력
# 인덱스 삭제하기
ALTER TABLE userTbl DROP INDEX idx_addr;
SQL함수
SQL 함수는 값을 반환하는 내장 메소드로 상당히 유용함
### 문자열 함수 ###
# UPPER : 문자열을 대문자로 변환
SELECT UPPER(title) AS uppercased_title
FROM film
LIMIT 10;
# CONCAT : 두 개 이상의 문자열을 하나로 연결
SELECT * FROM actor;
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM actor
LIMIT 10;
# SUBSTRING : 일부 문자열 추출
SELECT SUBSTRING(description, 1, 6) AS short_description
FROM film
LIMIT 10;
### 숫자함수 ###
# ABS(number) : 숫자의 절대값을 반환
SELECT ABS(-3) FROM Dual;
# CEIL(number) : 숫자보다 크거나 같은 가장 작은 정수 값을 반환
SELECT CEIL(4.2) FROM Dual;
# FLOOR(number) : 숫자 이하의 가장 큰 정수 값을 반환
SELECT FLOOR(4.2) FROM Dual;
# SQRT(number) : 숫자의 제곱근을 반환
SELECT SQRT(9) FROM Dual;
'[패캠] 데이터분석 부트캠프 > 수업 정리' 카테고리의 다른 글
패스트캠퍼스 BDA 부트캠프 | 11주차 과정(Tableau) (4) | 2024.09.04 |
---|---|
패스트캠퍼스 BDA 부트캠프 | 10주차 과정(Tableau) (0) | 2024.09.04 |
패스트캠퍼스 BDA 부트캠프 | 6주차 과정(MySQL) (1) | 2024.09.04 |
패스트캠퍼스 BDA 부트캠프 | 4주차 과정(파이썬) (0) | 2024.09.04 |
패스트캠퍼스 BDA 부트캠프 | 3주차 과정(파이썬) (0) | 2024.09.04 |