+ All Categories
Home > Documents > MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 ·...

MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 ·...

Date post: 20-Mar-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
112
Transcript
Page 1: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,
Page 2: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL한번에끝내기

Page 3: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

목차

1. MySQL 소개

2. MySQL 설치

3. SQL 기본

4. SQL 고급

• MySQL 한번에끝내기 3

Page 4: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

1. MySQL 소개

Page 5: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 소개

MySQL은가장널리사용되고있는관계형데이터베이스관리시스템(RDBMS: Relational DBMS)

MySQL은오픈소스이며, 다중사용자와다중스레드를지원

C언어, C++, JAVA, PHP 등여러프로그래밍언어를위한다양한 API를제공

MySQL은유닉스, 리눅스, 윈도우등다양한운영체제에서사용할수있으며, 특히 PHP와함께웹개발에자주사용

MySQL은오픈소스라이센스를따르기는하지만, 상업적으로사용할때는상업용라이센스구입필요

• MySQL 한번에끝내기 5

Page 6: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

2. MySQL 설치

Page 7: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 다운로드

• MySQL 한번에끝내기 7

Page 8: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 다운로드

• MySQL 한번에끝내기 8

Page 9: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 다운로드

• MySQL 한번에끝내기 9

Page 10: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 10

Page 11: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 11

Page 12: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 12

Page 13: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 13

Page 14: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 14

Page 15: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 15

Page 16: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 16

Page 17: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 17

Page 18: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 18

Page 19: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 19

Page 20: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 20

Page 21: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 21

Page 22: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 22

Page 23: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 23

Page 24: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 24

Page 25: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 25

Page 26: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 26

Page 27: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 27

Page 28: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 설치

• MySQL 한번에끝내기 28

Page 29: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL Workbench

• MySQL 한번에끝내기 29

Page 30: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL Workbench

• MySQL 한번에끝내기 30

Page 31: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

3. SQL 기본

Page 32: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SQL의분류

DMLData Manipulation Language

데이터조작언어

데이터를조작(선택, 삽입, 수정, 삭제)하는데사용되는언어

DML 구문이사용되는대상은테이블의행

DML 사용하기위해서는꼭그이전에테이블이정의되어있어야함

SQL문중SELECT, INSERT, UPDATE, DELETE가이구문에해당

트랜잭션Transaction이발생하는SQL도이DML에속함

테이블의데이터를변경(입력/수정/삭제)할때실제테이블에완전히적용하지않고, 임시로적용시키는것

취소가능

DDLData Definition Language

데이터정의언어

데이터베이스, 테이블, 뷰, 인덱스등의데이터베이스개체를생성/삭제/변경하는역할

CREATE, DROP, ALTER 구문

DDL은트랜잭션발생시키지않음

ROLLBACK이나COMMIT 사용불가

DDL문은실행즉시MySQL에적용

DCLData Control Language

데이터제어언어

사용자에게어떤권한을부여하거나빼앗을때주로사용하는구문

GRANT/REVOKE/DENY 구문

• MySQL 한번에끝내기 32

Page 33: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SHOW DATABASES

현재서버에어떤 DB가있는지보기

• MySQL 한번에끝내기 33

Page 34: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

USE

사용할데이터베이스지정

지정해놓은후특별히다시 USE문사용하거나다른 DB를사용하겠다고명시하지않는이상모든 SQL문은지정 DB에서수행

Workbench에서직접선택해사용가능

[Navigator] → [SCHEMAS] → 데이터베이스선택

USE database_name

• MySQL 한번에끝내기 34

Page 35: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SHOW TABLE

데이터베이스world의테이블이름보기

• MySQL 한번에끝내기 35

Page 36: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SHOW TABLE STATUS

데이터베이스world의테이블정보조회

• MySQL 한번에끝내기 36

Page 37: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

DESCRIBE (DESC)

city 테이블에무슨열이있는지확인 DESCRIBE city;

DESC city;

• MySQL 한번에끝내기 37

Page 38: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LAB #1

country 테이블과 countrylanguage테이블정보보기

• MySQL 한번에끝내기 38

Page 39: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SELECT

<SELECT... FROM>

요구하는데이터를가져오는구문

일반적으로가장많이사용되는구문

데이터베이스내테이블에서원하는정보를추출

SELECT의구문형식

