데이터 분석 부트 캠프 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
- 데이터베이스 만들기
CREATE DATABASE db_name; - 데이터베이스 목록 보기
SHOW DATABASES; - 데이터베이스 사용하기
USE db_name; - 테이블 만들기
CREATE TABLE table_name (
이름 VARCHAR(20),
나이 INT,
소속 VARCHAR(50)
); - 테이블명 변경
ALTER TABLE table_name RENAME table_name1; - 새로운 컬럼 추가
ALTER TABLE table_name1 ADD COLUMN 컬럼명 데이터타입; - 기존 컬럼 타입 변경
ALTER TABLE table_name1 MODIFY COLUMN 컬럼명 데이터타입; - 기존 컬럼명과 타입 모두 변경
ALTER TABLE table_name1 CHANGE COLUMN 컬럼명 새로운컬럼명 새로운데이터타입; - 컬럼 지우기
ALTER TABLE table_name1 DROP COLUMN 컬럼명;
cf. 데이터베이스명, 테이블명, 컬럼명 규칙
- 문자, 숫자, _ 사용
- 영문 소문자 (키워드나 함수명은 대문자, 사용자 정의한 이름은 소문자)
- 예약어 사용 불가
- 문자로 시작. 숫자나 _로는 시작할 수 없음
Query
DROP-TRUNCATE
- 데이터베이스 지우기
DROP DATABASE db_name; - 테이블 지우기 -> 테이블 자체가 사라짐
DROP TABLE table_name1; - 테이블 값만 지우기 -> 테이블은 남고 값만 비워짐
TRUNCATE TABLE table_name1; - 데이터베이스/테이블이 존재한다면 지우기 (에러 방지)
DROP DATABASE IF EXISTS db_name1;
DROP TABLE IF EXISTS table_name2;
Query
INSERT-DELETE-UPDATE
- 데이터 행 하나 삽입하기
INSERT INTO table_name1 (col1, col2, col3)
VALUES (value1, value2, value3); - 데이터 여러개 삽입하기
INSERT INTO table_name1 (col1, col2, col3)
VALUES (value1, value2, value3), (test1, test2, test3), (ex1, ex2, ex3); - 데이터 삭제 (조건에 따른)
DELETE FROM table_name1 WHERE 조건값; - 데이터 수정 (조건에 따른)
UPDATE table_name1 SET 컬럼명 = 새 값 WHERE 조건값;
Query
SQL DATA HANDLING - CRUD
SELECT
- 숫자, 문자 데이터
- 컬럼 값
- 전체 컬럼 값, *
AS 컬럼별명
컬럼 별명에 괄호를 넣는경우, 괄호가 쿼리의 일부인지 이름인지 알 수 없기 때문에 따옴표 안에 넣어줘야함
LIMIT 로우 수
특정 테이블의 컬럼과 컬럼값 확인할 때 LIMIT 1 자주 사용함
COUNT -> 데이터 행의 결과 수 세기
DISTINCT -> 중복 제거로 컬럼값 종류 확인
WHERE
- 비교 연산자: ==, !=, >, >=, <, <=
- 논리 연산자: AND, OR, NOT
- 기타 주요 연산자
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 절에 위치
'부트캠프 > 패스트캠퍼스 데이터 분석' 카테고리의 다른 글
[패스트캠퍼스/내일배움카드] 데이터 분석 부트 캠프 BDA 15기 | 3주차 (0) | 2024.07.05 |
---|---|
[패스트캠퍼스/내일배움카드] 데이터 분석 부트 캠프 BDA 15기 | 2주차 (1) | 2024.06.28 |
[데이터분석부트캠프] 데이터분석 #1. 데이터 분석과 데이터 리터러시 (0) | 2024.06.25 |
[패스트캠퍼스/내일배움카드] 데이터 분석 부트 캠프 BDA 15기 | 1주차 (1) | 2024.06.21 |
[패스트캠퍼스/내일배움카드] 데이터 분석 부트 캠프 BDA 15기 | OT 후기 (0) | 2024.06.20 |