본문 바로가기

혼자 공부하는 SQL(혼공단 9기)

(1주차) Chapter 01 ~ 02

내용 정리

Chapter 01. 데이터베이스와 SQL

01-1. 데이터베이스 알아보기

- DB : 데이터의 집합

- DBMS : DB를 운영/관리하는 프로그램

- 테이블 : DB의 최소 단위로, 하나 이상의 열과 행으로 구성(RDBMS의 핵심 개체)

- SQL : DB를 구축, 관리, 활용하기 위해서 사용되는 언어

 

- DBMS의 분류

: 계층형(hierarchical), 망형(network), 관계형(relational), 객체지향형(object-oriented), 객체관계형(object-relational) 등으로 분류

 

01-2. MySQL 설치하기

- Root : MySQL의 모든 권한이 있는 관리자의 이름

- SHOW DATABASES : MySQL 서버에 있는 DB목록을 출력

 

Chapter 02. 실전용 SQL 미리 맛보기

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

- 프로젝트 : 현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓는 과정

- DB modeling : 테이블의 구조를 미리 설계

- 폭포수 모델 : 프로젝트를 진행하기 위해 사용되는 대표적인 모델으로 DB modeling은 업무 분석시스템 설계 단계에 해당. 이 단계를 거치면 가장 중요한 DB 개체인 테이블 구조가 결정

1) 프로젝트 계획 2) 업무 분석 3) 시스템 설계 4) 프로그램 구현 5) 테스트 6) 유지보수

 : 각 단계가 구분되어 프로젝트의 진행 단계가 명확

 : 하지만 문제가 발생할 경우 다시 앞 단계로 돌아가기 어려움.

 

- 기본키(PK) : 중복되어서는 안 되며, 비어 있어서도 안됨.

 : 테이블에는 열이 여러 개가 있지만 기본 키는 1개만 지정해야 하며, 일반적으로 1개의 열에 지정

 

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

- 데이터베이스 구축 절차

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

- 데이터베이스 모델링이 완료되면 절차에 따라서 데이터베이스를 구축할 수 있음.

- 스키마(schema)데이터베이스는 동일한 용어

- 기본키로 설정된 열을 기준으로 오름차순으로 자동 정렬

- SQL의 제일 뒤에는 세미콜론(;)이 꼭 있어야 함.

 

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

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

- 인덱스 : 데이터를 조회할 때 결과가 나오는 속도를 획기적으로 빠르게 해줌.

- 뷰 : 테이블의 일부를 제한적으로 표현할 때 주로 사용

- 스토어드 프로시저 : SQL에서 프로그래밍이 가능하도록 해줌.

- 트리거 : 잘못된 데이터가 들어가는 것을 미연에 방지

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

 

- 인덱스

1) 생성

CREATE INDEX idx_member_name ON member(member_name);

2) 검색

Non-Unique Key Lookup

(↔ Full Table Scan)

* 인덱스 생성 여부에 따라 결과가 달라지는 것은 아님.

 

- 뷰

 : 가상의 테이블, 실제 데이터를 가지고 있지 않으며, 진짜 테이블에 링크된 개념

 : 뷰의 실체는 SELECT

 : 뷰에 접근하는 것은 테이블에 접근하는 것과 동일

→ 그렇다면, 뷰를 사용하는 이유는?

1) 보안에 도움

2) 긴 SQL문을 간략하게 만들 수 있음

 

- 스토어드 프로시저

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

 : 여러 개의 SQL문을 하나로 묶어서 사용 가능

 : 연산식, 조건문, 반복문 등을 사용 가능

1) 생성

DELIMITER //

CREATE PROCEDURE myProc()

BEGIN

SELECT * member WHERE member_name = '나훈아';

SELECT * product WHERE product_name = '삼각김밥';

END //

DELIMITER ;

2) 실행

CALL myProc();

3) 삭제

DROP PROCEDURE myProc;

 

기본 미션

 

p. 80의 shop_db의 회원 테이블(member)에서 아이유 회원에 대한 정보만 추출한 후 결과 화면 인증하기

 

 

선택 미션

데이터베이스 개체 3가지 설명하기

데이터베이스 개체 : 데이터베이스 안에 저장되는 개체. 모든 데이터베이스 개체는 독립적으로 존재하는 것이 아니라 테이블과 상호 연관이 있음.

 

1. 인덱스(INDEX)

: 책의 제일 뒷부분의 '찾아보기'와 비슷한 개념으로 데이터를 조회할 때 결과가 나오는 속도를 획기적으로 빠르게 해줌.

-- INDEX 생성 및 확인
CREATE INDEX idx_member_name ON member(member_name);

 

2. 뷰(VIEW)

 : 테이블과 상당히 동일한 성격의 데이터베이스 개체로 '가상의 테이블'이라고 할 수 있음.

 : 실제 데이터를 가지고 있지 않으며, 진짜 테이블에 링크된 개념임. WindowsOS의 '바로가기 아이콘'과 비슷한 개념.

 : 테이블의 일부를 제한적으로 표현할 때 주로 사용.

 : 뷰를 활용하면 보안도 강화하고, SQL문도 간단하게 사용할 수 있음.

-- VIEW 생성 및 이용
CREATE VIEW member_view AS SELECT * FROM member;
SELECT * FROM member_view;

 

3. 스토어드 프로시저(Stored Procedure)

 : MySQL에서 제공하는 기능으로 SQL에서 프로그래밍 언어처럼 코딩이 가능하도록 해줌.

 : 여러 개의 SQL문을 하나로 묶어서 편리하게 사용 가능.

 : C, Java, Python과 같은 언어에서 사용되는 연산식, 조건문, 반복문 등을 사용할 수 있음.

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

-- Stored Procedure 불러오기
CALL myProc();

-- Stored Procedure 삭제하기
DROP PROCEDURE myProc;

'혼자 공부하는 SQL(혼공단 9기)' 카테고리의 다른 글

(6주차) Chapter 07 ~ 08  (0) 2023.02.09
(5주차) Chapter 06  (0) 2023.02.06
(4주차) Chapter 05  (0) 2023.01.31
(3주차) Chapter 04  (0) 2023.01.13
(2주차) Chapter 03  (0) 2023.01.09