일주일만에 끝내는 mysql

45
3달 동안 무엇을 공부할 것인가 신촌 크레바스 스터디 - 1주차 첫번째 그리고 이번 주는? 홍석유 [email protected]

Upload: -

Post on 15-Apr-2017

363 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: 일주일만에 끝내는 MySQL

3달 동안무엇을 공부할 것인가

신촌 크레바스 스터디 - 1주차 첫번째

그리고 이번 주는?

홍석유[email protected]

Page 2: 일주일만에 끝내는 MySQL

서버, DB, +a

3달 동안 공부할 것 세달동안,저는서버개발자로서의공부를할것이고,크게서버와데이터베이스를공부할것입니다.언제나그렇듯이예상하지못했던 +a도공부해야겠지요?

Page 3: 일주일만에 끝내는 MySQL

3달 동안 공부할 것

Node.JS,�AWS,MySQL,�MongoDB,�

Angular.JS

Restful�API,�DB 설계&구축,�디버깅&리팩토링

등등

기본적으로Node.js,AWS, MySQL,좀더나아가서는MongoDB,Angular.js를공부할것입니다.구체적으로는클라이언트를 API설계, DB설계/구축이되겠지요ㅎ

Page 4: 일주일만에 끝내는 MySQL

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달이라는시간이의미없이흘러가지않도록구체적으로계획을짰습니다.바뀔수도있고,어떤과정이더

오래걸릴수도있지만나침반은있어야하기에!

Page 5: 일주일만에 끝내는 MySQL

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을공부할것입니다.

Page 6: 일주일만에 끝내는 MySQL

일주일 만에 끝내는

MySQL

1주차 첫번째 스터디 - MySQL

Page 7: 일주일만에 끝내는 MySQL

교재1.�헤드퍼스트 교재

2. Udemy 강의 - https://www.udemy.com/sql-for-newbs

3. T아카데미 수업 - https://tacademy.sktechx.com

1주차 첫번째 스터디 - MySQL 교재는헤드퍼스트 SQL책을볼것이고, Udemy의강의와 T아카데미의수업을기본으로할것입니다.

Page 8: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

SQL?�DB?

SQL과 DB개념을위키피디아에서복/붙하고싶지만,전그래요..직접부딪히고,코드를짜보고,고치고,또고치다보면그개념,자연스럽게알게되지않을까요?

Page 9: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

DML,�DDL,�DCL

Database�Manipulation�Language

Database�Definition�Language

Database�Control�Language

Page 10: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

DML.CRUD.

Create�Read�Update�Delete생성 조회 수정 삭제

Page 11: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

DML.CRUD.

Create�Read�Update�Delete생성 조회 수정 삭제

INSERT SELECT UPDATE DELETE

Page 12: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

DML.CRUD.

Page 13: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

DML�핵심.쿼리 스켈레톤

SELECTFROMWHERE

Page 14: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

DML�핵심.쿼리 스켈레톤

SELECTFROMWHERE

컬럼테이블조건

Page 15: 일주일만에 끝내는 MySQL

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

Page 16: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

DML�양념 1.ORDER�BY

SELECT *

FROM city

WHERE�CountryCode=‘KOR’�order�by�Population�desc;

내림차순: desc,�오름차순: asc(default)

Page 17: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

더 다룰 것

DML:�JOIN,�LIKE,�GROUP�BY,�HAVING,�etc.DDL�등등

Page 18: 일주일만에 끝내는 MySQL

1주차 첫번째 스터디 - MySQL

더 다루라고 하시는것1.서브쿼리(Select결과를 가지고 한 번 더)

2. 오라클&MS-SQL의 경우 숫자의 차이를 가지고 추가진행이 가능

3. projection,�union

Page 19: 일주일만에 끝내는 MySQL

SQL 심화내용 & DDL

신촌 크레바스 스터디 - 1주차 두번째

홍석유[email protected]

JOINLIKEHAVINGGROUP�BY

SUBQUERYUNIONPROJECTION DDL

Page 20: 일주일만에 끝내는 MySQL

1주차 두번째 스터디 - JOIN

JOIN

정규화제1정규화

조인

제2정규화

중복 vs.

내부/외부조인

외래키

Page 21: 일주일만에 끝내는 MySQL

1주차 두번째 스터디 - JOIN

JOINSELECT city.Population,�country.GNP

FROM city�join country�on city.CountryCode=�country.Code;

Inner�Left�Right�Full

Page 22: 일주일만에 끝내는 MySQL

1주차 두번째 스터디 - JOIN

