스마트한 개발 공부/Node.js | Java | html

[Node.js] Node.js에서 사용하는 MySQL

스마트한지노 2021. 7. 13. 00:54
728x90
반응형

js파일에서 MySQL 데이터를 사용하는 방법에 대해 알아보자.
자주 사용하는 select, update, delete, insert 4개를 보려고 한다.
query 를 불러올 때 사용되는 ` 표시는 키패드 1번 왼쪽에 있는 기호니 주의하시길 바란다!

설명할 때, column의 값을 필드명으로 column 안에 있는 값들을 필드값이라고 정의하고 시작하겠습니다.
mysql을 통한 데이터는 OBJECT 함수의 파라미터로 name1, value1, name2, value2 처럼 key: value 쌍을 맞춰서 호출과 입력이 이루어진다. 

1. select

connection.query(
            `select * from DB명`,
            function(err,result){
                if(err){
                    console.log(err);
                    res.render("error",{
                        message : 'board connection Error'
                    });
                }else{
                	res.render("article_list", {article : result};
                }
            }
)

select * from db명을 적으면 해당 db에 있는 모든 내용이 불러와진다. 아래 function(err,result) 코드는 db에서 데이터를 불러오다가 error가 생겼을 때와 잘 동작했을 때는 구분하기 위함이다. 결과값은 result라는 변수에 저장이 된다. 

  • error가 생기면 error 페이지를 불러오고 board connection error라는 메세지 값을 넘겨준다. 
  • error가 없다면 artricle_list라는 페이지를 불러오고 article을 변수명으로 result 값을 넘겨준다.

모든 데이터를 선택할 때는 추가적인 조건을 주지 않아도 된다. 

1.1 특정 필드에서 필드값에 맞는 값 가져오기

connection.query(
        `select * from DB이름 where 필드이름 =?`, //
        [필드값],​

1.2 특정 필드에서 여러 가지 조건에 맞는 값 가져오기

connection.query(
        `select * from user_list where 필드명1 = ? and 필드명2 = ?`,
        [필드값1, 필드값2],

where 다음에 필드명 = ? and 필드명 = ? 로 검색할 필드를 추가한다. 그 다음 , 다음에 내가 찾으려는 조건의 값을 [ ] 안에 입력한다. 자주 발생하는 오류중에서 필드명과 조건의 값의 갯수가 일치하지 않게 적을때를 주의하자!

1.3 특정 필드에서 필드값과 일치하는 값의 개수 구하기

connection.query(
        `select count(*) from DB이름 where 필드이름 =?`, //
        [필드값],​

*을 count 함수로 묶어주면 조건에 맞는 값들의 개수를 계산해준다. 

2. update

connection.query(
            `update board set title=?, content =?, image=? where No =?`,        
            [title, content,image, No],

update 함수는 간단하게 말하면 "수정" 함수이다. update는 보통 `update DB명 set 필드명 = ?, 필드명 = ?, 필드명 = ? where 필드명 =?`, [필드값, 필드값, 필드값, 필드값] ... 으로 사용된다. where 적힌 필드명의 필드값으로 데이터를 찾은 다음에 set 뒤에 붙은 필드값들을 바꿔주는 것이다. 

3. insert

connection.query(
            `insert into board (No, title, content) values (?, ?, ?)`,
                [No, title, content]

db에 데이터를 추가하는 것이 insert 함수이다. `insert into db명 (필드명, 필드명, 필드명) values (?, ?, ?)`, [필드값, 필드값, 필드값] 형식으로 사용된다. 
insert 함수에서는 db에 필드값이 default 값으로 무언가 정의되어 있지 않거나 not null로 지정되어 있다면 무조건 필드명에 필드값을 추가해줘야한다. 

4. delete

connection.query(
	`delete from board where No = ?`,
    [No],

db에 있는 데이터를 삭제하는 건 delete 함수이다. `delete from db명 where 필드명 = ?`,  [필드값], ... 형식으로 사용된다.

5. 이중쿼리문

connection.query(
      `select *,(select count(*) from comment where comment.article_num=board.article_num) as cnt from board`,

2개의 db에서 데이터를 받아와 조건을 설정해 줄 수도 있다.
위에 예시는 게시판에서 각 게시글에 달린 댓글의 개수를 계산할 때 사용한 쿼리문이다.  

  • comment라는 db에서 article_num 필드의 값이 board라는 db의 article_num값과 같은 것들을 모두 찾아서 board의 article_num 마다 그 개수를 계산한다. 
  • 계산된 값을 cnt 라는 key로 value 값으로 저장한다. 

이 부분은 다양한 함수로, 다른 방법으로 사용될 수 있으므로 가장 맞는 방식으로 찾아서 구현하는게 좋다.

728x90
반응형