본문 바로가기
혼공단

[혼공S] 1주차 - 데이터베이스 시작하기

by 망쇼 2023. 7. 4.

기본 미션: 아이유 회원에 대한 정보만 추출하기

선택 미션: 데이터베이스 개체 3가지 설명하기

  • 인덱스: 데이터를 조회할 떄 결과가 나오는 속도를 획기적으로 빠르게 해준다
  • 뷰: 테이블의 일부를 제한적으로 표현
  • 스토어드 프로시저: SQL에서 프로그래밍이 가능하도록 해준다

1장

데이터베이스: 데이터의 집합.

DBMS: Database Management System. 데이터베이스를 관리하고 운영하는 소프트웨어. MySQL, 오라클 등

DBMS의 분류: 계층형, 망형, 관계형, 객체지향형, 객체관계형

SQL: Structured Query Language. 관계형 데이터베이스에서 사용되는 언어.


2장

데이터베이스 모델링: 테이블의 구조를 미리 설계하는 개념. 폭포수 모델에서 업무 분석과 시스템 설계 단계에 해당됨.

 

데이터베이스의 구성

  • 테이블: 데이터를 입력하기 위해 표 형태로 표현한 것
  • 데이터베이스: 테이블이 저장되는 저장소
  • 열: 테이블의 세로(컬럼, 필드). 각 열을 구분하기 위해 열 이름이 테이블 내에서 서로 다르다. 
  • 행: 실질적인 진짜 데이터(로우, 레코드). 행의 개수가 데이터의 개수이다.
  • 기본 키(primary key): 각 행을 구분하는 유일한 열. 중복되어서 안되고 비어있어서도 안된다.

데이터베이스 구축 절차

데이터베이스 만들기 -> 테이블 만들기 -> 데이터 입력/수정/삭제하기 -> 데이터 조회/활용하기

 

1. 데이터베이스 만들기

새로운 스키마 생성

2. 테이블 만들기

PK: Primary Key. 기본키. 

NN: Not Null. 반드시 입력해야한다.

CHAR vs VARCHAR

CHAR: 고정형 문자열. 정해진만큼의 데이터 공간을 차지한다. CHAR(8)에 4글자만 입력할 경우 남은 공간은 비게 된다. 최대 255자까지 가능하다.

VARCHAR: 가변형 문자열. 입력하는 문자열의 길이에 따라 차지하는 공간의 크기가 정해진다.

그렇다면 가변적인 VARCHAR을 쓰는게 낫지 않을까? -> CHAR는 사이즈가 고정되어 있어서 추후에 연산할 필요가 없기 때문에 검색속도 및 읽히는 속도가 다른 타입보다 월등히 빠르다

 

DATE vs DATETIME

DATE: 날짜를 저장할 수 있는 타입 기본 형식은 'YYYY-MM-DD'이며, 이때 저장할 수 있는 날짜의 범위는 '1000-01-01'부터 '9999-12-31'까지이다. 

DATETIME: 날짜와 함께 시간까지 저장할 수 있는 타입. 말 그대로 DATE + TIME

3. 데이터 입력하기

데이터를 입력하면 기본키로 설정한 열이 기준이 되어 오름차순으로 자동 정렬된다.

수정, 삭제도 데이터 입력할 때와 같은 방법으로 하면 된다.

4. 데이터 활용하기

데이터베이스를 활용하기 위해서 주로 SELECT문을 사용한다.

SELECT 열_이름 FROM 테이블_이름 [WHERE 조건];
  • SQL의 예약어는 대문자로 표시하면 구분하기 쉽다
  • SQL의 제일 뒤에는 세미콜론이 꼭 있어야한다
  • ctrl + shift + Enter를 하면 SQL을 실행할 수 있다

데이터베이스의 개체: 테이블, 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 ...

  • 인덱스: 데이터를 조회할 떄 결과가 나오는 속도를 획기적으로 빠르게 해준다
  • 뷰: 테이블의 일부를 제한적으로 표현
  • 스토어드 프로시저: SQL에서 프로그래밍이 가능하도록 해준다
  • 트리거: 잘못된 데이터가 들어가는 것을 미연에 방지

1. 인덱스

CREATE INDEX idx_member_name ON member(member_name);

어떻게 SELECT문을 실행했는지 확인하려면 Execution Plan 탭에서 확인할 수 있다.

인덱스가 없는 경우: Full Table Sacn(전체 테이블 검색)

인덱스가 있는 경우: Non-Unique Key Lookup(인덱스를 통해 결과를 찾았다, 인덱스 검색)

인덱스를 사용하면 시간을 단축하는 효과가 있다.

2. 뷰

CREATE VIEW member_view
AS
	SELECT * FROM member;

테이블과 동일한 성격의 데이터베이스 객체. 보안을 강화하고, SQL문을 간단하게 사용할 때 쓴다.

뷰 = 가상의 테이블. 실제 데이터를 가지고 있지 않으며 진짜 테이블에 링크되어있다.(바로 가기 아이콘)

굳이 왜 뷰를 사용하는지는 5장에서 배우자!

3. 스토어드 프로시저

DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
	SELECT * FROM member WHERE member_name = '나훈아';
    SELECT * FROM product WHERE product_name = '삼각김밥';
END //
DELIMITER;

CALL myProc();

SQL 안에서도 일반 프로그래밍 언어처럼 코딩을 할 수 있다.

여러개의 SQL문을 하나로 묶어서 편리하게 사용할 수 있다.

다른 프로그래밍 언어에서 사용되는 연산식, 조건문, 반복문 등을 사용할 수도 있다.

스토어드 프로시저는 7장에서 더 깊게 배워보자.

'혼공단' 카테고리의 다른 글

[혼공S] 3주차 - SQL 고급  (0) 2023.07.23
[혼공컴운] 1주차 - 컴퓨터 구조 시작  (0) 2023.07.07
혼공단 시작  (0) 2023.06.30