분류 전체보기

항해99/필기노트

[필기노트] 2021-07-21 SQL, PROCEDURE

-- 요런 블로그 어때요? 1. 조회하는 유저 아이디를 입력받고, 제외한다. SELECT * FROM Users WHERE userId != 1 ; 2. Follows 테이블에서 followUserId를 지정하고, 등록한 followerUserId를 출력한다. SELECT followerUserId FROM Follows WHERE followUserId = 1 ; 3. 조회하는 유저와 팔로우 등록된 사람을 제외한다. SELECT userId, nickname, profileImg FROM Users WHERE userId NOT IN (SELECT followerUserId FROM Follows WHERE followUserId = 1) AND userId != 1 ; 4. RAND()와 LIMIT을..

항해99/TIL

2021-07-21 항해99 TIL

오늘 한일 '리블로그' 적용하지 못했습니다. MySQL 8버전 이상이거나, ORACLE을 사용했더라면 간단한 방법으로 구현할 수 있었겠지만, MySQL 5.7버전이라 순수하게 프로시저 또는 함수를 제작해 사용해야 하는 부분에서 많은 어려움이 존재했습니다. 논리적인 구조를 이해하고 있지만, 그것을 SQL로 옮기는 부분에서 막힘이 있었습니다. 결국 저녁 시간이 되어서야 리블로그 SQL 작성에 시간을 할애하여도 구현이 불가능할지도 모르기 때문에 현재까지 작성하지 않았던 테스트 코드 작성으로 선회하였습니다. API를 2개 추가하였습니다. SQL에서 RAND() 함수를 사용해 전체 유저 중에서 팔로우 되지 않은 유저를 출력해주는 A 것이었습니다. ORDER BY 절에서 정렬의 순서를 다양한 방식으로 나타낼 수 있..

항해99/필기노트

[필기노트] 2021-07-20 SQL, TRIGGER

== 트리거 SHOW TRIGGERS; - 현재 데이터베이스에 정의되어있는 트리거를 출력한다. drop trigger if exists TR_Posts; - TR_Posts 트리거가 존재할 경우 삭제한다. Sequelize.hook를 이용해 다른 TRIGGER를 실행할 수 있다. - TODO 다른 테이블을 Models폴더에서는 왜 참조가 안되는걸까? //postId는 변경되지 않는다. -- Posts 테이블 수정시 Images, Tags 데이터를 지우는 트리거 drop trigger if exists TR_Posts; DELIMITER $$ CREATE TRIGGER TR_Posts AFTER UPDATE ON Posts FOR EACH ROW BEGIN DELETE FROM Images WHERE po..

항해99/TIL

2021-07-20 항해99 TIL

오늘 한일 클론코딩 백 엔드 코드의 병합을 종료하였습니다. API 문서에 작성한 모든 코드의 작성이 끝났지만, 추가적인 기능이 언제 생길지, 프론트 엔드와 조율을 통해 API가 언제 수정되어야 할지는 아직 확답을 내릴 수 없어서 언제든지 수정의 준비를 해야 할 것 같습니다. AWS EC2 서버에 코드를 올렸습니다. 이전에 작성한 미니프로젝트 서버와 클론코딩 서버를 동시에 사용할 수 있도록 pm2로 실행하였습니다. TRIGGER 작성을 완료하였습니다. Sequelize에서 테이블 Migration을 하면서 query를 작성할 수 있다는 것을 확인하고 테이블이 생성되면서 자동으로 TRIGGER를 생성하도록 설정하였습니다. 오늘 배운 것 클론코딩 백 엔드 코드 병합 AWS EC2 업로드 MySQL TRIGGE..

Database/MySQL

[MySQL] 클론코딩 tumblr의 게시글 검색 제작기

DB ERD Node.js API 6개의 테이블을 조회합니다. Users, Posts, Images, Tags, Favorites, Follows userId : Post를 작성한 user의 userId를 반환합니다. nickname : Post를 작성한 user의 nickname을 반환합니다. profileImg : Post를 작성한 user의 profileImg를 반환합니다. postId : Post의 postId를 반환합니다. reBlog : Post가 참조하는 부모 테이블을 반환합니다. title : Post의 title을 반환합니다. img : 동일한 postId의 img를 Images 테이블에서 가져옵니다. content : Post의 content를 반환합니다. tag : 동일한 postId..

항해99/필기노트

[필기노트] 2021-07-19 SQL UNION, CONCAT_GROUP, CASE

