패스트캠퍼스 BDA 부트캠프 | 7주차 과정(MySQL)

2024. 9. 4. 17:46·[패캠] 데이터분석 부트캠프/수업 정리

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)  (5) 2024.09.04
패스트캠퍼스 BDA 부트캠프 | 10주차 과정(Tableau)  (1) 2024.09.04
패스트캠퍼스 BDA 부트캠프 | 6주차 과정(MySQL)  (1) 2024.09.04
패스트캠퍼스 BDA 부트캠프 | 4주차 과정(파이썬)  (0) 2024.09.04
패스트캠퍼스 BDA 부트캠프 | 3주차 과정(파이썬)  (0) 2024.09.04
'[패캠] 데이터분석 부트캠프/수업 정리' 카테고리의 다른 글
  • 패스트캠퍼스 BDA 부트캠프 | 11주차 과정(Tableau)
  • 패스트캠퍼스 BDA 부트캠프 | 10주차 과정(Tableau)
  • 패스트캠퍼스 BDA 부트캠프 | 6주차 과정(MySQL)
  • 패스트캠퍼스 BDA 부트캠프 | 4주차 과정(파이썬)
kimmalgu
kimmalgu
DA(데이터 분석가) 블로그
  • kimmalgu
    kimmalgu 님의 블로그
    kimmalgu
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • 통계 (3)
      • [패캠] 데이터분석 부트캠프 (10)
        • 프로젝트 (2)
        • 수업 정리 (8)
      • 파이썬 (8)
        • 통계전산처리 (7)
      • SQL (27)
        • 프로그래머스 (20)
        • HackerRank (5)
        • LeetCode (1)
      • 코테 (0)
      • 독후감 (5)
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • hELLO· Designed By정상우.v4.10.0
kimmalgu
패스트캠퍼스 BDA 부트캠프 | 7주차 과정(MySQL)
상단으로

티스토리툴바