[Oracle DB(오라클)/ 기본 이론]

SeungWoo·2023년 12월 27일

[ORACLE(오라클)/#]

목록 보기
2/7
post-thumbnail

what is Data?

Data to raw, unorganized and unprocessed facts and figures such as numbers, text, images, and sounds. Data can be in various formats, but if doesn't have any context meaning or relevance until it is processed or analyzed.

What is Datase?

A database is a structured collection of data that is organized, managed, and accessed eletronically. It is designed to store, organize, and retrieve large amounts of data efficiently and effectively

  • 정의
    • data is the raw material
    • database is a collection of data
      information of data
    • Information is the processed data that has meaning and context
  • 관계형 데이터베이스 ( Relation Database : RDB )
    • structuring information in tables, rows, and columns
    • to establish links - or relationships-between information by joining tables
    • 데이터 이상(Anomaly) 현상 및 불필요한 데이터 중복 현상을 피하도록 만든 데이터 베이스

ORA-00001 : unique constraint violated
무결성 제약 조건에 위배 됩니다.

  • UPDATE 및 INSERT 구문 실행 시 중복되는 기본키 값을 삽입하려 할 때 발생하는 에러입니다.
    즉, 테이블 내 기본키(PK)의 데이터는 중복될 수 없습니다.
  • 데이터 모델링의 3 가지 요소
    • 어떤 것( thing = Entity ) : 실체
      • 사람, 사물, 사건등
    • 어떤 것의 성격 ( Attributes ) : 속성
      • 분리되지 않는 최소의 단위
    • 어떤 것들의 관계 ( Relationship ) : 관계
      • 엔터티끼리 상호 연관성이 있는 상태

SQL (Structured Query Language)

  • 사용자와 데이터베이스와의 대화하는 방법

  • 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어

  • SQL 문의 종류-데이타 정의어

  • DDL ( Data Definition Language )

    • DB안에 사용하는 틀
    • 데이터베이스 객체(Object)의 구조를 생성/변경/삭제
    • CREAT, ALTER, DROP, RENAME
    • Auto Commit(영구적 데이터를 넣는다) 실행
    • 데이터베이스의 구조를 정의하거나 변경
  • DML( Data Manipulation Language )

    • 목적 : 데이터를 검색, 삽입, 수정, 삭제하는 등 데이터 조작 작업을 수행 합니다
    • SELECT, INSERT, UPDATE, DELETE등
    • TCL 구조 ( Commit 해야 데이터에 영구적으로 적용된다.)
    • 데이터를 조작하여 데이터베이스에서 실제로 작업을 수행
    • WHERE 조건문 잘 사용 할 것
  • DCL(Data Control Language)

    • DB에 접근하고 객체들을 사용하도록 권한 부여/회수
    • GRANT, REVOKE
    • 보완에 관한부분
  • TCL (Transaction Control Language)

    • 작업 이룬 하나
    • 트랜잭션이 전체가 롤백
    • 데이터의 무결성 보장을 목적( 데이터의 정확성 보장 )
    • COMMIT, ROLLBACK
  • 제약조건 : 사용자가 원하는 조건을 만족하는 데이터만 입력되는 것을 보장 (무결성)

    • 기본키(Primary Key)
      • 특정 행을 고유하게 식별
      • 하나의 테이블에 기본키는 단 하나
      • 기본키 생성시, UNIQUE INDEX 자동 생성
      • NULL 입력 불가
      • UNIQUE + NOT NULL
    • 고유키(Unique Key)
      • 특정 행을 고유하게 식별하기 위해 생성
      • NULL 입력 가능
      • UNIQUE + NULL
    • 외래키(Foreign key)
      • 다른(부모 혹은 참조) 테이블의 기본키를 외래키로 지정
      • 참조 무결성 제약 조건
    • 디폴트 값(Default)
      • 해당 칼럼에 아무런 값도 입력이 되지 않을 때 지정한 디폴트 값으로 데이터 입력
    • NOT NULL
      • 해당 칼럼은 NULL 입력 금지
    • CHECK
      • 입력할 수 있는 값의 종류 혹은 범위를 지정
  • 제약(Constranin): 테이블 칼럼의 값에 관한 규칙
    • 제약에 위반되는 데이터는 테이블에 저장 불가
  • 데이터의 무결성(Integrity)
    • 데이터 변경 혹은 수정 시 여러 가지 제한을 두어 데이터의 정확성과 일관성을 유지하고,
      데이터 결손과 부정합이 없음을 보증하는 것(신뢰성, 유호성)

TCL (Transaction Control Language)

Commit를 하지 않는다면 롤백 된다.

  • Transsaction(트랜잭션)의 특징
    데이의 무결성 보장을 목적(=데이터의 정확성 보장)

    • COMMIT : 변경된 데이터를 영구적으로 반영
    • ROLLBACK : 변경 전으로 데이터를 복구
    • SAVEPOINT : ROLLBACK할 포인터를 복구
    • (ROW)LOCK : 다른 유저는 수정 중인 데이터를 변경X
      • 동일한 행에 대해서 서로 다른 세션들이 동시에 DML 수행하는 것을 방지
  • COMMIT/ROLLBACK 상태

    • COMMIT/ROLLBACK 이전의 데이터 상태
      • 메모리에만 적용된 상태이므로 복구 가능
      • DML을 실행한 사용자는 SELECT 문으로 변경 결과를 확인할 수 없다
      • 변경된 행은 락이 설정되므로 다른 사용자가 변경할 수 없다
    • COMMIT/ROLLBACK 이후의 데이터 상태
      • 데이터의 입력/수정/삭제 내역이 DB에 영구적으로 반영
      • 모든 사용자는 SELECT문으로 변경된 결과를 확인하는 것이 가능
      • 관련된 행에 대한 락이 풀리고, 모든 사용자들이 행을 조작하는 것이 가능
  • TCL의 특성

    • 원자성( Atomicity )
      • ALL or NOTHING
      • Tx(Transaction) 분할할 수 없는 최소 단위
        (= 논리적 연산단위 )
      • 계좌이체, 영화예매
    • 일관성( Consistency )
      • 트랜잭션 이전과 이후, DB의 상태는 이전과 같이 유효
      • Tx이후, 데이터베이스는 제약조건/규칙을 만족
    • 고립성( Isolation )
      • 모든 Tx는 다른 Tx로 부터 독립
      • 여러 개의 Tx가 동시에 수행될 때, 각 Tx는 고립되어 있어 연속으로 실행된 것과 동일한 결과
    • 지속성( Durability )
      • Tx이 성공적으로 수행되면, 변경된 내용은 영구적으로 저장

연산자

연산자

연산자의미
=~와 같다
>~보다 크다
>=~보다 크거나 같다
<~보다 작다
<=~보다 작거나 같다

SQL 연산자

연산자의미
BETWEEN A AND BA와 비교
IN하나라도 있으면 OK
LIKE'비교문자열'비교문자열의 형태와 일치
IS NULLNULL 값 ok
IN NOT NULLNULL 값 NOT ok

부정 비교 연산자

연산자의미
!=같지 않다
<>같지 않다
^=같지 않다
NOT 칼럼명 =~칼럼의 값이 ~와 같지 않다
NOT 칼럼명 >~칼럼의 값이 보다 크지 않다
NOT 칼럼명 <~칼럼의 값이 ~와 작지 않다

와일드 카드

연산자의미
% (퍼센트)0개 이상의 여러 문자
_ (언더바)1개의 단일 문자
profile
This is my study archive

0개의 댓글