본문 바로가기

SQL31

oracle SQL - 테이블 수정 ALTER ALTER TABLE 문을 사용하는 대표적인 작업 1) 새 열 추가 ADD ALTER TABLE 테이블이름 ADD (column 데이터타입[, ...]); ALTER TABLE dept200 ADD (position VARCHAR2(10)); - dept200 테이블에 VARCHAR2(10) 데이터 타입을 가진 position 열을 추가합니다. 2) 기존 열 수정 및 기본값 정의 MODIFY ALTER TABLE dept200 MODIFY position DEFAULT '사원'; ALTER TABLE dept200 MODIFY hiredate TIMESTAMP; - dept200 테이블에 position 열의 디폴트 값을 사원으로 수정합니다. - dept200 테이블에 hiredate 열의 데이터 타입을.. 2023. 5. 30.
oracle SQL - TIMESTAMP, INTERVAL 1. TIMESTAMP 관련 타입 - TIMESTAMP (세션에 상관없이 시, 분, 초까지 저장) - TIMESTAMP WITH TIME ZONE (클라이언트 시간대 기록) - TIMESTAMP WITH LOCAL TIME ZONE (시차 계산) SYSTIMESTAMP 함수는 DB 서버가 있는 지역의 현재 시간을 반환 CURRENT_TIMESTAMP 함수는 클라이언트 지역의 현재 시간 반환 ALTER SESSION SET TIME_ZONE = '+-00:00'; 위 문장을 실행하여 세션의 시간대를 바꾸면 SYSTIMESTAMP는 바뀌지 않지만 CURRENT_TIMESTAMP 함수는 영국 그리니치 천문대 기준 설정한 값보다 빠르거나(+) 느린(-) 시간대로 나옵니다. 참고 : 2번째 열부터, 주문날짜, 배.. 2023. 5. 30.
oracle SQL - 상호 관련 서브 쿼리 1. 메인 쿼리와 서브 쿼리가 서로 연관되어 실행되는 SQL입니다. 2. 상호 관련 서브 쿼리는 메인 쿼리의 모든 행에 대해 한 번씩 실행하기 때문에 처리할 데이터의 양에 따라 처리 시간이 많이 소요되어 성능 저하 가능성이 있습니다. SELECT emp_name, salary, dept_id FROM y_emp outer WHERE salary > (SELECT AVG(salary) FROM y_emp WHERE dept_id = outer.dept_id) ORDER BY 3; 사원이 속한 부서의 평균 급여보다 높게 받는 사람만 출력합니다. 송강호 사원의 급여는 송강호 사원이 속한 100번 부서의 평균 급여보다 높게 받으므로 출력합니다. 차태현 사원의 급여는 차태원 사원이 속한 100번 부서의 평균 급여.. 2023. 5. 23.
oracle SQL - MERGE 1. DML을 여러 번 하지 않고 행을 조건에 따라 UPDATE, INSERT, DELETE 할 수 있습니다. 2. 사용하기 쉽고 하나의 SQL 문장으로 처리하기 때문에 훨씬 간단합니다! 1) old_emp 테이블 2) y_emp 테이블 MERGE INTO old_emp o USING y_emp e ON (o.emp_id = e.emp_id) WHEN MATCHED THEN UPDATE SET o.emp_name = e.emp_name, o.position = e.position, o.salary = e.salary, o.dept_id = e.dept_id DELETE WHERE (e.position IS NULL) WHEN NOT MATCHED THEN INSERT VALUES(e.emp_id, e.e.. 2023. 5. 22.
oracle SQL - DELETE + 서브 쿼리 DELETE [FROM] table [WHERE 조건]; 일반적인 DELETE 문법, 조건이 없으면 테이블에 있는 모든 행을 삭제합니다. (테이블 유지) DELETE문에 서브쿼리 1. 다른 테이블의 값을 기반으로 행을 삭제합니다. DELETE FROM y_emp WHERE dept_id = (SELECT dept_id FROM y_dept WHERE dept_name like '%회계%'); 설명 : y_emp 테이블에 dept_id가 y_dept 테이블의 dept_name에 회계가 들어간 부서 번호와 같은 행만 삭제합니다. 즉 회계부에서 일하는 사원을 y_emp 테이블에서 삭제합니다. 2023. 5. 22.
oracle SQL - UPDATE + 서브쿼리 UPDATE table SET column = value[, column = value...] [WHERE = 조건]; 일반적인 UPDATE문, 여러 열을 수정시 콤마(,)로 구분합니다. UPDATE 절에 서브 쿼리 1. SET 절에서 변경할 값 대신 값을 반환할 서브 쿼리를 사용합니다. 2. UPDATE 대상 테이블과 서브 쿼리에서 사용하는 테이블이 서로 다른 경우도 허용합니다. UPDATE emp300 SET salary = (SELECT salary FROM y_emp WHERE emp_id = 1038), dept_id = (SELECT dept_id FROM y_emp WHERE emp_id = 1038) WHERE emp_id = 1087; 설명 : emp300 테이블에 emp_id가 1087.. 2023. 5. 22.