DB

이경현·2024년 10월 11일

데이터베이스 이론정리

DDL : 데이터 정의어
- create
- alter
- drop
DML : 데이터 조작어
- select
- update
- insert
- delete
DCL : 데이터 확정어
- rollback
- commit

서브쿼리 : 하나의 SQL안에 포함되어 있는 또다른 SQL 문을 말한다.

  • 서브쿼리를 사용할 수 있는 곳
    select
    from
    where
    order by
    insert 문의 values
    update 문의 set

if(조건문,true참일때값,false거짓일때값)
ifnull(column_name, 대체할 값)

: 해당필드의 값이 null을 반환할 때 지정한 값으로 대체하여 출력해준다

isnull(column_name,value)

: null인경우 value값을 출력
null이 아니면 지정한 column의 데이터 출력

union연산자

: 2개 이상 테이블에 존재하는 같은 성격의 값을 한번의 쿼리로 출력

  • union 을 사용할때 컬럼의 이름이 같아야함
    (같지 않다면 as를 통해 같게 만들어야함)
  • 대응되는 컬럼의 데이터 타입이 같아야한다

중복제거하고 값 추출 > union
중복 허용하고 모든 값 추출 > union all

인덱스

  • 테이블의 동작속도를 높여주는 자료 구조이다
  • 인덱스로 데이터의 위치를 빠르게 찾아주는 역할
  • 데이터의 저장성능을 희생하여 데이터의 읽기 속도를 높임
  • 인덱스는 데이터의 양이 천만개 이상일때 효과가 있다 그 이하는 크게 차이가 없음
  • select 검색속도를 크게 향상시킨다.
  • 인덱스 생성시 DB크기의 약 10%정도되는 추가 공간이 필요함
  • 인덱스 생성시 시간이 걸린다
  • insert, update, delete와 같은 데이터 변경이 자주 일어나면 오히려 성능이 감소된다.
  • 데이터 조회에는 good, 변경에는 bad
  • 형식 : CREATE INDEX 인덱스명 on 테이블명(인덱스를 걸 컬럼명);

기본키(PK)

: 특정 레코드를 유일하게 식별하기 위해 사용되는 필드. 각테이블에는 반드시 있어야함

  • 각레코드에 대해 고유하다(unique)
  • null값허용안됨
  • 레코드식별하는데 사용 테이블당 하나의 기본키만 지정가능

외래키(FK)

: 하나의 테이블에서 다른 테이블의 기본키를 참조하는 키
데이터베이스에서 무결성을 유지하는데 중요한 역할

  • 데이터 무결성 외래키를 사용하면 데이터베이스에서 참조무결성을 유지할 수 있음
  • 자식테이블의 레코드를 삭제하거나 업데이트 할 때 부모테이블의 기본키를 참조하지 않으면 데이터베이스에서 오류를 발생시킨다
  • 데이터 일관성 유지 : 외래키를 사용하면 부모테이블에서 레코드를 업데이트 하거나 삭제할 때 자식테이블에서도 일관성을 유지할 수 있음
  • 관계정의 : 외래키를 사용하면 데이터베이스에서 테이블 간의 관계정의 가능 이를 통하여 두개 이상의 테이블에서 데이터를 쉽게 검색하고 조인할 수 있다

join

  • (inner) join : 조인하는 테이블의 on절 조건이 일치하는 결과만 출력
  • left/right outer join : 두 테이블이 합쳐질 때 왼쪽이 기준이 되는 테이블이다 > left
    오른족이 기준이 되는 테이블이다 > right
    outer join은 조인하는 테이블의 on절의 조건 중 한족의 데이터를 모두 가져온다
    outerjoin은 right left full이렇게 3가지가 있다
    대부분 left를 사용 full은 성능상 거의 사용불가능
  • left join 두 테이블이 있을 경우 첫번째 테이블을 기준으로 두번째 테이블을 조합하는 join이다
  • right join 두 테이블이 있을 경우 두번째 테이블을 기준으로 첫번째 테이블을 조합하는 join이다

3중 join 테이블 3개 조인하기

원하는 정보가 3개의 테이블에 분산되어 있는 경우
outer join을 3번 연속으로 사용하면 된다
먼저 2개 조인하고 조인한 테이블을 한번더 조인

SQL Injection

: 해커에 의해 조작된 SQL쿼리문이 데이터베이스에 그대로 전달되어 비정상적인 명령을 실행시키는 공격기법

  • SQL 인젝션이란 악의적인 사용자가 보안상의 취약점을 이용하여 임의의 SQL문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작 하는 행위 인젝션 공격은 OWASP(Open Web Application Security Project)는 오픈소스 웹 애플리케이션 보안 프로젝트
    에서 top1에 해당할 정도로 비교적 공격이 쉬운편이고 공격에 성공할 경우 큰 피해를 입힐 수 있는 공격이다

0개의 댓글