본문 바로가기

MySQL(출처: yalco)

(22)
내 웹사이트를 온라인에! Heroku 이용하기 1. node_modules 폴더 git 제외 .gitignore 파일 추가 node_modules/ 2. 🔗 Heroku 가입하기 https://www.heroku.com/ Cloud Application Platform | Heroku Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud. www.heroku.com 2. account / billing 에서 신용카드 등록 (인증용) 4. 대시보드에서 새 앱 생성 5. Heroku CLI 설치 🔗 설치 페이지 설치확인 (VS 코드 재실행) The Heroku ..
좋아요와 댓글 달기 1. 좋아요 증감 구현 A. 상세페이지 views/detail.hbs {{ biz.icon }} {{ biz.business_name }} 업소 정보 섹션 {{ biz.section_name }} ({{ biz.floor }}층) 현재 상태 {{ biz.status_kor }} 배달 가능 {{#if biz.can_takeout}} ✔️ {{^}} ❌ {{/if}} 📋 메뉴 메뉴명 가격 칼로리 좋아요 {{#each menus}} {{ menu_name }} {{ price }} {{ kilocalories }} {{ likes }} + - {{/each}} ⭐ 평점 평점 코멘트 일시 {{#each ratings}} {{ stars }} {{ comment }} {{ created_fmt }} 삭제 {{/e..
필터와 정렬 기능 만들기 1. 단순 필터링 구현 /views/biz-simple.hbs {{ title }} 고급 화면으로 보기 ▶️ 업소명 섹션 층 상태 배달 {{#each businesses}} {{business_name}} {{section_name}} {{floor}} {{status_kor}} {{#if can_takeout}} ✔️ {{^}} ❌ {{/if}} 자세히 {{/each}} ◀️ 섹션 목록으로 돌아가기️ /database/sql.js 중 getBusinessesJoined : async (query) => { const sqlQuery = ` SELECT * FROM sections S LEFT JOIN businesses B ON S.section_id = B.fk_section_id WHERE TRUE..
첫 삽부터 목록 보기까지 Web Application 만들기 Express : 자바스크립트로 웹사이트 또는 API를 제작하는데 사용되는 프레임워크 https://expressjs.com/ Express - Node.js web application framework Fast, unopinionated, minimalist web framework for Node.js $ npm install express --save expressjs.com I. 사전 준비 1. Node.js 설치 (14버전 이상) 컴퓨터에서 자바스크립트를 실행할 수 있도록 해줌 https://nodejs.org/en/ Node.js — Run JavaScript Everywhere Node.js® is a JavaScript runtime built on C..
사용자와 권한 다루기 1. 사용자 USE mysql; SELECT * FROM user; 사용자 생성 -- CREATE USER '사용자명'@'접속위치' IDENTIFIED BY '비밀번호'; -- CREATE USER 'user_1'@'localhost' IDENTIFIED BY 'abcdefg'; -- CREATE USER 'user_1'@'12.345.678.90' IDENTIFIED BY 'abcdefg'; CREATE USER 'user_1'@'%' IDENTIFIED BY 'abcdefg'; '%': 어떤 위치에서든 접속 가능 사용자 삭제 DROP USER 'user_1'@'%'; 2. 권한 -- 사용자에 권한 추가 GRANT SELECT ON mydatabase.businesses TO 'user_1'@'%'; ..
트랜잭션 - 함께가 아니면 하지 않아! 트랜잭션 모든 구문이 성공 OR 모든 구문 실패 은행 송금 예시 원자성 (atomicity) -- 트랜잭션 시작 START TRANSACTION; DELETE FROM sections WHERE section_id > 0; SELECT * FROM sections; -- 롤백 ROLLBACK; SELECT * FROM sections; COMMIT 메모리상의 변화를 영구저장 START TRANSACTION; INSERT INTO sections (section_name, floor) VALUES ('동남아', 2); SELECT * FROM sections; ROLLBACK; SELECT * FROM sections; START TRANSACTION; INSERT INTO sections (section..
인덱스 - 검색을 빠르게! 인덱스 특정 컬럼(들)에 대한 목차 생성 - 검색 가속화 테이블 내용변경(추가, 수정, 삭제)시 시간 더 소모 1. 인덱스 사용하기 -- 인덱스 생성 ALTER TABLE `mydatabase`.`businesses` ADD INDEX index_biz_name (business_name); -- 다중 컬럼 인덱스 ALTER TABLE menus ADD INDEX index_name_cal (menu_name, kilocalories); -- 인덱스 조회 SHOW INDEX FROM businesses; -- 인덱스 삭제 ALTER TABLE businesses DROP INDEX index_biz_name; 2. 인덱스를 사용하기 적합한 곳 데이터의 변경이 잦지 않은 테이블 WHERE, ORDER BY..
뷰 - 가상의 테이블 -- 뷰 생성 CREATE VIEW section_view AS SELECT section_id, section_name FROM sections; -- 뷰 조회 SELECT * FROM section_view; -- 뷰 삭제 DROP VIEW section_view; 뷰를 사용하는 이유 1. 보안 - 테이블 구조 및 내용 숨기기 CREATE VIEW menu_view AS SELECT menu_id, menu_name, CONCAT( SUBSTRING(business_name, 1, 1), REPEAT('*', CHAR_LENGTH(business_name) - 1) ) AS business, price, likes AS evaluation FROM businesses B INNER JOIN menus..