14. tag와 img의 기본키가 곱연산 되는 문제를 해결하자. SELECT u.userId, u.nickname, u.profileImg, p.postId, p.reBlog, p.title, i.img, p.content, t.tag, CASE WHEN p.postId IN (SELECT postId FROM Favorites WHERE userId=1) THEN "Y" ELSE "N" END AS favorite, (SELECT COALESCE(MIN('Y'), 'N') FROM Follows WHERE EXISTS (SELECT 1 FROM Follows WHERE followUserId = 1 and followerUserId=p.userId)) AS follow, (SELECT COUNT(*) ..

항해99/TIL

2021-07-19 항해99 TIL

오늘 한일 6개의 테이블을 조회하는 SQL 문을 작성했습니다. 서브쿼리가 많이 사용돼 프로젝트가 거대해졌을 때 성능이 효율적이라고는 장담할 수 없다고 생각합니다. 우선은 단순히 SQL을 구현하는 것에도 벅차다 보니 코드 최적화에 대해서는 신경을 못 쓰고 있습니다. 코드리뷰를 하면서 어떤 식으로 개선할 수 있는지 확인해야 할 것 같습니다. 최종 프로젝트팀장에 지원했습니다. 항해를 진행하면서 남은 6주의 시간 동안 단순히 모듈만 가져와 프로젝트에 접목하는 의미 없는 기능추가로 보여주기만 좋은 기술보다는 코드를 확실히 이해하고 프로젝트의 구조를 견고하게 구성해 현업에서도 사용하는 기술 스택을 위주로 프로젝트에 녹여내고 싶었습니다. SQL 공부와 프로젝트 진행을 병행하면서 DB 통신을 최소화하는 것이 상당히 어..

항해99/TIL

2021-07-18 항해99 TIL

오늘 한일 오랜만의 느긋한 일요일이 되었습니다. 클론코딩도 모든 구조를 정의했고 남은 것은 SQL 문을 작성하기만 하면 종료되는 문제들이기 때문에 마음 편하게 휴식을 할 수 있었습니다. SQL 공부를 하였습니다. 서브쿼리와 CRUD 기능에 대해 기존에 사용하던 것 이외의 다른 옵션들이 존재하는 것이 아닌지 찾아보았고, JOIN 부분을 다시 보았습니다. 프로젝트를 진행하면서 가장 많은 문제는 여러 테이블을 가지고 오면서 원하는 결괏값을 도출해내는 것인데 그런 관계를 정의하는 가장 중요한 것은 JOIN을 사용해 다른 테이블을 참조하는 것으로 생각하였습니다. AWS CCP 공부가 점점 밀리고 있습니다. 눈앞에 있는 공부해야 할 것들이 많아지다 보니 시간을 할애하는 것이 부족해진 것 같습니다. 평일이라도 조금씩..

항해99/WIL

[항해99] WIL 6주차 - Node.js 클론 코딩 기간(후기)

서론 7/9 ~ 7/15의 미니프로젝트 기간이 종료되었습니다. 7/16 ~ 7/22의 클론코딩 기간이 시작되었습니다. 풀 스택 개발자 튜터님의 면담이 진행되었습니다. 일정 7/9 (금) ~ 7/15 (목) : 미니프로젝트 진행 7/13 (화) : 1회 협력사 발표 진행 7/16 (금) ~ 7/22 (목) : 클론코딩 진행 5주 차 미니프로젝트 7/9 ~ 7/15 미니프로젝트 주차가 종료되었습니다. 핀터레스트를 모티브로 한 클론코딩으로 진행되었습니다. 코드 최적화를 위주로 작성하였습니다. 총 17개의 API를 구현하였습니다. Sequelize와 mysql 모듈을 이용한 MySQL DB 통신을 진행하였습니다. AWS EC2에 미니프로젝트 서버를 업로드 하였습니다. Notion : https://www.not..

항해99/필기노트

[필기노트] 2021-07-17 SQL, Cookie, Sequelize Migrate

-- DB 생성 CREATE TABLE Users( userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, email varchar(255) NOT NULL UNIQUE, nickname varchar(255) NOT NULL UNIQUE, password varchar(255) NOT NULL, profileImg varchar(1000), createdAt Datetime NOT NULL, updatedAt Datetime NOT NULL ); CREATE TABLE Posts( postId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, userId int(11) NOT NULL, reBlog int(11), title varch..

커스텀 리
'분류 전체보기' 카테고리의 글 목록 (16 Page)