책소개
데이터를 활용하기 위한 최선의 방법!그동안 수없이 많은 프로그래밍 관련 기술들이 나왔지만, 데이터를 검색하고 다루는 기술은 SQL(Structure Query Language)이 한결같이 자리를 지키고 있다. 『초보자를 위한 SQL 200제 (PL/SQL)』는 총 5개 파트와 200개의 예제로 구성되어 있다. 차근차근 예제를 통해 SQL 기초를 다지고, 직접 프로그램을 실행해봄으로써 SQL을 활용한 머신러닝 데이터 분석으로 Kaggle 상위권에 진입할 수 있도록 구성되어 있다. 머신러닝 기능이 탑재되어 있는 오라클 19c 버전을 설치하고, 예제를 하나하나 직접 입력하면서 책에 나온 결과값과 비교해보며 학습하면 어느덧 데이터분석이 어렵지 않게 될 것이다. 윈도우 OS의 명령 프롬프트를 통해 SQL*PLUS 프롬프트 창으로 오라클 데이터베이스에 접속해서 학습을 해도 되고, SQL DEVELOPER를 통해 학습해도 된다. 책에 수록된 예제 코드와 데이터 파일은 정보문화사 홈페이지(infopub.co.kr)의 자료실에서 다운로드 받을 수 있다. 또한 학습 중 궁금한 사항은 저자 홈페이지(cafe.daum.net/oracleoracle)에서 피드백 가능하기 때문에 독학으로 충분히 습득할 수 있다.
저자소개
서울시립대를 졸업하고, OCM(Oracle Certified Master) 자격을 보유하고 있습니다. 한국 오라클 교육센터에서 여러 데이터베이스 과목을 강의했으며, 국내 주요 대기업에서 SQL과 SQL 튜닝 교육을 하였습니다. 현재는 머신러닝을 이용한 데이터분석을 강의하고 있습니다.
목차
PART 1 「입문」 SQL 첫발 내딛기001 테이블에서 특정 열(COLUMN) 선택하기002 테이블에서 모든 열(COLUMN) 출력하기003 컬럼 별칭을 사용하여 출력되는 컬럼명 변경하기004 연결 연산자 사용하기(||)005 중복된 데이터를 제거해서 출력하기(DISTINCT)006 데이터를 정렬해서 출력하기(ORDER BY)007 WHERE절 배우기 1(숫자 데이터 검색)008 WHERE절 배우기 2(문자와 날짜 검색)009 산술 연산자 배우기(*, /, +, -)010 비교 연산자 배우기 1(〉, 〈, 〉=, 〈=, =, !=, 〈〉, ^=)011 비교 연산자 배우기 2(BETWEEN AND)012 비교 연산자 배우기 3(LIKE)013 비교 연산자 배우기 4(IS NULL)014 비교 연산자 배우기 5(IN)015 논리 연산자 배우기(AND, OR, NOT) PART 2 「초급」 SQL 기초 다지기016 대소문자 변환 함수 배우기(UPPER, LOWER, INITCAP)017 문자에서 특정 철자 추출하기(SUBSTR)018 문자열의 길이를 출력하기(LENGTH)019 문자에서 특정 철자의 위치 출력하기(INSTR) 020 특정 철자를 다른 철자로 변경하기(REPLACE) 021 특정 철자를 N개 만큼 채우기(LPAD, RPAD)022 특정 철자 잘라내기(TRIM, RTRIM, LTRIM) 023 반올림해서 출력하기(ROUND)024 숫자를 버리고 출력하기(TRUNC)025 나눈 나머지 값 출력하기(MOD)026 날짜 간 개월 수 출력하기(MONTHS_BETWEN) 027 개월 수 더한 날짜 출력하기(ADD_MONTHS) 028 특정 날짜 뒤에 오는 요일 날짜 출력하기(NEXT_DAY)029 특정 날짜가 있는 달의 마지막 날짜 출력하기(LAST_DAY)030 문자형으로 데이터 유형 변환하기(TO_CHAR)031 날짜형으로 데이터 유형 변환하기(TO_DATE)032 암시적 형 변환 이해하기033 NULL 값 대신 다른 데이터 출력하기(NVL, NVL2)034 IF문을 SQL로 구현하기 1(DECODE)035 IF문을 SQL로 구현하기 2(CASE)036 최대값 출력하기(MAX)037 최소값 출력하기(MIN)038 평균값 출력하기(AVG)039 토탈값 출력하기(SUM)040 건수 출력하기(COUNT)041 데이터 분석 함수로 순위 출력하기 1(RANK)042 데이터 분석 함수로 순위 출력하기 2(DENSE_RANK)043 데이터 분석 함수로 등급 출력하기(NTILE) 044 데이터 분석 함수로 순위의 비율 출력하기(CUME_DIST)045 데이터 분석 함수로 데이터를 가로로 출력하기(LISTAGG)046 데이터 분석 함수로 바로 전 행과 다음 행 출력하기(LAG, LEAD)047 COLUMN을 ROW로 출력하기 1(SUM+DECODE)048 COLUMN을 ROW로 출력하기 2(PIVOT)049 ROW를 COLUMN으로 출력하기(UNPIVOT)050 데이터 분석 함수로 누적 데이터 출력하기(SUM OVER)051 데이터 분석 함수로 비율 출력하기(RATIO_TO_REPORT) 052 데이터 분석 함수로 집계 결과 출력하기 1(ROLLUP)053 데이터 분석 함수로 집계 결과 출력하기 2(CUBE)054 데이터 분석 함수로 집계 결과 출력하기 3(GROUPING SETS)055 데이터 분석 함수로 출력 결과 넘버링 하기(ROW_NUMBER)PART 3 「중급」 SQL 실력 다지기056 출력되는 행 제한하기 1(ROWNUM)057 출력되는 행 제한하기 2(Simple TOP-n Queries)058 여러 테이블의 데이터를 조인해서 출력하기 1(EQUI JOIN)059 여러 테이블의 데이터를 조인해서 출력하기 2(NON EQUI JOIN)060 여러 테이블의 데이터를 조인해서 출력하기 3(OUTER JOIN)061 여러 테이블의 데이터를 조인해서 출력하기 4(SELF JOIN)062 여러 테이블의 데이터를 조인해서 출력하기 5(ON절)063 여러 테이블의 데이터를 조인해서 출력하기 5(USING절)064 여러 테이블의 데이터를 조인해서 출력하기 6(NATURAL JOIN)065 여러 테이블의 데이터를 조인해서 출력하기 7(LEFT/RIGHT OUTER JOIN)066 여러 테이블의 데이터를 조인해서 출력하기 8(FULL OUTER JOIN)067 집합 연산자로 데이터를 위아래로 연결하기 1(UNION ALL)068 집합 연산자로 데이터를 위아래로 연결하기 2(UNION) 069 집합 연산자로 데이터의 교집합을 출력하기(INTERSECT) 070 집합 연산자로 데이터의 차이를 출력하기(MINUS) 071 서브 쿼리 사용하기 1(단일행 서브쿼리)072 서브 쿼리 사용하기 2(다중 행 서브쿼리)073 서브 쿼리 사용하기 3(NOT IN)074 서브 쿼리 사용하기 4(EXISTS와 NOT EXISTS)075 서브 쿼리 사용하기 5(HAVING절의 서브 쿼리)076 서브 쿼리 사용하기 6(FROM절의 서브 쿼리)077 서브 쿼리 사용하기 7(SELECT절의 서브 쿼리)078 데이터 입력하기(INSERT)079 데이터 수정하기(UPDATE)080 데이터 삭제하기(DELETE, TRUNCATE, DROP)081 데이터 저장 및 취소하기(COMMIT, ROLLBACK) 082 데이터 입력, 수정, 삭제 한번에 하기(MERGE)083 락(LOCK) 이해하기084 SELECT FOR UPDATE절 이해하기085 서브 쿼리를 사용하여 데이터 입력하기086 서브 쿼리를 사용하여 데이터 수정하기087 서브 쿼리를 사용하여 데이터 삭제하기088 서브 쿼리를 사용하여 데이터 합치기089 계층형 질의문으로 서열을 주고 데이터 출력하기 1090 계층형 질의문으로 서열을 주고 데이터 출력하기 2091 계층형 질의문으로 서열을 주고 데이터 출력하기 3092 계층형 질의문으로 서열을 주고 데이터 출력하기 4093 일반 테이블 생성하기(CREATE TABLE)094 임시 테이블 생성하기(CREATE TEMPORAY TABLE) 095 복잡한 쿼리를 단순하게 하기 1(VIEW)096 복잡한 쿼리를 단순하게 하기 2(VIEW)097 데이터 검색 속도를 높이기(INDEX)098 절대로 중복되지 않는 번호 만들기(SEQUENE) 099 실수로 지운 데이터 복구하기 1(FLASHBACK QUERY)100 실수로 지운 데이터 복구하기 2(FLASHBACK TABLE)101 실수로 지운 데이터 복구하기 3(FLASHBACK DROP)102 실수로 지운 데이터 복구하기 4(FLASHBACK VERSION QUERY)103 실수로 지운 데이터 복구하기 5(FLASHBACK TRANSACTION QUERY)104 데이터의 품질 높이기 1(PRIMARY KEY)105 데이터의 품질 높이기 2(UNIQUE)106 데이터의 품질 높이기 3(NOT NULL)107 데이터의 품질 높이기 4(CHECK)108 데이터의 품질 높이기 5(FOREIGN KEY)109 WITH절 사용하기 1(WITH ~ AS)110 WITH절 사용하기 2(SUBQUERY FACTORING)111 SQL로 알고리즘 문제 풀기 1(구구단 2단 출력)112 SQL로 알고리즘 문제 풀기 2(구구단 1단 ~ 9단 출력)113 SQL로 알고리즘 문제 풀기 3(직각삼각형 출력)114 SQL로 알고리즘 문제 풀기 4(삼각형 출력)115 SQL로 알고리즘 문제 풀기 5(마름모 출력)116 SQL로 알고리즘 문제 풀기 6(사각형 출력)117 SQL로 알고리즘 문제 풀기 7(1부터 10까지 숫자의 합)118 SQL로 알고리즘 문제 풀기 8(1부터 10까지 숫자의 곱)119 SQL로 알고리즘 문제 풀기 9(1부터 10까지 짝수만 출력)120 SQL로 알고리즘 문제 풀기 10(1부터 10까지 소수만 출력)121 SQL로 알고리즘 문제 풀기 11(최대 공약수)122 SQL로 알고리즘 문제 풀기 12(최소 공배수)123 SQL로 알고리즘 문제 풀기 13(피타고라스의 정리)124 SQL로 알고리즘 문제 풀기 14(몬테카를로 알고리즘)125 SQL로 알고리즘 문제 풀기 15(오일러 상수 자연상수 구하기)PART 4 「활용」 SQL 응용 다지기126 엑셀 데이터를 DB에 로드하는 방법127 스티브 잡스 연설문에서 가장 많이 나오는 단어는 무엇인가? 128 스티브 잡스 연설문에는 긍정 단어가 많은가 부정 단어가 많은가?129 절도가 많이 발생하는 요일은 언제인가?130 우리나라에서 대학 등록금이 가장 높은 학교는 어디인가?131 서울시 물가 중 가장 비싼 품목과 가격은 무엇인가? 132 살인이 가장 많이 발생하는 장소는 어디인가?133 가정불화로 생기는 가장 큰 범죄 유형은 무엇인가?134 방화 사건의 가장 큰 원인은 무엇인가?135 전국에서 교통사고가 제일 많이 발생하는 지역은 어디인가?136 치킨집 폐업이 가장 많았던 연도가 언제인가?137 세계에서 근무 시간이 가장 긴 나라는 어디인가?138 남자와 여자가 각각 많이 걸리는 암은 무엇인가?139 PL/SQL 변수 이해하기 1140 PL/SQL 변수 이해하기 2141 PL/SQL IF 이해하기 1(IF ~ ELSE문)142 PL/SQL IF 이해하기 2(IF ~ ELSIF ~ ELSE문)143 PL/SQL Basic Loop 이해하기144 PL/SQL While Loop 이해하기145 PL/SQL for Loop 이해하기146 PL/SQL 이중 Loop문 이해하기147 PL/SQL Cursor문 이해하기(BASIC LOOP)148 PL/SQL Cursor문 이해하기(FOR LOOP)149 PL/SQL Cursor for loop문 이해하기150 프로시저 구현하기151 함수 구현하기152 수학식 구현하기 1(절대값)153 수학식 구현하기 2(직각삼각형)154 수학식 구현하기 3(지수 함수)155 수학식 구현하기 4(로그 함수)156 수학식 구현하기 5(순열)157 수학식 구현하기 6(조합)158 기초 통계 구현하기 1(평균값)159 기초 통계 구현하기 2(중앙값)160 기초 통계 구현하기 3(최빈값)161 기초 통계 구현하기 4(분산과 표준편차)162 기초 통계 구현하기 5(공분산)163 기초 통계 구현하기 6(상관계수)164 기초 통계 구현하기 7(확률 1)165 기초 통계 구현하기 8(확률 2)166 기초 통계 구현하기 9(이항 분포)167 기초 통계 구현하기 10(정규분포)168 PL/SQL로 알고리즘 문제 풀기 1(삼각형 출력)169 PL/SQL로 알고리즘 문제 풀기 2(사각형 출력)170 PL/SQL로 알고리즘 문제 풀기 3(피타고라스의 정리)171 PL/SQL로 알고리즘 문제 풀기 4(팩토리얼)172 PL/SQL로 알고리즘 문제 풀기 5(최대 공약수)173 PL/SQL로 알고리즘 문제 풀기 6(최소 공배수)174 PL/SQL로 알고리즘 문제 풀기 7(버블 정렬)175 PL/SQL로 알고리즘 문제 풀기 8(삽입 정렬)176 PL/SQL로 알고리즘 문제 풀기 9(순차탐색)177 PL/SQL로 알고리즘 문제 풀기 10(몬테카를로 알고리즘) 178 PL/SQL로 알고리즘 문제 풀기 11(탐욕 알고리즘)PART 5 「실무」 SQL 실무 다지기179 SQL로 머신러닝 구현하기 1(NAIVEBAYES)180 SQL로 머신러닝 구현하기 2(NAIVEBAYES)181 SQL로 머신러닝 구현하기 3(NAIVEBAYES)182 SQL로 머신러닝 구현하기 4(DECISION TREE)183 SQL로 머신러닝 구현하기 5(DECISION TREE)184 SQL로 머신러닝 구현하기 6(RANDOM FOREST)185 SQL로 머신러닝 구현하기 7(RANDOM FOREST)186 SQL로 머신러닝 구현하기 8(RANDOM FOREST)187 SQL로 머신러닝 구현하기 (신경망)188 SQL로 머신러닝 구현하기 10(신경망)189 SQL로 머신러닝 구현하기 11(신경망)190 SQL로 머신러닝 구현하기 12(SUPPORT VECTOR MACHINE)191 SQL로 머신러닝 구현하기 13(SUPPORT VECTOR MACHINE)192 SQL로 머신러닝 구현하기 14(SUPPORT VECTOR MACHINE)193 SQL로 머신러닝 구현하기 15(REGRESSION)194 SQL로 머신러닝 구현하기 16(REGRESSION)195 SQL로 머신러닝 구현하기 17(파생변수 생성)196 SQL로 머신러닝 구현하기 18(파생변수 생성)197 SQL로 머신러닝 구현하기 19(APRIORI)198 SQL로 머신러닝 구현하기 20(APRIORI)199 SQL로 머신러닝 구현하기 21(K-MEANS)200 SQL로 머신러닝 구현하기 22(K-MEANS)APPENDIX 부록001 Kaggle 상위권에 도전하기 1002 Kaggle 상위권에 도전하기 2