1. 3달 동안
무엇을 공부할 것인가
신촌 크레바스 스터디 - 1주차 첫번째
그리고 이번 주는?
홍석유
syhong0714@gmail.com
2. 서버, DB, +a
3달 동안 공부할 것 세 달 동안, 저는 서버개발자로서의 공부를 할 것이고,
크게 서버와 데이터베이스를 공부할 것입니다. 언제나
그렇듯이 예상하지 못했던 +a도 공부해야겠지요?
3. 3달 동안 공부할 것
Node.JS, AWS,
MySQL, MongoDB,
Angular.JS
Restful API,
DB 설계&구축,
디버깅&리팩토링
등등
기본적으로Node.js, AWS, MySQL, 좀 더 나아가서는
MongoDB, Angular.js를 공부할 것입니다. 구체적으로는
클라이언트를 API 설계, DB설계/구축이 되겠지요ㅎ
4. 3달 동안 공부할 것 - 계획
1주차 (4.4~4.8)
2주차 (4.11~4.15)
3주차 (4.18~4.22)
4주차 (4.25~4.29)
5주차 (5.2~5.6)
6주차 (5.9~5.13)
7주차 (5.16~5.20)
8주차 (5.23~5.27)
9주차 (5.30~6.3)
10주차 (6.6~6.10)
11주차
~
15주차
일주일만에 끝내는 MySQL
Node.JS 기본과정(Socket.io까지)
JS, 처음과 끝
DB 설계와 구축 + DDD
Node.JS 심화과정(DB, AWS, API)
깃헙, Angular.JS 기본과정
프론트엔드와 협업
프론트엔드와 협업 딥하게 하기
Node.JS 마스터과정
디버그, 리팩토링
MongoDB
Angular.JS
웹을 지탱하는 기술
후니의 쉽게 쓴
즘스코 네트워킹
…
JS 디자인 패턴
자료구조, 알고리즘
3달이라는 시간이 의미없이 흘러가지 않도록 구체적
으로 계획을 짰습니다. 바뀔 수도 있고, 어떤 과정이 더
오래걸릴 수도 있지만 나침반은 있어야하기에!
5. 3달 동안 공부할 것 - 계획
1주차 (4.4~4.8)
2주차 (4.11~4.15)
3주차 (4.18~4.22)
4주차 (4.25~4.29)
5주차 (5.2~5.6)
6주차 (5.9~5.13)
7주차 (5.16~5.20)
8주차 (5.23~5.27)
9주차 (5.30~6.3)
10주차 (6.6~6.10)
11주차
~
15주차
일주일만에 끝내는 MySQL
Node.JS 기본과정(Socket.io까지)
JS, 처음과 끝
DB 설계와 구축 + DDD
Node.JS 심화과정(DB, AWS, API)
깃헙, Angular.JS 기본과정
프론트엔드와 협업
프론트엔드와 협업 딥하게 하기
Node.JS 마스터과정
디버그, 리팩토링
MongoDB
Angular.JS
웹을 지탱하는 기술
후니의 쉽게 쓴
즘스코 네트워킹
…
JS 디자인 패턴
자료구조, 알고리즘
이번주, RDB의 대표, MySQL을 공부할 것입니다.
7. 교재1. 헤드퍼스트 교재
2. Udemy 강의 - https://www.udemy.com/sql-for-newbs
3. T아카데미 수업 - https://tacademy.sktechx.com
1주차 첫번째 스터디 - MySQL 교재는 헤드퍼스트 SQL책을 볼 것이고, Udemy의 강의
와 T아카데미의 수업을 기본으로 할 것입니다.
8. 1주차 첫번째 스터디 - MySQL
SQL? DB?
SQL과 DB 개념을 위키피디아에서 복/붙 하고싶지만,
전 그래요.. 직접 부딪히고, 코드를 짜보고, 고치고, 또
고치다 보면 그 개념, 자연스럽게 알게되지 않을까요?
9. 1주차 첫번째 스터디 - MySQL
DML, DDL, DCL
Database Manipulation Language
Database Definition Language
Database Control Language
10. 1주차 첫번째 스터디 - MySQL
DML.
CRUD.
Create Read Update Delete
생성 조회 수정 삭제
11. 1주차 첫번째 스터디 - MySQL
DML.
CRUD.
Create Read Update Delete
생성 조회 수정 삭제
INSERT SELECT UPDATE DELETE
13. 1주차 첫번째 스터디 - MySQL
DML 핵심.
쿼리 스켈레톤
SELECT
FROM
WHERE
14. 1주차 첫번째 스터디 - MySQL
DML 핵심.
쿼리 스켈레톤
SELECT
FROM
WHERE
컬럼
테이블
조건
15. 1주차 첫번째 스터디 - MySQL
SELECT name
FROM city
WHERE CountryCode=‘KOR’;
; =
SELECT *
FROM city
WHERE Population> 50000;
* >
1
2
SELECT *
FROM city
WHERE CountryCode=‘KOR’ and Population> 100000;
and or not between3
16. 1주차 첫번째 스터디 - MySQL
DML 양념 1.
ORDER BY
SELECT *
FROM city
WHERE CountryCode=‘KOR’ order by Populationdesc;
내림차순: desc, 오름차순: asc(default)
17. 1주차 첫번째 스터디 - MySQL
더 다룰 것
DML: JOIN, LIKE, GROUP BY, HAVING, etc.
DDL 등등
18. 1주차 첫번째 스터디 - MySQL
더 다루라고 하시는 것
1. 서브쿼리(Select결과를 가지고 한 번 더)
2. 오라클&MS-SQL의 경우 숫자의 차이를 가지고 추가진행이 가능
3. projection, union
19. SQL 심화내용 & DDL
신촌 크레바스 스터디 - 1주차 두번째
홍석유
syhong0714@gmail.com
JOIN
LIKE
HAVING
GROUP BY
SUBQUERY
UNION
PROJECTION DDL
20. 1주차 두번째 스터디 - JOIN
JOIN
정규화
제1 정규화
조인
제2 정규화
…
중복 vs.
내부/외부 조인
외래키
21. 1주차 두번째 스터디 - JOIN
JOIN
SELECT city.Population, country.GNP
FROM city join country on city.CountryCode = country.Code;
Inner Left Right Full
25. 1주차 두번째 스터디 - LIKE
LIKE 검색
Select 컬럼명
From 테이블명
Where 조건절
LIKE 패턴
와일드카드
%
_
주의사항
- 논리연산자와 함께 사용하
는 경우 무리
- Full-Text Search 참고
< 패턴검색 >
26. 1주차 두번째 스터디 - LIKE
LIKE 검색
SELECT CountyCode FROM city WHERE name like ‘K%’;
SELECT CountyCode FROM city WHERE name like ‘%K’;
SELECT CountyCode FROM city WHERE name like ‘%K%’;
SELECT CountyCode FROM city WHERE name like ‘K__’;
28. 1주차 두번째 스터디 - HAVING
HAVING
SELECT CountyCode, count(CountryCode) FROM city group by
CountryCode having count(CountryCode) >= 3;
Having은 집합연산에 WHERE 조건절 대체로 사용
group by 결과물에 다시 조건을 걸고 싶을 때
29. 1주차 두번째 스터디 SubQuery
SUB-QUERY
쿼리문 내의 또 다른 쿼리문이 있는 형태
SELECT count(*) FROM city WHERE CountyCode=
(SELECT code FROM country WHERE name=‘South Korea’);
SELECT count(*) FROM city WHERE CountyCode=‘KOR’;
30. 1주차 두번째 스터디 SubQuery
SUB-QUERY
단일행 서브쿼리 말고도
다중행, 멀티컬럼 서브쿼리가 있다.
SELECT CountyCode, count(*) FROM city WHERE CountyCode IN
(SELECT code FROM country WHERE name in (‘South Korea’,
‘China’, ‘Japan’));
ALL, ANY, IN/EXISTS
31. 1주차 두번째 스터디 UNION
UNION집합연산 합집합(union), 교집합(intersect),차집합(minus)
SELECT name FROM city where CountyCode=‘KOR’ UNION
SELECT name FROM city where CountryCode=‘CHN’;
SELECT name FROM city where CountyCode=‘KOR’ or
CountryCode=‘CHN’;
32. 1주차 두번째 스터디 - MySQL
더 다루라고 하시는 것
1. Join Driving Table / Driven Table
2. Left Join 방식 ANSI방식 / 오라클(+)방식
3. Union & Unionall 실례
4. 교집합(intersect) / 차집합(minus)
5. Projection
33. 1주차 세번째 스터디 Driving/Driven
Driving/Driven 테이블
성능이슈로 인해 어떤 테이블을 드라이빙 테이블로 할지
다른 테이블을 드리븐으로 할지 결정해야하며 다음과 같은 요소들을 고려함
1. 인덱스의 여부
2. ROW가 적은 테이블
Driving 테이블: 결합하기 위해 기준이 되는 테이블(먼저 읽는 테이블)
Driven 테이블: 결합되어지는 테이블
1. Nested Loop Join 2. Merge Join 3. Hash Join
34. 1주차 세번째 스터디 ANSI vs. Oracle
ANSI / Oracle(+)
Oracle 9i부터 Oracle SQL이 ANSI방식의 문법을 지원
SELECT DISTINCT(emp.deptno), dept.deptno
FROM emp LEFT OUTER JOIN dept ON dept.deptno = emp.deptno;
Dept: 부서tbl, Emp: 직원tbl
SELECT DISTINCT(emp.deptno), dept.deptno
FROM emp, dept WHERE emp.deptno = dept.deptno(+);
Table을 여러개 join하려고 할 때 ansi가 불편하다?
미국 국립 표준 협회(ANSI, American National Standards Institute
Right?
35. 1주차 세번째 스터디 UNIONALL
UNION ALL 실례
SELECT name, sentences FROM event1 WHERE sentences > 50
UNIONALL
SELECT name, sentences FROM event2 WHERE sentences > 50;
36. 1주차 세번째 스터디 - 교집합
교집합(intersect)
SELECT CountryCode FROM city WHERE LifeExpectancy >= 80
Intersect SELECT Code FROM country WHERE Population >= 10000;
SELECT CountryCode FROM city WHERE LifeExpectancy >= 80
And CountryCode IN (SELECT Code FROM country WHERE
Population >= 10000);
37. 1주차 세번째 스터디 - 차집합
차집합(minus)
SELECT CountryCode FROM city WHERE Population > 5000000
Minus SELECT CountryCode FROM city WHERE CountryCode=‘CHN’;
SELECT distinct CountryCode FROM city WHERE Population >
5000000 And CountryCode NOT IN (SELECT distinct CountryCode
FROM city WHERE CountryCode=‘CHN’);
38. 1주차 세번째 스터디 - DDL
DDL
Database Definition Language
DML이 정보 하나하나에 대한 CRUD였다면,
DDL은 DB와 Table에 대한 CRUD.
스키마 생성뿐만 아니라 수정, 삭제까지!!!
39. 1주차 세번째 스터디 - DDL
DDL
CREATE DATABASE sample_DB;
- SHOW DATABASES;
USE sample_DB;
40. 1주차 세번째 스터디 - DDL
DDL
CREATE table BusinessCard(
id int ,
Name varchar(255),
Address varchar(255),
Telephone char(255)
);
1. SHOW tables;
2. DESC BusinessCard;