• MySQL 한번에끝내기 39

SELECT select_expr[FROM table_references][WHERE where_condition][GROUP BY {col_name | expr | position}][HAVING where_condition][ORDER BY {col_name | expr | position}]

Page 40: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SELECT

SELECT *

• MySQL 한번에끝내기 40

Page 41: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SELECT

SELECT 열이름 테이블에서필요로하는열만 가져오기가능

여러개의열을가져오고싶을때는콤마로구분

열이름의순서는출력하고싶은순서대로배열가능

• MySQL 한번에끝내기 41

Page 42: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SELECT FROM WHERE

기본적인 WHERE절 조회하는결과에특정한조건줘서원하는데

이터만보고싶을때사용

SELECT 필드이름FROM 테이블이름WHERE 조건식;

조건이없을경우테이블의크기가클수록찾는시간과노력이증가

• MySQL 한번에끝내기 42

Page 43: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SELECT FROM WHERE

관계연산자의사용 ‘…했거나’, ‘… 또는’ - OR 연산자

‘...하고’, ‘…면서’, ‘… 그리고’ - AND 연산자

조건연산자(=, <, >, <=, >=, < >, != 등)와관계연산자(NOT, AND, OR 등)의조합으로알맞은데이터를효율적으로추출

MySQL 함수및연산자: https://dev.mysql.com/doc/refman/8.0/en/functions.html

• MySQL 한번에끝내기 43

Page 44: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LAB #02

한국에있는도시들만보기

미국에있는도시들만보기

한국에있는도시들중에인구수가 1,000,000 이상인도시만 SELECT 하기

• MySQL 한번에끝내기 44

Page 45: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

BETWEEN

데이터가숫자로구성되어있어연속적인값은 BETWEEN… AND 사용가능

• MySQL 한번에끝내기 45

Page 46: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

IN

이산적인Discrete 값의조건에서는 IN( ) 사용가능

• MySQL 한번에끝내기 46

Page 47: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LAB #03

한국, 미국, 일본의도시들에대해서보기

• MySQL 한번에끝내기 47

Page 48: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LIKE

문자열의내용검색하기위해 LIKE 연산자사용

문자뒤에 % - 무엇이든(%) 허용

한글자와매치하기위해서는‘_’사용

• MySQL 한번에끝내기 48

Page 49: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

Sub Query

서브쿼리SubQuery

쿼리문안에또쿼리문이들어있는것

서브쿼리의결과가둘이상이되면에러발생

• MySQL 한번에끝내기 49

Page 50: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ANY

서브쿼리의여러개의결과중한가지만만족해도가능

SOME은 ANY와동일한의미로사용

= ANY 구문은 IN과동일한의미

• MySQL 한번에끝내기 50

Page 51: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ALL

서브쿼리의여러개의결과를모두만족시켜야함

• MySQL 한번에끝내기 51

Page 52: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ORDER BY

결과물에대해영향을미치지는않음

결과가출력되는순서를조절하는구문

기본적으로오름차순ASCENDING 정렬

내림차순DESCENDING 으로정렬 열이름뒤에DESC 적어줄것

ASC(오름차순)는디폴트값이므로생략가능

• MySQL 한번에끝내기 52

Page 53: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ORDER BY

ORDER BY 구문을혼합해사용하는구문도가능

• MySQL 한번에끝내기 53

Page 54: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LAB #04

한국에있는도시들에대해인구수로내림차순하여보기

country 테이블을이용하여국가면적크기로내림차순하여보기

• MySQL 한번에끝내기 54

Page 55: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

DISTINCT

중복된것은 1개씩만보여주면서출력

테이블의크기가클수록효율적

• MySQL 한번에끝내기 55

Page 56: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LIMIT

출력개수를제한

일부를보기위해여러건의데이터를출력하는부담줄임

상위의 N개만출력하는‘LIMIT N’ 구문사용

서버의처리량을많이사용해서버의전반적인성능을나쁘게하는악성 쿼리문개선할때사용

• MySQL 한번에끝내기 56

Page 57: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

GROUP BY

그룹으로묶어주는역할

집계함수Aggregate Function를 함께사용

AVG(): 평균

MIN(): 최소값

MAX(): 최대값

COUNT(): 행의개수

COUNT(DISTINCT): 중복제외된행의개수

