본문 바로가기

Back-End/SQL3

[MySql] 연속된 여러 쿼리문 질의하기 서버 측에서 데이터베이스에 여러 개의 쿼리문을 연속적으로 보내기 위해선 어떻게 해야 할까? mysql 라이브러리에는 위와 같은 상황도 처리할 수 있도록 .query() 함수를 설정해 놓았다. 하지만, 라이브러리 설명에 따르면 연속된 여러 쿼리문을 지원하는 것은 SQL injection 공격에 취약하기 때문에 기본적으로 기능을 사용할 수 없도록 설정해 놓았다. Multiple statement queries 위와 같은 이유로 multiple statement query를 사용하기 위해선 아래와 같이 설정을 변경해주어야 한다. var connection = mysql.createConnection({multipleStatements: true}); 위와 같이 설정을 바꾸면 아래와 같이 쿼리문이 들어가는 파라.. 2022. 1. 2.
[MySql] 하나의 쿼리문을 여러번 반복하려면? 3 tier 아키텍처의 마지막 관문, 드디어 Database 기초학습을 완료했다. 이제 Mysql를 프로그래밍적으로 제어하기 위해서 서버에서 쿼리문을 보내는 방법을 실습해보다가 한 가지 문제에 부딪혔다. '하나의 쿼리문을 인자만 바꿔서 반복해야 하면 어떻게 해야 하지?' 예를 들어, order_items과 같은 주문-주문제품 조인 테이블에 한 주문에 포함되어 있는 여러 제품에 대한 정보(어떤 주문에 어떤 제품들이 포함되어 있고 각 제품 당 가격 정보)를 insert 해야 하는 상황이면 어떻게 해야 할까? for문을 떠올릴 수 있지만 for문은 올바른 해결법이 아니다. for문을 사용하면 insert 쿼리문을 여러번 서버 측에 보내게 되는데 만약 error가 발생하면? 이는 쿼리문의 ACID 법칙을 위배할.. 2022. 1. 2.
[SQL] SQL join 정리 이전 직장에 있을 때, 플랫폼 업그레이드 프로젝트를 진행하면서 데이터배이스를 옮기는 작업을 도운적이 있었다. 그때는 개발이고 뭐고 아무것도 모르는 상태였지만 어찌저찌 하다보니 SQL을 배워 작업을 한 기억이 난다. NoSQL로 구축된 레거시 플랫폼을 관계형 데이터베이스로 교체해야하는 작업이라 CTO가 진땀을 빼던 기억이 아직 생생하다. 그때의 기억에 따르면 사실... 수 많은 JOIN들 중에 세 가지 이외에는 사용해 본적이 없는것 같다. 우선을 join SQL에 대해 잘 정리가 되어 있는 그림이 있어 포스팅을 해본다. 자유자재로 모든 join을 다룰 수 있으면 좋겠지만, LEFT JOIN INNER JOIN RIGHT JOIN 이 세가지 이외에는 현업에서 사용해 보지 않았던 것 같다. 2021. 12. 20.