본문 바로가기

Programming/SQL29

[Oracle] 11. 날짜 출력 포맷 의미 표현 문자 내용 년 YYYY 4자리로 표현된 년도(1999, 2019) YY 2자리로 표현된 년도(99, 19) 앞에 두자리는 현재 년도를 이용한다 (99년은 2099년을 의미) RR 2자리로 표현된 년도(99, 19) 앞에 두가지는 현재 년도와 가장 가까운 년도(99년은 1999년을 의미) 월 MM 2자리 숫자로 표현된 월(03, 04) MONTH 영문이나 한글로 표현된 월(MARCH, 3월) MON 약자로 표현된 영문이나 한글월(MAR, 3월) ※ 한글인 경우 MONTH와 동일하다 일 DD 2자리 숫자로 표현된 일자(01, 02) DAY 영문이나 한글 요일(SUNDAY, 일요일) DY 약자로 표현된 요일(SUN, 일) 시 HH24 1시에서 24시까지 표현 HH 1시에서 12시까지 표현 정확한 표.. 2019. 4. 23.
[Oracle] 10. 다양한 날짜함수(ROUND, TRUNC, MONTH_BETWEEN, ADD_MONTHS, NEXT_DAY) ROUND 형식에 맞추어 반올림한 날짜를 반환한다 ROUND(날짜, 형식) ROUND(sysdate, 'DD') → 2019/04/23 TRUNC 형식에 맞추어 절삭한 날짜를 반환한다 TRUNC(날짜 형식) TRUNC(sysdate, 'YYYY') → 2019/01/01 MONTH_BETWEEN 두 날짜간의 기간을 월 수로 계산한다 MONTH_BETWEEN(날짜1, 날짜2) MONTH_BETWEEN('2011/07/01', '2011/08/01') → -1 MONTH_BETWEEN('2011/08/01', '2011/07/01') → 1 ADD_MONTHS 날짜에 n달을 더한 날짜를 계산하다 ADD_MONTH(날짜, n) ADD_MONTH('2011/07/01', 23) → 2013/06/01 NEXT_.. 2019. 4. 23.
[Oracle] 09. 다양한 문자함수(LOWER, UPPER, INITCAP, SUBSTER, TRIM, LPAD, RPAD, LENGTH, TRANSLATE, REPLACE) LOWER 문자열을 소문자로 변환한다 LOWER('ORACLE') → oracle UPPER 문자열을 대문자로 변환한다 UPPER('oracle') → ORACLE INITCAP 첫문자만 대문자로 변환하고 나머지는 소문자로 변환한다 INITCAP('oRaCle') → Oracle SUBSTR 문자열 내에 지정된 위치의 문자열을 반환한다 SUBSTR(문자열, 시작위치, 출력문자의 갯수) SUBSTR('oracle', 1, 2) → or TRIM 접두어나 접미어를 잘라낸다 TRIM([leading|trailing|both]) 제외문자 FROM 문자열 제외문자를 지정하지 않으면 공백문자를 잘라낸다 TRIM('o' FROM 'oracle') → racle LPAD, RPAD 지정된 문자열의 길이만큼 빈 부분에 .. 2019. 4. 23.
[Oracle] 08. 다양한 숫자함수(ROUND, TRUNC, MOD, POWER, CELL, FLOOR, ABS, SQRT, SIGN) ROUND n자리까지 반올림한다 ROUND(m,n) ROUND(123.456, 3) → 123.456 TRUNC n자리 미만을 절삭한다 TRUNC(m,n) TRUNC(123.4567, 3) → 123.456 MOD m을 n으로 나눈 나머지 계산한다 MOD(m,n) MOD(10,4) → 2 POWER m의 n승을 계산한다 POWER(m,n) POWER(2,4) → 16 CELL m보다 큰 가장 작은 정수를 찾는다 CELL(m) CELL(3.34) → 4 FLOOR m보다 작은 가장 큰 정수를 찾는다 FLOOR(m) FLOOR(2.34) → 2 ABS m의 절대값을 계산한다 ABS(m) ABS(-4) → 4 SQRT m의 제곱근을 계산한다 SQRT(m) SQRT(9) → 3 SIGN m이 음수일 때 -1, .. 2019. 4. 23.
[Oracle] 07. Using, On, 등가 조인과 비등가 조인 Using 2개의 다른 테이블을 조인 할 때 2개의 테이블이 공통적으로 가지고 있는 컬럼을 조인조건으로 조인을 수행한다. 그런데 만약 이름과 타입이 모두 같지만 내용은 전혀 다른 컬럼이 존재한다면 어떻게 될까? 예를들어 dept 테이블과 emp 테이블에 동일하게 VACHAR2 타입을 갖는 name이라는 컬럼이 있다. 그러나 이 컬럼의 내용은 각각 부서이름과 직원이름으로 전혀 다른 내용을 가지고 있는 컬럼이다. 여기서 일반적인 조인조건을 하게 되면, 물론 원하는 결과를 얻을 수 없다. 이 때 정확한 조인을 위해 사용하는 것이 Using절이다. SELECT 컬럼,... FROM 테이블1 JOIN 테이블2 USING (조인_컬럼) JOIN 테이블3 USING (조인_컬럼)... // Using절을 이용해 화학.. 2019. 4. 22.
[Oracle] 06. 자기참조조인(Self Join), 외부조인(Outer Join), 자연조인(Natural Join) 자기 참조 조인(Self Join) 동일한 테이블에 다른 별명을 붙여 마치 여러 개의 테이블 간에 조인하는 것처럼 만들어, 자기 자신을 참조하는 조인 방법. 테이블에 반드시 별명을 붙여야 함으로 '별명을 이용한 조인'이라고 부른다. 예제1) 사원을 관리하는 관리자 검색 각 사원을 담당하는 관리자가 존재하는데, 그 관리자는 사원의 담당자이자 동시에 회사의 입장에서는 하나의 사원임으로 사원 테이블에서 자기 참조를 이용해 검색할 수 있다. SELECT e1.eno 사번, e1.ename 이름, e2.ename 관리자 FROM emp4 e1, emp4 e2 WHERE e1.mgr = e2.eno; 예제2) 학생 중 동명이인 검색 같은 학생 테이블 안에서 이름은 같으나 학번은 다른 학생을 검색해야 하므로 학생 테.. 2019. 4. 22.
[Oracle] 05. 잘못된 조인 문장 예(카티션 프로덕트, 테이블 별명 누락) 분산된 테이블로부터 필요한 정보를 가져오는 조인을 수행할 때는 반드시 '조인 조건'이 있어야 한다. 조인조건이 없는 조인 문장은 교차 조인이 되어 모든 행이 1:1로 대응(카티션 프로덕트: Cartisian Product)되는 행렬이 검색된다. 이는 잘못된 결과값이다. // 조인 조건이 없는 교차 조인을 수행한 예시 SELECT loc 근무지, eno 사번, ename 사원명, d.dno 부서번호, dname 부서명 FROM emp e, dept d FROM절을 쓸때는 테이블 명 뒤에 별명(약자)을 붙혀서 보다 간결한 쿼리를 짤 수 있는데, FROM emp e, dept d; 라고 하면 '지금부터 emp를 e라고 부를거야~'라고 한다는 의미이다. 따라서 SELECT, WHERE절에서도 별명으로 해당 테이.. 2019. 4. 19.
[Oracle] 04. 다양한 연산자(AND, OR, NOT, LIKE, BETWEEN, IN) 관계 연산자 (AND, OR, NOT) 관계 연산자는 WHERE절에서 여러 개의 조건(AND, OR, NOT)을 동시에 이용할 때 사용된다. 복잡한 관계연산은 예상치 못한 결과를 발생시킬 수 있다. 그러므로 두 개 이상의 관계 연산을 이용할 때는 반드시 괄호를 이용해 연산의 우선순위를 SQL 작성자가 직접 결정해야 한다. 우선순위는 NOT > AND > OR 이다. //20번 부서 사원 중에 급여가 1500이상이고 개발 업무를 담당하는 사원과, //급여가 3000이상인 사원을 검색한다. SELECT * FROM emp WHERE (dno=20 AND sal >= 1500 AND job='개발') OR (sal >= 3000); LIKE 연산자 (WHERE 컬럼 LIKE '비교 문자열') WHERE절에 사.. 2019. 4. 18.
[Oracle] 03. 자주 쓰는 자료형(DataType) 문자 타입 VARCHAR2(n) : 가변길이 문자 타입(1 2019. 4. 18.