1. SELECT
- ORDER BY : 정렬
- 조회결과를 특정 컬럼을 기준으로 순서대로 정렬해서 조화하고 싶을 때 사용

- 정렬 옵션
- ASC : (default) 오름차순
- DESC : 내림차순
- SELECT 절 마지막에 위치
- 정렬 기준은 컬럼명이나, 1부터 자동으로 부여되는 컬럼번호 지정 가능
- 정렬 기준은 여러개 나열 가능, 처음 작성한 기준으로 정렬된 결과에서 다음 기준으로 정렬 컬럼의
- 값이 NULL인 경우, NULL 값이 정렬 결과의 맨 마지막으로 위치함
2. MySQL 내장 함수
-
MySQL에서 제공하는 주요 내장 함수

-
집계 함수(그룹함수)
- 조건에 따른 집계된 값을 가져옴
- GROUP BY 절과도 함께 사용됨

-
숫자 함수
- 숫자함수의 종류

- GREATEST(숫자1, 숫자2, 숫자3,...) : 주어진 수 중 제일 큰 수 리턴
- LEAST(숫자1, 숫자2, 숫자3,...) : 주어진 수 중 가장 작은 수 리턴
- TRUNCATE(숫자, 소수점자리수) : 숫자를 소수점자리수까지 선택, 나머지는 버리기
- RAND() : 0 과 1 사이 실수인 랜덤값 리턴
- MOD(a, b) : a % b 한 결과 리턴. 나머지값 구하기
-
문자 함수
- 문자함수의 종류

- REVERSE(문자열) : 문자열 뒤집기
- REPEAT(문자열, 횟수) : 문자열을 횟수만큼 반복
-
날짜 함수
- 현재 날짜와 시간
NOW(), SYSDATE(), CURRUNT_TIMESTAMP()
- 현재 날짜
CURDATE(), CURRENT_DATE()
- 현재 시간
CURTIME(), CURRENT_TIME()
- 특정 날짜 리턴 함수
DATE(), YEAR(), MONTH(), MONTHNAME(), DAYOFMONTH(), DAY(), WEEKDAY(), DAYNAME()
- 특정 시간 리턴 함수
HOUR(), MINUTE(), SECOND(), TIME()
-
시간 / 날짜 연산 함수
- 더하기
ADDDATE(날짜, INTERVAL 값 유닛), DATE_ADD(날짜, INTERVAL 값 유닛)
- 유닛 : MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR
ex : ADDDATE(날짜, INTERVAL 1 HOUR)
- 빼기
SUBDATE(날짜, INTERVAL 값 유닛) DATE_SUB(날짜, INTERVAL 값 유닛)
- 차이계산
DATE_DIFF(end_date, start_date), TIME_DIFF(time1, time2)
- DATE_DIFF 날짜 형식 : YYYY-MM-DD
- TIME_DIFF 시간/날짜형식 : HH:MM:SS, YYYY-MM-DD HH:MM:SS
날짜/시간 지정 시, 위와 같은 패턴으로 작성
- 마지막 날짜
LAST_DAY(날짜)
- 시간/날짜 지정한 패턴으로 리턴(날짜 -> 문자)
DATE_FORMAT(날짜, format)
- 문자 -> 날짜로 리턴
STR_TO_DATE(문자열, format)
- format의 주요 지정자(specofier)

- 날짜/시간 함수의 종류

3. GROUP BY : 그룹화(select)
- 데이터를 원하는 그룹으로 나누어 조회
- ex. 부서별 인원수 조회
- select 절 조회에는 그룹화할 컬럼이나 집계함수만 올 수 있다.
- 그룹화 후 결과에 조건을 걸때는 where절 대신 HAVING절 사용
- 컬럼 그룹화
SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할컬럼;
- 조건 처리 후, 컬럼 그룹화
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할컬럼;
- 조건 처리 후 컬럼 그룹화 후, 그룹 조건 처리
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할컬럼 HAVING 조건식;
- 정렬이 추가 되어야 하는 경우
SELECT 컬럼 FROM 테이블 [WHERE 조건식] GROUP BY 그룹화할컬럼[HAVING 조건식] ORDER BY 정렬기준컬럼, ...;
4. JOIN 조인
5. 서브쿼리 Subquery