본문 바로가기
dataVisualization

책 '모두의 SQL'

by holaf 2021. 9. 25.
반응형

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개다.
딱히.. 별거 없는 것 같다.. 그래도 알고는 가자.

  1. simple view (create view로 만들고 한 테이블을 쓴 형태)
  2. complex view (create view로 만들고 여러 테이블을 조인한 형태)
  3. 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 절을 생략하면 모든 데이터가 삭제되므로 주의합니다. 를 이렇게 평온하게 쓰다니...?

 

 

모두의 SQL - 교보문고

누구나 쉽게 배우는 데이터 분석 기초 | 누구나 SQL로데이터를 분석할 수 있다!준비 | 학습에 필요한 내용 준비하기데이터베이스와 SQL이 무엇인지 개념을 배우고 학습에 필요한 오라클을 준비합

www.kyobobook.co.kr

반응형

댓글