sql

[SQL] 일반함수 IFNULL, NULLIF, COALESCE
1. IFNULL 칼럼의 값이 NULL이 아닌 경우 그대로 출력하지만 칼럼의 값이 NULL인 경우 지정된 대체값으로 대체하여 출력 1 2 SELECT employee_id,IFNULL(department_id, '소속 부서 없음')department_id FROM employees cs 2. NULLIF 인자 값 두 개를 비교하여 동일한 값인 경우 NULL값 출력, 다른 값인 경우 첫 번째 인자값 출력 NULLIF(값 1, 값 2) 1 2 3 4 SELECT first_name, LENGTH(first_name) "expr1", last_name, LENGTH(last_name) "expr2", NULLIF(LENGTH(first_name), LENGTH(last_name)) RESULT FROM emp..

[SQL] 변환함수 DATE_FORMAT
변환함수 날짜, 문자, 숫자 데이터타입간 변환을 할 수 있는 함수 Oracle의 TO_CHAR 함수를 MySQL의 DATE_FORMAT으로 대응되는 포맷 결과 Oracle MySQL 연도(4자리) YYYY %Y 연도(2자리) YY %y 월(1~12) MM %m 월(Jan~Dec) MON %b 월(January~December) MONTH %M 일(1~31) DD %d 일(Sun~Sat) DY %a 시간(0~23) HH24 %H 시간(1~12) HH 또는 HH12 %h 분(0~59) MI %i 초(0~59) SS %s DATE_FORMAT DATE_FORMAT(날짜데이터, '형식문자') 1 2 3 SELECT employee_id, DATE_FORMAT(hire_date, '%m/%y') Month_Hir..

[SQL] 날짜함수 2. DATEDIFF, TIMESTAMPDIFF, LAST_DAY
1. DATEDIFF 단순히 일 차이를 계산 1 2 SELECT DATEDIFF('95-09-01', '94-01-11') FROM DUAL; cs 2. TIMESTAMPDIFF 지정된 범위 및 간격을 계산 1 2 SELECT TIMESTAMPDIFF(MONTH, '95-09-01', '94-01-11') FROM DUAL; cs 3. LAST_DAY 입력한 날짜가 속한 월의 마지막 날을 출력 1 2 SELECT LAST_DAY('95-02-01') FROM DUAL; cs

[SQL] 날짜함수 1. SYSDATE, DATE_ADD, DATE_SUB
시간을 의미하는 단위 SECOND(초) / MINUTE(분) / HOUR(시) / DAY(일) / MONTH(월) / YEAR(연) WEEK(주) / QUARTER(분기) / 1. SYSDATE 현재 DB서버의 시간데이터를 출력하는 함수 1 2 SELECT SYSDATE() FROM DUAL; cs 시간계산 INTERVAL : 범위 및 간격을 의미합니다 DATE_ADD : 기준 날짜에 입력된 기간만큼을 더하기 DATE_SUB : 기준 날짜에 입력된 기간만큼을 빼기 2. DATE_ADD 1 2 SELECT DATE_ADD(SYSDATE(), INTERVAL 1 DAY) FROM DUAL; cs 3.DATEDIFF 1 2 SELECT DATE_SUB(SYSDATE(), INTERVAL 1 DAY) FROM ..

[SQL] 숫자함수 ROUND, TRUNC , MOD
ROUND|TRUNC ROUND|TRUNC(대상숫자, 연산자리값) 연산할 자리값 찾기 소수점의 자리값이 0으로 기준이 된다. 양수의 자리값은 소수점 아래 음수의 자리값은 소숫점 위 정수 부분을 연산 1. ROUND 반올림 연산 1 2 SELECT ROUND(45.926, 2) FROM DUAL; cs 2. TRUNC , TRUNCATE 버림 연산 MySQL : TRUNCATE 1 2 SELECT TRUNCATE(45.926, 2) FROM DUAL; cs 오라클 : TRUNC 1 2 SELECT TRUNC(45.926, 2) FROM DUAL; cs 3. MOD 나머지 연산 1 2 SELECT MOD(1600, 300) FROM DUAL; cs

[SQL] 문자함수 2. INSTR, LPAD|RPAD, REPLACE, TRIM
1. INSTR 문자열에서 특정 부분문자열의 자리값을 찾는 함수 MySQL 문법 INSTR('전체문자열', '부분문자열') 1 2 SELECT INSTR('HelloWorld', 'o') FROM DUAL; cs 오라클 문법 INSTR('전체문자열', '부분문자열'[, 찾기 시작할 자리값, 몇 번째로 오는 값을 찾는가]) 1 2 SELECT INSTR('HelloWorld', 'o', 1, 2) FROM dual; cs 2. LPAD|RPAD 여백문자를 활용하여 출력값을 일관된 길이로 출력해주는 함수 1 2 SELECT LPAD(salary, 10, ' '), RPAD(salary, 10, '*') FROM employees; cs 3. REPLACE 문자열의 일부를 다른 문자로 치환 연산한 결과를 돌려..

[SQL] 함수 - 그룹 함수(AVG,SUM,MIN,MAX,COUNT)
그룹 함수 1. 그룹 단위로 연산 결과를 출력하는 함수 2. 주로 통계 관련 연산을 하는 함수들이다. 3. 그룹 함수 연산 시 NULL값은 제외한 결과를 출력한다. 숫자 관련 그룹 함수 AVG([ALL|DISTINCT] n) : 평균 SUM([ALL|DISTINCT] n) : 합계 STDDEV([ALL|DISTINCT] n) : 표준편차 VARIANCE([ALL|DISTINCT] n) : 분산 1 2 SELECT ROUND(AVG(salary)), SUM(salary), ROUND(STDDEV(salary)), ROUND(VARIANCE(salary)) FROM employees; cs 일반 그룹 함수 MIN([ALL|DISTINCT] expr) : 최소값 MAX([ALL|DISTINCT] expr) :..
[SQL] Sub Query 서브 쿼리
Sub Query 서브 쿼리 란? 1. 서브쿼리는 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문을 말한다. 2. 서브쿼리는 괄호로 감싸서 사용하는 쿼리를 말한다. 3. 주로 함수를 사용한 테이블의 결과를 사용하여 테이블을 연결시켜야 하는 경우 사용 1 2 3 4 --서브쿼리 SELECT qna_idx FROM project9.tbl_qna WHERE qna_idx = (SELECT qna_idx FROM project9.tbl_qna_reply WHERE reply_idx = 34) cs INNER JOIN 생략하기 1. FORM에 연결할 두 테이블을 작성한다. 2. JOIN의 ON대신 WHERE에 두 테이블의 공통 컬럼을 작성해 준다. 3. 간단한 쿼리의 경우 위의 쿼리와 비교하여 짧고 간단하..