구글이 개발한 모바일 및 웹 애플리케이션 개발 플랫폼, 백엔드 인프라를 구축하거나 관리하는 복잡한 작업 없이 핵심 기능에 집중할 수 있도록 해줌
해당 강의에선 Firebase의 Firestore DB 사용
구글의 클라우드 기반 NoSQL DB
allow read, write
false->true로 변경, 게시)사용할 html파일 script 태그에 코드 입력(script 태그에 type="module"
입력)
type="module"
을 사용하면 onclick 메소드가 작동하지 않는다.
// Firebase SDK 라이브러리 가져오기
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-app.js";
import { getFirestore } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
import { collection, addDoc } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
import { getDocs } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
// Firebase 구성 정보 설정
const firebaseConfig = {
(Firebase 4번에서 복사한 SDK) //프로젝트 설정에서 확인 가능
};
// Firebase 인스턴스 초기화
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
$("#id").click(async function () {
let doc = {};
await addDoc(collection(db, "콜렉션이름"), doc);
})
window.location.reload()
let docs = await getDocs(collection(db, "콜렉션이름"));
docs.forEach((doc) => {
let row = doc.data();
console.log(row);
});
SQL 101번은 문제오류가 있다고 생각한다.
해당 문제는 판매된 모든 제품의 첫 해 에 대한 제품 ID , 연도 , 수량 및 가격을 출력하는 것인데 각 제품은 동일 년도에 복수번의 tuple이 존재할 수 있다는 경우를 생각하지 않아 정답 코드가 첫 해에 대한 tuple들을 출력하기만 하면 되는 코드였다. 실제로는 아래 코드처럼 첫 해에 대한 수량과 가격의 합으로 출력이 되어야 한다고 생각한다.
with first_year as (
select product_id, min(year)
from sales
group by product_id
)
select product_id, year first_year, sum(quantity) quantity, sum(price) price
from sales
where (product_id, year) in (select * from first_year)
group by 1, 2
문제는 어렵지 않지만 null값에 대한 처리를 알 수 있는 문제였다.
select num
from mynumbers
group by 1
having count(1)=1
order by 1 desc
limit 1
단일 숫자가 없을 경우 null값을 출력해야 하는데 위의 코드는 단일 숫자가 없다면 select에서 선택할 값 자체가 없기 때문에 null값을 출력할 수 없다.(null값도 값이긴 함)
with single as (
select num
from mynumbers
group by 1
having count(1)=1
)
select max(num) num
from single
따라서 위와 같이 코드를 수정하였는데 max함수는 계산값에 대한 결과가 있어야 하기 때문에 null값을 출력할 수 있다.