교육 26일차 강의

구성본·2022년 4월 21일

1.학습한 내용

-Azure Storage Account
-비정형 및 반정형 데이터를 저장하는 저장소
-뛰어난 내구성(99.999999999%)과 가용성(99.99%)을 제공
-제한없는 저장소 용량,손쉬운 엑세스, 높은 성능

-Blobs(storage) = 텍스트 or 이진파일과 같은 대량의 비구조적 데이터 저장 가능(가장 많이 사용, 저장 시 url이 생긴다)
-Files(file share, NAS) = SMB3.0(디스크 공유 프로토콜)을 통해 어디서나 엑세스 가능, 항상 사용 가능한 네트워크 파일 공유 호스트(필요에 따라 사용)
-Tables(key value store) = NoSQL 테이블 저장 가능
-Queues(simple queue) = 큐에 최대 64kb의 메시지 저장 가능

-Blob Storage
-브라우저에 이미지나 문저 직접 제공
-설치 등의 분산 엑세스용으로 파일 저장
-비디오 및 오디오 스트리밍
-백업 및 복원, 재해복구, 보관을 위한 데이터 저장
-온프레미스 또는 애져 호스팅 서비스에서 분석할 수 있도록 데이터 저장
-블록에 저장된 데이터는 최대 100MB에 적합

-MySQL
-로그는 최대 7일간 보존, 7.5GB초과 시 여유공간이 생길 떄까지 오래된 파일 삭제
-slow query는 기본적으로 비활성화, log on 설정해야함
-확장,축소 시 새로운 Instance생성(Downtime 발생)
-응용프로그램 재시도 연결은 필수

-schema 틀, 구조
-데이터베이스 생성 후 MySQL로 접속
-데이터베이스 run
-ERD = 생성한 데이터베이스를 동작한 전체 구조를 보여준다

SQL 명령

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
-기본적인 구조

USE classicmodels(교수님이 제공하신 데이터 사용)텍스트

SELECT FROM employees
-
사용시 전체 칼럼 표시됨

정렬

SELECT contactLastName, contactFirstName
FROM classicmodels.customers
ORDER BY contactLastName, contactFirstName

역순정렬 (DESC<->ASC)

ORDER BY contactLastName DESC, contactFirstName ASC

가장 많이 구매한 금액과 번호 역순 출력

SELECT orderNumber, orderLineNumber, quantityOrdered priceEach
FROM orderdetails
ORDER BY quantityOrdered
priceEach DESC

가장 많이 구매한 금액과 번호 역순 출력

SELECT orderNumber, orderLineNumber, quantityOrdered * priceEach AS subTotal
FROM orderdetails
ORDER BY subTotal DESC

고용인들의 리포트를 누구에 하는가, null값을 뒤로 보내기

SELECT firstName, lastName, reportsTO
FROM employees
ORDER BY reportsTo DESC

AND문

SELECT
lastName,
firstName,
jobtitle
FROM
employees
WHERE
jobtitle = 'Sales Rep' AND officeCode = 1

BETWEEN문

officeCode BETWEEN 1 AND 3

lastname이 son으로 끝나는 사람을 찾는 명령문은 LIKE 사용

-많은 리소스를 사용하기 때문에 사용에 주의가 필요하다
SELECT
lastName,
firstName,
officeCode
FROM
employees
WHERE
lastName LIKE '%son'

위치 상관없이 so가 들어가는 lastname을 찾으라는 명령문

lastName LIKE '%so%'

OR문

SELECT
lastName,
firstName,
officeCode
FROM
employees
WHERE
officeCode = 1 OR officeCode = 3

officeCode IN (1,3)
-IN을 사용해도 같은 결과가 나온다
-OR나 IN이나 리소스를 사용하는 양이나 속도는 다르지 않다

Stored Procedures

-실행 플랜이 현재의 상태에 맞춰서 만들어져있기 때문에 처음엔 빠르지만 갈수록 늦어지거나 문제가 생긴다
-때문에 요즘엔 관행적으로 쓰지 않는다

NULL값을 찾는 법 = IS NULL

SELECT
lastName,
firstName,
reportsTo
FROM
employees
WHERE reportsTo IS NULL

해당되는 jobtitle빼고 나머지를 찾는 명령 <>

SELECT
lastName,
firstName,
jobtitle
FROM
employees
WHERE
jobtitle <> 'sales Rep'

조건문

SELECT
lastName,
firstName,
officeCode
FROM
employees
WHERE
officeCode > 6

중복제거 DISTINCT

SELECT
DISTINCT lastName
FROM
employees
ORDER BY
lastName

단어 줄이기 방법

SELECT
e.firstName,
e.lastName
FROM
employees AS e
ORDER BY
e.firstName
-AS는 있어도 없어도 된다

고객 이름별로 그룹화

SELECT
customerName,
COUNT(*)
FROM
customers c
GROUP BY
customerName

주문한 결과를 같이 출력 JOIN

SELECT
customerName,
COUNT()
FROM
customers c
INNER JOIN
orders o on c.customerNumber = o.customerNumber
GROUP BY
customerName
ORDER BY COUNT(
)

정렬

SELECT
customerName,
COUNT(*) as 'orderCount'
FROM
customers c
INNER JOIN
orders o on c.customerNumber = o.customerNumber
GROUP BY
customerName
ORDER BY orderCount

각 주문별 수량과 합계

SELECT
orderNumber,
SUM(quantityOrdered) AS itemsCount,
SUM(priceEach * quantityOrdered) AS total
FROM
orderdetails
GROUP BY
orderNumber

그룹 조건문

SELECT
orderNumber,
SUM(quantityOrdered) AS itemsCount,
SUM(priceEach * quantityOrdered) AS total
FROM
orderdetails
GROUP BY
orderNumber
HAVING
total > 10000

-조건 추가
total > 10000 AND itemsCount > 600

2.학습내용 중 어려웠던 점

-MySQL을 이용한 명령들의 사용법에서 확실히 join부분이 이해하기 쉽지 않았다.

3.해결방법

-선생님이 제공해주신 사이트와 JOIN TYPE에 대한 이미지 파일 때문에 훨씬 이해하기 편하고 쉬워졌다.

4.학습소감

-데이터베이스를 만들고 실데이터를 가지고 여러가지 해볼수 있어서 좋았다. 무엇보다 알아두면 현업에서 무조건 도움이 될 수 있는 부분들이라 집중할 필요가 있어보인다.

profile
코딩공부중

0개의 댓글