Data Base_Oracle/SQL
-
SQL 복합 VIEW 생성Data Base_Oracle/SQL 2020. 1. 9. 00:12
복합 VIEW 하나 이상의 테이블로 만들어진 뷰 Sub Query, JOIN 사용 복합 VIEW 생성 § 형식 [ SQL> create view view명 as SQL JOIN 구문; ] # 예제 ▷ emp, dept 테이블을 기본테이블로 하고 이름에 A가 들어가는 사원의 사원명과 부서명을 조회하는 뷰(v_dname) 작성 ▶ [ SQL> create view v_dname as select ename, dname from emp e, dept d where e.deptno=d.deptno and e.ename like '%A%'; 뷰가 생성되었습니다. select * from v_dname; ] ENAME DNAME ALLEN SALES WARD SALES ... ... 복합 VIEW의 생성은 JOIN..
-
SQL 단순 VIEW_그룹 함수 사용Data Base_Oracle/SQL 2020. 1. 9. 00:05
단순 VIEW에서의 그룹 함수 사용 단순 VIEW에서 그룹함수를 사용하기 위해서는 그룹함수가 실제 필드가 아닌 가상 필드이기 때문에 반드시 그룹함수에 별칭을 지정해야 함 # 예제 { 문제 } ▷ 부서번호와 부서별 최대급여를 조회할 수 있는 뷰(v_maxsal) 작성 { 에러 } ▶ [ SQL> create view v_maxsal as select deptno, max(sal) from emp group by deptno; 1행에 오류: ORA-00998: 이 식은 열의 별명과 함께 지정해야 합니다 ] ※ 그룹함수에 별명을 지정하지 않아서 발생하는 에러 { 풀이 } ▶▶ [ SQL> create view v_maxsal as select deptno, max(sal) 최대급여 from emp group ..
-
SQL 단순 VIEW 수정 & 삭제Data Base_Oracle/SQL 2020. 1. 9. 00:01
단순 VIEW 수정 DML을 사용하여 VIEW의 내용을 수정 VIEW의 레코드를 수정하면 VIEW가 참조한 기본 테이블의 레코드도 수정됨 UPDATE § 형식 [ SQL> update 수정view명 set 수정 필드명 = 수정 값,,,, where 조건식; ] # 예제 ▷ 부서번호가 30인 사원의 이름, 급여, 부서번호만 보여주는 뷰 작성 ▶ [ SQL> create view view_30 as select ename, sal, deptno from emp where deptno=30; ] ENAME SAL DEPTNO ALLEN 1600 30 WARD 1250 30 ... ... ... ▷ ALLEN의 급여를 1600에서 0으로 감봉 ▶ [ SQL> update view_30 set sal = 0 wh..
-
SQL 단순 VIEW 검색 & VIEW가 실행되지 않는 경우Data Base_Oracle/SQL 2020. 1. 8. 23:53
단순 VIEW 실행_검색 § 형식 [ SQL> select ,,,, from 뷰이름 where 조건식 ,,,, ; ] # 예제 ▷ emp 테이블에서 20번 부서에 근무하는 사원의 사번, 이름, 업무를 검색할 수 있는 v_emp20 뷰 조회 ▶ [ SQL> select * from v_emp20; ] EMPNO ENAME JOB 7369 SMITH CLERK 7566 JONES MANAGER ... ... ... ※ VIEW가 실행되지 않는 경우 VIEW를 만들 때 참조한 기본테이블의 구조에 문제가 발생했을 때 ▷ b_emp3 테이블에서 이름이 A로 시작하는 사원의 사원번호, 이름을 갖는 VIEW생성 [ SQL> create view emp_name as select empno,ename from b_em..
-
SQL 단순 VIEW 생성Data Base_Oracle/SQL 2020. 1. 8. 23:45
단순 VIEW 생성 § 형식 [ SQL> create view view명 as SQL 구문 ; ] # 에러 ▷ emp 테이블에서 20번 부서에 근무하는 사원의 정보를 검색할 수 있는 View 생성 ▶ [ SQL> create view v_emp20 as select empno, ename, job from b_emp3 where deptno=20; 1행에 오류: ORA-01031: 권한이 불충분합니다 ] ※ view를 생성하기 위해서는 create view권한이 필요하기 때문에 발생하는 에러 → Oracle 버전에 따라 다름 10g까지는 권한이 없어도 가능했지만 11g부터는 권한이 필요함 ▶ 에러 해결 - 권한 부여 관리자가 해당 계정에 create view 권한을 부여하면 됨 [ SQL> conn sy..
-
SQL_VIEW 개요 & USER_VIEWSData Base_Oracle/SQL 2020. 1. 8. 23:40
VIEW 개요 실제 존재하는 테이블이 아닌 가상 테이블 실제 테이블에 저장된 데이터로 결과를 출력할 수 있음 저장공간이 따로 필요 없음 텍스트로 저장 VIEW 사용 목적 편리성 추구 복잡한 SQL구문을 쉽게 실행할 수 있음 ex) 자주 사용하는 테이블을 뷰로 만들어두면 편리하게 사용 가능, SQL Plus의 save 대신 사용하기도 함 보안 추구 직접적인 테이블 접근을 제한함 ex) 급여, 보너스 등의 민감한 데이터를 제외한 자료들만 보여줄 때 사용 VIEW 종류 단순 VIEW DML 사용 목적 하나의 테이블로 만들어진 뷰 DML(insert, update, delete) 사용 가능 그룹함수 사용 불가 → 별칭을 지정하면 사용 가능 DISTINCT 사용 불가 ※ 단순 VIEW는 DML 사용 목적이기 때문..
-
SQL 집합 연산자Data Base_Oracle/SQL 2020. 1. 8. 23:30
집합 연산자 서로 다른 두 개의 SQL문장의 실행결과를 하나로 합쳐서 보여줄 수 있게 하는 연산자 종류 설명 union 합집합, 중복을 제거한 결과의 합을 검색 union all 합집합, 중복을 포함한 결과의 합을 검색 intersect 교집합, 양쪽 모두에서 포함된 행을 검색 minus 차집합, 첫 번째 검색 결과에서 두 번째 검색 결과를 제외한 나머지를 검색 ※ 두 SQL문장의 select ~ from 사이에 나오는 필드 개수와 자료형이 같아야 함 테이블과 필드명은 다를 수 있음 # 예제 { 문제 1 } ▷ emp 테이블에서 업무가 MANAGER인 사원의 사번, 이름 출력 ▶ [ SQL> select empno, ename from emp where job='MANAGER'; ] EMPNO ENAME..
-
SQL_ROLLBACKData Base_Oracle/SQL 2020. 1. 8. 23:21
ROLLBACK_수정 내역 취소 DML(Insert, Update, Delete)만 복구 할 수 있으며 항상 가능한 건 아니기 때문에 백업테이블을 사용하는 것이 가장 좋음 § 형식 [ SQL> rollback; ] # 예제 ▷ b_emp3 테이블에서 부서명이 'SALES'인 부서번호를 갖고 있는 사원의 정보를 삭제 [ SQL> delete from b_emp3 where deptno=(select deptno from dept where dname='SALES'); 6 행이 삭제되었습니다. select count(*) from b_emp3; ] COUNT( * ) 8 ▶ [ SQL> rollback; 롤백이 완료되었습니다. select count(*) from b_emp3; ] COUNT( * ) 14 ..