Data Science Life Cyle에서의 SQL

  1. Business Understanding
  2. Data Mining
  3. Data Cleaning
  4. Data Exploration
  5. Feature Engineering
  6. Predictive Modeling
  7. Data Visualizing

위의 진한 부분에서 SQL은 강력한 툴이 된다.


Data에 대한 이해

  1. 빈 값(0)과 Null의 차이 -> Survivalship Bias(생존자 편향의 오류)
    - 빈 값 = 0 = 정보량이 0이라는 말
    - Null 정보량이 아예 없다는 말
    - 0을 빠트리지 말자

  2. 각 부분에 대한 평균이 크다고 해서 전체의 평균이 크지 않다 -> Simpson's Padadox(심슨의 역설)
    - 전체에 대한 이해 = 주요 변수, 주요 차원(한 단계 아래 차원의 변수)에 대한 이해가 없다면 결과를 왜곡
    - 수술 성공률만 보지말고, 무슨 수술인지도 봐야한다.


SQL(Structured Query Language) = 언어의 그룹이다.

BASE : Standard SQL  위에 4가지 종류가 있다.

  1. PL/SQL(Procedural Language for SQL)
  2. T-SQL(Transaction SQL)
  3. Extended SQL/PSM(SQL/Persistent Stored Modules)
  4. PL/pgSQL(Procedural Language/PostgreSQL)


DBMS(Database Mnangement System)

데이터를 저장하기 위한 [ 데이터 + 스크립트 + 저장장치 ]를 잘 다루기 위해 기능을 제공하는 시스템


SQL의 구조

  1. DML(데이터 조작 어) : SELECT, INSERT ,UPDATE, DELETE ( S U I  D)
  2. DDL(데이터 정의 어) : CREATE DROP TRUNCATE(메모리절약) ALTER(수정, TSQL용) RENAME(MySQL용) ( C D T A R )
  3. DCL(데이터 제어 어) : GRANT REVOKE ( G R )
  4. TCL(트랜젝선 제어 어) : COMMIT ROLLBACK - data의 퀄리티를 높힐 수 있다.


Transacation

data가 양방향에서 깨지지 않게, 한 묶음으로 한번에 실행하는 것

  1. 이것을 활용하여 UPDATE 전/후의 비교를 통해 쿼리문을 확인할 수 있다.
  2. data 백업이 어려운 상황에서수정을 해야할 때 활용할 수 있다.




연습 쿼리문

--DDL(CREATE)--
--계좌 1--

CREATE TABLE BANK_A (
이름 CHAR(20), -- 이름은 조금 크게 잡을 수 있다.
계좌 TEXT,     -- 20글자보다 이상 들어간다.
잔고 INT
)


--계좌 2--
CREATE TABLE BANK_B (
이름 CHAR(20),
계좌 TEXT,
잔고 INT
)

--DML--
--돈 미리 넣어놓기--***

INSERT BANK_A VALUES ('조재성', '1', '500000');
INSERT BANK_B VALUES ('김석영', '2', '0');

--계좌 확인--
SELECT * FROM BANK_A
SELECT * FROM BANK_B


--TRANSACTION으로 송금해보기--***
--UPDATE 테이블 SET 바꾸고 싶은 칼럼 = 가지고 계산 WHERE ***
--DELETE와 UPDATE시 WHERE 조건 꼭 달아줄 것***

-- 1. 먼저 한쪽에서 보낸 것만 해보고 ROLLBACK 해보기
BEGIN TRAN
UPDATE BANK_A SET 잔고 = 잔고 - 50000 WHERE 이름 = '조재성'

SELECT * FROM BANK_A
SELECT * FROM BANK_B


--여기 전까지 한꺼번에 선택해서 F5
ROLLBACK --TRAN이 맘에 안들어서 취소


-- 2. 한쪽에서 보내고, 한쪽은 받는 로직까지
BEGIN TRAN
UPDATE BANK_A SET 잔고 = 잔고 - 50000 WHERE 이름 = '조재성'
UPDATE BANK_B SET 잔고 = 잔고 + 50000 WHERE 이름 = '김석영'

SELECT * FROM BANK_A
SELECT * FROM BANK_B


--여기 전까지 한꺼번에 선택해서 F5
COMMIT   --TRAN이 맘에 든 것을 저장

+ Recent posts