상호관련 서브쿼리 단독으로 사용할 순 없고 메인쿼리 결과를 참고해야 실행할 수 있는 쿼리 입사 이래로 담당업무를 두 번 이상 변경한 적이 있는 사원 조회 SELECT em.employee_id, last_name, e.job_id FROM employees e WHERE 2 (SELECT dept_avg FROM avg_cost) ORDER BY department_name; dept_costs d_name dept_total IT Sales Test Edu 50000 40000 45000 60000 avg_cost dept_avg 48000 avg_cost보다 더 큰 dept_costs를 출력 => 이 테이블에서는 IT와 Edu가 출력 부서별 평균 합계가 우리 회사 총 평균보다 큰 경우를 출력 inse..
서브쿼리 쿼리 구문 안에 또 다른 쿼리 구문이 포함된 형태로 메인쿼리보다 먼저 실행된다. 인라인 뷰 FROM 절에 서브쿼리가 작성된 경우를 말한다. 내부조인 INNER JOIN 조인 조건을 만족하는 행만 반환하는 조인 유형 - NATURAL / USING / ON JOIN natural join : 조인하고자 하는 양 테이블에 컬럼명과 데이터타입이 같은 컬럼을 기준으로 조인 외부조인 OUTER JOIN 조인 조건을 만족하는 행과 만족하지 않는 행까지 반환하는 조인 유형 - LEFT / RIGHT / FULL OUTER JOIN Cross join 조인하고자 하는 두 테이블의 모든 행을 조인하는 유형으로 모든 경우의 수를 만들 수 있다. PK, UK 차이점 UK는 한 테이블의 각 컬럼마다 지정 가능, Un..
집합연산자 집합연산자 : 쿼리와 쿼리를 더한다 조인 : 테이블과 테이블을 더한다. table1 컬럼과 table2 컬럼, 즉 여러 테이블의 컬럼을 합치고 싶을 때가 JOIN이라면 집합연산자는 table1의 특정 행과 table2의 특정 행을 합치는 것(=쿼리 구문과 쿼리 구문의 합) UNION/UNION ALL 첫번째 쿼리 결과와 두번째 쿼리 결과를 모두 출력하는 연산자 (합집합) INTERSECT 첫번째 쿼리 결과와 두번째 쿼리 결과의 공통 부분을 출력하는 연산자 (교집합) MINUS 첫번째 쿼리 결과에서 두번째 쿼리 결과를 뺀 부분을 출력하는 연산자 (차집합) 집합 연산자 규칙 1. SELECT 절에 있는 컬럼 리스트(표현식 개수)가 일치해야한다. - 열이 두 테이블 중 하나에 없는 경우 TO_CHA..
echo 운영체제 단의 설정되어있는 변수를 확인할 때 사용 변수 앞에 $붙이고 대문자로 써야한다. orcl 상태에서 sqlplus를 키고 sysdba로 접속하려하면 휴지 상태라는 뜻의 idle instance가 뜬다. ORCL DB로 접속 할당 메모리를 적게 잡아 두 개를 동시에 킬 수 없기 때문에 다른 DB로 접속하기 전에 ORCL DB 연결을 끊자! DB 전환 숨겨진 파일 볼 때 -a를 붙인다. 파일 이름 앞에 .이 붙어있으면 숨겨진 파일이라는 뜻 vi. bash_profile에 들어가서 직접 DB를 전환할 수 있다. 디폴트 DB가 바뀐다. :q!로 해당 편집창을 빠져나온다. 위의 방법은 디폴트 DB를 바꾸는 것이다. 디폴트 DB를 바꾸지 않고 DB를 전환하려면 아래와 같은 방법을 쓴다. export..
1. Linux 2. Oracle DBMS 설치 3. DB 생성 DB 끄는 방법 정상 종료 - shut immediate 비정상 종료 - shut abort DB가 종료됐는지 확인 lsnrctl status The command completed successfully - 켜져있다! 이 상태에서 lsnrctl start 쓰면 이미 켜져있다고 뜸(already been started) 켜지지 않으면 아무것도 뜨지 않는다. ./runInstaller : 설치 DBCA : DB 생성
role 권한들의 모음(묶음) system, object 권한 등 다 들어올 수 있다. CREATE ROLE MGR[롤 이름]; hr 사용자로는 생성되지 않아 sys 로 전환한 뒤 롤 생성 롤에게 권한을 부여하고 회수하는 것도 grant, revoke를 사용한다. role 안에 권한 부여 GRANT CREATE SESSION, CREATE TABLE TO MGR; - 여러 권한(묶음)을 한번에 부여/회수가 가능하기 때문에 권한관리가 편리하다. - 권한이 추가될 때 롤 안에 권한을 부여하면 롤의 구성이 바뀌면서 롤을 부여받고 있는 유저들에게 바로바로 영향이 간다(빠른 배포) 완성된 role을 유저에게 부여 GRANT MGR TO HR, DEMO; 콤마로 구분해 여러 유저에게도 부여 가능하다. 부여된 롤에 ..
Dictionary에는 DB관리에 필요한 모든 정보가 저장되어있다. DBA는 Dictionary의 정보를 이용하여 효율적인 데이터베이스 운영을 위해 필요한 정보를 획득할 수 있다. 일반 사용자 및 Application 개발자에게도 데이터베이스에 대한 중요한 정보를 제공한다. • Data Dictionary 구성 - Base Tables : DB의 모든 정보를 Oracle이 보기 쉬운 형태로 기록해 놓은 테이블 - Data Dictionary Views : Base Table을 사용자가 보기 쉬운 형태로 만들어 놓은 뷰 자신의 계정에 대한 정보 조회 SELECT username, user_id, account_status, default_tablespace, created FROM user_users 주요..
REVOKE 권한을 회수한다. 해당 실습을 위해 sys 사용자로 접속해보자. 앞에서 만든 demo 사용자의 테이블 생성 권한을 회수한다. REVOKE create table FROM demo; 다시 demo 사용자로 접속 후 다른 테이블을 생성하려고 하면 해당 권한이 없다고 뜬다. 현재 demo 사용자인데 hr 소유의 employees 테이블의 조작을 요청하면 오류가 난다! demo가 가진 권한에서는 employees 테이블을 조작할 권한이 없다는 뜻 hr이 demo에게 employees 테이블의 select, update 권한을 부여한다. demo 사용자에 employees 테이블의 업데이트 권한을 회수해서 업데이트가 안되는 상황(권한 부족 오류) Object 권한 회수 REVOKEselect ONem..