Seongwon Lim

[node.js] Mysql 다중쿼리 처리하기 본문

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개를 이용하여 선수 테이블의 데이터를 추출하는 것을 살펴보았다.

다양한 다중 쿼리 방법이 있을 것 같은데 공부하면서 찾게 된다면 다음에 포스팅 할 예정이다.


출처

Comments