[ 서브쿼리 (SUBQUERY) ] 다른 쿼리 내부에 포함되어 있는 SELECT문을 말한다. 서브쿼리는 괄호() 로 묶어서 표현한다. 서브쿼리 실행 후 메인쿼리를 실행한다. 서브쿼리는 단일 행 연산자(=, >=)와 다중 행 연산자(IN, NOT IN, ANY, EXISTS 등)들을 사용하여 표현한다. 메인쿼리와 서브쿼리 메인쿼리 = 부모쿼리 = 외부쿼리(outer query) 서브쿼리 = 자식쿼리 = 내부쿼리(inner query) SELECT FROM WHERE 조건식 연산자 (SELECT FROM WHERE); 장점 1. 쿼리의 구조화를 통한 가독성 상승 2. 복잡한 JOIN, UNION과 같은 동작을 수행할 수 있는 또 다른 방법을 제공 서브쿼리를 사용 가능 한 곳 MySQL에서 서브쿼리를 포함할..
[ JOIN ] 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해준다. 관계형 데이터베이스(Relation Database)에서 가장 많이 쓰인다. 특징 조인하는 테이블에는 같은 값을 가진 컬럼이 필요하다. 세 개 이상의 테이블도 조인이 가능하다. 조인할 때 테이블에 대한 별칭이 필요하다. 조인 컬럼을 비교하는 조건이 필요하다. INNER JOIN 조인하는 테이블의 ON 절의 조건이 만족하는 데이터만 가져온다. MySQL에서는 JOIN, INNER JOIN, CROSS JOIN이 같은 의미로 사용된다. 조인 관계에 부합되는 레코드를 모두 가지며, 조인에 부합되지 않는 레코드는 모두 삭제된다. SELECT E.EMPNO, E.ENAME, D.DNAME FRO..
집계함수 NULL값은 집계하지 않는다. 함수 설명 MAX 최대값 MIN 최소값 SUM 합계 AVG 평균 COUNT 개수 Oracle의 EMP 테이블로 사용해보자. 혹시 없다면 해당 링크에서 데이터를 추가하기 바란다. SELECT MAX(SAL) FROM EMP; SELECT MIN(SAL) FROM EMP; SELECT SUM(SAL) FROM EMP; SELECT TRUNCATE(AVG(SAL), 2) FROM EMP; SELECT COUNT(COMM) FROM EMP; >> 5000 / 800 / 29025 / 2073.21 / 4 그룹화(GROUP BY) 유형별 개수를 알고 싶을 때 데이터의 그룹화를 위해 사용하는 절이다. WHERE절과 ORDER BY절 사이에 위치해야 한다. 사용하기 -- 기본 ..
제어 흐름 함수 프로그램의 흐름을 제어할 때 사용한다. IF IF(expr1, expr2, expr3) : expr1이 참이면 expr2, 거짓이면 expr3을 반환한다. SELECT IF(100>100, '정답', '오답'); >> 오답 IFNULL IFNULL(expr1, expr2) : expr1이 NULL이면 expr2, NULL이 아니면 expr1을 반환한다. SELECT IFNULL(NULL, 2313); SELECT IFNULL(2313, 2); >> 2313 / 2 NULLIF NULLIF(expr1, expr2) : expr1=expr2이면 NULL, 아니면 expr1을 반환한다. SELECT NULLIF(1, 2); SELECT NULLIF(1, NULLIF(1,2)); >> 1 / N..
형 변환 CAST / CONVERT 함수를 사용하여 데이터 형 변환이 가능하다. SELECT로 검색 또는 INSERT, UPDATE로 필드에 값을 넣을 때 설정한 데이터타입에 맞춰 데이터를 넣어야 하는 경우 형변환 함수를 사용한다. 사용법 CAST(지정값 AS type) CONVERT(지정값, type) 사용하기 -- 숫자를 문자로 SELECT CAST(972 AS CHAR); SELECT CONVERT(972, CHAR); 결과 : 972 -- DECIMAL 활용 SELECT CAST('-100' AS DECIMAL(5,3)); SELECT CONVERT('-100', DECIMAL(5,3)); 결과 : -99.999 -- 날짜형 데이터타입을 SIGNED 타입으로 SELECT CAST(NOW() AS ..
날짜, 시간관련 함수 함수 설명 CURDATE CURRENT_DATE YYYY-MM-DD CURTIME CURRENT_TIME HH:mm:SS NOW CURRENT_TIMESTAMP YYYY-MM-DD HH:mm:SS DAYNAME 해당 날짜의 요일 이름을 영어로 리턴 MONTHNAME 해당 월의 요일 이름을 영어로 리턴 DAY 몇 일인지 리턴 MONTH 몇 월인지 리턴 (1 ~ 12) YEAR 년도를 리턴한다 (1000 ~ 9999) DAYOFWEEK 한 주의 몇 번째 일인지 리턴 (일요일 : 1 ~ 토요일 : 7) DAYOFMONTH 한 달의 몇 번째 일인지 리턴 DAYOFYEAR 한 해의 몇 번째 일인지 리턴 WEEKOFYEAR 한 해의 몇번 째 주인지 리턴 YEARWEEK YYYY와 한 해의 몇번..
문자열 함수 함수 설명 LENGTH 문자열의 BYTES 길이(한글은 3BYTES 취급) CHAR_LENGTH 문자열의 순수 길이 CONCAT 문자열을 이어서 반환 CONCAT_WS 문자열을 지정한 구분자와 함께 이어서 반환 FORMAT(NUM, N) NUM의 세 자리마다 ','을 추가하고 소수점 N번 째 자리수까지 표시 INSTR 기준 문자에서 해당 문자열을 찾아 시작 위치 반환, 없으면 0을 반환 LOCATE (POSITION) INSTR과 매개 변수 순서만 반대 해당 문자열을 기준 문자에서 찾아 시작 위치 반환, 없으면 0을 반환 LOWER(LCASE) UPPER(UCASE) 대문자를 소문자로 소문자를 대문자로 LPAD / RPAD 지정한 길이만큼 문자를 늘리고 늘린 공간을 채울 문자열 반환 TRIM..
숫자형 함수 함수 설명 ABS 절대값 CEIL 올림 FLOOR 버림 ROUND 반올림 TRUNCATE 소수점 자리수 버림 POW(X, Y) X의 Y승 SQRT 제곱근(루트) MOD 나머지 반환 RAND 0~1 사이의 난수 SIGN 0보다 크면 1, 0이면 0, 0보다 작으면 -1을 반환 GREATEST 가장 큰 수 LEAST 가장 작은 수 SELECT ABS(-3); 결과 : 3 SELECT CEIL(10); SELECT CEIL(10.1); SELECT CEIL(-10.1); 결과 : 10 / 10.1 / -10 SELECT FLOOR(10); SELECT FLOOR(10.9); SELECT FLOOR(-10.9); 결과 : 10 / 10 / -11 -- ROUND(A, B) : A를 소수점 B자리까지..