Do it! 오라클로 배우는 SQL 입문

Do it! 시리즈 / 이지훈 저자(글) / 이지스퍼블리싱 · 2025년 03월 05일 (1쇄 2018년 10월 30일)

SQLD, SQLP 책을 보다가 실습을 해볼까 하면서 만나게 된 책입니다. 아무 생각없이 가져 왔는데, Oracle 21c 버전이 반영되어 있어 지금 시점에서 실습 셋팅하기가 좋았습니다.

 

 

목차

  • 첫째마당 | 오라클과 데이터베이스
    01장 데이터베이스와 SQL
    __01-1 데이터와 데이터베이스, DBMS
    __01-2 데이터 모델
    __01-3 관계형 데이터베이스와 SQL
    __01장 되새김 문제

    02장 관계형 데이터베이스와 오라클 데이터베이스
    __02-1 관계형 데이터베이스의 테이블과 키
    __02-2 오라클 데이터베이스
    __02장 되새김 문제

    03장 오라클 데이터베이스와 실습 환경 설정
    __03-1 오라클 데이터베이스 설치하고 계정 설정하기
    __03-2 SQL Developer 설치하고 실행하기

    -----------------------------------------------------
    둘째마당 | 실무에서 자주 사용하는 SQL, SELECT문을 이용한 데이터 조회
    04장 SELECT문의 기본 형식
    __04-1 실습용 테이블 살펴보기
    __04-2 데이터를 조회하는 3가지 방법 — 셀렉션, 프로젝션, 조인
    __04-3 SQL의 기본 뼈대, SELECT절과 FROM절
    __04-4 중복 데이터를 삭제하는 DISTINCT
    __04-5 보기 좋게 별칭 설정하기
    __04-6 원하는 순서로 출력 데이터를 정렬하는 ORDER BY절
    __04장 되새김 문제

    05장 결과를 더 정확하고 다양하게 출력하는 WHERE절과 연산자
    __05-1 필요한 데이터만 쏙 출력하는 WHERE절
    __05-2 여러 개 조건식을 사용하는 AND, OR 연산자
    __05-3 연산자 종류와 활용 방법 알아보기
    __05장 되새김 문제

    06장 데이터 처리와 가공을 위한 오라클 함수
    __06-1 오라클 함수
    __06-2 문자 데이터를 가공하는 문자 함수
    __06-3 숫자 데이터를 연산하고 수치를 조정하는 숫자 함수
    __06-4 날짜 데이터를 다루는 날짜 함수
    __06-5 자료형을 변환하는 형 변환 함수
    __06-6 %00; 처리 함수
    __06-7 상황에 따라 다른 데이터를 반환하는 DECODE 함수와 CASE문
    __06장 되새김 문제

    07장 다중행 함수와 데이터 그룹화
    __07-1 하나의 열에 출력 결과를 담는 다중행 함수
    __07-2 결괏값을 원하는 열로 묶어 출력하는 GROUP BY절
    __07-3 만든 그룹을 조건별로 출력할 때 사용하는 HAVING절
    __07장 되새김 문제

    08장 여러 테이블을 하나의 테이블처럼 사용하는 조인
    __08-1 조인
    __08-2 조인 종류
    __08-3 표준 SQL 문법으로 배우는 조인
    __08장 되새김 문제

    09장 SQL 속 또 다른 SQL, 서브쿼리
    __09-1 서브쿼리
    __09-2 실행 결과가 하나인 단일행 서브쿼리
    __09-3 실행 결과가 여러 개인 다중행 서브쿼리
    __09-4 비교할 열이 여러 개인 다중열 서브쿼리
    __09-5 FROM절에 사용하는 서브쿼리와 WITH절
    __09-6 SELECT절에 사용하는 서브쿼리
    __09장 되새김 문제
    -----------------------------------------------------
    셋째마당 | 데이터를 조작, 정의하는 SQL 배우기
    10장 데이터를 추가, 수정, 삭제하는 데이터 조작어
    __10-1 테이블에 데이터를 추가하는 INSERT
    __10-2 테이블에서 데이터를 수정하는 UPDATE
    __10-3 테이블에서 데이터를 삭제하는 DELETE
    __10장 되새김 문제

    11장 트랜잭션 제어와 세션
    __11-1 하나의 단위로 데이터를 처리하는 트랜젝션
    __11-2 트랜잭션을 제어하는 명령어
    __11-3 세션과 읽기 일관성의 의미
    __11-4 수정 중인 데이터 접근을 막는 LOCK
    __11장 되새김 문제

    12장 데이터 정의어
    __12-1 객체를 생성, 변경, 삭제하는 데이터 정의어
    __12-2 테이블을 생성하는 CREATE
    __12-3 테이블을 변경하는 ALTER
    __12-4 테이블 이름을 변경하는 RENAME
    __12-5 테이블의 데이터를 삭제하는 TRUNCATE
    __12-6 테이블을 삭제하는 DROP
    __12장 되새김 문제

    13장 객체 종류
    __13-1 데이터베이스 관련 데이터를 저장한 데이터 사전
    __13-2 더 빠른 검색을 위한 인덱스
    __13-3 테이블처럼 사용하는 뷰
    __13-4 규칙에 따라 순번을 생성하는 시퀀스
    __13-5 공식 별칭을 지정하는 동의어
    __13장 되새김 문제

    14장 제약 조건
    __14-1 제약 조건 종류
    __14-2 빈 값을 허락하지 않는 NOT %00;
    __14-3 중복하지 않는 값 UNIQUE
    __14-4 유일하게 하나만 있는 값 PRIMARY KEY
    __14-5 다른 테이블과 관계를 맺는 FOREIGN KEY
    __14-6 데이터 형태와 범위를 정하는 CHECK
    __14-7 기본값을 정하는 DEFAULT
    __14장 되새김 문제
    -----------------------------------------------------
    부록 A | 사용자, 권한, 롤 관리
    __A-1 사용자 관리
    __A-2 권한 관리
    __A-3 롤 관리

    찾아보기

 

 

