ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [혼자 공부하는 SQL] 2장. 실전용 SQL 미리 맛보기
    DB 2024. 4. 4. 01:32
    728x90

    데이터베이스 모델링

    현실에서 쓰이는 것을 테이블로 변경하기 위한 작업이 데이터베이스 모델링입니다.

    예시로 슈퍼마켓의 물건들을 온라인으로 판매한다고 합시다.

    슈퍼마켓이 고객, 물건, 직원 등을 데이터베이스에 각각의 테이블 이라는 개체로 변환합니다.

    데이터베이스 모델링에는 정답이 없습니다. 좋은 모델링과 나쁜 모델링은 분명이 존재하는데, 이는 다양한 학습과 실무 경험에서 우러나옵니다.

     

    데이터베이스 용어

    • 데이터 : 하나하나의 단편적인 정보
    • 테이블 : 회원이나 제품의 데이터를 입력하기 위해 표 형태로 표현한 것
    • 데이터베이스 : 테이블이 저장되는 저장소
    • 열(필드) : 테이블의 세로, 필드명
    • 행 : 실질적인 진짜 데이터, 테이블에서 행 데이터의 개수 = 데이터의 개수
    • 기본 키(Primary Key, PK) : 기본 키 열은 각 행을 구분하는 유일한 열, 중복되서는 안되고 비어있어도 안됨, 테이블에서 유일한 열

     

    데이터 베이스 구축 절차

    1. 데이터베이스 만들기
    2. 테이블 만들기
    3. 데이터 입력, 수정, 삭제
    4. 데이터 조회, 활용

     

    SQL 문법

    SELECT 기본 형식

    SELECT 열이름 FROM 테이블 (WHERE 조건);
    

     

    데이터베이스 개체

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

     

    인덱스

    책에서 찾아보기로 해당 단어를 찾아 페이지로 이동하는 방법처럼 사용됩니다.

    인덱스가 없는 테이블에서 특정 데이터를 찾으려고 하면 전체 테이블을 검색해서 찾기 때문에 비교적 오랜 시간이 걸려서 찾게 됩니다.

    인덱스를 생성하는 코드(member 테이블의 member_name 열에 인덱스 지정)

    CREATE INDEX idx_member_name ON member(member_name);
    

    → Key Lookup : 인덱스를 통해 결과를 찾음, 이런 방법이 인덱스 검색(Index scan)

    인덱스 생성 여부에 따라 결과가 달라지는 것은 아니다. 동일한 결과는 찾을 수 있으나 찾는 시간의 차이가 있습니다.

     

    테이블과 상당히 동일한 성격의 데이터베이스 개체입니다. 뷰를 활용하면 보안도 강화하고 SQL 문도 간단하게 사용할 수 있습니다.

    뷰는 가상의 테이블이라고도 할 수 있습니다. 뷰는 실제 데이터를 가지고 있지 않으며, 진짜 테이블에 링크된 개념입니다.

    ‘바로 가기 아이콘’과 비슷한 개념이라고 할 수 있고, 실체는 없으며 테이블과 연결되어 있는 것입니다.

    정확한 뷰의 실체는 SELECT 문입니다. 즉 사용자가 뷰를 테이블처럼 접근하면 SELECT 문으로 테이블에 접근하도록 해줍니다.

     

    뷰를 생성하는 코드

    create view member_view as select * from member;
    

    뷰에 접근하는 코드

    create view member_view as select * from member;
    

    테이블에 접근하는 것과 동일한 결과가 나옵니다.

     

    뷰를 사용했을 때의 장점은 다음과 같습니다.

    1. 보안에 도움이 됩니다.
    2. 긴 SQL문을 간략하게 만들 수 있습니다.

     

     

    스토어드 프로시저(stored procedure)

    스토어드 프로시저를 통해 SQL 안에서도 일반 프로그래밍 언어처럼 코딩을 할 수 있습니다.

    스토어드 프로시저란 MySQL에서 제공하는 프로그래밍 기능으로 여러 개의 SQL 문을 하나로 묶어서 편리하게 사용할 수 있습니다. 또한 연산식, 조건문, 반복문 등을 사용할 수도 있습니다.

    스토어드 프로시저를 만들고 실행하는 코드

    delimiter //
    create procedure myProc()
    begin
    	select * from member where member_name = '나훈아';
    	select * from product where product_name = '삼각김밥';
    end //
    delimiter ;
    
    call myProc()  -> 스토어드 프로시저 호출
    

    이렇게 자주 사용되는 SQL문을 한번에 실행할 수 있게 해줍니다.

    728x90
Designed by Tistory.