STDEV(): 표준편차

VARIANCE(): 분산

효율적인데이터그룹화Grouping

읽기좋게하기위해별칭Alias 사용

• MySQL 한번에끝내기 57

Page 58: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LAB #05

전체도시는몇개인가?

전체도시들의평균인구수는?

• MySQL 한번에끝내기 58

Page 59: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

HAVING

WHERE과비슷한개념으로조건제한

집계함수에대해서조건제한하는편리한개념

HAVING절은반드시 GROUP BY절다음에나와야함

• MySQL 한번에끝내기 59

Page 60: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ROLLUP

총합또는중간합계가필요할경우사용’

GROUP BY절과함께 WITH ROLLUP문사용

• MySQL 한번에끝내기 60

Page 61: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

JOIN

JOIN은데이터베이스내의여러테이블에서가져온레코드를조합하여하나의테이블이나결과집합으로표현

• MySQL 한번에끝내기 61

Page 62: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LAB #06

city, country, countrylanguage테이블 3개를 JOIN 하기

• MySQL 한번에끝내기 62

Page 63: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MySQL 내장함수

사용자의편의를위해다양한기능의내장함수를미리정의하여제공

대표적인내장함수의종류

문자열함수

수학함수

날짜와시간함수

• MySQL 한번에끝내기 63

Page 64: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LENGTH()

전달받은문자열의길이를반환

• MySQL 한번에끝내기 64

Page 65: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CONCAT()

전달받은문자열을모두결합하여하나의문자열로반환

전달받은문자열중하나라도 NULL이존재하면 NULL을반환

• MySQL 한번에끝내기 65

Page 66: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LOCATE()

문자열내에서찾는문자열이처음으로나타나는위치를찾아서해당위치를반환

찾는문자열이문자열내에존재하지않으면 0을반환

MySQL에서는문자열의시작인덱스를 1부터계산

• MySQL 한번에끝내기 66

Page 67: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LEFT(), RIGHT()

LEFT():문자열의왼쪽부터지정한개수만큼의문자를반환

RIGHT(): 문자열의오른쪽부터지정한개수만큼의문자를반환

• MySQL 한번에끝내기 67

Page 68: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LOWER(), UPPER()

LOWER():문자열의문자를모두소문자로변경

UPPER(): 문자열의문자를모두대문자로변경

• MySQL 한번에끝내기 68

Page 69: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

REPLACE()

문자열에서특정문자열을대체문자열로교체

• MySQL 한번에끝내기 69

Page 70: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

TRIM()

문자열의앞이나뒤, 또는양쪽모두에있는특정문자를제거

TRIM() 함수에서사용할수있는지정자

BOTH : 전달받은문자열의양끝에존재하는특정문자를제거 (기본설정)

LEADING : 전달받은문자열앞에존재하는특정문자를제거

TRAILING : 전달받은문자열뒤에존재하는특정문자를제거

만약지정자를명시하지않으면, 자동으로 BOTH로설정

또한, 제거할문자를명시하지않으면, 자동으로공백을제거

• MySQL 한번에끝내기 70

Page 71: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

FORMAT()

숫자타입의데이터를세자리마다쉼표(,)를사용하는 '#,###,###.##' 형식으로변환

반환되는데이터의형식은문자열타입

두번째인수는반올림할소수부분의자릿수

• MySQL 한번에끝내기 71

Page 72: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

FLOOR(), CEIL(), ROUNT()

FLOOR(): 내림

CEIL():올림

ROUND(): 반올림

• MySQL 한번에끝내기 72

Page 73: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SQRT(), POW(), EXP(), LOG()

SQRT(): 양의제곱근

POW(): 첫번째인수로는밑수를전달하고, 두번째인수로는지수를전달하여거듭제곱계산

EXP(): 인수로지수를전달받아, e의거듭제곱을계산

LOG():자연로그값을계산

• MySQL 한번에끝내기 73

Page 74: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SIN(), COS(), TAN()

SIN(): 사인값반환

COS():코사인값반환

TAN():탄젠트값반환

• MySQL 한번에끝내기 74

Page 75: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ABS(), RAND()

ABS(X): 절대값을반환

RAND(): 0.0보다크거나같고 1.0보다작은하나의실수를무작위로생성

• MySQL 한번에끝내기 75

Page 76: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

