목록Oracle Database (103)
hyeonga_code
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sopUl/btsrqzJFWfF/EObH0DxMjFUeEcVW5O43V1/img.jpg)
-- Advanced Subquery -- 다중 열 서브쿼리 -- 두 개 이상의 열을 비교하기 위해 논리 연산자를 사용하여 혼합 WHERE 절을 작성합니다. -- 메인쿼리의 각 행은 Multiple_row/Multiple_column 서브쿼리의 값과 비교됩니다. /* SELECT column, column.. FROM table WHERE ( column, column..) IN ( SELECT column, column.. FROM table WHERE condition ); */ -- 비교 방식 -- Pairwise_쌍 비교 -- Nonpairwise_비쌍 비교 -- 데이터의 전체 개수를 확인합니다. SELECT COUNT(*) FROM empl_demo; -- 이름이 John인 직원을 조회합니다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGkiEJ/btsrv6Gd5IJ/RVzzHf721vgqGgbiMiOp20/img.jpg)
-- Advanced DML --------------------------------------------------------------------------------------------------------- -- FLASHBACK -- RECYCLEBIN 활용 -- FLASHBACK UNDROP -- COMMIT 하기 전에 복구를 대비하여 UNDO 파일에 저장합니다. -- UNDO DATA 활용 : 관리자가 UNDO DATA에 접근할 수 있습니다. -- SELECT에서 UNDO 값을 확인합니다. -- FLASHBACK QUERY : 특정 시점을 지정해야 합니다. -- FLASHBACK VERSIONS QUERY : 시간 범위를 지정합니다. -- FLASHBACK TRANSACTION QUERY..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rYm4V/btsro7GAJiQ/UWhTkpAKeuC8bpOS2sXyRk/img.jpg)
-- Advanced DML -- MERGE_UPSERT -- 데이터베이스 테이블에서 조건에 따라 데이터를 갱신하거나 삽입하는 기능을 제공합니다. -- 해당 행이 존재하는 경우 UPDATE를 수행합니다. -- 새로운 행일 경우 INSERT를 수행합니다. -- 테이블에서 행을 갱신하면서 동시에 불필요한 행을 삭제할 수 있습니다. -- MERGE문의 구문에 포함되는 WHERE 절에 DELETE 절을 작성합니다. -- 장점 -- 성능이 향상되고 사용하기 편리합니다. -- 데이터 웨어하우징 응용 프로그램에 유용합니다. /* MERGE INTO table_name table_alias USING ( table | view | sub_query ) alias ON ( join condirion ) : MERGE 연..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bicNKu/btsrxNTABum/UiufcLUwgSWdNlbNgfpRQK/img.jpg)
-- Advanced DML -- PIVOTING INSERT -- 비관계형 데이터베이스 테이블과 같은 입력 레코드를 관계형 데이터베이스 테이블 환경 레코드로 변환하는 변형 작업을 수행합니다. -- ALL 다중 INSERT 구문을 활용하여 비관계형 테이블 열의 각 데이터를 관계형 테이블의 행으로 변환해야 합니다. -- 반복되는 행을 모두 컬럼으로 지정하게 되면 NULL 값을 가지는 컬럼이 많아지게 됩니다. -- 영수증, 거래 명세표, 세금 계산서 등 장표 구성 -- 사용할 데이터를 조회합니다. SELECT * FROM sales_source_data; -- 요일별로 데이터가 분리되어 있어 그룹 연산을 할 수 없습니다. -- 요일 속성이 반복되고 있습니다. -- 관계 데이터 테이블은 반복되는 속성을 하나로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/By3dj/btsrxMtBALb/JJhnLURWesamKkjWtEP09K/img.jpg)
-- Advanced DML -- 명시적 기본 기능 개요 -- 열 기본값이 필요한 경우 DEFAULT 키워드를 열 값으로 사용할 수 있습니다. -- ANSI 표준을 준수합니다. -- 데이터에 기본값이 적용될 위치 및 시기를 제어할 수 있습니다. -- 명시적 기본값은 INSERT, UPDATE에 사용할 수 있습니다. -- 기본값이 존재하지 않는 경우 NULL 값이 사용됩니다. ---------- -- 실습 준비 -- 직원 테이블의 입사 날짜의 기본값을 현재 날짜로 지정합니다. ALTER TABLE employees MODIFY hire_date DEFAULT sysdate; /* Table EMPLOYEES이(가) 변경되었습니다. */ -- 부서 테이블의 매니저 아이디의 기본값을 101로 지정합니다. AL..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cayewS/btsrwWwr2Ns/ehjpSQ1R40e6FTKUKPQK11/img.png)
-- PRACTICE 8 -- SET 연산자를 사용하여 업무 ID ST_CLERK을 포함하지 않는 부서의 ID를 나열 SELECT department_id FROM departments MINUS SELECT department_id FROM employees WHERE job_id='ST_CLERK'; -- SET 연산자를 사용하여 해당 지역에 부서가 없는 지역 ID와 지역 이름을 표시 SELECT country_id, country_name FROM countries MINUS SELECT l.country_id, c.country_name FROM locations l JOIN countries c ON (l.country_id=c.country_id); -- 입사 이후 현재 업무와 같은 업무를 담..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/biqrc6/btsrv5geWOk/ZhtudUCeN4gHjVZWgPHh51/img.png)
-- PRACTICE 7 -- Zlotkey와 동일한 부서에 속한 모든 사원의 이름과 입사일을 표시하는 질의를 작성하시오. Zlotkey는 결과에서제외 SELECT last_name, hire_date FROM employees WHERE department_id=( SELECT department_id FROM employees WHERE last_name='Zlotkey') AND last_name 'Zlotkey'; -- 급여가 평균 급여보다 많은 모든 사원의 사원 번호와 이름을 표시하는 질의를 작성하고 결과를 급여에 대해 오름차순으로 정렬 SELECT employee_id, last_name FROM employees WHERE salary>( SELECT AVG(salary) FROM emplo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bxoUZY/btsrv5geWK6/WirYyRZQ0gDv955kkLDNcK/img.png)
-- PRACTICE 6 -- LOCATIONS 및 COUNTRIES 테이블을 사용하여 HR 부서를 위해 모든 부서의 주소를 생성하는 query를 작성 -- 출력에 위치 ID, 주소, 구/군, 시/도 및 국가를 표시하며, NATURAL JOIN을 사용하여 결과를 생성 SELECT location_id, street_address, city, state_province, country_name FROM locations NATURAL JOIN countries; -- 모든 사원의 성, 소속 부서번호 및 부서 이름을 표시하는 query를 작성 SELECT last_name, department_id, department_name FROM employees JOIN departments USING (depar..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zqGLl/btsrwBeTeyk/dUcAk5UYRGQrOoSQCMxDP1/img.png)
-- PRACTICE 5 -- 모든 사원의 급여 최고액, 최저액, 총액 및 평균액을 표시 -- 열 레이블을 각각 Maximum, Minimum, Sum 및 Average로 지정하고 결과를 정수로 반올림하도록 작성 SELECT ROUND(MAX(salary), 0) AS "Maximum", ROUND(MIN(salary), 0) AS "Minimum", ROUND(SUM(salary), 0) AS "Sum", ROUND(AVG(salary), 0) AS "Average" FROM employees; -- 위의 질의를 수정하여 각 업무 유형(job_id)별로 급여 최고액, 최저액, 총액 및 평균액을 표시 SELECT job_id, ROUND(MAX(salary), 0) AS "Maximum", ROUND(M..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cJE26V/btsrr0NiY7d/FgatnkNPxrisUv8woXPjo0/img.png)
-- PRACTICE 4 -- 사원의 이름, 입사일 및 급여 검토일을 표시하시오. 급여 검토일은 여섯 달이 경과한 후 첫번째 월요일입니다. -- 열 레이블을 REVIEW로 지정하고 날짜는 “2020.03.31 월요일”과 같은 형식으로 표시되도록 지정 SELECT last_name, hire_date, salary, TO_CHAR(NEXT_DAY(ADD_MONTHS(hire_date, 6), '월요일'), 'YYYY-MM.DD DAY') AS review FROM employees; -- 이름, 입사일 및 업무 시작 요일을 표시하고 열 레이블을 DAY로 지정하시오. 월요일을 시작으로 해서 요일을 기준으로 결과를 정렬 SELECT last_name, hire_date, TO_CHAR(hire_date, 'D..