ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터베이스와 SQL
    Data Science/SQL 2024. 3. 13. 21:40

    1. 데이터베이스와 SQL : 데이터베이스 알아보기

    1. 데이터베이스와 DBMS

    • 데이터베이스 : 데이터의 집합
      • 여러 명의 사용자나 응용 프로그램과 공유, 동시 접근 가능
    • DBMS : 데이터베이스를 관리하고 운영하는 소프트웨어
      • 엑셀은 여러 사용자와 공유 X → DBMS 아님

    2. DBMS의 종류

    • 소프트웨어 = 특정 목적 처리를 위한 프로그램

    3. DBMS의 발전과정

    1. 종이에 펜으로 기록
    2. 컴퓨터에 파일로 저장
      • 파일 : 한 번에 한 명의 사용자만 작업 가능
      • 불일치 문제가 발생 가능하지만 소량 데이터 처리 시 속도가 빠르고 사용법이 편리
    3. DBMS의 대두와 보급 by 에드거 프랭크 커드
      • SQL : DBMS에서 활용하는 언어

    4. DBMS의 분류

    • 계층형 (1960) : 트리 형태, 변경이 까다로움
    • 망형 (1970) : 계층형 문제 개선, 프로그래머가 모든 구조를 이해해야만 작성 가능
    • 관계형 (RDBMS) : MySQL을 포함한 대부분의 DBMS, 모든 데이터가 ‘테이블’이라는 2차원 구조에 저장
    • 객체지향형
    • 객체관계형

    5. SQL

    • DBMS에서 사용하는 언어
    • 표준 SQL : 국제표준화기구에서 정한 SQL의 표준
      • 표준 SQL이 각 회사 제품의 특성을 모두 포용 X → 표준 SQL 준수, 제품의 특성 반영 가능
      • 표준 SQL 익히면 된다..
    • DBMS 제품
      • 오라클 : PL/SQL
      • SQL 서버 : T-SQL
      • MySQL : SQL

     


     

    1. 데이터베이스와 SQL : MySQL 설치하기

    1. MySQL (1994)

    • 오라클 사에서 제공하는 데이터베이스 관리 소프트웨어
    • 대용량 데이터 관리, 운영 가능
    • MariaDB : MySQL 초기 개발자가 오라클 사를 퇴사한 후 만들었다..

    2. MySQL 서버와 MySQL 워크벤치의 관계

    • MySQL 서버 : 작동은 하지만 화면에 보이지 않음
    • MySQL 워크벤치 : MySQL 서버에 접속해서 사용하도록 해주는 도구

    3. MySQL 설치

    • root : MySQL 관리자 이름

    MySQL 설치 오류 해결하기 : 3306 포.. : 네이버블로그 (naver.com) 를 이용해 포트번호 오류를 제거했다.

    잘 작동하는지 확인해보기)

    • SHOW DATABASES : 데이터베이스 목록 출력 

     

    2. 실전용 SQL 미리 맛보기 : 데이터베이스 모델링

    1. 데이터베이스 모델링

    • 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정
    • = 테이블로 변경하기 위한 작업
    • 폭포수 모델 사용 : 진행 단계 명확, 앞 단계로 돌아가기 어려움

    2. 프로젝트 진행 단계

    • 프로젝트 : 대규모 소프트웨어를 작성하기 위한 전체 과정
      • 프로그램 < 소프트웨어

    3. 소프트웨어 개발 단계

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

    4. 전체 데이터베이스 구성

    • 데이터 : 단편적인 정보
    • 테이블 : 제품의 데이터를 입력하기 위해 표 형태로 표현한 것
    • 데이터베이스 : 테이블이 저장되는 저장소, 각 데이터베이스는 이름이 달라야 함
    • DBMS : 데이터베이스 관리 시스템/소프트웨어
    • 열 : 테이블의 세로
    • 열 이름 : 각 테이블 내에서는 서로 이름이 달라야 함
    • 데이터 형식 : 열에 저장된 데이터의 형식. 테이블 생성 시 열 이름과 함께 지정
    • 행 : 실질적인 진짜 데이터. 행 개수 == 데이터의 개수
    • 기본 키 : 각 행을 구분하는 유일한 열. 1개의 열에 중복되지 않게 지정
    • SQL : 구조화된 질의 언어, DBMS에서 소통하기 위한 언어

     


     

    2. 실전용 SQL 미리 맛보기 : 데이터베이스 시작부터 끝까지

    1. 테이블 생성

    • 문자 : CHAR 예약어
    • 정수 : INT
    • 연, 월, 일 : DATE
    • Null
    • Not Null, NN

     

     

    이런 식으로 테이블을 만든다.

     

    2. 데이터 입력하기, 수정과 삭제하기

    삭제는 화살표 모양 우클릭하기

     

    3. 데이터 활용하기

     

    • WHERE 조건 이용하기데이터 행 조회하기 : SELECT 문 활용하기
      • 쿼리창 생성 후 데이터베이스 더블 클릭해서 선택하기!
      • SELECT 열_이름 FROM 테이블_이름 [WHERE 조건]
        • : 모든 열
      • 대소문자 구분 X, 세미콜론 필요(;)
    • where 조건 이용하기
    • *중요 용어 *
      • 스키마 = 데이터베이스
      • 문자형 : CHAR
      • 정수형 : INT
      • 널 : Null
      • 널 허용 X : Not Null, NN
      • 입력 : INSERT
      • 수정 : UPDATE
      • 삭제 : DELETE
      • 조회 : SELECT
      • 조건 : WHERE
      • 예약어 : select 등..
      • 세미콜론으로 끝을 표시
      • 인텔리센스 : 워크벤치의 기능

     


     

    2. 실전용 SQL 미리 맛보기 : 데이터베이스 개체

    1. 인덱스

    • 시간이 나오는 결과 감소
    • 찾아보기 효과
    • 인덱스 만들기 전
      FULL Table Scan을 이용해서 오랜 시간 걸림
       
    • 인덱스 지정하기 : ON 테이블명 ( 열 이름)
      • key lookup = 인덱스로 찾음
      • 인덱스 생성 여부에 따라 결과가 달라지는 건 아님. 시간 단축 여부
    CREATE INDEX idx_member_name ON member(member_name)

     

     

    2. 뷰

    • 가상의 테이블, 진짜 테이블에 링크된 개념
      • 크롬 들어가기 ≠ 크롬 더블클릭으로만 실행
    • 뷰의 실체 : SELECT 문
    • 장점 : 보안 강화, 더욱 간단한 SQL문 사용
    • 회원 뷰 만들기
    create view member_view as select * from member

     

    • 회원 뷰에 접근하기
      • 회원 테이블 접근 결과와 동일.
      • 크롬 더블클릭 = 직접 실행 같은 개념.
    select * from member_view

     

     

    3. 스토어드 프로시저

    • MySQL에서 제공하는 프로그래밍 기능 (코딩 할 수 있다)
      • 여러 개의 SQL 문을 하나로 묶어 편리하게 사용 가능, 조건문과 반목문 등 사용 가능
    • 스토어드 프로시저 이전
      보기 불편
    • 스토어드 프로시저 확인
      • 왜인지 모를 이유로 myProc가 안 돌아가서… myProc2로 대체했다.
        • 데이터베이스 개체 만들기 : create 개체_종류 개체_이름 ~~
        • 데이터베이스 개체 삭제하기 : drop 개체_종류 개체_이름 ~~
    delimiter //
    create procedure myProc2()
    begin
    	select * from member where member_name = '나훈아';
        select * from product where product_name = '삼각김밥';
    end //
    delimiter ;
    
    call myProc2();

     

     

    4. 그 외

    • 트리거
    • 스토어드 함수
    • 커서
Designed by Tistory.