Oracle 55

201102

상위부서가 90번인 부서에 속한 모든 직원들의 급여를 자기가 속한 부서의 평균급여로 변경하시오 >>UPDATE문이 필요함 ** 60,70,200,110 부서에 소속된 직원들의 급여 UPDATE EMPLOYEES A SET A.SALARY=(SELECT B.SAVG FROM (SELECT C.DEPARTMENT_ID DID, ROUND(AVG(C.SALARY)) SAVG FROM EMPLOYEES C, DEPARTMENTS D WHERE D.PARENT_ID=90 AND C.DEPARTMENT_ID=D.DEPARTMENT_ID GROUP BY C.DEPARTMENT_ID) B WHERE A.DEPARTMENT_ID=B.DID); UPDATE문에 WHERE절이 없으면 다 업데이트하겠다는 소리 롤백시키고, W..

Oracle 2020.11.02

201102

EX 부서테이블에서 상위부서가 null인 부서에 속한 직원 수를 조회하시오 (최종적으로나타내줘야할 메인쿼리, 중간에나와야하는게 서브쿼리) 문제를 보면 서브쿼리랑 메인쿼리에서 처리해야하는일을 구별해야한다. SELECT COUNT(*) AS 직원수 FROM EMPLOYEES WHERE DEPARTMENT_ID = ( 상위부서가 NULL인부서) 서브쿼리 - 상위브서가 NULL인 부서코드 SELECT DEPARTMENT_ID FROM DEPARTMENTS WHERE PARENT_ID IS NULL 결합시켜보자 SELECT COUNT(*) AS 직원수 FROM EMPLOYEES WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID FROM DEPARTMENTS WHERE PARENT_ID..

Oracle 2020.11.02

테스트2

--1) 상품테이블에서 상품코드, 상품명, 분류명을 조회. -- 가. 기본형식 -- 나. ANSI형식 SELECT A.PROD_ID 상품코드, A.PROD_NAME 상품명, B.LPROD_NM 분류명 FROM PROD A INNER JOIN LPROD B ON (A.PROD_LGU=B.LPROD_GU); --2) 상품테이블에서 상품코드, 상품명, 분류명, 거래처 명을 조회 --가. 테이블명 사용 -- 나. Alias 사용 -- 다. ANSI형식 SELECT PROD_ID 상품코드, PROD_NAME 상품명, B.LPROD_NM 분류명, C.BUYER_NAME 거래처명 FROM PROD A INNER JOIN LPROD B ON (A.PROD_LGU=B.LPROD_GU) INNER JOIN BUYER C ..

Oracle 2020.10.30

테스트

