본문 바로가기

Others/NODE.JS

MySQL 소개 및 Nodejs에서의 기본 사용법

MYSQL 소개


- 3대 관계형 데이터베이스 시스템

- 성장배경

웹이 출현 : 그 웹애플리케이션은 대부분 작은 기업, 개인 등 다양한 사이즈의 주체들이 웹에 참여해서 수많은 웹애플리케이션 나옴.

기존에 DB(오라클 등)는 굉장히 부담스러웠을 수 있다. 그런 시대적 분위기에 맞물려서 무료이고 오픈소스이고 성능도 괜찮은 MYSQL이라는 데이터베이스가 그 시대적 요구사항을 반영하게 된 것.

그리고 아파치, MYSQL, PHP 삼인방이 같이 묶여서 굉장히 많은 웹애플리케이션이 만들어진다. (=APM)

- Company

    • MYSQL AB라는 회사에서 만듦.
    • 이후 썬이라고 하는 자바를 개발한 회사에게 인수됨.
    • 이후 썬이라는 곳이 오라클에게 인수된.
    • MYSQL을 최초로 만든 사람이 오라클의 정책이 맘에 안들어하면서 Maria DB 만들고 다시한번 데이터베이스 시장에 진출

Maria DB

완전한 오픈소스, MYSQL의 부족한 개발 측면을파고들면서 굉장히 진보적인 기능들을 열심히 탑재하며 발전.

MYSQL과 호환 : mysql로 만든 웹애플리케이션을 마리아DB로 옮겻을 때한 줄의 코드도 바꾸지 않게 쉽게 호환 가능.



AWS - Aurora

클라우딩컴퓨터의 절대강자인 AWS에서 오로라라는 제품을 만들었는데, 이도 MYSQL과 호환됨.

장점 : 클라우딩컴퓨터를 활용해서 데이터베이스를 관리하는데 어려움을 AWS에서 맡아서 해주면서 코드 측면에서 더 집중할 수 있게 해준다.




MYSQL 설치


MAC, WINDOW ]


비트나미(Bitnami)

쉽게 설치를 도와주는 프로그램

APM 모두 설치됨.

다운로드 파일에서 PHPMyAdmin 빼고 다 체크를 풀기

패스워드 : 꼭 기억할 수 있는 비밀번호를 지정 (실제로 서비스 할 때는, 절대로 쉬운 형태로 지정해서는 안된다.)

mysql을 잘 설치했는지 확인하기

터미널 설치된 디렉토리(MAMP)>bin까지 이동 후, ./mysql -uroot -p > password 입력후 'Welcome to~' 메세지고 보이면 성공


LINUX ] 리눅스 배포판 중에 우분투에서 설치하기

1. sudo apt-get update : 설치할 수 있는 소프트웨어 목록을 갱신.

2. sudo apt-get install mysql (탭두번) mysql-server로 시작하는 여러 버전들이 나오고, mysql-client 로 시작하는 여러버전들이 나오는데, 각각 버전이 가장 높은 숫자로 된 것을 설치한다.

3. sudo apt-get install _____________

4. 비밀번호 설정 입력창 (실제로 서비스 할 때는, 절대로 쉬운 형태로 지정해서는 안된다.)

5. 설치 완료 확인 메세지

mysql -uroot -p > password ㅎ입력 'Welcome to~'메세지 확인 하면 성공



MySQL 구조


가장 기본적인 단위 : 테이블(표)

같은 데이터의 가로 그룹 (행, row, record)

같은 종류의 데이터 수직 그룹 (열, colmn)


실제 데이터가 저장되는 곳 : 표


애플리케이션이 복잡해지면 하나의 표로는 부족하다.

다양한 정보가 추가되면서 테이블이 늘어나게 됨으로써, 같은 애플리케이션에서 사용되는 테이블들을 그룹핑해서 관리해야할 필요가 생긴다.

같은 애플리케이션에서 사용되는 연관된 테이블들을 묶어서 데이터베이스라는 것으로 묶어준다.

데이터베이스라고 하는 것이 서로 연관되어 있는 테이블들의 일종의 폴더, 디렉토리, 카테고리, 분류라고 부를 수 있는 역할을 하는 것이다.


데이터베이스가 보통 일반적으로 하나의 애플리케이션이 하나의 데이터베이스와 대응되는 관계를 갖게되는데요 하나의 컴퓨터에는 여러개의 애플리케이션이 설치될 수 있습니다. 여러개의 데이터베이스를 그룹핑하는 것을 데이터베이스 서버라고 한다. 데이터베이스서버라는 것은 단순히 그룹핑의 의미만을 가지고 있는 것이 아니라, 데이터베이스가 위치하고 있는 컴퓨터를 가리키는 서버애플리케이션이라고 한다.



MySQL 사용하기


1. mysql 접속 ( 설치하기 마지막 방법 참고 ) : 데이터 베이스 서버가 가지고 있는 인증체계에 루트 사용자로 접속한 것

