-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 = 생성한 데이터베이스를 동작한 전체 구조를 보여준다
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
-기본적인 구조
USE classicmodels(교수님이 제공하신 데이터 사용)텍스트
SELECT FROM employees
-사용시 전체 칼럼 표시됨
SELECT contactLastName, contactFirstName
FROM classicmodels.customers
ORDER BY contactLastName, contactFirstName
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
SELECT firstName, lastName, reportsTO
FROM employees
ORDER BY reportsTo DESC
SELECT
lastName,
firstName,
jobtitle
FROM
employees
WHERE
jobtitle = 'Sales Rep' AND officeCode = 1
officeCode BETWEEN 1 AND 3
-많은 리소스를 사용하기 때문에 사용에 주의가 필요하다
SELECT
lastName,
firstName,
officeCode
FROM
employees
WHERE
lastName LIKE '%son'
lastName LIKE '%so%'
SELECT
lastName,
firstName,
officeCode
FROM
employees
WHERE
officeCode = 1 OR officeCode = 3
officeCode IN (1,3)
-IN을 사용해도 같은 결과가 나온다
-OR나 IN이나 리소스를 사용하는 양이나 속도는 다르지 않다
-실행 플랜이 현재의 상태에 맞춰서 만들어져있기 때문에 처음엔 빠르지만 갈수록 늦어지거나 문제가 생긴다
-때문에 요즘엔 관행적으로 쓰지 않는다
SELECT
lastName,
firstName,
reportsTo
FROM
employees
WHERE reportsTo IS NULL
SELECT
lastName,
firstName,
jobtitle
FROM
employees
WHERE
jobtitle <> 'sales Rep'
SELECT
lastName,
firstName,
officeCode
FROM
employees
WHERE
officeCode > 6
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
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

-MySQL을 이용한 명령들의 사용법에서 확실히 join부분이 이해하기 쉽지 않았다.
-선생님이 제공해주신 사이트와 JOIN TYPE에 대한 이미지 파일 때문에 훨씬 이해하기 편하고 쉬워졌다.
-데이터베이스를 만들고 실데이터를 가지고 여러가지 해볼수 있어서 좋았다. 무엇보다 알아두면 현업에서 무조건 도움이 될 수 있는 부분들이라 집중할 필요가 있어보인다.