NOW(), CURDATE(), CURTIME()

NOW(): 현재날짜와시간을반환, 반환되는값은 'YYYY-MM-DD HH:MM:SS' 또는YYYYMMDDHHMMSS 형태로반환

CURDATE():현재날짜를반환, 이때반환되는값은 'YYYY-MM-DD' 또는YYYYMMDD 형태로반환

CURTIME():현재시각을반환, 이때반환되는값은 'HH:MM:SS' 또는 HHMMSS 형태로반환

• MySQL 한번에끝내기 76

Page 77: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

DATE(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND()

DATE():전달받은값에해당하는날짜정보를반환

MONTH(): 월에해당하는값을반환하며, 0부터 12 사이의값을가짐

DAY():일에해당하는값을반환하며, 0부터 31 사이의값을가짐

HOUR(): 시간에해당하는값을반환하며, 0부터 23 사이의값을가짐

MINUTE():분에해당하는값을반환하며, 0부터 59 사이의값을가짐

SECOND(): 초에해당하는값을반환하며, 0부터 59 사이의값을가짐

• MySQL 한번에끝내기 77

Page 78: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

MONTHNAME(), DAYNAME()

MONTHNAME(): 월에해당하는이름을반환

DAYNAME():요일에해당하는이름을반환

• MySQL 한번에끝내기 78

Page 79: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

DAYOFWEEK(), DAYOFMONTH(), DAYOFYEAR()

DAYOFWEEK(): 일자가해당주에서몇번째날인지를반환, 1부터 7 사이의값을반환 (일요일 = 1, 토요일 = 7)

DAYOFMONTH():일자가해당월에서몇번째날인지를반환, 0부터 31 사이의값을반환

DAYOFYEAR(): 일자가해당연도에서몇번째날인지를반환, 1부터 366 사이의값을반환

• MySQL 한번에끝내기 79

Page 80: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

DATE_FORMAT()

전달받은형식에맞춰날짜와시간정보를문자열로반환

MySQL Date and Time Function: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

• MySQL 한번에끝내기 80

Page 81: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

4. SQL 고급

Page 82: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CREATE TABLE AS SELECT

city 테이블과똑같은 city2 테이블생성

• MySQL 한번에끝내기 82

Page 83: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CREATE DATBASE

CREATE DATABASE 문은새로운데이터베이스를생성

USE문으로새데이터베이스를사용

• MySQL 한번에끝내기 83

Page 84: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CREATE TABLE (MySQL Workbench)

• MySQL 한번에끝내기 84

데이터타입: https://dev.mysql.com/doc/refman/8.0/en/data-types.html

Page 85: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CREATE TABLE (MySQL Workbench)

• MySQL 한번에끝내기 85

Page 86: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CREATE TABLE (MySQL Workbench)

• MySQL 한번에끝내기 86

test 테이블생성완료

Page 87: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CREATE TABLE

test2 테이블생성완료

• MySQL 한번에끝내기 87

Page 88: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ALTER TABLE

ALTER TABLE 문과함께 ADD 문을사용하면, 테이블에컬럼을추가할수있음

• MySQL 한번에끝내기 88

Page 89: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ALTER TABLE

ALTER TABLE 문과함께 MODIFY 문을사용하면, 테이블의컬럼타입을변경할수있음

• MySQL 한번에끝내기 89

Page 90: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ALTER TABLE

ALTER TABLE 문과함께 DROP 문을사용하면, 테이블에컬럼을제거할수있음

• MySQL 한번에끝내기 90

Page 91: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

인덱스Index

테이블에서원하는데이터를빠르게찾기위해사용

일반적으로데이터를검색할때순서대로테이블전체를검색하므로데이터가많으면많을수록탐색하는시간이늘어남

검색과질의를할때테이블전체를읽지않기때문에빠름

설정된컬럼값을포함한데이터의삽입, 삭제, 수정작업이원본테이블에서이루어질경우, 인덱스도함께수정되어야함

인덱스가있는테이블은처리속도가느려질수있으므로수정보다는검색이자주사용되는테이블에서사용하는것이좋음

• MySQL 한번에끝내기 91

Page 92: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CREATE INDEX

CREATE INDEX 문을사용하여인덱스를생성

• MySQL 한번에끝내기 92

Page 93: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

SHOW INDEX

인덱스정보보기

• MySQL 한번에끝내기 93

Page 94: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CREATE UNIQUE INDEX

중복값을허용하지않는인덱스

• MySQL 한번에끝내기 94

Page 95: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

FULLTEXT INDEX

FULLTEXT INDEX는일반적인인덱스와는달리매우빠르게테이블의모든텍스트컬럼을검색

• MySQL 한번에끝내기 95

Page 96: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

INDEX 삭제 (ALTER)

ALTER 문을사용하여테이블에추가된인덱스삭제

• MySQL 한번에끝내기 96

Page 97: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

INDEX 삭제 (DROP INDEX)

DROP 문을사용하여해당테이블에서명시된인덱스를삭제

DROP 문은내부적으로 ALTER 문으로자동변환되어명시된이름의인덱스를삭제

• MySQL 한번에끝내기 97

Page 98: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

VIEW

뷰view는데이터베이스에존재하는일종의가상테이블

실제테이블처럼행과열을가지고있지만, 실제로데이터를저장하진않음

MySQL에서뷰는다른테이블이나다른뷰에저장되어있는데이터를보여주는역할만수행

뷰를사용하면여러테이블이나뷰를하나의테이블처럼볼수있음

뷰의장점 특정사용자에게테이블전체가아닌필요한

컬럼만보여줄수있음

복잡한쿼리를단순화해서사용

쿼리재사용가능

뷰의단점

한번정의된뷰는변경할수없음

삽입, 삭제, 갱신작업에많은제한사항을가짐

자신만의인덱스를가질수없음

• MySQL 한번에끝내기 98

Page 99: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

CREATE VIEW

CREATE VIEW 문을사용하여뷰생성

• MySQL 한번에끝내기 99

Page 100: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

ALTER VIEW

ALTER 문을사용하여뷰를수정

• MySQL 한번에끝내기 100

Page 101: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

DROP VIEW

DROP 문을사용하여생성된뷰를삭제

• MySQL 한번에끝내기 101

Page 102: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LAB #07

city, country, countrylanguage테이블을 JOIN하고, 한국에대한정보만뷰생성하기

• MySQL 한번에끝내기 102

Page 103: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

INSERT

테이블이름다음에나오는열생략가능

생략할경우에 VALUE 다음에나오는값들의순서및개수가테이블이정의된열순서및개수와동일해야함

• MySQL 한번에끝내기 103

Page 104: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

INSERT (MySQL Workbench)

• MySQL 한번에끝내기 104

Page 105: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

INSERT INTO SELECT

test 테이블에있는내용을 test2 테이블에삽입

• MySQL 한번에끝내기 105

Page 106: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

UPDATE

기존에입력되어있는값변경하는구문

WHERE절생략가능하나테이블의전체행의내용변경

• MySQL 한번에끝내기 106

Page 107: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

DELETE

행단위로데이터삭제하는구문

DELETE FROM 테이블이름 WHERE 조건;

데이터는지워지지만테이블용량은줄어들지않음

원하는데이터만지울수있음

삭제후잘못삭제한것을되돌릴수있음

• MySQL 한번에끝내기 107

Page 108: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

TRUNCATE

용량이줄어들고, 인덱스등도모두삭제

테이블은삭제하지는않고, 데이터만삭제

한꺼번에다지워야함

삭제후절대되돌릴수없음

• MySQL 한번에끝내기 108

Page 109: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

DROP TABLE

데이블전체를삭제, 공간, 객체를삭제

삭제후절대되돌릴수없음

• MySQL 한번에끝내기 109

Page 110: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

DROP DATABASE

DROP DATABASE 문은해당데이터베이스를삭제

• MySQL 한번에끝내기 110

Page 111: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

LAB #08

자신만의연락처테이블만들기

이름, 전화번호, 주소, 이메일, …

자유주제로데이터들을저장할테이블만들기

(참고) 데이터타입: https://dev.mysql.com/doc/refman/8.0/en/data-types.html

• MySQL 한번에끝내기 111

Page 112: MySQL 한번에끝내기 - SuanLabsuanlab.com/assets/slectures/mysql/mysql.pdf · 2018-12-06 · mysql은오픈소스이며, 다중사용자와다중스레드를지원 c언어, c++,

• MySQL 한번에끝내기 112


Recommended