Node.js
[node.js] Mysql 다중쿼리 처리하기
limsw
2022. 5. 10. 14:19
반응형
What is Query?
쿼리(Query)는 데이터베이스에 정보를 요청하는 행위를 의미한다.
쿼리는 웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청에 의한 처리이며, 주로 문자열을 기반으로 한 요청이다.
쿼리는 데이터베이스에서 특정 데이터를 추출하기 위한 용도로 사용된다.
다중 쿼리(Multiple Query)
다중 쿼리는 말 그대로 쿼리문이 2개 이상 들어간 쿼리를 의미한다. 서브 쿼리와는 조금 다른 의미인 것을 유의해야 한다. (서브 쿼리는 하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 의미한다)
이번 예제에서는 쿼리문 2개를 예로 들어 NodeJS에서 어떻게 다중 쿼리를 처리하는지 살펴볼 것이다.
NodeJS에서 Mysql 연동 및 쿼리 예제
이번 포스팅은 이전에 포스팅한 글의 코드 예제를 그대로 가져간다.
일부 부분만 수정하여 다중 쿼리 예제를 살펴볼 예정이다.
다중 쿼리 처리 방법
아래 코드는 위에서 언급한 mysql 연동 및 쿼리 예제를 참고하면 된다.
먼저 쿼리를 하기 전 초기 세팅이 필요하다.
const conn = {
host: 'localhost',
port: '3306',
user: 'username',
password: 'pw',
database: 'kleague',
multipleStatements: true, // 새롭게 추가된 조건
}
위와 같이 multipleStatements: true 조건을 추가한다.
필자가 찾은 다중 쿼리 방법은 쿼리를 세미콜론(;)으로 구분하여 넘겨주는 것이다.
그 때 결과값은 배열 형태로 리턴된다.
app.get('/', (req, res) => {
// create DB connection
let connection = mysql.createConnection(conn);
connection.connect(); // connect database
// 기존 단일 쿼리 변수
// const testQuery = "SELECT * FROM PLAYER";
// 추가한 다중 쿼리 2개, 끝에 세미 콜론으로 구분한다.
const query = "SELECT * FROM PLAYER WHERE POSITION='GK';" +
"SELECT * FROM PLAYER WHERE HEIGHT>=190;"
connection.query(query, (error, result, field) => {
if (error) {
console.log("Error Execution :", error);
}
let result_query_1 = result[0]; // 포지션이 GK인 데이터 집합
let result_query_2 = result[1]; // 키가 190 이상인 데이터 집합
console.log(result_query_1.length); // 44개의 행
console.log(result_query_2.length); // 20개의 행
...
});
connection.end(); // de-connect database
})
위의 예제에서는쿼리문 2개를 이용하여 선수 테이블의 데이터를 추출하는 것을 살펴보았다.
다양한 다중 쿼리 방법이 있을 것 같은데 공부하면서 찾게 된다면 다음에 포스팅 할 예정이다.