Oracle Database SCOTT 계정 삭제와 데이터 초기화

SCOTT 계정과 실습 데이터를 추가 하는 중 마음대로 되지 않아, 처음부터 다시 진행하려고 sys 계정에서 아래와 같이 진행하시면 SCOTT 계정이 초기화 됩니다.

 

ALTER SESSION SET "_oracle_script"=true;

이 명령은 현재 세션에 대해 Oracle 스크립트 모드를 활성화하는 데 사용됩니다. 이 모드를 사용하면 기본 모드에서 허용되지 않을 수 있는 특정 SQL 스크립트를 실행할 수 있습니다.

drop user scott cascade;

Oracle의 DROP USER 문은 데이터베이스에서 사용자를 제거하는 데 사용됩니다.

 

이제 처음부터 다시 진행하시면 됩니다.

 

자료 출처 : 'Do ti! 오라클로 배우는 SQL 입문' , 인터넷 검색

문자열 대소문자 변환 함수(UPPER, LOWER, INTCAP)

 

문자열 데이터를 가공하거나 문자열 데이터로 특정한 결과를 얻고자 할때 사용하는 함수입니다.

함수 설명
UPPER(문자열) 괄호 안 문자열 데이터를 모두 대문자로 변환하여 반환 합니다.
LOWER (문자열) 괄호 안 문자열 데이터를 모두 소문자로 변환하여 반환 합니다.
INITCAP(문자열) 괄호 안 문자열 데이터 중 첫번째 글자는 대문자로, 나머지 문자는 소문자로 변환하여 반환합니다. 

 

문자 함수에 대한 예제를 살펴 봅시다. 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

SELECT ENAME, UPPER(ENAME), LOWER(ENAME), INITCAP(ENAME)
FROM EMP;

 

해당 함수들은 문서의 비교나 특정 문자열을 찾는 경우, 해당 문자가 대문자로 쓰여 있던, 소문자로 쓰였있던, 섞어서 쓰여 있던 상관없이 검색이 가능합니다. 즉 내가 'Oracle' 이라는 단어를 검색하고 싶은데, 문서에는 "oracle", "ORACLE", "OrAcLe"와 같은 형식으로 쓰여 있는 경우 일반검색으로는 찾을 수 없지만, 문자를 모두 대문자나, 소문자로 치환하면 비교하여 찾는 것이 가능합니다.

 

자료 검색의 예로 이름이 'TH'로 끝나는 직원을 찾는 쿼리를 만들어 봅시다. (LIKE 연산자에 대해 궁금하신 부분은 'SQL 연산자 - LIKE 연산자' 부분을 참고하시면 됩니다.)

 

SELECT *
FROM EMP
WHERE UPPER(ENAME) LIKE UPPER('%th');

 

※ 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

 

'DataBase' 카테고리의 다른 글

