SQL 알못일 때 이 책을 샀는데, 몇장읽고 바로 접었다. 게으름 반 이해안됨 반이다. 그 이후 딱히 따로 공부하는 것 없이, 실제 일하면서 디비와 격하게 부딪히면서 SQL 기본소양을 다졌다. 그리고 다시 이 책을 읽어보니 비로소 꽤 도움이 됐다. 정말 아~무것도 모른다면, 책부터 정독할 것이 아니라! 소소하더라도 실습으로 일단 덤비고나서! 그 실습에서 얻은 얄팍한 지식을 바탕으로 책을 읽으면 훨씬 도움이 된다는 것을 느꼈습니다 :)
혹시 이 글을 읽고 있는 당신도 SQL 알못이라면, 책은 접는 것을 추천한다.
대신 테이블을 하나 정하거나, 테이블도 너무 크다면 컬럼 하나를 정하고 그 안에서 원하는 것을 필터해서 보는 select 쿼리문을 짜보는 것을 추천한다. 어떻게? 폭풍 구글링으로! w3school이나 프로그래머스 SQL 퀴즈를 풀어보면 도움이 될거다. 만약 SQL 알못이 이 책을 정주행한다면, 그것은 포토샵을 처음 배우는 사람이 작품 하나를 만들기도 전에 모든 포토샵 기능을 정주행하는 것과 같다. 뭐... 정 그렇게 하고싶다면 말릴 순 없겠지만.
용어 정리
전처리 pre-processing
데이터를 수집하고 가공하고 처리하는 과정입니다. 대부분 것이 그렇듯, 전처리가 가장 빡십니다.
데이터 - 데이터베이스 - DBMS
데이터는 어떤 것들의 기록이고, 이 데이터를 모아둔 것이 데이터베이스입니다.
이 데이터베이스를 관리하는 시스템이 DBMS (DataBase Management System) 인데, 보통 제조사에 따라 달리 부릅니다 ex. MySQL, 오라클 데이터베이스...
SQL
DBMS와 통신하는 표준 언어입니다. "데이터 줘"
PL/PSQL
SQL보다 더 확장된 언어로, 이걸 쓰면 조건문과 반복문을 쓸 수 있습니다.
기본 키 Primary Key (PRI)
Unique이고 null값이 아니다. 한 테이블에 하나의 PK만 존재할 수 있다.
고유 키 Unique Key (UNI)
Unique 이고 null 허용 가능. 한 테이블에 여러 UK가 있을 수 있다. 유니크하다는 속성*으로 이해하면 좋다.
Primary Key와 Unique Key의 차이가 더 궁금하다면?
2021.09.12 - [data] - [데이터모델링] PK와 UK의 차이 (Primary Key vs. Unique Key)
외래 키 Foreign Key
다른 테이블의 primary key를 참조한 컬럼이다.
MUL Multiple
여러 행이 동일한 값을 가질 수 있음을 의미 (즉, UNI가 아니란 뜻)
뷰 View
종류가 3개다.
딱히.. 별거 없는 것 같다.. 그래도 알고는 가자.
- simple view (create view로 만들고 한 테이블을 쓴 형태)
- complex view (create view로 만들고 여러 테이블을 조인한 형태)
- inline view (select 문을 그냥 이렇게 말함)
실제론 많이 써본적 없는데 이책으로 제대로 알게된 꽤 꿀인 SQL 명령어
데이터타입 | 함수 | 예시 | 결과 | 설명 | 오라클에선 |
문자열 | lower | lower('OLAF') | olaf | 모조리 소문자 | |
upper | upper('olaf') | OLAF | 모조리 대문자 | ||
inticap | inticap('olaf') | Olaf | 첫글자만 대문자 | ||
substr | substr('olaf',1,3) | ola | n번째부터 n번째까지 글자 추출, 문자열 구간 (split 느낌) | ||
replace | replace('yujin yi','yujin','olaf') | olaf yi | |||
length | length('olaf') | 4 | |||
lpad | lpad('olaf',5,'*') | *olaf | 문자열을 n자리수로 만든후, 맨 왼쪽에 특정 문자를 넣어라 | ||
rpad | rpad('olaf',6,'**') | olaf** | 맨 오른쪽에 특정 문자를 넣어라 | ||
ltrim | ltrim(' olaf') | olaf | 왼쪽 공백을 제거한다 | ||
rtrim | rtim('olaf ') | olaf | 오른쪽 공백을 제거한다 | ||
trim | trim(' olaf ') | olaf | 모든 공백을 제거한다 | ||
숫자 | round | round(2.4) round(2.5) |
2 3 |
반내림, 반올림 | |
truncate | truncate(2.5,0) truncate(2.25,1) |
2 2.2 |
절삭 | ||
mod | mod(15,2) mod(10,2) |
1 0 |
나눈 나머지 | ||
ceil | ceil(2.4) | 3 | 정수로 올림 | ||
floor | floor(2.5) | 2 | 정수로 내림 | ||
sign | sign(3) sign(-3) sign(0) |
1 -1 0 |
양수, 음수 여부 판단 양수=1, 음수= -1, 0=0 |
||
power | power(2,3) | 8 | |||
sqrt | sqrt(4) | 2 | |||
concat | concat('o','laf','') | olaf | 문자열 합치기 | SELECT admin_id ||''||admin_name from s_admin ('' 값을 기준으로 붙여준다.) | |
like | select * from table where column like 'o_ _ _' | olaf (이 값을 찾아줌) | 몇자리수 정보까지 있을때 | ||
날짜 | datediff | datediff(year,'2021-09-25','2022-09-25') | 1 | 날짜 차이 계산 | months_between |
last_day | last_day(now()) | 2021-09-25 | 마지막날 계산 | ||
date_add | date_add('2021-09-25', interval 2 day) | 2021-09-27 | add_months | ||
date_format | date_format(date(now()),'%Y') | 2021 | to_char ex. to_char(date(now()),'YYYY') |
||
All | convert | convert('2021-09-25',date) | 2021-09-25 | date, datetime, decimal, time, char, nchar, signed, unsinged, binary |
집합연산자로 join하기 (그냥 가져다 붙일 때) | |
Union | 두 테이블을 가져다 붙이고, 중복 행을 한번만 출력 |
Union All | 두 테이블을 가져다 붙이고, 중복 행을 모두 출력 |
Interset | 두 테이블의 교집합을 출력 (=중복되는 행만 출력) |
Minus | 첫번째 테이블에서 두번째 테이블 내용을 뺌 |
디비 열이름 바꾸기
alter table 테이블이름 rename 현 컬럼 이름 to 바꾸려는 열 이름
-근데 이거 써도 문제없는지는 모르겠네요?
중요 데이터에선 쓸일 없는..아니 쓰면 안되는 쿼리 delete...
아니, where 절을 생략하면 모든 데이터가 삭제되므로 주의합니다. 를 이렇게 평온하게 쓰다니...?
'dataVisualization' 카테고리의 다른 글
대시보드 기본 개념들 (책 '대시보드 설계와 데이터 시각화 The Big Book of Dashboards') (0) | 2021.10.08 |
---|---|
viz to dataframe 9월 3째주 (0) | 2021.09.24 |
데이터와 차트 매핑하기 (1): 비교할 때 (0) | 2021.09.17 |
이유있는 데이터 색칠 (0) | 2021.09.16 |
데이터 시각화를 연마하는 두가지 방법 (0) | 2021.09.16 |
댓글