SQL 첫걸음
- My SQL 설치하기
- 1장 데이터 베이스 구축
- 2장 테이블에서 데이터 검색
- 3장 정렬과 연산
- 4장 데이터 추가, 삭제, 갱신
- 5장 집계와 서브쿼리
- 6장 데이터베이스 객체 작성과 삭제
- 7장 복수의 테이블 다루기
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'); |
결과
+----------------+ |
LOWER
명령어
mysql> select LOWER('HELLO'); |
결과
+----------------+ |
LENGTH
명령어
select LENGTH('hello'); |
결과
+-----------------+ |
날짜 함수
- 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'); |
결과
+--------------------+ |
hour(TIME)
명령어
select hour('11:42:55'); |
결과
+------------------+ |
minute(TIME)
명령어
select minute('11:42:55'); |
결과
+--------------------+ |
second(TIME)
명령어
select second('11:42:55'); |
결과
+--------------------+ |
DATE_FORMAT
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%y-%m-%d') AS '날짜' |
모두 소문자로 데이터 형식을 표시하게 되면 2글자 형식으로 표현을 한다.
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS '날짜' |
년도를 대문자로 데이텨 형식을 표현하게 되면 구체적인 년도를 표시한다.
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%y-%M-%d') AS '날짜' |
달을 대문자로 표시하게 되면 영문으로 해당 달을 표시해준다.
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%y-%m-%D') AS '날짜' |
일을 대문자로 표시하게 되면 기수로 해당 일을 표시해준다.
SQL문 처리순서
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
- 원하는 테이블을 찾아가(FROM)
- 조건을 이용해 원하는 데이터를 검색한 후(WHERE)
- 그룹으로 묶은 뒤(GROUP BY)
- 그룹화된 데이터를 조건을 이용해 검색한 후(HAVING)
- 원하는 데이터를 선택해(SELECT)
- 정렬해서 내보낸다.(ORDER BY)
프로그래머스 sql문제
select 문
- 모든 레코드 조회하기 https://programmers.co.kr/learn/courses/30/lessons/59034
- 역순 정렬하기 https://programmers.co.kr/learn/courses/30/lessons/59035
- 아픈 동물 찾기 https://programmers.co.kr/learn/courses/30/lessons/59036
- 어린 동물 찾기 https://programmers.co.kr/learn/courses/30/lessons/59037
- 동물의 아이디와 이름 https://programmers.co.kr/learn/courses/30/lessons/59403
- 여러 기준으로 정렬하기 https://programmers.co.kr/learn/courses/30/lessons/59404
- 상위 n개 레코드 https://programmers.co.kr/learn/courses/30/lessons/59405
집계함수 (SUM, MAX, MIN)
- 최댓 값 구하기 https://programmers.co.kr/learn/courses/30/parts/17043
- 최솟 값 구하 https://programmers.co.kr/learn/courses/30/lessons/59038
- 동물 수 구하기 https://programmers.co.kr/learn/courses/30/lessons/59406
- 중복 제거하기 https://programmers.co.kr/learn/courses/30/lessons/59408
그룹화 (GROUP BY)
- 고양이와 개는 몇마리 있을까 https://programmers.co.kr/learn/courses/30/lessons/59040
- 동명 동물 수 찾기 https://programmers.co.kr/learn/courses/30/lessons/59041
- 입양 시각 구하기 https://programmers.co.kr/learn/courses/30/lessons/59412
- 입양 시각 구하기2 https://programmers.co.kr/learn/courses/30/lessons/59413
NULL 처리하기
- 이름이 없는 동물의 아이디 https://programmers.co.kr/learn/courses/30/lessons/59039
- 이름이 있는 동물의 아이디 https://programmers.co.kr/learn/courses/30/lessons/59407
- NULL 처리하기 https://programmers.co.kr/learn/courses/30/lessons/59410
JOIN문
- 없어진 기록 찾기 https://programmers.co.kr/learn/courses/30/lessons/59042
- 있었는데요 없었습니다. https://programmers.co.kr/learn/courses/30/lessons/59043
- 오랜 기간 보호한 동물(1) https://programmers.co.kr/learn/courses/30/lessons/59044
- 보호소에서 중성화한 동물 https://programmers.co.kr/learn/courses/30/lessons/59045
String, Date
- 루시와 엘라 찾기 https://programmers.co.kr/learn/courses/30/lessons/59046
- 이름에 el이 들어가는 동물 찾기 https://programmers.co.kr/learn/courses/30/lessons/59047
- 중성화 여부 파악하기 https://programmers.co.kr/learn/courses/30/lessons/59409
- 오랜기간 보호한 동물(2) https://programmers.co.kr/learn/courses/30/lessons/59411
- DATETIME에서 DATE로 형 변환 https://programmers.co.kr/learn/courses/30/lessons/59414