SlideShare a Scribd company logo
1 of 45
Download to read offline
3달 동안
무엇을 공부할 것인가
신촌 크레바스 스터디 - 1주차 첫번째
그리고 이번 주는?
홍석유
syhong0714@gmail.com
서버, DB, +a
3달 동안 공부할 것 세 달 동안, 저는 서버개발자로서의 공부를 할 것이고,
크게 서버와 데이터베이스를 공부할 것입니다. 언제나
그렇듯이 예상하지 못했던 +a도 공부해야겠지요?
3달 동안 공부할 것
Node.JS, AWS,
MySQL, MongoDB,
Angular.JS
Restful API,
DB 설계&구축,
디버깅&리팩토링
등등
기본적으로Node.js,	AWS, MySQL,	좀 더 나아가서는
MongoDB,	Angular.js를 공부할 것입니다. 구체적으로는
클라이언트를 API 설계, DB설계/구축이 되겠지요ㅎ
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달이라는 시간이 의미없이 흘러가지 않도록 구체적
으로 계획을 짰습니다. 바뀔 수도 있고, 어떤 과정이 더
오래걸릴 수도 있지만 나침반은 있어야하기에!
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을 공부할 것입니다.
일주일 만에 끝내는
MySQL
1주차 첫번째 스터디 - MySQL
교재1. 헤드퍼스트 교재
2. Udemy 강의 - https://www.udemy.com/sql-for-newbs
3. T아카데미 수업 - https://tacademy.sktechx.com
1주차 첫번째 스터디 - MySQL 교재는 헤드퍼스트 SQL책을 볼 것이고, Udemy의 강의
와 T아카데미의 수업을 기본으로 할 것입니다.
1주차 첫번째 스터디 - MySQL
SQL? DB?
SQL과 DB 개념을 위키피디아에서 복/붙 하고싶지만,
전 그래요.. 직접 부딪히고, 코드를 짜보고, 고치고, 또
고치다 보면 그 개념, 자연스럽게 알게되지 않을까요?
1주차 첫번째 스터디 - MySQL
DML, DDL, DCL
Database Manipulation Language
Database Definition Language
Database Control Language
1주차 첫번째 스터디 - MySQL
DML.
CRUD.
Create Read Update Delete
생성 조회 수정 삭제
1주차 첫번째 스터디 - MySQL
DML.
CRUD.
Create Read Update Delete
생성 조회 수정 삭제
INSERT SELECT UPDATE DELETE
1주차 첫번째 스터디 - MySQL
DML.
CRUD.
1주차 첫번째 스터디 - MySQL
DML 핵심.
쿼리 스켈레톤
SELECT
FROM
WHERE
1주차 첫번째 스터디 - MySQL
DML 핵심.
쿼리 스켈레톤
SELECT
FROM
WHERE
컬럼
테이블
조건
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
1주차 첫번째 스터디 - MySQL
DML 양념 1.
ORDER BY
SELECT *
FROM city
WHERE CountryCode=‘KOR’ order by Populationdesc;
내림차순: desc, 오름차순: asc(default)
1주차 첫번째 스터디 - MySQL
더 다룰 것
DML: JOIN, LIKE, GROUP BY, HAVING, etc.
DDL 등등
1주차 첫번째 스터디 - MySQL
더 다루라고 하시는 것
1. 서브쿼리(Select결과를 가지고 한 번 더)
2. 오라클&MS-SQL의 경우 숫자의 차이를 가지고 추가진행이 가능
3. projection, union
SQL 심화내용 & DDL
신촌 크레바스 스터디 - 1주차 두번째
홍석유
syhong0714@gmail.com
JOIN
LIKE
HAVING
GROUP BY
SUBQUERY
UNION
PROJECTION DDL
1주차 두번째 스터디 - JOIN
JOIN
정규화
제1 정규화
조인
제2 정규화
…
중복 vs.
내부/외부 조인
외래키
1주차 두번째 스터디 - JOIN
JOIN
SELECT city.Population, country.GNP
FROM city join country on city.CountryCode = country.Code;
Inner Left Right Full
1주차 두번째 스터디 - JOIN
Inner Left Right Full
1주차 두번째 스터디 - JOIN
내부조인
외부조인
외부조인
(레프트)
외부조인
(라이트)
1주차 두번째 스터디 - JOIN
내부조인
외부조인
1주차 두번째 스터디 - LIKE
LIKE 검색
Select 컬럼명
From 테이블명
Where 조건절
LIKE 패턴
와일드카드
%
_
주의사항
- 논리연산자와 함께 사용하
는 경우 무리
- Full-Text Search 참고
< 패턴검색 >
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__’;
1주차 두번째 스터디 - GROUPBY
GROUP BY
1주차 두번째 스터디 - HAVING
HAVING
SELECT CountyCode, count(CountryCode) FROM city group by
CountryCode having count(CountryCode) >= 3;
Having은 집합연산에 WHERE 조건절 대체로 사용
group by 결과물에 다시 조건을 걸고 싶을 때
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’;
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
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’;
1주차 두번째 스터디 - MySQL
더 다루라고 하시는 것
1. Join ­ Driving Table / Driven Table
2. Left Join 방식 ­ ANSI방식 / 오라클(+)방식
3. Union & Unionall 실례
4. 교집합(intersect) / 차집합(minus)
5. Projection
1주차 세번째 스터디 ­ Driving/Driven
Driving/Driven 테이블
성능이슈로 인해 어떤 테이블을 드라이빙 테이블로 할지
다른 테이블을 드리븐으로 할지 결정해야하며 다음과 같은 요소들을 고려함
1. 인덱스의 여부
2. ROW가 적은 테이블
Driving 테이블: 결합하기 위해 기준이 되는 테이블(먼저 읽는 테이블)
Driven 테이블: 결합되어지는 테이블
1. Nested Loop Join 2. Merge Join 3. Hash Join
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?
1주차 세번째 스터디 ­ UNIONALL
UNION ALL 실례
SELECT name, sentences FROM event1 WHERE sentences > 50
UNIONALL
SELECT name, sentences FROM event2 WHERE sentences > 50;
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);
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’);
1주차 세번째 스터디 - DDL
DDL
Database Definition Language
DML이 정보 하나하나에 대한 CRUD였다면,
DDL은 DB와 Table에 대한 CRUD.
스키마 생성뿐만 아니라 수정, 삭제까지!!!
1주차 세번째 스터디 - DDL
DDL
CREATE DATABASE sample_DB;
- SHOW DATABASES;
USE sample_DB;
1주차 세번째 스터디 - DDL
DDL
CREATE table BusinessCard(
id int ,
Name varchar(255),
Address varchar(255),
Telephone char(255)
);
1. SHOW tables;
2. DESC BusinessCard;
1주차 세번째 스터디 - DDL
자료형
- 정수형(int)
- 실수형(float),
- 문자열(char, varchar)
- Text문자열(text)
- BLOB(Binary Large Object)
- 시간관련(date, time, datetime, timestamp)
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)
);
1주차 세번째 스터디 - DDL
제약조건 - 외래키
1주차 세번째 스터디 - DDL
참조무결성
외래키
1. 외래키를 참조하면 원래 테이블에 해당 레코드
값이 반드시 존재해야함
2. 만약 원래 레코드를 삭제하려면 참조하는 외래
키(FK)값을 먼저 NULL로 만들어야함
1주차 세번째 스터디 - DDL
더 다룰 것
DCL, indexing, DB백업/복원,
파티셔닝/복제, full-text search, 트랜잭션, …

