All About
혼자 공부하는 SQL_1주차 정리 및 미션 본문
혼자 공부하는 SQL 1주차
※ 순서
Chp 1. 정리
Chp 2. 정리
미션
Chp 1. 데이터베이스와 SQL
■ 데이터베이스 알아보기
- 데이터베이스와 DBMS
- 데이터베이스(Database, DB): 데이터의 집합
- DBMS(Database Management System): 데이터베이스를 관리하고 운영하는 소프트웨어
- 다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유&동시 접근 가능해야 함
- ex) 은행의 예금 계좌
- 예외) 엑셀: 데이터 집합을 관리하고 운영 → DBMS, 대용량 데이터 관리&여러 사용자와 공유 X → DBMS X
- DBMS 종류
- MySQL, MariaDB, Oracle, SQL Server, SQLite 등
- DBMS의 발전 과정
- 종이에 펜으로 기록
- 컴퓨터에 파일로 저장
- 파일 형태로 저장
- 한 번에 한 명이 사용자만 작업 가능
- 기록 누락, 기록 중복 등의 문제 발생 가능 ← (불일치가 파일의 가장 큰 문제점)
- 한 명이 처리 or 소량의 데이터 처리 → 속도 빠름&사용법 쉬움
- 파일 형태로 저장
- DBMS의 대두와 보급
- 1973년, 학자 에드거 프랭크 커드(E.F. Codd)가 이론 정립
- SQL(Structured Query Language): DBMS에 데이터를 구축, 관리, 활용하기 위해 사용되는 언어
- DBMS의 분류
- 계층형 DBMS(Hierarchical DBMS)
- 처음으로 등장한 DBMS 개념, 1960년대 시작
- 트리 형태
- 문제점: 구성 완료 후 변경 어려움/다른 구성원 찾아가는 것 비효율적
- 지금은 사용 X
- 망형 DBMS(Network DBMS)
- 계층 DBMS의 문제점 개선, 1970년대 등장
- 장점: 하위 구성원끼리 연결된 유연한 구조
- 단점: 잘 활용하려면 모든 구조를 이해해야만 프로그램 작성 가능
- 지금은 거의 사용 X
- 관계형 DBMS(Relational DBMS, RDBMS)
- 대부분의 DBMS가 RDBMS 형태 사용
- 테이블: 최소 단위, 하나 이상의 열&행으로 구성(2차원 구조)
- 모든 데이터가 테이블에 저장
- 가장 기본적이고 중요한 구성
- + 맨 처음 행: 열 이름 나타냄/열&행 개수 셀 때 → 열: 그대로 셈, 행: 열 이름이 포함된 행 제외 후 셈
- 객체지향형 DBMS(Object-Oriented DBMS)
- 객체관계형 DBMS(Object-Relational DBMS)
- 계층형 DBMS(Hierarchical DBMS)
- DBMS에서 사용되는 언어: SQL
- SQL(Structured Query Language)
- 관계형 데이터베이스(RDBMS)에서 사용되는 언어
- 일반적인 프로그래밍 언어와는 조금 다른 특성 가짐
- 표준 SQL(Standard SQL): 국제표준화기구에서 지정하는 SQL의 표준
- 대부분의 DBMS 회사가 표준 SQL 준수, But 각 제품의 특성 반영한 SQL 사용
- ex) MySQL: 표준 SQL + SQL / Oracle: 표준 SQL + PL/SQL / SQL Server: 표준 SQL + T-SQL
- 대부분의 DBMS 회사가 표준 SQL 준수, But 각 제품의 특성 반영한 SQL 사용
- SQL(Structured Query Language)
■ MySQL 설치하기
-책에서는 Windows에서 설치하는 방법만을 소개하고 있다.
-나는 Mac 유저이기 때문에 구글링을 통해 설치(사실 전에 쓰던 노트북은 Windows 기반이어서 전 노트북에서 실습을 진행할까 했지만 이왕 맥북 산거 여기에 다시 설치해야지..^^)
-시간이 된다면 Windows&Mac에서의 설치 방법을 정리해 기록해보도록 하겠다.
- MySQL 서버&MySQL 워크벤치 관계
- MySQL 서버(MySQL Server): 데이터베이스 엔진 운영하는 가장 중요한 프로그램(ex. 네이버)
- MySQL의 여러 소프트웨어 중 엔진 기능하는 핵심 소프트웨어(DBMS)
- MySQL 워크벤치(MySQL Workbench): MySQL 서버에 접속하기 위한 프로그램(ex. 웹 브라우저)
- MySQL 서버에 접속/연결 위한 클라이언트 도구
- SQL 문 입력&실행
- root: MySQL 관리자 이름
- 가장 높은 권한의 사용자
- MySQL 설치 시 기본적으로 생성
- MySQL 서버(MySQL Server): 데이터베이스 엔진 운영하는 가장 중요한 프로그램(ex. 네이버)
Chp 2. 실전용 SQL 미리 맛보기
■ 건물을 짓기 위한 설계도: 데이터베이스 모델링
-데이터베이스 모델링(Database Modeling): 현실 세계에서 사용되는 작업 or 사물들을 DBMS의 테이블로 옮기기 위한 과정
-테이블의 구조를 미리 설계하는 개념
-프로젝트에서 데이터베이스 모델링이 잘 되어야 제대로 된 데이터베이스 구축 가능
-폭포수 모델(waterfall model): 소프트웨어 개발 단계 중 하나, 폭포가 떨어지듯 개발 단계 진행
-프로젝트 진행 위해 대표적으로 사용
-데이터베이스 모델링: (폭포수 모델의) 업무 분석&시스템 설계 단계에 해당
-해당 단계를 거치면 가장 중요한 데이터베이스 개체인 '테이블 구조' 결정
-프로젝트: 현실 세계를 컴퓨터 시스템으로 옮겨놓는 일련의 과정
- 프로젝트 진행 단계
- 프로젝트: 현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓는 과정
- 대규모 소프트웨어를 작성하기 위한 전체 과정
- 소프트웨어도 절차를 갖춰 만들어야함 → 절차를 연구하는 분야: 소프트웨어 공학
- 폭포수 모델(waterfall model): 소프트웨어 공학에서 가장 기본적으로 언급되는 소프트웨어 개발 절차(각 단계가 폭포 떨어지듯 진행)
- 프로젝트 계획: 계획 단계
- 업무 분석: 업무 파악 및 정리(데이터베이스 모델링)
- 시스템 설계: 업무 분석을 컴퓨터에 적용시키기 위해 알맞은 형태로 다듬는 과정(데이터베이스 모델링)
- 프로그램 구현: 실제 프로그래밍 언어로 코딩
- 테스트: 코딩된 프로그램 오류 확인
- 유지보수:문제점 보완 및 기능 추가
- 프로젝트: 현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓는 과정
-단점: 문제 발생 시 앞 단계로 돌아가기 어려움
-각 단계가 명확하여 지금도 많이 사용 중
- 데이터베이스 모델링(Database Modeling): 현실에서 사용되는 사물 or 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정
- 현실에서 쓰이는 것을 테이블로 변경하기 위한 작업
- 특징을 추출해서 데이터베이스로 만들기 → '테이블'이라는 개체로 변환
- 전체 데이터베이스 구성도
- 데이터(data): 단편적인 정보
- 테이블(table): 데이터 입력 위한 표 형태
- 데이터베이스(Database, DB): 테이블이 저장되는 저장소(데이터의 저장소)
- 데이터베이스는 이름이 서로 달라야 함
- DBMS(Database Management System): 데이터베이스 관리 시스템 or 소프트웨어
- 열(column): 테이블의 세로 (=필드)
- 열 이름: 열을 구분하기 위한 이름
- 각 테이블 내에서 서로 달라야 함
- 영문으로 설정해야 문제 X
- 데이터 형식: 열에 저장될 데이터의 형식
- 테이블 생성 시 열 이름과 함께 지정
- 행(row): 테이블의 가로. 실질적인 진짜 데이터 (=행 데이터)
- 행의 개수 = 데이터의 개수
- 기본 키(Primary Key, PK): 기본 키(=주키) 열은 각 행을 구분하는 유일한 열
- 중복 X, 빈 상태 X
- 테이블 내에는 여러 열이 있지만, 기본 키는 1개(1개의 열)만 지정 가능
- ex) 주민번호, 학번, 아이디
- SQL(Structured Query Language): 구조화된 질의 언어, 사람과 DBMS 소통 위한 언어, DBMS가 알아듣는 언어
■ 데이터베이스 시작부터 끝까지
-데이터베이스 구축 절차
-데이터베이스 만들기
-테이블 만들기
-데이터 입력/수정/삭제하기
-데이터 조회/활용하기
- DBMS 설치하기
- 데이터베이스 만들기
- 스키마(schema): MySQL 안의 데이터베이스. 데이터베이스와 동일한 용어
- 테이블 만들기
- 테이블 설계하기: 테이블의 열 이름&데이터 형식 지정
- 열 이름
- 영문으로 만들 때 띄어쓰기 권장 X → 띄어쓰기 할 경우 큰따옴표("")로 묶어줘야 함
- 보통은 언더 바(_)로 구분
- 데이터 형식: 열에 저장될 데이터의 형식
- CHAR(문자), INT(숫자;정수), DATE(날짜;연, 월, 일) 등
- 예약어: 기존에 약속된 SQL
- SELECT, FROM, WHERE 등
- 널(Null): 빈 것
- 널 허용 안함(Not Null, NN): 반드시 입력해야 한다는 의미
- 열 이름
- 테이블 설계하기: 테이블의 열 이름&데이터 형식 지정
- 데이터 입력하기
- 기본 키 열로 자동 정렬(오름차순)
- INSERT: 데이터 입력
- UPDATE: 데이터 수정
- DELETE: 데이터 삭제
- 데이터 활용하기
- SELECT: 데이터 조회
- SELECT 열_이름 FROM 테이블_이름[WHERE 조건]
- *: 모든 열 → '해당 테이블의 모든 열을 보여줘'
- + SQL 뒤에 세미콜론(;)
- ,: 열 이름 콤마(,)로 구분 시 필요 열만 추출
- SELECT: 데이터 조회
■ 데이터베이스 개체
- 데이터베이스 개체(Database Object)
- 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 등
- 인덱스: 데이터를 빠르게 찾을 수 있도록 도움
- 책 뒤의 '찾아보기'와 유사
- 뷰: '가상의 테이블', 테이블과 상당히 동일한 성격의 데이터베이스 개체
- 일반 사용자 입장에서는 테이블과 뷰 구분 X
- 뷰 - 실제 데이터 가지고 있지 않음(실체 X), 테이블에 링크된 개념
- 윈도우 OS의 '바로가기 아이콘'과 유사
- 뷰의 실체: SELECT 문
- 뷰를 사용하는 이유
- 보안에 도움됨
- 긴 SQL 문을 간략히 만듦
- 스토어드 프로시저: 여러 개의 SQL 묶거나 프로그래밍 기능 제공
- 연산식, 조건문, 반복문 등 사용 가능
- DELIMITER: 스토어드 프로시저 묶어주는 예약어
- CALL: 스토어드 프로시저 호출하는 예약어
- CREATE: 개체 생성문, 데이터베이스 개체 생성 시 사용하는 예약어
- CREATE 개체_종류 개체_이름
- DROP: 개체 삭제문, 데이터베이스 개체 삭제 시 사용하는 예약어
- DROP 개체_종류 개체_이름
▶ 1주차 미션
▷ 기본 미션

▷ 선택 미션
Q. 데이터베이스 개체 3가지 설명하기
A.
-인덱스: 데이터를 빠르게 찾을 수 있도록 도우며, 책의 '찾아보기'와 비슷한 개념
-뷰: 테이블과 상당히 동일한 성격의 개체('가상의 테이블'), '바로가기 아이콘'과 비슷한 개념. 실체가 없고 테이블에 링크된 개념
-스토어 프로시저: 여러 개의 SQL을 묶어줌, 프로그래밍 기능 제공. 프로그래밍 언어에서 사용되는 연산식, 조건문, 반복문 등 사용 가능
'혼공학습단 > 혼공 SQL(11기)' 카테고리의 다른 글
혼자 공부하는 SQL_6주차 정리 및 미션 (0) | 2024.02.15 |
---|---|
혼자 공부하는 SQL_5주차 정리 및 미션 (0) | 2024.02.06 |
혼자 공부하는 SQL_4주차 정리 및 미션 (0) | 2024.01.29 |
혼자 공부하는 SQL_3주차 정리 및 미션 (0) | 2024.01.21 |
혼자 공부하는 SQL_2주차 정리 및 미션 (0) | 2024.01.15 |