-hlocalhost -p3306 생략가능

mysql -hlocalhost -p3306 -uroot -p : 내 컴퓨터에 있는 컴퓨터의 3306포트로 접속할 때,

mysql aaa.com -p3306 -uroot -p : 특정 주소에 있는 DB에 접속할 때


2. 데이터베이스 만들기 (테이블을 만들기 위한 선작업)

데이트베이스 생성 : CREATE DATABASE 데이터베이스이름 DEFAULT CARSET=UTF8;


show databases; : 생성된 데이터베이스 목록 확인.


데이터베이스 사용 : use 데이터베이스명;



3. 테이블 생성

CREATE TABLE 테이블명 ('필드명' '데이터형' 옵션(NOT NULL, AUTO_INCREMENT 등), '필드명' '데이터형' 옵션(NOT NULL, AUTO_INCREMENT 등) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

auto_increment : 이 테이블에 행을 추가할 때 자동으로 숫자가 늘어나는 옵션


4. 데이터 추가 

insert into 테이블명 (필드명1, 필드명2) values('값1', '값2');


5. 데이터 가져오기

SELECT 필드명 from 테이블명;

필드명 : * 은 전체 가져오기.


SELECT 필드명 from 테이블명 WHERE 필드명='검색값'; 특정한 값을 가진 필드명을 가져오는 방법


6. 데이터 변경 (수정)

UPDATE 테이블명 SET 필드명1='바꾸고 싶은 값' WHERE 필드명2='값2';

필드명2이 '값2'인 데이터의 필드명1의 데이터를 '바꾸고 싶은 값'으로 변경.

* 여기서 where문 중요 : 쓰지 않는다면 모든 데이터의 필드명1이 바꾸고 싶은 값으로 변경됨. (데이터유실)


7. 데이터 삭제

DELETE FROM 테이블명 WHERE 필드명='값';

필드명이 '값'인 데이터를 삭제. 여기서도 where문 중요.





node-mysql 1 : 접속


서버사이드자바스크립트를 이용해서 MYSQL을 제어하는 방법에 대해 알아보자.


그전에 자바스크립트로 어떻게 제어하는지 살펴보자. 가장 유명한 node MYSQL을 설치하자.

1. 설치

npm install --save node-mysql

nodemysql이라고 하는 모듈 설치


2. 문서 읽기


3. 



Line 1 : mysql이라고 하는 모듈을 가져오기. 제어하기 위해 변수에 담기. 그 변수에 담겨 있는 것은 객체.

Line 2 : createConnection메소드 호출하면서 그 안에 있는 객체를 인자로 전달하고 있다. connection이라는 변수를 얻게 되는데 이 안에 연결과 관련된 정보를 가지고 있다.

    • host : mysql 서버가 어디에 있는가
    • user : MYSQL 접속 USER
    • password : MYSQL 접속 PASSWORD (실제로는 별도의 파일을 빼서, 소스코드에는 기밀한 코드들이 포함되지 않도록 작성해야 한다.)
    • database : 데이터베이스명

Line 9 : MYSQL 연결하기


Line 12 : 위 정보에 해당하는 서버를 대상으로 query(지리)를 보낸다. 괄호안에는 (SQL문, 첫번째인자에대한 모든 작업이 끝난 후 콜백함수실행) 이 콜백함수는 매개변수로 (에러, 행들, 필드명)를 갖는다.


Line 21 : 작업이 끝난 후 연결 끊기.


Line 16 : rows 안에는 배열안에 객체의 담긴 형태로 정보가 담긴 것을 볼 수 있다. 각각의 값들이 하나의 값을 나타내고 있는 것을 볼 수 있다.

Line 17 : fields에는 보통 필드명, 컬럼을 의미한다. 어떤컬럼이 존재하고 그 컬럼에 대한 상세한 정보가 나와있으나 일반적으로 필요한 경우는 없다.


node-mysql 2 : SELECT & INSERT



데이터를 가져올 수 있고, 필드명(컬럼)을 가져올 수 있고, 특정한 값도 가져올 수 있다.

Line 22 : 이런식으로 데이터를 추가하지 않는다.

웹애플리케이션에서 nodejs가 하는 역할을 sql를 프로그래밍적으로 생성해서 데이터베이스에게 전달해서 데이터를 생성하는 역할.



Line 23 : 변수에 각 물음표(Line 22)에 대응되는 값을 입력 = 치환자의 순서에 따라 실제 값들을 배열로 생성.

Line 24 : query문에 두번째 인자로 Line 23 변수 전달. 내부적으로 Node mysql이 이 값들을 치환시켜서 실행 시킨 것이 가장 중요함.

이는 보완과 밀점(SQL 인덱션 어택을 막을 수 있는 방법)


node-mysql 3 : UPDATE & DELETE


UPDATE, DELETE : SQL문에서 WHERE 주의!


UPDATE 


DELETE