ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • mysql - mysql 사용하기
    JavaScript/Node.js 2018. 11. 27. 16:06

    mysql - mysql 사용하기

    웹 프로그램은 Database와는 떨어질래야 떨어질 수 없는 구조이다.

    데이터를 저장하기 위해선 Database가 필수이기 때문이다.

    이번 시간에는 Node.js에서 mysql을 연결하여 사용하는 방법을 알아보자.




     mysql driver

    Node.js에서 mysql을 사용하기 위해서는 외부 패키지를 설치해야한다. (mysql뿐 아닌 모든 sql driver는 외부 패키지로 설치해야할 것이다.)

    npm에서 mysql을 검색해보자.

    "Node.js로 만들어진 mysql 드라이버이고 자바스크립트로 만들어졌으며 컴파일이 필요없고 MIT 라이센스를 받았다."라고 설명되어 있다.




     설치방법

    스크롤을 내려보면 설치방법에 대해 설명을 해주고 있다.

    npm registry를 통해 사용할 수 있는 Node.js 모듈이고 설치하기 전에 0.6버전 이상의 Node.js를 다운받아 설치하길 권장하고 있다.


    npm install mysql --save구문으로 설치하도록 하자.




     사용방법

    페이지를 내려보면 패키지를 사용하는 방법을 알려주고 있다.

    1. "require()"를 통해 모듈을 불러오고 "createConnection()"으로 연결자를 생성한다.

    2. 그 안에 옵션으로 mysql 서버의 host정보, 계정 정보, 접근할 데이터 베이스 이름을 지정한다.

    3. "connect()"로 실행한다.

    4. "query()"를 통해 쿼리 정보를 전달하고 콜백함수로 결과를 받는다.

    5. 작업을 완료하면 "end()"로 연결을 끊는다.


    이 방법들을 반드시 숙지해야한다.

    왜냐면 이 방법들만으로도 대부분의 DB처리를 할 수 있기 때문이다.




     실습하기

    실습에 앞서 가장먼저 데이터베이스를 생성하는 방법을 알아보자. 

    mysql DB를 설치하는 방법은 진행하지 않는다. DB설치 방법을 알고 싶다면 다른 글을 검색해보자.

    그리고 DB쿼리문에 대해서는 기본적인 지식이 있다는 것을 전제로 두고 진행할 것이다.


    1
    CREATE DATABASE o2 CHARACTER SET utf8 COLLATE utf8_general_ci;
    cs

    cmd를 통해 mysql로 접속해서 위의 코드를 실행시키면 o2라는 이름의 데이터베이스를 생성한다.


    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `topic` (
        `id` int(11NOT NULL AUTO_INCREMENT,
        `title` varchar(100NOT NULL,
        `description` text NOT NULL,
        `author` varchar(30NOT NULL,
        PRIMARY KEY (id)
    ENGINE=InnoDB DEFAULT CHARSET=utf8;
    cs

    똑같이 cmd에서 mysql을 접속한 상태로 위의 코드를 실행시키면 id, title, description, author라는 컬럼을 가진 topic이라는 이름의 테이블이 생성된다.


    이제 mysql에 데이터베이스 생성과 테이블 생성이 완료되었다.

    만약 데이터베이스와 테이블을 생성하지 않으면 쿼리에 대한 수행은 당연히 처리할 수 없으니 반드시 데이터베이스와 테이블을 만들고 쿼리 작업을 따라하길 바란다.



    이제 mysql을 연결하여 쿼리를 전달하고 처리하는 작업을 해보자.

    DB에 대한 쿼리 연습은 database_mysql.js라는 애플리케이션에서 따로 연습할 것이다.

    프로젝트 폴더에 database_mysql.js를 생성한다.


    database_mysql.js를 열어 아래의 코드를 작성한다.

    예제에서 봤듯이 mysql을 "require()"하고 "createConnection()"으로 연결자 정보를 입력한다.

    그리고 "connect()"로 연결자를 실행한다.




     SELECT

    이제 SELECT문을 이용해서 데이터를 조회하는 방법을 알아보자.

    기본적인 문법은 "SELECT [columns] FROM [table name];"

    "query()"함수는 인자로 sql쿼리문,옵션: 파라미터, 콜백함수를 받는다.

    옵션의 경우에는 생략해서 사용할 수도 있다.

    sql쿼리문이 수행되면 그 결과를 rows에 담고 콜백함수에 반환해준다.

    따라서 rows를 통해 결과를 출력할 수 있다.


    rows를 출력해보면 다음과 같은 결과가 나타난다.

    topic이란 테이블에 저장된 데이터는 rows에 저장된다는 것을 알 수 있다.



    테이블에 저장된 많은 데이터들 중 SELECT문을 이용해서 특정 데이터만 불러오기 위해선 어떻게 할까?

    바로 "query()"에 인자로 넣을 수 있는 option을 활용한다.

    sql 쿼리문에 "?"기호 (치환자)를 넣으면 저 위치에 원하는 데이터를 대입시켜 조회할 수 있다.

    이런 특징은 가변적인 데이터를 넣을 때 매우 유용하다.

    sql문과 파라미터를 query의 인자로 전달하면 내부적으로 데이터를 매칭시켜 쿼리문을 완성시킨다.


    실행해보면 파라미터로 전달한 "Node.js"데이터만 출력하는 것을 알 수 있다.




     INSERT

    이번에는 INSERT문이다.

    테이블에 데이터를 추가하기 위해서 사용하는 문법이다.

    기본적인 문법은 "INSERT INTO [table name] (columns) VALUES (data);"

    마찬가지로 sql변수에 쿼리문을 저장한다.

    query()함수 사용은 모두 동일하다.


    INSERT문 역시 "?"기호(치환자)를 이용하여 가변적인 데이터를 받을 수 있다.

    실행해보면 rows에 OkPacket이라는 이름의 객체로 insert한 정보들이 반환된다.

    SELECT해보면 insert가 정상적으로 처리된 것을 알 수 있다.




     UPDATE

    이번에는 UPDATE문이다.

    테이블에 저장된 데이터를 수정하기 위해 사용하는 문법이다.

    문법은 "UPDATE [table name] SET [columns];"

    중요한 것은 WHERE을 지정하지 않을 경우 모든 데이터에 수정을 가하기 때문에 반드시 WHERE을 붙이는 것을 습관화하는 것이 좋다.

    프로그램을 실행해보면 UPDATE가 정상적으로 수정이 된 것을 확인할 수 있다.




     DELETE

    이번에는 DELETE문이다.

    테이블에 저장된 데이터를 삭제할 때 사용하는 문법이다.

    문법은 "DELETE FROM [table name] WHERE = [columns];"

    이 또한 데이터를 삭제하는 작업이니 WHERE을 붙여서 사용하는 것을 습관화해야한다.

    DELETE 쿼리문을 작성했고 대상으로 id가 1번인 데이터를 삭제하겠다고 선언했다.


    테이블을 확인해보면 1번 데이터가 사라진 것을 확인할 수 있다.

Designed by Tistory.