반응형
A.7 집합 연산자 사용 샘플 문제 SELECT EMPLOYEE_ID, JOB_ID FROM EMPLOYEES UNION SELECT EMPLOYEE_ID, JOB_ID FROM JOB_HISTORY 문제 1 SELECT EMPLOYEE_ID, JOB_ID, DEPARTMENT_ID FROM EMPLOYEES UNION ALL SELECT EMPLOYEE_ID, JOB_ID, DEPARTMENT_ID FROM JOB_HISTORY ORDER BY EMPLOYEE_ID ASC; 문제 2 SELECT EMPLOYEE_ID, JOB_ID FROM EMPLOYEES INTERSECT SELECT EMPLOYEE_ID, JOB_ID FROM JOB_HISTORY; 문제 2 - 계속 ??? 문제 3 SELECT E..
A 1.7 부속질의 샘플 문제 SELECT FIRST_NAME || ' ' || LAST_NAME "Name", JOB_ID, SALARY FROM EMPLOYEES WHERE SALARY > (SELECT SALARY FROM EMPLOYEES WHERE LAST_NAME = 'Tucker'); 문제 1 SELECT FIRST_NAME || ' ' || LAST_NAME "Name", JOB_ID, SALARY, HIRE_DATE FROM EMPLOYEES E1 WHERE E1.SALARY = (SELECT MIN(SALARY) FROM EMPLOYEES E2 WHERE E1.JOB_ID = E2.JOB_ID GROUP BY JOB_ID); 문제 2 SELECT FIRST_NAME || ' ' || L..
A.1 SELECT 문 문제 1 SELECT FIRST_NAME || LAST_NAME "Name", JOB_ID "Job", SALARY "Salary", SALARY*12+100 "Increased Ann_Salary", (SALARY+100)*12 "Increased Salary" FROM EMPLOYEES; 문제 2 SELECT LAST_NAME ||' : 1 Year Salary = $' ||SALARY*12 "1 Year Salary" FROM EMPLOYEES; 문제 3 SELECT DISTINCT DEPARTMENT_ID, JOB_ID FROM EMPLOYEES; A.2 데이터 제한 및 정렬 : WHERE, ORDER BY 샘플 문제 SELECT FIRST_NAME || LAST_NAME ..
9. [사원 데이터베이스] (1) 사원의 이름과 직위를 출력하시오, 단 사원의 이름은 ' 사원이름;, 직위는 '사원 직위' 머리글이 나오도록 출력한다. SELECT ENAME "사원이름", JOB "사원직위" FROM EMP; (2) 30번 부서에 근무하는 모든 사원의 이름과 급여를 출력하시오 SELECT ENAME, SAL FROM EMP WHERE DEPTNO = '30'; (3) 사원번호와 이름, 현재 급여, 증가된 급여분(열 이름은 '증가액'), 10% 인상된 급여(열 이름은 '인상된 급여')를 사원번호 순으로 출력하시오. SELECT ENAME, SAL, SAL+NVL(COMM,0) "증가액", SAL*1.1 "인상된 급여" FROM EMP ORDER BY EMPNO; (4) 'S'로 시작하는 ..
연습문제 6 다음에 해당하는 뷰를 작성하시오, 데이터는 마당서점 데이터베이스를 이용한다 (1) 판매가격이 20,000원 이상인 도서의 도서번호, 도서이름, 고객이름, 출판사, 판매가격을 보여주는 HIGHORDERS 뷰를 생성하시오. CREATE VIEW HIGHORDERS AS SELECT DISTINCT O.BOOKID, B.BOOKNAME, C.NAME, B.PUBLISHER, O.SALEPRICE FROM ORDERS O, CUSTOMER C, BOOK B WHERE O.BOOKID = B.BOOKID AND O.CUSTID = C.CUSTID; (2) 생성한 뷰를 이용하여 판매된 도서의 이름과 고객의 이름을 출력하는 SQL문을 작성하시오. SELECT BOOKNAME, NAME FROM HIGHO..
인덱스(INDEX) 인덱스는 데이터 검색을 빨리 하기 위해 사용한다. 하지만 인덱스를 사용했다고 해서 데이터 검색이 무조건 빨라지는 것은 아니다. 데이터의 양이 별로 없거나 데이터 값이 몇 종류 안되어 선택도가 높으면 인덱스가 없는 게 더 빠를 수 있다. 선택도 = '1 / 서로 다른 값의 개수' 인덱스 생성에 앞서 다음의 고려사항 인덱스는 WHERE 절에 자주 사용되는 속성이어야 한다. 인덱스는 조인에 자주 사용되는 속성이어야 한다. 단일 테이블에 인덱스가 많으면 속도가 느려질 수 있다.(테이블 당 4~5개 정도 권장) 속성이 가공되는 경우 사용하지 않는다. 속성의 선택도가 낮을 때 유리하다. 인덱스의 생성 CREATE [REVERSE] [UNIQUE] INDEX[인덱스이름] ON TABLE 이름 (컬..
뷰(VIEW) : 하나 이상의 테이블을 합하여 만든 가상의 테이블입니다. 합한다는 말은 SELECT 문을 통해 얻은 최종결과를 뜻하며, 뷰는 이러한 결과를 가상의 테이블로 정의하여 실제 테이블처럼 사용할 수 있도록 만든 데이터베이스 개체입니다. VIEW 생성 CREATE VEW VIEWNAME AS SELECT문 create view vw_customer as select * from customer where address like '%대한민국%'; VIEW 수정 CREATE OR REPLACE VIEW 뷰이름[(열이름 [,…])] AS SELECT 문 CREATE OR REPLACE VIEW VW_CUSTOMER(CUSTID, NAME, ADDRESS) AS SELECT CUSTID, NAME, AD..
부속질의 : 하나의 SQL문 안에 다른 SQL 문이 중첩된 질의 데이터가 대량일 경우 → 데이터를 모두 합쳐서 연산하는 조인보다 필요한 데이터만 찾아서 공급해 주는 부속질의가 성능이 더 좋다. 주질의 : 외부질의 부속질의 : 내부 질의 스칼라 부속질의 - SELECT 부속 질의 SELECT (SELECT NAME FROM CUSTOMER CS WHERE CS.CUSTID=OD.CUSTID) " NAME ", SUM(SALEPRICE) "TOTAL" FROM ORDERS OD GROUP BY OD.CUSTID; 인라인 뷰 - FROM 부속질의 SELECT CS.NAME, SUM(OD.SALEPRICE) "TOTAL" FROM (SELECT CUSTID, NAME FROM CUSTOMER WHERE CUSTID
NULL 값 처리 NULL은 아무 값도 없는 상태 Null != 0, (빈문자), (공백) Null값은 비교 연산자로 비교 불가능 NULL값에 대한 연산과 집계합수 불가능 ※ 주의사항 NULL + 숫자 = NULL 집계 함수 계산시 NULL이 포함된 행은 집계에서 제외 해당되는 행이 없는 경우 SUM, AVG의 결과는 NULL COUNT의 결과는 0 NULL값을 확인하는 방법 NULL값을 찾을 때 -> IS NULL NULL이 아닌 값을 찾을 때 -> IS NOT NULL SELECT * FROM MYBOOK WHERE PRICE IS NULL; NVL 함수 NVL()은 NULL 값을 다른 값으로 대치하여 연산하거나 다른 값으로 출력하는 함수다. NVL(속성 ,값) // 속성 값이 NULL이면 '값'으로..
날짜 시간 함수 날짜는 단순히 문자열로 저장하여 관리할 수도 있지만 날짜형 데이터로 저장하여 관리하면 편리하다. 날짜를 더하거나 차이를 구하는 등의 연산을 손쉽게 처리할 수 있기 때문이다. DATETIME 날짜 시간 부분을 나타내는 인수 DATETIME의 특정한 규칙 YYYY : 네자리 연도 YY : 두 자리 연도 날짜형 데이트는 -, +를 사용하여 원하는 날짜로부터 이전(-)과 이후(+)를 계산할 수 있습니다. SELECT ORDERID "주문번호", ORDERDATE "주문일", ORDERDATE+10 "확정" FROM ORDERS; TO_DATE 문자형으로 저장된 날짜를 날짜형으로 변환하는 함수 SELECT TO_DATE('2018-01-09', 'YYYY-MM-DD')+5 BEFORE, TO_DA..