본문 바로가기

Oracle

Oracle SQL 기초: system 계정과 test 계정 작업 정리


1. system 계정의 작업 내용

Oracle 데이터베이스에서 기본 관리자는 system 계정입니다.
이 계정으로 사용자 생성, 권한 부여·회수, 스키마 오브젝트 관리 등을 수행합니다.

1.1 DDL (Data Definition Language)

DDL은 데이터베이스 객체를 생성·수정·삭제하는 언어입니다.

  • create: 객체 생성
  • drop: 객체 삭제
  • alter: 객체 수정
-- 예시: 테이블, 뷰, 인덱스 등 생성/변경/삭제
CREATE TABLE example (...);
ALTER TABLE example ADD COLUMN col2 VARCHAR2(50);
DROP TABLE example;

1.2 DCL (Data Control Language)

DCL은 데이터베이스 사용 권한을 부여하거나 회수하는 언어로,
주로 system 계정이 다른 사용자에게 권한을 관리합니다.

  • grant: 권한 부여
  • revoke: 권한 회수

1.3 사용자 생성 (DDL)

-- test 사용자 생성
CREATE USER test IDENTIFIED BY test;

1.4 권한 부여 (DCL)

-- 접속 권한
GRANT CONNECT TO test;

-- 테이블 생성 등 자원 활용 권한
GRANT RESOURCE TO test;

-- 한 줄에 권한 두 개 부여
GRANT CONNECT, RESOURCE TO test;

1.5 권한 회수 (DCL)

REVOKE CONNECT, RESOURCE FROM test;

2. test 계정의 작업 내용

test 계정(권한 Connect, Resourse)으로 접속한 후, 직접 테이블을 만들고 데이터를 조작해 봅니다.

2.1 테이블 생성 (DDL)

CREATE TABLE sungjuk (
  no   INT,             -- 번호
  name VARCHAR2(100),   -- 이름
  kor  INT,             -- 국어 점수
  eng  INT,             -- 영어 점수
  mat  INT              -- 수학 점수
);

2.2 데이터 조작 (DML)

명령어 설명

INSERT 데이터 추가
UPDATE 데이터 수정
DELETE 데이터 삭제
SELECT 데이터 조회

데이터 삽입 (INSERT)

-- 기본 입력 순서대로
INSERT INTO sungjuk VALUES (1, '일길동', 77, 88, 99);

-- 컬럼 순서 지정 후 입력
INSERT INTO sungjuk (no, eng, kor, mat, name)
VALUES (2, 99, 88, 66, '이길동');

INSERT INTO sungjuk VALUES (3, '삼길동', 87, 88, 89);

데이터 삭제 (DELETE)

-- no가 1인 레코드 삭제
DELETE FROM sungjuk
WHERE no = 1;

데이터 수정 (UPDATE)

-- no = 1인 레코드의 국어 점수 100으로 수정
UPDATE sungjuk
SET kor = 100
WHERE no = 1;

-- 여러 컬럼 동시에 수정
UPDATE sungjuk
SET kor = 100, eng = 100
WHERE no = 2;

UPDATE sungjuk
SET kor = 100, eng = 100, mat = 100
WHERE no = 3;

2.3 데이터 조회 (SELECT)

-- 모든 컬럼 조회
SELECT * FROM sungjuk;

-- 일부 컬럼 조회
SELECT no, name FROM sungjuk;

-- 연산 컬럼과 윈도우 함수 활용
SELECT
  no,
  name,
  kor,
  eng,
  mat,
  (kor + eng + mat)      AS tot,
  ROUND((kor + eng + mat) / 3, 1) AS avg,
  RANK() OVER (ORDER BY (kor + eng + mat) DESC) AS rnk
FROM sungjuk;

세미콜론(;)은 SQL 구문의 끝을 명시하는 구분자입니다.
한 번에 여러 구문을 실행할 때는 반드시 세미콜론을 붙여야 합니다.


3. 샘플 DB 조회

Oracle이 제공하는 예제 스키마를 통해 기본 테이블을 확인해 봅니다.

SELECT * FROM dept;
SELECT * FROM sawon;
SELECT * FROM gogek;