sql.md

SQL 첫걸음

SELECT

FROM

WHERE

GROUP BY

HAVING

ORDER BY

IFNULL, ISNULL, COALESCE, NVL

JOIN

  • INNER JOIN : 두 테이블이 공통적으로 가지고 있는 레코드를 반환한다.
  • LEFT JOIN : 두 테이블이 공통적으로 가지고 있는 레코드와 왼쪽 테이블의 모든 레코드를 반환한다.
  • RIGHT JOIN : 두 테이블이 공통적으로 가지고 있는 레코드와 오른쪽 테이블의 모든 레코드를 반환한다.
  • FULL OUTER JOIN : 두 테이블이 공통적으로 가지고 있는 레코드와 왼쪽 오른쪽 테이블의 레코드를 반환한다.

SQL 내 함수

숫자 함수

  • ABS(n) : n의 절대값을 반환한다.
  • CEIL(n), FLOOR(n) : n보다 같거나 큰 함수를 반환한다.
  • ROUND(n, i) : n을 소수점 i+1번째 자리에서 반올림 한다.
  • TRUNC(n, i) : n을 소수점 i+1번째 자리에서 버린다.
  • POWER(n1, n2) : n1을 n2로 거듭제곱한다.
  • MOD(n1, n2) : n1을 n2로 나눈 나머지 값

ROUND & TRUNC 자릿 값

소수쪽으로 가게 되면 양수를 정수쪽으로 가게 되면 음수값을 취하면 된다.

문자 함수

  • UPPER(char) : char를 대문자로 변환한다.
  • LOWER(char) : char를 소문자로 반환한다.
  • LENGTH(char) : char의 길이를 반환한다.

UPPER

명령어

select UPPER('hello');

결과

+----------------+
| UPPER('hello') |
+----------------+
| HELLO |
+----------------+
1 row in set (0.00 sec)

LOWER

명령어

mysql> select LOWER('HELLO');

결과

+----------------+
| LOWER('HELLO') |
+----------------+
| hello |
+----------------+
1 row in set (0.00 sec)

LENGTH

명령어

select LENGTH('hello');

결과

+-----------------+
| LENGTH('hello') |
+-----------------+
| 5 |
+-----------------+
1 row in set (0.00 sec)

날짜 함수

  • year(DATE), year(DATETIME)
  • hour(TIME), hour(DATETIME)
  • minute(TIME), minute(DATETIME)
  • second(TIME), second(DATETIME)
  • DATE_FORMAT(DATE, format)

year(DATE)

명령어

select year('2020-06-05');

결과

+--------------------+
| year('2020-06-05') |
+--------------------+
| 2020 |
+--------------------+
1 row in set (0.00 sec)

hour(TIME)

명령어

select hour('11:42:55');

결과

+------------------+
| hour('11:42:55') |
+------------------+
| 11 |
+------------------+
1 row in set (0.00 sec)

minute(TIME)

명령어

select minute('11:42:55');

결과

+--------------------+
| minute('11:42:55') |
+--------------------+
| 42 |
+--------------------+
1 row in set (0.00 sec)

second(TIME)

명령어

select second('11:42:55');

결과

+--------------------+
| second('11:42:55') |
+--------------------+
| 55 |
+--------------------+
1 row in set (0.00 sec)

DATE_FORMAT

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%y-%m-%d') AS '날짜'
from ANIMAL_INS
order by ANIMAL_ID

모두 소문자로 데이터 형식을 표시하게 되면 2글자 형식으로 표현을 한다.

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS '날짜'
from ANIMAL_INS
order by ANIMAL_ID

년도를 대문자로 데이텨 형식을 표현하게 되면 구체적인 년도를 표시한다.

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%y-%M-%d') AS '날짜'
from ANIMAL_INS
order by ANIMAL_ID

달을 대문자로 표시하게 되면 영문으로 해당 달을 표시해준다.

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%y-%m-%D') AS '날짜'
from ANIMAL_INS
order by ANIMAL_ID

일을 대문자로 표시하게 되면 기수로 해당 일을 표시해준다.

SQL문 처리순서

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY
  • 원하는 테이블을 찾아가(FROM)
  • 조건을 이용해 원하는 데이터를 검색한 후(WHERE)
  • 그룹으로 묶은 뒤(GROUP BY)
  • 그룹화된 데이터를 조건을 이용해 검색한 후(HAVING)
  • 원하는 데이터를 선택해(SELECT)
  • 정렬해서 내보낸다.(ORDER BY)

프로그래머스 sql문제

select 문

집계함수 (SUM, MAX, MIN)

그룹화 (GROUP BY)

NULL 처리하기

JOIN문

String, Date

Share