thumbnail

기본적인 문법은 알지만 안쓰다보면 또 까먹고, 까먹고 또 까먹습니다.. 이놈의 기억력이란..?

<br/>

<span style="color:#8e44ad">LIKE 연산

WHERE last_name like 'Foo%' 
WHERE last_name like '%Foo'
WHERE last_name like '%Foo%'
WHERE last_name like 'Foo_' 
WHERE last_name like 'Foo__' 
WHERE last_name like '_Foo_' 
  • 1번 라인 조건 : Foo, Foote, Fooooo, Fooxxxx, Foxx

  • 2번 라인 조건 : Foo, xxxFoo, dddFoo, dfdFoo

  • 3번 라인 조건 : Foo, xxxFooxxxx, dddFooDDD, Fooxxx

  • 4번 라인 조건 : Foox, Food, Fooc, Fooa

  • 5번 라인 조건 : Fooxx, Foodd, Fooad

  • 5번 라인 조건 : zFoox, xFooz, xFoox

<br/>

<br/>

<br/>

<br/>

<span style="color:#8e44ad">UNION, INSERSECT, MINUS

<span style="color:#8e44ad">- SELECT되는 필드의 개수와 데이터 타입이 같아야합니다

<span style="color:#8e44ad">- MySQL은 INTERSECT를 지원하지 않습니다.

<br/>

- UNION, 레코드 결합, 중복값 제거

SELECT NAME
FROM STUDENT
UNION
SELECT NAME
FROM PROFESSOR

<br/>

- UNION ALL, 레코드 결합, 중복값 제거 X

SELECT NAME
FROM STUDENT
UNION ALL
SELECT NAME
FROM PROFESSOR

<br/>
- INTERSECT, 중복되는 값

SELECT NAME
FROM STUDENT
INTERSECT
SELECT NAME
FROM PROFESSOR

<br/>

- MINUS, A레코드 - 중복되는 값

  • EX) 한번이라도 A+를 받지 못한 학생
SELECT NAME
FROM STUDENT
MINUS
SELECT NAME
FROM TAKES
WHERE GRADE = 'A+'

<br/>

<br/>

<br/>

<br/>

<span style="color:#8e44ad">조인연산

<span style="color:#8e44ad">- MySQL은 FULL OUTER JOIN을 지원하지 않습니다.

<br/>

- 내부조인, 조인 조건에 부합하는 레코드

SELECT *
FROM IDOL A JOIN SONG B
ON A.SONG_ID = B.SONG_ID

<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/RUTIJI181224235458.PNG" style="border-style:solid; border-width:1px"/>

<br/>

<br/>

- 왼쪽 외부조인, 내부조인 결과 레코드 + 왼쪽 테이블의 조건을 만족하지 않는 레코드

SELECT *
FROM IDOL A LEFT JOIN SONG B
ON A.SONG_ID = B.SONG_ID

<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/1UB9UV181224235458.PNG" style="border-style:solid; border-width:1px"/>

<br/>

- 오른쪽 외부 조인, 내부조인 결과 레코드 + 오른쪽 테이블의 조건을 만족하지 않는 레코드

SELECT *
FROM IDOL A RIGHT JOIN SONG B
ON A.SONG_ID = B.SONG_ID

<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/SJXMXN181224235458.PNG" style="border-style:solid; border-width:1px"/>

<br/>

<br/>

<span style="color:#8e44ad">COUNT, SUM, AVG, MIN, MAX (집계함수)

  • COUNT, 레코드의 개수, distinct 키워드를 사용하면 중복되는 레코드를 제외한 개수를 리턴
SELECT COUNT(*)
FROM SONG

<br/>

  • SUM, 합
SELECT SUM(LIKES)
FROM SONG

<br/>

  • AVG, 평균
SELECT AVG(LIKES)
FROM SONG

<br/>

  • MIN, 최소
SELECT MIN(LIKES)
FROM SONG

<br/>

- MAX, 최대

SELECT MAX(LIKES)
FROM SONG

<br/>

<br/>

<br/>

<span style="color:#8e44ad">GROUP BY, HAVING

<span style="color:#8e44ad">- 집계함수는, 다른 일반 필드와 같이 사용할 수 없습니다.

<span style="color:#8e44ad">- 따라서 GROUP BY로 묶어, 집계 함수를 사용합니다.

<span style="color:#8e44ad">- 예를들어 다음과 같습니다.

  • <span style="color:#8e44ad">부서별로 묶어 각 부서 직원들의 수를 집계

  • <span style="color:#8e44ad">부서별로 묶어 각 부서 직원들의 최고 연봉

<br/>

<br/>

  • GROUP BY, 그룹별로 묶음

  • 소속사별로 그룹하여, 각 소속사별 아이돌의 수

SELECT B.AGENT_NAME, COUNT(*)
FROM IDOL A JOIN AGENT B
ON A.AGENT_ID = B.AGENT_ID
GROUP BY A.AGENT_ID

<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/UZQMXM181224235458.PNG" style="border-style:solid; border-width:1px"/>

<br/>

- HAVING, 묶은 그룹에 대한 조건절

  • 소속사별로 그룹하여, 각 소속사별 아이돌의 수가 4이하인 소속사
SELECT B.AGENT_NAME, COUNT(*)
FROM IDOL A JOIN AGENT B
ON A.AGENT_ID = B.AGENT_ID
GROUP BY A.AGENT_ID
HAVING COUNT(*) <= 4

<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/B4HJZT181224235458.PNG" style="border-style:solid; border-width:1px"/>

<br/>

<br/>

<br/>

CommentCount 0
이전 댓글 보기
등록
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
TOP