쌩로그

혼공 SQL - ch02(실전 SQL 미리 맛보기) 본문

DB/RDB

혼공 SQL - ch02(실전 SQL 미리 맛보기)

.쌩수. 2023. 8. 4. 13:38
반응형

목록

  1. 포스팅 개요
  2. 본론
      2-1. 건물을 짓기 위한 설계도 : 데이터베이스 모델링
      2-2.데이터베이스 시작부터 끝까지
      2-3. 데이터베이스 개체
  3. 요약

1. 포스팅 개요

혼자 공부하는 SQL 챕터 2를 요약 및 정리한 포스팅

2. 본론

2-1. 건물을 짓기 위한 설계도 : 데이터베이스 모델링

데이터베이스 모델링

  • 현실에서 쓰이는 것을 테이블로 변경하기 위한 작업
  • 테이블의 구조를 미리 설계하는 개념
  • 건축 설계도를 그리는 과정과 비슷

데이터베이스의 구성요소

데이터(data)

  • 하나하나의 단편적인 정보

테이블(table)

  • 데이터를 입력하기 위해 표 형태로 표현한 것
  • 데이터베이스 안에 있음.

데이터베이스(Database : DB)

  • 테이블이 저장되는 저장소

DBMS(Database Management System)

  • 데이터베이스 관리 시스템 또는 소프트웨어
  • ex) MySQL, Oracle

열(Column)

  • 테이블의 세로

열 이름

  • 각 열을 구분하기 위한 이름
  • 열 이름은 각 테이블 내에서는 서로 달라야 한다.

데이터 형식

  • 열에 저장될 데이터의 형식
  • 데이터 형식은 테이블을 생성할 때 열 이름과 함께 지정한다.

행(row)

  • 실질적인 진짜 데이터
  • 행 데이터라고도도 부름.
  • 행의 개수가 곧 데이터의 개수

기본 키(Primary Key : PK)

  • 주키라고도 함.
  • 각 행을 구분하는 유일한 열
  • 중복되어서는 안 되고, 비어 있어서도 안 된다.(null 허용 X)

SQL(Structured Query Language)

  • 구조화된 질의 언어
  • DBMS와 사람이 소통하기 위한 언어

2-2.데이터베이스 시작부터 끝까지

스키마

  • MySQL 안의 데이터베이스
  • 데이터베이스와 동일한 용어

데이터베이스

  • 데이터를 저장하는 공간

테이블

  • 2차원의 표 형태로 이루어져있다.
  • 각 열에 해당하는 데이터를 한 행씩 입력할 수 있다.
  • 행에 데이터를 입력, 수정, 삭제, 조회 할 수 있다.

테이블 자동정렬

  • 기본키로 설정한 열이 기준이 되어 오름차순으로 자동정렬된다.

참고로 SQL은 대소문자를 구분하지 않는다.

SELECT 기본 형식

SELECT 열_이름 FROM 테이블_이름 [WHERE 조건]
  • *는 모든 열을 의미

2-3. 데이터베이스 개체

데이터베이스 개체는 독립적으로 존재하는 것이 아니라 테이블과 상호 연관이 있다.

인덱스

  • 데이터를 조회할 때 결과가 나오는 속도를 획기적으로 빠르게 해준다
  • 책의 찾아보기와 비슷한 개념
  • 인덱스 생성 여부에 따라 결과가 달라지는 것은 아니다. 단지 시간이 단축된다.
    • 당연한 말이지만, 시간이 단축되는 점을 통해 성능 향상을 기대해볼 수 있을 거 같다.(나의 생각)

Full Table Scan VS Index Scan

Full Table Scan

  • 전체 테이블 검색
  • 처음부터 끝까지 데이터를 찾는 것.

Index Scan

  • 인덱스를 이용해서 데이터를 찾는 것.

  • 테이블의 일부를 제한적으로 표현할 때 주로 사용
  • 뷰를 활용하면 보안도 강화하고, SQL 문도 간단하게 사용 가능하다.
  • '가상의 테이블'이라고도 할 수 있다.
    • 일반 사용자의 입장에서는 테이블과 뷰를 구분할 수 없다.
  • 뷰는 실제 데이터를 가지고 있지 않으며, 실제 테이블에 링크(link)된 개념.
  • 뷰의 실체는 SELECT문이다.

뷰의 생성문 기본

CREATE VIEW [뷰이름] AS [접근하려는 SQL문];

다음과 같이 VIEW를 만들었을 때, 다음과 같은 실행결과가 나온다.

CREATE VIEW member_view
AS 
    SELECT * FROM member;

이처럼 만든 view에 접근할 수 있다.

SELECT * FROM member_view;

다음 쿼리를 통해서 소스코드를 확인할 수 있다.

SHOW CREATE VIEW member_view;

MySQL의 'From Editor'에서 확인할 수 있는데,
소스 코드를 보면 SELECT 문이 저장됨을 확인할 수 있다.

AS select `member`.`member_id` AS `member_id`,`member`.`member_name` AS `member_name`,`member`.`member_addr` AS `member_addr` from `member`

간략하게 하면,

select * from member;

이와 동일하다.

스토어드 프로시저

  • MySQL에서 제공하는 프로그래밍 기능.
  • SQL에서 프로그래밍이 가능하도록 해준다.

생성 구조

DELIMITER //
CREATE PROCEDURE myProc() -- 스토어드 프로시저 이름 지정
BEGIN
    -- 자주 쓰는 SQL문
    -- ...
    -- ...
    -- 자주 쓰는 SQL문
END //
DELIMITER ;

생성한 스토어드 프로시저는 다음 명령어로 호출할 수 있다.

CALL myProc();

트리거

  • 잘못된 데이터가 들어가는 것을 미연에 방지.

데이터베이스 개체에 대한 내용은 이후에 더 자세히 다룸.

3. 요약

용어 설명이 주다.

용어

  • 스키마
  • 데이터베이스
  • 데이터베이스 모델링

    데이터베이스 구성요소

  • 테이블
  • 데이터
  • DBMS
  • 열 , 열이름
  • 기본 키
  • SQL
  • 데이터 형식

SELECT문 기본 형식.

데이터베이스 개체

  • 인덱스
  • 스토어드 프로시저
728x90
Comments