More Related Content

Similar to 일주일만에 끝내는 MySQL

[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3Seok-joon Yun
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차희동 강
 
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQLPgDay.Seoul
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]MongoDB
 
공간데이터베이스(Spatial db)
공간데이터베이스(Spatial db)공간데이터베이스(Spatial db)
공간데이터베이스(Spatial db)H.J. SIM
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기Kenu, GwangNam Heo
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL TuningPgDay.Seoul
 

Similar to 일주일만에 끝내는 MySQL (9)

[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차
 
R project_pt1
R project_pt1R project_pt1
R project_pt1
 
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
MySQL JOIN
MySQL JOINMySQL JOIN
MySQL JOIN
 
공간데이터베이스(Spatial db)
공간데이터베이스(Spatial db)공간데이터베이스(Spatial db)
공간데이터베이스(Spatial db)
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 

일주일만에 끝내는 MySQL

  • 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을 공부할 것입니다.
  • 6. 일주일 만에 끝내는 MySQL 1주차 첫번째 스터디 - 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
  • 12. 1주차 첫번째 스터디 - MySQL DML. CRUD.
  • 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
  • 22. 1주차 두번째 스터디 - JOIN Inner Left Right Full
  • 23. 1주차 두번째 스터디 - JOIN 내부조인 외부조인 외부조인 (레프트) 외부조인 (라이트)
  • 24. 1주차 두번째 스터디 - JOIN 내부조인 외부조인
  • 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__’;
  • 27. 1주차 두번째 스터디 - GROUPBY GROUP BY
  • 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;
  • 41. 1주차 세번째 스터디 - DDL 자료형 - 정수형(int) - 실수형(float), - 문자열(char, varchar) - Text문자열(text) - BLOB(Binary Large Object) - 시간관련(date, time, datetime, timestamp)
  • 42. 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) );
  • 43. 1주차 세번째 스터디 - DDL 제약조건 - 외래키
  • 44. 1주차 세번째 스터디 - DDL 참조무결성 외래키 1. 외래키를 참조하면 원래 테이블에 해당 레코드 값이 반드시 존재해야함 2. 만약 원래 레코드를 삭제하려면 참조하는 외래 키(FK)값을 먼저 NULL로 만들어야함
  • 45. 1주차 세번째 스터디 - DDL 더 다룰 것 DCL, indexing, DB백업/복원, 파티셔닝/복제, full-text search, 트랜잭션, …