2022-01-25-Database

yyj·2022년 2월 1일
0

.

목록 보기
6/21

"Database"

Database : 데이터의 집합. 대용량의 데이터를 체계적으로 구성해 놓은것!

  • 이런 데이터베이스는 여러개가 존재할 수 있음!

    • (고객DB, 학생DB, 제품DB...)
  • Database는 여러 사람이 동시에 사용

  • Database를 사용하기 위해 지원하는 여러 프로그램이 존재

  • DBMS (Database Management System)

    • Database를 관리하는 시스템(소프트웨어)

    • DAMS의 종류

      • 계층형 DBMS : 데이터의 연계과 쉽지 않음!
      • 네트워크 DBMS : 구현이 어려움!
      • 관계형 DBMS : MySQL (client - server구조)
      • 객체지향 DBMS
      • 객체-관계형 DBMS : Oracle





테이블에 데이터를 입력하고 데이터를 추출하는 SQL구문

  • SQL은 표준이고 모든 관계형 데이터베이스에 공용으로 사용이 가능
  • 데이터 추출
  • 형식

    • SELECT 컬럼명 FROM 테이블 명;
    • *=> 모든 컬럼명을 지칭
SELECT * FROM shopdb.membertbl;
SELECT memberName FROM shopdb.membertbl;
  • 이런식으로 사용 됨!

  • 데이터 삽입
    • INSERT 구문 이용
    • INSERT INTO 테이블명 VALUES(값)
INSERT INTO shopdb.membertbl VALUES('iu', '아이유', '부산');
INSERT INTO shopdb.membertbl VALUES('iu', '아이유', '부산');
INSERT INTO shopdb.membertbl VALUES('iu', '아이유', '부산');

Database의 Index(색인)

  • 검색을 빠르게 하기 위해서 사용하는게 Index
  • Index는 column에 설정하는 것 => 즉 해당 column안에 있는 값을 이용해서
  • B-Tree(Balanced Tree)형태로 데이터를 분배시켜서 저장하는 Index를 따로 생성함!
  • 테이블을 하나 생성
CREATE TABLE shopdb.indexTBL(
    first_name VARCHAR(14),
    last_name VARCHAR(16),
    hire_date DATE
);

-- 데이터를 입력해야함 (기존 데이터를 이용해서 데이터 삽입)
SELECT first_name, last_name, hire_date FROM employees limit 500;
-- limit를 사용하면 입력할 데이터의 값의 범위를 설정 할 수 있음!

-- SELECT한 결과를 통으로 입력할 수 있음!
INSERT INTO shopdb.indexTBL
SELECT first_name, last_name, hire_date 
FROM employees limit 500;

-- 실제 데이터가 들어갔는지 확인!
SELECT * FROM shopdb.indextbl;

-- first_name이 'Mary'인 사람 찾기
SELECT * FROM shopdb.indextbl
WHERE first_name = 'Mary';

-- select를 이용하여 검색하여 특정 컬럼을 하나하나 찾아서 조회해 준다.
-- 특정컬럼(first_name)에 index를 설정해서 B-Tree를 생성해보자
-- index 생성
CREATE INDEX idx_indexTBL_firstname ON shopdb.indextbl(first_name);

-- index 설정 후 다시 검색해보자
SELECT * FROM shopdb.indextbl
WHERE first_name = 'Mary';
-- 검색 결과가 전보다 훨씬 빨리 나오는 것을 확인 할 수 있다!
  • 인덱스는 그렇담 많을수록 좋은게 아닌가? (여러 컬럼마다 index를 설정하면 좋지 않은가?)
  • 인덱스를 설정하면 해당 컬럼의 데이터를 이용해서 B-Tree라는 자료구조 만듬
  • 그런데 데이터가 추가되거나 변경되거나 삭제되면 이 B-Tree구조를 다시 만들어야함
  • Overhead가 발생함!
  • 그래서 전체적인 performance를 따져서 index를 설정해야함!
profile
초보개발자

0개의 댓글