상세 컨텐츠

본문 제목

[혼자 공부하는 SQL] Chapter02. 실전용 SQL 미리 맛보기

SQL

by lee_hg; 2022. 1. 12. 20:41

본문

Chapter02. 실전용 SQL 미리 맛보기

데이터베이스 모델링 : 테이블 구조를 미리 설계하는 개념 즉, 업무 분석과 시스템 설계 단계

대표적으로 폭포수 모델을 사용하여 프로젝트 진행

[참고]

폭포수 모델(Waterfall model) : 소프트웨어 개발 절차 중 한 가지로, 각 단계가 구분되어 프로젝트의 진행 단계가 명확하다. 하지만 문제가 발생할 경우 다시 앞 단계로 돌아가기 어려움

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

 

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

= 대규모 소프트웨어를 작성하기 위한 전체 과정

 

데이터베이스 모델링(Database modeling) : 현실 세계의 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정 즉, 실제 데이터를 테이블로 변경하기위한 작업

How? 실제 작업을 나타낼 수 있는 특징들을 추출해서 테이블 형태의 데이터베이스로 만들기

 

[DBMS 설치한 후 데이터 베이스 만들기]

Mac에서 SQL DB 설치하기(몬테레이[Monterey])

기존에 설치했던 Workbench에서 local 연결을 시도했는데 계속 Operation in progress 창에서 Please stand by... 만 뜨고 넘어가지 않았다... 후.. 최근 맥os를 몬테레이로 업데이트를 했더니 버전이 안맞아서 그런듯하여 MySQL 제거 후 재설치:(

 

[참고] 맥에서 MySQL 설치하기

(0) 우선 Homebrew가 설치되어 있어야 한다

# homebrew가 이미 설치되어 있고 사용한지 오래되었다면 업데이트 먼저!
brew update

# mysql설치
brew install mysql

# 설치.. 꽤 오래걸리지만 설치를 완료했다면 재실행하여 확인하기
brew services restart mysql

# 한번 더 list에 mysql이 있는지 확인
brew list

# SUCCESS!를 확인했다면 MySQL 설정하기
mysql_secure_installation

# root키 설정(low/medium/strong 조건 확인하여 원하는 설정으로 선택해주고 password 설정)
## Do you wish to continue with the password provided? 설정한 패스워드 사용할건지
## Remove anonymous users? 사용자 계정 생성하지 않고 이용하는 것을 방지할건지
## Disallow root login remotely? 원격으로 root 로그인 허용할건지
## remove test database and access to it? 테스트 디비와 허용을 삭제할건지


# 모든 설정 마쳤으면 
mysql.server stop

- MySQL Workbench 설치하기

https://downloads.mysql.com/archives/workbench/

맥os 유형에 따라 다운로드 진행하면 완료!

 

[테이블 만들기]

* 테이블 설계란?

   : 열 이름과 데이터 형식을 지정하는 것

 

회원테이블을 설계해보면 아래 표와 같음

열 이름(한글) 영문 이름 데이터 형식 최대 길이 널 허용 안 함(Not Null)
아이디(기본 키) member_id 문자(CHAR) 8글자 Yes
회원 이름 member_name 문자(CHAR) 5글자 Yes
주소 member_addr 문자(CHAR) 20글자 No

➔ 아이디, 회원 이름, 주소 3개의 열로 구성

➔ 데이터 형식은 문자(Character)로, 각각 최대 길이도 지정

    * 데이터 형식에는 숫자(INT), 날짜(DATE) 등 있음

➔ 꼭 필요한 아이디와 회원 이름은 NOT NULL로, 넣지 않아도 되는 주소는 NULL 허용으로 설계

 

테이블 만들기 영상

[데이터 입력하기]

 

데이터 입력하기

[데이터 활용하기]

SELECT * FROM member;

SELECT member_name, member_addr FROM member;

SELECT * FROM member WHERE member_name = '아이유';

 

[키워드 정리]

* 스키마(Schema) : MySQL 안의 데이터 베이스

* 데이터 형식(Data Type) : 문자형(CHAR), 정수형(INT) 등과 같이 열에 저장될 데이터 형식

* SQL 예약어 : SELECT, FROM, WHERE

 

[데이터베이스 개체]

- 인덱스(Index)

   : 데이터를 조회할 때 결과 도출 시간을 줄여줌

     Index Scan을 통해 생성된 테이블에서 특정 데이터를 빠르게 찾을 수 있음

CREATE INDEX idx_member_name ON member(member_name)

- 뷰(View)

   : 가상의 테이블

     실제 데이터를 가지고 있지 않으며, 실제 테이블에 연결(link)된 개념(like 바로 가기 아이콘)

CREATE VIEW member_view 
AS
SELECT * FROM member;

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

   : MySQL에서 제공하는 프로그래밍 기능으로, 자주 사용하는 여러 개의 SQL 문을 하나로 묶어서 편리하게 사용할 수 있음

     아래와 같이 설정해 주면 CALL myProc();으로 두 개의 SQL문을 실행한 결과값이 도출 됨

DELIMITER //
CREATE PROCEDURE myProc() # 스토어드 프로시저 이름 지정
BEGIN
SELECT * FROM member WHERE member_name = '나훈아';
SELECT * FROM product WHERE product_name = '삼각김밥';
END //
DELIMITER;

 

관련글 더보기

댓글 영역