728x90
반응형
SMALL

Data Base/Oracle SQL 38

23.10.17. Oracle SQL 집합연산자 UNION(합집합), UNION ALL(합집합), INTERSECT(교집합), MINUS(차집합)

■ 집합 연산자 UNION(합집합), UNION ALL(합집합), INTERSECT(교집합), MINUS(차집합) a. SELECT 절의 컬럼의 갯수가 일치해야 한다. b. 첫 번째 SELECT 절의 대응되는 두 번째 SELECT 절 컬럼의 데이터 타입이 일치해야 한다. c. UNION, INTERSECT, MINUS 연산자는 중복을 제거한다.(먼저, 내부적으로 정렬이 발생한다.) d. UNION ALL 은 중복되는 데이터도 포함하기 때문에 내부적으로 정렬이 발생하지 않는다. e. 집합 연산자에서 ORDER BY 절은 제일 마지막에 작성해야 한다. f. ORDER BY 절에는 '첫 번째 SELECT 절'의 컬럼명, 별칭, 위치표기법을 사용한다. A. 합집합 a. UNION : 중복제거 + 내부적 정렬 b..

23.10.16. Oracle SQL PIVOT, UNPIVOT, 다중열 서브쿼리(비쌍비교 VS 쌍비교), SCALAR SUBQUERY(스칼라 서브쿼리)

■ PIVOT (그룹함수 for 컬럼명 in (컬럼명1, 컬럼명2, 컬럼명3, ... 컬럼명n as "별칭")) a. 행(세로) 데이터를 열(가로)로 변경하는 함수 SELECT department_id, COUNT(*) cnt FROM hr.employees GROUP BY department_id; SELECT * FROM ( SELECT department_id FROM hr.employees ) PIVOT ( COUNT(*) FOR department_id IN(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, null as "소속사원이 없는 부서") ); SELECT * FROM ( SELECT department_id, COUNT(*) cnt FROM hr.emp..

23.10.13. Oracle SQL IN, ANY, ALL

■ 여러행 서브쿼리 a. 서브쿼리 결과가 여러개의 값이 나오는 서브쿼리 b. 여러행 비교연산자(IN, ANY, ALL) SELECT * FROM hr.employees WHERE salary IN ( SELECT min(salary) FROM hr.employees GROUP BY department_id ); SELECT * FROM hr.employees WHERE salary > ( --오류발생: 단일행 비교연산자 SELECT salary FROM hr.employees WHERE job_id = 'IT_PROG' ); ★1. ANY a. ANY 의 의미 OR 범주를 가지고 있다. b. (단일 비교연산자) ANY 1. > ANY : '최소값보다 크다' 의미 SELECT * FROM hr.employ..

23.10.13. Oracle SQL SUBQUERY(서브쿼리)

110번 사원의 급여보다 더 많이 급여를 받는 사원을 출력해주세요 SELECT * FROM hr.employees WHERE salary > 110번 사원의 급여; 방법1) SELECT salary FROM hr.employees WHERE employee_id = 110 ; 방법2) 110번 사원의 급여 = 8200 SELECT * FROM hr.employees WHERE salary > 8200; 방법 1 과 방법 2 를 합치면 질문의 답이 나온다. SELECT * FROM hr.employees WHERE salary > ( -- 서브쿼리문 SELECT salary FROM hr.employees WHERE employee_id = 110 ); ■ SUBQUERY(서브쿼리) a. SQL 문 안에 ..

23.10.12. Oracle SQL JOIN ②

■ ANSI(American National Standards Institue)-SQL(Strutured Query Language) join 문법 A. cartesian product SELECT employee_id, last_name, department_name FROM hr.employees CROSS JOIN hr.departments; B. natural join a. equi join b. 조인조건술어를 자동으로 만들어준다. c. 양쪽 테이블 '(쓰임이 달라도)동일한 이름의 모든 컬럼'을 기준으로 조인조건술어를 만든다. - 동일한 이름의 컬럼이 1개 있을 경우에 쓰는게 좋다. d. 양쪽 테이블의 동일한 이름의 컬럼이 '데이터 타입이 틀릴 경우', 오류 발생한다. SELECT e.employ..

