Post

[SQL] 연습문제(생성 삽입 조회)

📌 들어가며

저번엔 MySQL을 배웠고, 이번엔 Oracle을 사용해본다. 오라클의 사용자·권한 체계를 이해하고, 서브쿼리를 활용한 조회 연습문제를 풀어본다.

윈도우에서 sql을 검색하면 SQL*Plus가 나온다.

Desktop View


1. 오라클 사용자·권한 체계

오라클은 계층적인 사용자 구조를 가진다.

1
2
3
sys (SYSDBA)      ← 최상위 (직접 작업 어려움)
 └─ system        ← 관리자(간부급)
      └─ batman   ← 실제 작업할 사용자
사용자역할
sys as sysdba최상위(최고 관리자)
system관리자, 사용자·권한 관리
batman실제 작업 사용자

Desktop View

테이블스페이스와 사용자 생성

MySQL의 database에 해당하는 것이 오라클에선 테이블스페이스(tablespace)다.

1
2
-- (system으로) bigdata 테이블스페이스 생성 (XE 폴더에 bigdata.dbf, 5MB)
-- batman 사용자 생성 (비번 1234, bigdata를 기본, unlimited 권한)

Desktop View

권한 부여

batman으로 접속하면 권한 부족 에러가 난다. 관리자로 권한을 줘야 한다.

1
2
connect system/1234
grant create session, create table to batman;   -- 접속·테이블 생성 권한

Desktop View

💡 MySQL에서 쓴 명령어가 오라클에서도 똑같이 동작하는 이유: 미국 표준협회(ANSI)가 DB 명령어를 표준화해두었기 때문이다. 그래서 어떤 DBMS든 기본 명령어는 같다.


2. spool — 결과 저장

1
-- spool [경로/파일명]  ... 쿼리들 ...  spool off

Desktop View

💡 spoolspool off 사이에 실행한 코드·결과가 메모장 형식으로 저장된다.


3. 서브쿼리 연습문제

① BLAKE보다 급여가 적은 사람

1
2
select ename, sal from emp
where sal < (select sal from emp where ename = 'BLAKE');

Desktop View

💡 소괄호 안 서브쿼리로 BLAKE의 급여를 조회한 뒤, 그것을 비교 기준으로 삼는다.

② SCOTT의 사수보다 급여를 많이 받는 사원

1
2
3
4
5
select ename, sal from emp
where sal > (
    select sal from emp
    where empno = (select mgr from emp where ename = 'SCOTT')
);

Desktop View

💡 서브쿼리를 중첩했다. mgr은 그 사람의 사수 사원번호다. ① SCOTT의 mgr(사수 번호) 조회 → ② 그 번호의 급여 조회 → ③ 그보다 많이 받는 사원 조회.


📝 정리

1
2
3
4
5
6
오라클 연습
├─ 사용자    sys > system > batman (계층)
├─ 권한      grant 권한 to 사용자
├─ 저장소    tablespace (MySQL의 database)
├─ spool     쿼리·결과를 파일로 저장
└─ 서브쿼리   (select ...)를 조건으로 중첩 활용
개념한 줄 정의
sys/system/batman오라클 사용자 계층
grant권한 부여
tablespace오라클의 데이터 저장 공간
서브쿼리쿼리 안의 쿼리 (조건에 활용)

오라클은 MySQL과 명령어(ANSI 표준)는 같지만 사용자·권한 체계가 특징이다. 그리고 서브쿼리를 중첩하면 “다른 조회 결과를 기준으로” 원하는 데이터를 정교하게 뽑아낼 수 있다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.