[Book] 오라클로 배우는 SQL 입문  (4) 2025.07.31
[Oracle] SCOTT 계정 삭제와 데이터 초기화  (0) 2025.07.31
데이터 변경 시 유의 사항  (0) 2025.07.28
[ORACLE] ORACLE 함수  (1) 2025.07.28
SQL 연산자 - 집합 연산자  (0) 2025.07.26

 

데이터 변경 시 유의 사항

 

UPDATE문과 DELETE문은 테이블에 있는 데이터를 수정하거나 삭제하는 기능을 수행하고 있어, 작업에 위험성이 큰 명령어 입니다. 특히 민감한 데이터가 있는 테이블에 잘못된 작업을 실행한다면 큰 문제가 발생됩니다. 그러므로, UPDATE문과 DELETE문을 실행 할 때는 아래 사항들을 유의 하여 작업을 진행해야 합니다.

 

  • WHERE 조건 확인: UPDATE 문을 실행하기 전에는 반드시 WHERE 조건을 확인하여 의도한 데이터만 수정되도록 합니다.
    - WHERE 조건이 변경하고자 하는 행을 정확하게 선택하는지 SELECT문으로 먼저 조회하여 확인해 보는 습관이 필요합니다.
  • 백업: 중요한 데이터를 수정하기 전에는 데이터를 백업하여 복구할 수 있도록 준비합니다. 
    - ROLLBACK으로 복구가 가능한 부분도 있긴 합니다만, COMMIT해버린 자료에 대해서는 ROLLBACK 이 불가능 하니, 중요한 작업들은 백업 후 수행하는 습관을 꼭 들이시길 바랍니다. 그리고, 작업이 끝났으면, 확인 후 백업 파일을 지우는 습관도 같이 들여 두셔야 공간의 낭비 및 이후 작업의 혼선을 방지 할 수 있습니다.
  • 트랜잭션 활용: 여러 UPDATE 문을 실행하거나 작업의 원자성이 중요한 경우 트랜잭션을 사용하여 COMMIT 또는  ROLLBACK 할 수 있도록 합니다. 
    - COMMIT 시점을 잘 선택하여 필요한 시점에 ROLLBACK이 가능하도로 하는 것이 중요합니다.
  • 테스트 환경에서 검증: 실제 운영 환경에 적용하기 전에 개발 또는 테스트 환경에서 충분히 검증하여 예상치 못한 결과를 방지합니다.

이러한 유의사항을 준수하여 UPDATE 문과 DELETE문을 사용한다면 데이터베이스의 데이터를 안전하고 효과적으로 수정/삭제 하실 수 있습니다. 

ORACLE 함수(Function)

 

1. 함수(Function) 란

데이터베이스에서 이야기 하는 함수는 수학에서 일반적으로 이야기하는 함수와 동일합니다. 매개변수를 받아 특정 계산(작업)을 수행하고 결과를 반환하는 것을 말합니다.

함수(函數, function)는 수학에서 두 집합 사이의 관계를 설명하는 논리적 개념으로, 간단하게 정의역의 각 원소마다 공역의 원소를 오직 하나씩 대응되는 관계를 말한다.(나무위키)

 

 

2. Oracle 함수의 종류

오라클 함수는 함수를 제작하는 주체를 기준으로 오라클에서 기본으로 제공하는 내장함수(Built-in Function)와 사용자가 필요시 직접 정의한 사용자 정의 함수(User-definde Function)으로 나뉩니다.

내장함수는 입력 방식에 따라 데이터를 한 행씩 입력하고 처리하는 단일행 함수(Single-row Function)와 여러행을 입력받아 하나의 결로고 반환하는 다중행 함수(Multiple-row Function)로 나뉩니다.

주체기준 분류 입력방식에 따른 분류 함수분류 함수
내장함수
(Built-in Function)
단일행 함수
(Single-row Function)
문자함수 UPPER, LOWER, INTCAP
LENGTH, LENGTHB
SUBSTR
INSTR
REPLACE
LPAD, RPAD
TRIM, LTRIM, RTRIM
숫자함수 ROUND
TRUNC
CEIL, FLOOR
MOD
날짜함수 SYSDATE
ADD_MONTHS
MONTHS_BETWEEN
NEXT_DAY, LAST_DAY
ROUND, TRUNC
변환함수 TO_CHAR
TO_DATE
DECODE
NULL 
처리함수
NVL
NVL2
다중행 함수
(Multiple-row Function)
 집계함수 SUM
COUNT
MAX, MIN
AVG
사용자 정의 함수
(User-definde Function)
     

 

+ Recent posts