부트캠프/패스트캠퍼스 데이터 분석

[패스트캠퍼스/내일배움카드] 데이터 분석 부트 캠프 BDA 15기 | 7주차

엘레나림 2024. 8. 2. 12:00
728x90

패스트캠퍼스 데이터 분석 부트캠프 15기

데이터 분석 부트 캠프 7주차 일정

월: 온라인 강의 - SQL
화: zoom 강의 - SQL 기본 by Dave lee 강사님
수: 온라인 강의 - SQL
목: zoom 강의 - SQL CRUD 실습 by Dave lee 강사님
금: zoom 강의 - SQL 심화 실습 by Dave lee 강사님

 

더보기

데이터 분석 부트 캠프 7주차 3줄 후기

- 2주간의 나름 빡센 팀별 python 프로젝트가 끝나고 쉬어가는 주 느낌이었다.. 후

- 엑셀, 파이썬, SQL.. 분석 도구가 바뀔 때마다 강사님이 바뀌는데, 초반에는 어색하다가 적응해가는게 지루하지않고 좋다

- 이렇게 1차 정리하고 다시 개념 정리하려고 했는데, 그럴 시간은 없을 것 같다는 생각.... 한번에 할 때 정리 다해버리자~

 

데이터베이스 특징

  • 자료를 구조화하여 저장, 효율적 관리
  • 여러 업무, 여러 사용자가 동시에 사용 가능
  • 데이터베이스 기능 사용하기 위해 DBMS 를 활용 (사용자는 db에 직접 접근x, dbms를 통해서 접근)

DB와 대화하기 위해 사용하는 약속의 언어 -> SQL

SQL로 쓰인 DB에 명령을 내리는 문장 -> 쿼리, Query

 

 

[mysql 기준]

 

mysql 데이터타입

  • 정수형, 실수형, 문자형, 날짜형
  • 데이터 저장하기 전에 저장 공간의 데이터타입을 미리 정해줘야함. 지정된 데이터타입이 아닐경우, 저장이 불가능

 

숫자형 데이터타입

  • 정수형
  • 실수형

 

문자형 데이터타입

  • CHAR, VARCHAR: n의 크기를 미리 지정해야함.
  • TEXT: 고정 바이트

 

날짜형 데이터타입

  • DATE: YYYY-MM-DD
  • DATETIME: YYYY-MM-DD HH:MM:SS
  • TIME: HH:MM:SS
  • YEAR: YYYY

 

문자형은 ‘’ 따옴표로 표기

 

 

타입 변환

  • 숫자 -> 문자: CAST(123 AS CHAR(5))
  • 문자 -> 숫자: CONVERT(‘1004’, INT)
  • 문자 -> 날짜: DATE_FORMAT(‘20211225’, ‘%Y-%m-%d’)

 

Query

 

CREATE-ALTER

  1. 데이터베이스 만들기
    CREATE DATABASE db_name;
  2. 데이터베이스 목록 보기
    SHOW DATABASES;
  3. 데이터베이스 사용하기
    USE db_name;
  4. 테이블 만들기
    CREATE TABLE table_name (
    이름 VARCHAR(20),
    나이 INT,
    소속 VARCHAR(50)
    );
  5. 테이블명 변경
    ALTER TABLE table_name RENAME table_name1;
  6. 새로운 컬럼 추가
    ALTER TABLE table_name1 ADD COLUMN 컬럼명 데이터타입;
  7. 기존 컬럼 타입 변경
    ALTER TABLE table_name1 MODIFY COLUMN 컬럼명 데이터타입;
  8. 기존 컬럼명과 타입 모두 변경
    ALTER TABLE table_name1 CHANGE COLUMN 컬럼명 새로운컬럼명 새로운데이터타입;
  9. 컬럼 지우기
    ALTER TABLE table_name1 DROP COLUMN 컬럼명;

 

cf. 데이터베이스명, 테이블명, 컬럼명 규칙

  • 문자, 숫자, _ 사용
  • 영문 소문자 (키워드나 함수명은 대문자, 사용자 정의한 이름은 소문자)
  • 예약어 사용 불가
  • 문자로 시작. 숫자나 _로는 시작할 수 없음

 

Query

 

DROP-TRUNCATE

  1. 데이터베이스 지우기
    DROP DATABASE db_name;
  2. 테이블 지우기 -> 테이블 자체가 사라짐
    DROP TABLE table_name1;
  3. 테이블 값만 지우기 -> 테이블은 남고 값만 비워짐
    TRUNCATE TABLE table_name1;
  4. 데이터베이스/테이블이 존재한다면 지우기 (에러 방지)
    DROP DATABASE IF EXISTS db_name1;
    DROP TABLE IF EXISTS table_name2;

 

Query

 

INSERT-DELETE-UPDATE

  1. 데이터 행 하나 삽입하기
    INSERT INTO table_name1 (col1, col2, col3)
    VALUES (value1, value2, value3);
  2. 데이터 여러개 삽입하기
    INSERT INTO table_name1 (col1, col2, col3)
    VALUES (value1, value2, value3), (test1, test2, test3), (ex1, ex2, ex3);
  3. 데이터 삭제 (조건에 따른)
    DELETE FROM table_name1 WHERE 조건값;
  4. 데이터 수정 (조건에 따른)
    UPDATE table_name1 SET 컬럼명 = 새 값 WHERE 조건값;

 

Query

 

SQL DATA HANDLING - CRUD

 

SELECT

  1. 숫자, 문자 데이터
  2. 컬럼 값
  3. 전체 컬럼 값, *

AS 컬럼별명

컬럼 별명에 괄호를 넣는경우, 괄호가 쿼리의 일부인지 이름인지 알 수 없기 때문에 따옴표 안에 넣어줘야함

LIMIT 로우 수

특정 테이블의 컬럼과 컬럼값 확인할 때 LIMIT 1 자주 사용함

COUNT -> 데이터 행의 결과 수 세기

DISTINCT -> 중복 제거로 컬럼값 종류 확인

WHERE

  1. 비교 연산자: ==, !=, >, >=, <, <=
  2. 논리 연산자: AND, OR, NOT
  3. 기타 주요 연산자

GROUP BY -> ~ 별

 

 

<SQL 심화>

 

Foreign key

데이터 무결성을 위한 장치

Foreign key를 설정하면 제약조건이 생긴다.! 순서대로 insert 하고 delete 해야함

상용 데이터의 경우는 Foreign key 반드시 필요함! 유저 테이블을 날리면, 구매정보만 남고 유저는 알 수 없게 되는 것

 

having 절

집계함수에 조건을 넣어야할때는 having 절

 

join

join은 key를 기준으로 테이블 합치는 개념

  • Inner join은 key를 기준으로 모두 부합하는 행만
  • Left outer join은 왼쪽 테이블에 있는 key를 기준으로 부합하는 행, NULL 값 포함됨.
    ex) 고객 중에 구매를 안한 고객을 찾을 때, 왼쪽 고객 & 오른쪽 구매내역이면 null 인 고객을 찾을 수 있다
  • Right outer join은 오른쪽 테이블에 있는 key를 기준으로 부합하는 행, NULL 값 포함됨.

 

어떤 데이터베이스 프로그램에서는 join 을 쓰지않고 from 에 a, b 테이블 써도 돌아가는 경우가 있다. ‘암시적 join’

 

Join 쿼리 실행 시간이 오래 걸린다는 단점이 있다.!

 

sub query

Join를 어느정도 대체할 수 있는 문법 => 서브쿼리 (한 레코드를 통해 다른 레코드를 제약한다..!)

  • Where 절에 위치
  • From 절에 위치