데이터 베이스 2

다람·2023년 5월 3일
0

DB

목록 보기
2/3
post-thumbnail

index의 자료 구조
key, value로 데이터를 저장하는 hashTable이며 = 특화
자식 노드가 2개 이상인 B-tree를 개선시킨 B+tree가 부등호를 이용한 순차 검색에 최적화이다.

index 란?
데이터의 저장 성능은 낮추고 검색 속도는 높이는 기능이며 항상 정렬된 상태를 유지하기 때문에
원하는 값을 검색하기에는 빠르지만 새로운 값을 추가, 삭제, 수정하는 경우 쿼리 실행 속도가 느려진다.

sequence

순서대로 번호를 만들어주는 객체
ex) create sequence 시퀀스명 increment by 증가될숫자 start with 시작숫자

view

사용자에게 접근이 허용된 자료만 제한적으로 보여주기 위해 하나 이상의 테이블로부터 생성된 가상 테이블이다.
저장 장치 내에는 없으나 사용자에게는 존재하는 것 처럼 보인다.

view 사용 목적?
보안 강화, 쿼리 단순화를 위해

트리거

특정 테이블에서 DML문이 실행되었을 때 DB에서 자동으로 동작하도록 작성된 프로그램이며 사용자가 직접 호출하는 것이 아니라 DB에서 자동적으로 호출한다는 것이 특징이다.

프로시저, 함수, 패키지란?

  • 프로시저
    특정 작업을 수행하는 이름이 있는 PL/SQL
    필요할 때마다 호출하여 사용하며 작업 효율이 올라간다.
  • 함수
    호출 시 function 내에 작성한 쿼리를 수행해서 특정값을 반환하는데 사용한다.
  • 패키지
    변수, 상수, 서브프로그램들의 항목을 묶어놓는 객체

트랜잭션

하나의 기능을 수해하기 위한 작업의 단위
작업이 처리되지 않았을 때 일부만 처리되는 현상을 방지하기 위한 기능이다.

트랜잭션 특징
1. 원자성 - 트랜잭션이 모두 실행되거나 모두 실행되지 않음
2. 일관성 - 트랜잭션이 성공적으로 수행되면 일관적인 DB 상태가 유지되는 것
3. 격리성(독립성) - 트랜잭션 수행 시 다른 트랜잭션이 끼어들지 못하는 것
4. 영속성 - 성공적으로 완료된 트랜잭션은 영원히 반영되는 것

트랜잭션과 쓰레드의 차이

  • 쓰레드
    프로세스 내에 실제로 작업을 수행하는 주체이며 모든 프로세스에는 한 개 이상의 스레드가 존재하며 작업을 수행한다 또한 두 개 이상의 스레드를 가진 프로세스를 멀티스레드 프로세스라고 한다.
  • 트랜잭션
    DB 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.

Subquery

하나의 SQL문 안에 또 다른 SQL문이 포함되어 있는 것

서브쿼리 주의점
1. 괄호 사용
2. 비교 연산자 사용 가능
3. order by 사용 불가능

서브쿼리 종류
1. select 절 스칼라서브쿼리 -하나의 컬럼처럼 사용
2. from 절 인라인뷰 - 조인할 테이블을 리턴할 때 사용
3. where 절 중첩 서브쿼리

단일행 서브쿼리는 하나의 행을 출력하는 것이며 = 사용 가능
다중행 서브쿼리는 여러 건이 출력되는 것이며 in 사용

다중행 연산자 종류
in - 메인쿼리의 데이터가 서브쿼리의 결과 중 하나라도 일치한 데이터가 있으면 true
any, some - 메인 쿼리의 조건식을 만족하는 서브쿼리의 결과가 하나 이상이면 true
all - 메인 쿼리의 조건식을 서브쿼리의 결과 모두 만족한다면 true
exists - 서브쿼리의 결과가 1개라도 존재하면 true

궁금한 점
where 1 = 1 왜 사용하나?
자바에서 null exception 쓰는 것처럼 조건이 true인 경우만 실행해달라는 것임
select 문에서만 사용하는 것이 좋다.

제약조건

테이블에 부적절한 자료가 입력되는 것을 방지하기 위해 여러 가지 규칙을 정해 놓은 것

제약 조건을 사용하는 이유?
DB데이터의 정확성을 유지하기 위해

제약조건 종류
1. NOT NULL - NULL값 허용 안함
2. NUIQUE - NULL 허용하나 중복 불허용
3. PRIMARY KEY - NULL, 중복 불허용
4. FOREIGN KEY - 두 테이블을 서로 연결하는데 사용
5. CHECK - 데이터의 값의 범위나 조건을 설정하여 조건에 해당하는 데이터만 입력
6. DEFAULT - 아무런 데이터도 입력하지 않았을 경우 지정한 데이터가 자동 입력
7. 후보키 - 기본키가 될 수 있는 후보들이며 유일성과 최소성을 만족해야 한다

테이블에 왜 PK를 설정하는지?
일관성 없는 데이터가 반복적으로 쌓이는 것을 방지하기 위해

FOREING KEY의 제약 조건은 무엇이며 왜 사용하는지?
참조하는 테이블 칼럼의 데이터만을 허용하며 중복된 데이터가 없으면서도 문제없이 데이터를 저장, 관리하기 위해서이다.

profile
안녕

0개의 댓글