아티클 목록

오라클 DBMS 정리 01

2018년 응용 소프트웨어 과정에서 Oracle DBMS와 SQL을 처음부터 학습하며 작성한 기록입니다. 데이터베이스의 기본 개념과 테이블·쿼리 구조를 직접 따라가며 정리했습니다. 이후의 백엔드 학습으로 이어지는 기초를 쌓던 시기의 기록으로 참고해주세요.

오라클 DBMS 정리 01 - ORACLE DBMS


DBMS(Database Management System)

  • Data : 수, 문자, 이미지로된 자료(연구, 조사의 기본 재료)
    • 데이터를 체계적으로 정리한걸 Database라 함
  • 기존 종이, 판서 등의 데이터를 컴퓨터에서 사용할 수 있게 저장, 사용할 수 있는게 DBMS
  • 과거의 데이터를 사용하여 미래를 예측하기 위해서 DB를 사용
  • DB의 특징
    • 공용 데이터
    • 실시간 데이터
    • 내용에 의한 참조
    • 통합 데이터
  • 여러 종류의 프로그램(DBMS)이 존재
    • Oracle, DBII, MS-SQL, MySQL, SyBase...
  • 데이터들을 테이블(Table)에 저장
    • 관계형 데이터베이스 관리 시스템(RDBMS, Relational Database Management System)
    • Table
      • Column Name, Field Name
      • Column, Field(열)
      • Record, Row(행)

테이블을 조작하는 명령어 : SQL문(Structured Query Language)

  • ANSI Query
    • ANSI(미국 국가표준협회)에서 지정한 SQL문
    • 제조사 쿼리의 바탕, 다른 DBMS를 써도 공통으로 적용되는 SQL
  • 제조사 Query
    • 제조사가 편의성을 고려해서 만든 SQL문
  • 모든 DBMS의 쿼리는 다름
  • SQL문의 종류는 DDL(정의어), DML(조작어), DCL(제어어) 세 종류
    • DDL (Data Definition Language)
      • CREATE, ALTER, DROP
    • DML (Data Manapulation Language)
      • INSERT, UPDATE, DELETE, SELECT
    • DCL (Data Control Language)
      • GRANT, REVOKE, COMMIT, ROLLBACK

Oracle

  • 대용량 데이터를 다룰 때 사용하는 DBMS (RDBMS)
  • Larry Ellison(래리 엘리슨), Oracle CEO
  • 개인 사용시 무료, 기업 사용시 비쌈..
    • Oracle XE는 완전 무료나 작은 용량 처리만 가능
  • 컴퓨터 하나에 하나만 동작가능(SID(Security Identifier))
  • DB Server와 DB Client로 분할 설치
    • DB Server : 정보를 저장하고 제공
    • DB Client : 서버에 접속, 정보 사용
  • 뭐든지 다 대문자로 저장, 사용자 입력값은 소문자 가능
  • Oracle DBMS는 Server Process, Server Instance, File 영역, Client Process로 구성
    • File 영역
      • 저장되는 영역, 영속적
    • Server Instance
      • 메모리 영역, 일시적
    • Server Process
      • 서버 인스턴스를 사용하기 위한 소켓 프로그램
    • Client Process
      • Server Process에 접속하여 데이터를 주고 받음
  • 오라클 동작과정
    • Client Process가 Server Instance Shared Pool에서 인증 수행
    • 인증되면 Server Instance Session에 메모리 확보, SQL shell 제공
    • 세션 할당 후 쿼리 시 실행 정보는 Server Instance Redo log에 저장
    • Server Process에서 쿼리 검증, Server Instance Shared Pool에서 실행계획 세움
    • File영역 DBF에서 필요한 정보 조회, 세션에 결과 전달
    • 사용자에게 결과 보여줌
    • 이처럼 같은 쿼리를 재사용시 세션(메모리)에서 가져오기 때문에 수행속도가 빨라진다.

CREATE

  • DDL(Data Definition Language), 데이터 정의어
  • 생성할 때 사용(Table, Index, 계정생성, Sequence, View, Function, ... )
  • Transaction 대상 쿼리가 아님(COMMIT, ROLLBACK 안됨)
    • INSERT, UPDATE, DELETE가 Transaction 대상 쿼리
  • Table 생성
    • Database를 저장하는 곳이 Table
    • Table은 Column과 Row(Record, Tuple)로 구성
    • 테이블명 무조건 영어로, 하나의 단어로 의미전달 안되면 '_'로 이을 것
      • 예 : TEST_TEMP
      • 한글가능하나 절대 쓰지말기, 테이블명 뒤에 숫자는 붙일 수 있지만 첫 글자로 숫자로 사용 안됨!
    • 테이블은 객체, 이름은 유일해야 함
    • 데이터형(Data Type)
      • 값을 구분하여 값을 저장하기 위한 예약된 메모리 공간
      • 문자열형 한글 한글자의 크기를 알 순 없음(몰라요, 뭘 썼는지 알아야 알 수 있음)
      • EUC-KR, MS949, KSC560일 땐 2byte
      • UTF-8일 땐 3byte (요즘 대세, "가나다" - 9byte)

01-01

-- column level constraint과 table level constraint 존재(위치에 따라)
CREATE TABLE 테이블명(
  컬럼명 데이터형(크기) CONSTRAINT 제약사항명 제약사항,  
  ...
  CONSTRAINT 제약사항명 제약사항(적용컬럼),
  ...
);
-- 테이블 명 조회
SELECT tname FROM tab;
 
-- 한줄 주석
/*
   여러줄 주석
*/
 
-- DESC(description)는 테이블에 어떤 컬럼이 있는지 조회하는 명령어
DESC emp; 
 
DROP TABLE 연습했던테이블1, 연습했던테이블2...;
 
-- 휴지통비우기
PURGE RECYCLEBIN; 

댓글