--31) 회원테이블의 회원ID를 대문자로 변환하여 검색(Alias명은 변환 전ID, 변환 후ID ) SELECT MEM_ID 변환전ID, UPPER(MEM_ID) 변환후ID FROM MEMBER; --32) 회원테이블의 성씨 조회 SELECT SUBSTR(MEM_NAME,1,1) 성씨 FROM MEMBER; --33) 상품테이블의 상품명의 4째 자리부터 2글자가 '칼라' 인 상품의 상품코드, 상품명을 검색( Alias명은 상품코드, 상품명 ) SELECT PROD_ID 상품코드, PROD_NAME 상품명 FROM PROD WHERE SUBSTR(PROD_NAME,4,2)='칼라'; --34) 상품테이블의 상품코드에서 왼쪽4자리, 오른쪽6자리를 검색 SELECT PROD_ID 상품코드, SUBSTR(PR..

Oracle 2020.10.30

201027 SUB_QUERY

- 최종목적을 위해서 중간계산결과값이 필요할 때 - 쿼리안에 포함된 또다른 쿼리를 서브쿼리라고 한다. - JOIN의 수를 감소시킴 - 서브쿼리는 '( )'안에 기술하며(INSERT문에 섭쿼리사용될때의 예외제외하고), 중첩사용이 가능하다 - 서브쿼리가 연산자와 함께 사용될 경우 연산자 우측에 기술해야 함 - 서브쿼리는 사용되는 위치에 따라 SELECT절, WHERE절에 사용되면 일반서브쿼리, FROM절에 사용되면 IN-LINE 서브쿼리라 하며, 인라인 서브쿼리는 독립실행이 가능해야 한다. - 반환하는 행과 열의 수에 따라 단일행/ 단일열, 단일 행/다중열, 다중행/단일열, 다중행/다중열 서브쿼리로 구분되며, * 단일행 : =, !=, >, = , = (SELECT ROUND(AVG(SALARY)) FROM..

Oracle 2020.10.27

201027

예 전체 상품에 대해서 2005년 1월 입고수량을 조회하시오 (상품별 입고수량이란 말임..전체상품이니까 매입안된상품에 대해서도 입고수량이 몇개인지도 나와야함.. >> GROUP BY(상품별) OUTER JOIN (전체상품) ANSI조인(일반조건포함) Alias는 상품코드, 상품명, 입고수량 OUTER JOIN시 조심해야할것! 일반조건이 부여되어있는 경우 OUTER JOIN의 정확한 결과를 얻을 수 없음 이럴땐 ANSI JOIN이나 서브쿼리를 이용해야함 SELECT A.PROD_ID 상품코드, A.PROD_NAME 상품명, SUM(B.BUY_QTY) 입고수량 FROM PROD A, BUYPROD B WHERE B.BUY_DATE BETWEEN TO_DATE('20050101') AND TO_DATE('20..

Oracle 2020.10.27

201026 외부조인(OUTER JOIN)

90%이상을 동등조인을 쓰지만 OUTER JOIN도 알고 있어야함 아까 부서코드가 한쪽에 없으면 무시했는데, 무시하지않는조인이 외부조인이다. 4. 외부조인 (OUTER JOIN) - 조인에 참여하는 테이블에 자료의 종류(갯수가 아님)가 부족한 경우 (조인조건을 만족하지 않은 경우) 내부조인은 결과에 포함시키지 않지만 - 외부조인은 부족한 테이블에 NULL행을 삽입하여 양쪽 테이블의 행개수를 일치시키고 조인을 수행 - '모든', '전부'와 같은 수식어가 사용된 경우 - SELECT절에 사용되는 컬럼은 자료가 많은 테이블의 컬럼을 사용 (양쪽 모두에 똑같은 컬럼이 존재할때) *사원테이블이 107행으로 부서테이블(27)보다 훨 많지만 부서종류로 치면 부서테이블이 27가지 사원은 12개임 더많은쪽이 부서테이블임..

Oracle 2020.10.26

201026 세미조인

- 서브쿼리(쿼리안의 쿼리)를 사용하여 서브쿼리의 결과에 존재하는 자료와 메인쿼리에 사용된 테이블 간의 조인 - 사용되는 연산자가 in, any, some, all, exists 연산자 사용 -서브쿼리는 위의 연산자들 오른쪽에만 나온다. EX 사원테이블에서 급여가 5000이상인 사원이 근무하는 부서코드와 부서명을 출력하시오 (세미조인을 사용하지 않는 경우) SELECT DISTINCT A.DEPARTMENT_ID 부서코드, A.DEPARTMENT_NAME 부서명 FROM DEPARTMENTS A, EMPLOYEES B WHERE B.SALARY>=5000 AND B.DEPARTMENT_ID = A.DEPARTMENT_ID ORDER BY 1; 이렇게 서로 맞지않는 조건은 전부 무시해버리는 것이 내부조인!..

Oracle 2020.10.26

201023 SELF JOIN

하나의 테이블을 두 개 이상의 테이블인 것처럼 가정하여 조인 (테이블 별칭을 서로 다르게 부여해서 다른테이블인것처럼) EX 회원번호 'j001'회원과 같은 지역에 거주하는 회원정보를 조회하시오 Alias는 회원번호, 회원명, 주소 SELECT B.MEM_ID 회원번호, B.MEM_NAME 회원명, B.MEM_ADD1 ||' '||B.MEM_ADD2 주소 FROM MEMBER A, MEMBER B WHERE UPPER(A.MEM_ID) = 'J001' AND SUBSTR(A.MEM_ADD1,1,2)=SUBSTR(B.MEM_ADD1,1,2) AND UPPER(B.MEM_ID) 'J001'; MEMBER A 는 j001 회원의 거주지 정보를 알기 위한 테이블 MBMBER B 는 j001회원을 제외한 회원 중 ..

Oracle 2020.10.23

201023 ANSI JOIN

1. ANSI 내부조인 - DBMS에 관계없이 모든 플랫폼에서 수행가능 * 사용형식 SELECT 컬럼list FROM 테이블명1 INNER JOIN 테이블명2 ON (조인조건1 [AND 일반조건1]) INNER JOIN 테이블명3 ON (조인조건2 [AND 일반조건2]) [WHERE 일반조건n]; - 일반조건1은 테이블명1과 테이블명2에 부여되는 조건 - 일반조건2는 테이블명1와 테이블명2의 조인결과와 테이블명 3에 부여되는 조건 그니까 조인조건1에 A=B 쓰고 조인조건 2에 B=C가 가능한거임 이미 A와B는 조인됐으니까 - WHERE 일반조건n은 모든 테이블에 연관된 조인 조건 - 연산방식은 테이블명 1과 테이블명 2가 조인연산되고 난 후 테이블명3와 위의 결과와 조인 일반조인은 FROM다음에 테이블명..

Oracle 2020.10.23
반응형