Inner�Left�Right�Full

Page 23: 일주일만에 끝내는 MySQL

1주차 두번째 스터디 - JOIN

내부조인

외부조인

외부조인(레프트)

외부조인(라이트)

Page 24: 일주일만에 끝내는 MySQL

1주차 두번째 스터디 - JOIN

내부조인

외부조인

Page 25: 일주일만에 끝내는 MySQL

1주차 두번째 스터디 - LIKE

LIKE�검색

Select�컬럼명From�테이블명Where�조건절LIKE 패턴

와일드카드%_

주의사항- 논리연산자와함께사용하

는경우 무리- Full-Text�Search�참고

< 패턴검색 >

Page 26: 일주일만에 끝내는 MySQL

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__’;

Page 27: 일주일만에 끝내는 MySQL

1주차 두번째 스터디 - GROUPBY

GROUP�BY

Page 28: 일주일만에 끝내는 MySQL

1주차 두번째 스터디 - HAVING

HAVING

SELECT�CountyCode,�count(CountryCode)�FROM�city�group�by

CountryCode having�count(CountryCode)�>=�3;

Having은 집합연산에 WHERE 조건절 대체로 사용

group�by�결과물에 다시 조건을 걸고 싶을 때

Page 29: 일주일만에 끝내는 MySQL

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’;

Page 30: 일주일만에 끝내는 MySQL

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

Page 31: 일주일만에 끝내는 MySQL

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’;

Page 32: 일주일만에 끝내는 MySQL

1주차 두번째 스터디 - MySQL

더 다루라고 하시는것1. Join�­ Driving�Table�/�Driven�Table

2. Left�Join�방식 ­ ANSI방식 / 오라클(+)방식

3. Union�&�Unionall 실례

4. 교집합(intersect)� /�차집합(minus)

5. Projection

Page 33: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 ­ Driving/Driven

Driving/Driven�테이블

성능이슈로인해 어떤테이블을드라이빙테이블로할지

다른테이블을드리븐으로할지결정해야하며다음과같은요소들을고려함

1. 인덱스의여부

2. ROW가적은테이블

Driving�테이블: 결합하기위해기준이되는테이블(먼저읽는테이블)

Driven�테이블: 결합되어지는테이블

1. Nested�Loop�Join����2.�Merge�Join����3.�Hash�Join

Page 34: 일주일만에 끝내는 MySQL

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?

Page 35: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 ­ UNIONALL

UNION�ALL 실례SELECT�name, sentences�FROM�event1�WHERE�sentences�>�50�

UNIONALL

SELECT�name,�sentences�FROM�event2�WHERE�sentences�>�50;

Page 36: 일주일만에 끝내는 MySQL

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);�

Page 37: 일주일만에 끝내는 MySQL

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’);

Page 38: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 - DDL

DDLDatabase�Definition�Language

DML이 정보하나하나에대한CRUD였다면,

DDL은 DB와 Table에 대한 CRUD.

스키마 생성뿐만아니라수정, 삭제까지!!!

Page 39: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 - DDL

DDL

CREATE�DATABASE�sample_DB;

- SHOW�DATABASES;

USE�sample_DB;

Page 40: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 - DDL

DDLCREATE�table�BusinessCard(

id�int ,

Name�varchar(255),

Address�varchar(255),

Telephone�char(255)

);

1. SHOW�tables;

2. DESC�BusinessCard;

Page 41: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 - DDL

자료형- 정수형(int)

- 실수형(float),

- 문자열(char,�varchar)

- Text문자열(text)

- BLOB(Binary�Large�Object)

- 시간관련(date,�time,�datetime,�timestamp)

Page 42: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 - DDL

제약조건- not�null

- unique

- Primary�key

- check

- default

- auto_increment

- 외래키

CREATE�table�BusinessCard(

id�int auto_increment,

Name�varchar(255)�not�null,

Address�varchar(255)�default�‘SEOUL’,

Telephone�char(255)�unique,

Age�int,

check(100>Age>0),

primary�key(id)

);

Page 43: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 - DDL

제약조건 - 외래키

Page 44: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 - DDL

참조무결성외래키

1. 외래키를참조하면원래테이블에해당레코드

값이반드시존재해야함

2. 만약원래레코드를삭제하려면참조하는외래

키(FK)값을먼저 NULL로만들어야함

Page 45: 일주일만에 끝내는 MySQL

1주차 세번째 스터디 - DDL

더 다룰 것DCL,�indexing, DB백업/복원,파티셔닝/복제, full-text�search, 트랜잭션, …