23.10.12. Oracle SQL JOIN ①

■ JOIN A. 두 개이상의 테이블에서 원하는 테이블를 가지고 오는 방법 SELECT employee_id, last_name, department_id FROM hr.employees; SELECT department_id, department_name FROM hr.departments; 1) Cartesian Product a. 조인 조건이 생략되었을 경우 b. 조인 조건이 잘못 만든 겨우 c. 첫 번째 테이블의 행의 수와 두 번째 테이블 행의 수가 곱해진다. SELECT employee_id, last_name, department_name FROM hr.employees, hr.departments; 2) EQUI JOIN, INNER JOIN, SIMPLE JOIN, 등가조인 a. 조인 ke..

23.10.11. Oracle SQL 그룹 함수

■ 그룹함수 - 여러행 당 하나의 결과를 반환하는 함수 - SUM(합계), AVG(평균; 이상값, 이상치데이터), MEDIAN(중앙값=대표값), VARIANCE(분산, 집계 함수), STDDEV(표준편차), MAX(최대값), MIN(최솟값), COUNT(집계) - 그룹함수에 입력하는 값이 '숫자형'만 입력해야 하는 그룹함수 : SUM, AVG, MEDIAN, VARIANCE, STDDEV - 그룹함수에 입력하는 값이 '모든 타입'이 가능한 그룹함수 : MAX, MIN, COUNT - 그룹함수는 NULL 을 포함하지 않는다. (단, COUNT(*) 만 NULL 포함한 행수를 구한다.) 1) COUNT : 행의 수를 구하는 함수 SELECT count(*) --null 포함 FROM hr.employees;..

23.10.11. Oracle SQL 조건제어문

■ 조건제어문 - SQL문에서 IF문을 사용해서 조건제어문을 수행 할 수 없다. - CASE 표현식, DECODE 함수 사용. IF문 ① IF 기준값 = 비교값 THEN 참값 ELSE 거짓값 END IF; ② IF 기준값 = 비교값 THEN 참값1 ELSE IF 기준값 = 비교값2 THEN 참값2 ELSE IF 기준값 = 비교값3 THEN 참값3 ... ELSE 기본값 END IF; - DECODE 함수는 기준값과 비교값을 내부적으로 같다(=)라는 비교연산자를 사용한다. IF 기준값 = 비교값 THEN 참값 /*FALSE 면 NULL 로 리턴한다.*/ ELSE 거짓값 END IF; - DECODE(기준값, 비교값, 참값) : FALSE 면 NULL 로 리턴한다. - DECODE(기준값, 비교값, 참값, ..

23.10.11. Oracle SQL NULL, NVL, NVL2, COALESCE, NULLIF

■ NULL - null 은 사용할 수 없거나, 할당되지 않았거나, 알 수 없거나 적용할 수 없는 값, 계산할 수 없다. 결측값(치) - null 0, 공백 아니다. SELECT employee_id, salary, commission_pct, ((salary * 12) + (salary * 12 * commission_pct))annual_salary FROM hr.employees; ■ NVL - null 값을 실제값으로 리턴하는 함수 - nvl(컬럼명, 실제값), nvl(인수, 인수) - nvl 함수 사용시에 두 인수의 타입이 일치해야 한다. SELECT employee_id, salary, commission_pct, ((salary * 12) + (salary * 12 * commission_p..

23.10.10. Oracle SQL 형변환 함수

■ 형변환 함수 - to_char : date(날짜형)을 char(문자형)으로 변환하는 함수 - to_char(날짜, '날짜모델요소') SELECT * FROM nls_session_parameters; SELECT sysdate , to_char(sysdate, 'yyyymmdd'), to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss.sssss') , to_char(sysdate + 100, 'yyyy-mm-dd hh24:mi:ss.sssss') , to_char(sysdate - 100, 'yyyy-mm-dd hh24:mi:ss.sssss') FROM dual; SELECT sysdate , to_char(sysdate, 'yyyy yy rr rrrr year'), to_char..

728x90
반응형
LIST