https://www.hanbit.co.kr/store/books/look.php?p_code=B6846155853
혼자 공부하는 SQL
데이터베이스 개념부터 SQL 문법까지 입문자의 눈높이에 맞춰 구성했습니다. 지루한 설명 대신 도식화된 이미지와 예제를 통한 실습으로 책의 마지막까지 흥미롭게 학습할 수 있습니다. 프로그
www.hanbit.co.kr
위 내용은 <혼자 공부하는 SQL>을 기반으로 공부하여 작성 내용입니다.
2-1 건물을 짓기 위한 설계도 : 데이터베이스 모델링
폭포수 모델(waterfall model) : 소프트웨어 개발 절차 중 하나
- 프로젝트 계획
- 업무분석
- 시스템 설계
- 프로그램 구현
- 테스트
- 유지보수
데이터베이스 모델링 : 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정
전체 데이터베이스 구성도
2-2 데이터베이스 시작부터 끝까지
데이터베이스 구축 절차
- 데이터베이스 만들기 -> 테이블 만들기 -> 데이터 입력/수정/삭제하기 -> 데이터 조회/활용하기
데이터베이스 만들기
- 스키마(schema)와 데이터베이스는 동일한 용어, 앞으로 스키마 용어가 나오면 그냥 데이터베이스라고 이해해도 됨
- [Name]에 shop_db를 입력하면 자동으로 탭 이름도 동일하게 변경됨
- [Apply] 버튼을 클릭하면 Apply SQL Script to Database 창에 SQL 문이 자동으로 생성됨
- 다시 [Apply]와 [Finish] 버튼을 클릭하면 좌측 [SCHEMAS] 패널의 목록에 'shop_db' 추가됨
테이블 생성하기
- MySQL Workbench 창의 [SCHEMAS] 패널에서 'shop_db'의 화살표를 클릭해 확장하고 [Tables]를 마우스 오른쪽 버튼으로 클릭한 후 [Create Tables]을 선택
- [Table Name(테이블 이름)] 입력 후 [Column Name(열 이름)]과 [Datatype(데이터 형식)] 입력 후 [Apply]하면 완성
- [shop_db] - [Tables] - [member]를 선택하고 마우스 오른쪽 버튼을 클리한 후 [Select Rows - Limits 1000] 선택
- NULL부분을 클릭해서 데이터 입력
데이터 활용하기
- [SCHEMAS] 패널의 shop_db를 더블 클릭 -> 진하게 변경되면 앞으로 쿼리 창에 입려할 SQL이 선택된 shop_db에 적용된다는 의미
- SELECT의 기본 형식은 SELECT 열_이름 FROM 테이블 이름 [WHERE 조건]
- *은 모든 열 의미함
- SQL을 실행하면 현재 결과의 건수와 조회하는 데 소요된 시간(초) 표
SELECT * FROM member; // '회원 테이블의 모든 열을 보여줘' 의미
- 위의 화면은 2개의 SQL이 모두 실행된 것
- 이 상황에서 하나의 SQL만 실행하려면 실행하려는 SQL문을 드래그하여 실행해야함
2-3 데이터베이스 개체
모든 데이터베이스 개체는 독립적으로 존재하는 것이 아닌라 테이블과 상화 연관이 있음
인덱스 : 데이터를 조회할 때 결과가 나오는속도를 획기적으로 빠르게 해줌
뷰 : 테이블의 일부를 제한적으로 표현할 때 주로 사용
스토어드 프로시저 : SQL에서 프로그래밍이 가능하도록 해줌
트리거 : 잘못된 데이터가 들어가는 것을 미연에 방지하는 기능
인덱스
- 테이블에서 '아이유'를 찾을 때 회원 테입르의 1행부터 끝까지 전체를 살펴보는 SQL
- Full Tabel Scan -> 처음부터 끝까지 엄청나게 오랜 시간이 걸려서 '아이유'를 찾은 것
SELECT * FROM member WHERE member_name = '아이유';
- 다음 SQL 실행하면 인덱스 생성됨, 결과는 눈에 보이지 않음
- ON member(member_name) : member 테이블의 member_name 열에 인덱스를 지정하라는 의미
- Non-Unique Key Lookup : 인덱스를 통해 결과를 찾음
CREATE INDEX idx_member_name ON member(member_name);
SELECT * FROM member WHERE member_name = '아이유';
뷰
- 테이블과 상당히 동일한 성격
- 보안 강화, SQL문 간단 사용 가능
- 가상 테이블
# 기본적인 뷰 만들기
CREATE VIEW member_view
AS
SELECT * FROM member
# SQL은 들여쓰기를 하지 않아도 잘 작동함
# 하지만 1줄에 모두 쓰면 가독성이 떨어지기 때문에 여기서는 들여쓰기 함
# 뷰에 접근하기
SELECT * FROM member_view
스토어드 프로시저
- SQL 안에서도 일반 프로그래밍 언어처럼 코딩 가능
- MySQL에서 제공하는 프로그래밍 기능
두 SQL을 각각 실행하는 방법
SELECT * FROM member WHERE member_name = '나훈아';
SELECT * FROM product WHERE product_name = '삼각김밥';
스토어드 프로시저로 만들어 실행하는 방법
- DELIMITER // ~ DELIMITER ; -> 구분 문자 의미
- BEGIN과 END 사이에 SQL문 넣으면
DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
SELECT * FROM member WHERE member_name = '나훈아';
SELECT * FROM product WHERE product_name = '삼각김밥';
END//
DELIMETER ;
CALL myProc() # 스토어드 프로시저 호출
'SQL' 카테고리의 다른 글
[혼자 공부하는 SQL] chapter 4. SQL 고급 문법(4-2) (1) | 2023.05.08 |
---|---|
[혼자 공부하는 SQL] chapter 4. SQL 고급 문법(4-1) (0) | 2023.05.08 |
[혼자 공부하는 SQL] chapter 3. SQL 기본 문법(3-3) (0) | 2023.05.04 |
[혼자 공부하는 SQL] chapter 3. SQL 기본 문법(3-2) (0) | 2023.05.03 |
[혼자 공부하는 SQL] chapter 3. SQL 기본 문법(3-1) (1) | 2023.05.02 |