[DB] 데이터베이스 기본 용어 정리 / 쿼리(CRUD) / JOIN

mj·약 23시간 전
0

kbt

목록 보기
4/4

데이터베이스 강의를 듣고 스스로 나만의 언어로 정리한 내용입니다.



1. 데이터베이스의 요청 및 응답과정

유저 → Workbench,DBeaver…(Client) → MariaDB(DBMS) → InnoDB, MyISAM(DB엔진) → Scheme


2. Daemon

  • 사용자의 개입,제어없이 백그라운드에서 (알아서 작업하는) 실행되는 프로그램
  • 보통 끝에 ‘d’붙는다. e.g.) syslogd

3. Schema 스키마

  • 데이터베이스의 구조와 조건을 정의하는 개념
  • 스키마의 종류 : 개념적 스키마, 논리적 스키마, 물리적 스키마

개념적 스키마

  • 데이터베이스에 필요한 테이블이 무엇인지 대략적으로 정한 것, 테이블 간의 관계를 설정한 것

논리적 스키마

  • 테이블에 컬럼을 정의하고 데이터타입이나 PK,FK 등 제약 조건을 정의해놓은 것

물리적 스키마

  • 실제 하드디스크에 데이터가 저장되는 것
  • 쿼리문을 날려 실제 db가 생성, 저장되는 것

4. 테이블

데이터를 구조적으로 저장하는 방식으로, 행(row, record)에는 데이터 정보를, 열(column, attribute)에는 데이터 속성을 나타낸다.

PK

  • 데이터를 식별하기 위한 고유 값으로 유일성을 만족해야 한다.

FK

  • 다른 테이블의 기본키를 참조하는 열로 테이블 간의 관계를 나타내는데 사용한다.

5. 인덱스

  • 데이터를 효율적으로, 빠르게 조회하기 위해 특정 열에 대해 생성하는 데이터 구조.
  • 예를들어, DB에서 “홍길동”에 대한 정보를 찾는다고 할 때, 전체 데이터를 처음부터 일일히 찾는것보다 “ㅎ”부터 찾기 시작하면 훨씬 빠른 검색이 가능하다.
  • 사용이유 : 빠른 SELECT(조회)를 위해 (데이터 전체를 탐색하지 않고도 원하는 데이터를 빠르게 찾을 수 있도록 돕는다.)

6. 쿼리 (CRUD)

분류쿼리쿼리 예시
삽입INSERTINSERT INTO students (name, birthdate) VALUES ('강동원', '1990-05-20');
조회SELECTSELECT * FROM students WHERE student_id = 1;
업데이트UPDATEUPDATE students SET name = '원빈' WHERE student_id = 1;
삭제DELETEDELETE FROM students WHERE student_id = 1;

7. JOIN

분류쿼리쿼리 예시
JOININNER JOINSELECT s.student_id, s.name, c.course_name FROM students s INNER JOIN courses c ON s.student_id = c.student_id;
LEFT JOINLEFT JOINSELECT s.student_id, s.name, c.course_name FROM students s LEFT JOIN courses c ON s.student_id = c.student_id;
RIGHT JOINRIGHT JOINSELECT s.student_id, s.name, c.course_name FROM students s RIGHT JOIN courses c ON s.student_id = c.student_id;
CROSS JOINCROSS JOINSELECT students.name, courses.course_name FROM students CROSS JOIN courses;
  • 두 개 이상의 테이블을 결합하는 데이터베이스 연산
  • 사용 이유 :
    • 여러 번 쿼리를 날릴 필요없이 한 번의 쿼리로 여러 테이블의 관련 데이터를 조회할 수 있어 편리하며 성능도 향상된다.
    • 유지보수성 : 데이터를 여러 테이블로 나누어 저장하고 필요한 경우 JOIN으로 결합해 조회하기 때문에 데이터를 관리하기 좋다.

JOIN (INNER JOIN)

  • 두 테이블 간에 교집합되는 부분(데이터가 존재하는 부분)만 결합하는 연산

LEFT JOIN

  • 쿼리문의 왼쪽 테이블을 기준으로 오른쪽에서 일치하는 데이터를 가져와 결합한다.
    만약, 왼쪽 테이블의 기준열 데이터가 오른쪽 테이블의 기준열에 없다면, NULL로 표시한다.
  • 즉, 왼쪽 테이블의 모든 레코드를 반환, 오른쪽 테이블에서 이와 일치하는 데이터를 가져와 결합한다.
    단, 오른쪽에는 없고 왼쪽에만 있는 데이터의 경우 NULL로 처리한다.

RIGHT JOIN

  • 쿼리문의 오른쪽 테이블을 기준으로 왼쪽에서 일치하는 데이터를 가져와 결합한다.
    만약, 왼쪽테이블의 기준 열 데이터가 오른쪽 테이블의 기준열에 없다면, NULL로 표시한다.
  • 즉, 오른쪽 테이블의 모든 레코드를 반환, 왼쪽 테이블에서 이와 일치하는 데이터를 가져와 결합한다.
    단, 왼쪽에는 없고 오른쪽에만 있는 데이터의 경우 NULL로 처리한다.

CROSS JOIN

  • 두 테이블 간의 곱집합, 즉 모든 경우의 수를 반환한다.
profile
일단 할 수 있는걸 하자.
post-custom-banner

0개의 댓글