<4> MySQL & node-mysql
https://www.opentutorials.org/course/2136/12020 참고
< 설치 >
- 비트나미를 이용한 설치 (https://bitnami.com/stack/mamp)
- 설치중 맨 아래를 제외하고 체크 해제.
- pw 설정
$ cd /App(tab)/mamp(tab)/mysql/bin
$ ./mysql -uroot -p
>> 설정한 pw 입력
mysql>
정상설치..!!
< 구조 >
테이블
레코드(행)
필드(열)
데이터베이스 (연관된 테이블들의 묶음)
하나의 애플리케이션이 하나의 데이터베이스에 대응.
하나의 PC에는 여러 개의 애플리케이션이 설치.
이것들을 그룹핑하는 것이 데이터베이스 서버 라는 것..!! (opentutorials.ort:3306)
...
< MySQL 사용하기 >
$ ./mysql (-hlocalhost) -uroot -p
$ ./mysql -hopentutorial.org -P3306 -uroot -p // 이런식으로도 접속 가능
즉 데이터베이스 서버에 접속을 하고 인증 과정을 거친 상태..!!
다음으로는 데이터베이스의 테이블을 만들기 위해 데이터베이스를 만들어야 함.
( 데이터베이스 서버 != 데이터베이스 )
mysql>
데이터베이스 보기
1 | show databases; |
데이터베이스 생성
1 | CREATE DATABASE o2 CHARACTER SET utf8 COLLATE utf8_general_ci; |
데이터베이스 선택
1 | use o2; |
테이블 생성
1 2 3 4 5 6 7 | CREATE TABLE `topic` ( `id` int (11) NOT NULL AUTO_INCREMENT, `title` varchar (100) NOT NULL , `description` text NOT NULL , `author` varchar (30) NOT NULL , PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
생성된 테이블 확인
1 | show tables; |
데이터 삽입
1 2 | INSERT INTO topic (title, description, author) VALUES ( 'JavaScript' , 'Computer language for web.' , 'egoing' ); INSERT INTO topic (title, description, author) VALUES ( 'NPM' , 'Package manager' , 'leezche' ); |
테이블 내용 확인
mysql> select * from topic; // topic 테이블에 있는 모든 행을 가져온다.
< MySQL UPDATE & DELETE >
mysql> update topic set TITLE='npm' where id='2'; // topic 테이블에서 id가 2인 TITLE 을 npm 으로 변경
mysql> delete from topic where id='2';
< node-mysql : 접속 & SELECT & INSERT & UPDATE & DELETE >
- js로 어떻게 mysql 을 제어하는가
- node-mysql 설치
$ npm install --save node-mysql
https://github.com/mysqljs/mysql 참고
코드 예시
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | var mysql = require('mysql'); var conn = mysql.createConnection({ host : 'localhost', user : 'root', password : '111111', database : 'o2' }); conn.connect(); var sql = 'SELECT * FROM topic'; conn.query(sql, function(err, rows, fields){ if(err){ console.log(err); } else { for(var i=0; i<rows.length; i++){ console.log(rows[i].title); } } }); var sql = 'INSERT INTO topic (title, description, author) VALUES(?, ?, ?)'; var params = ['Supervisor', 'Watcher', 'graphittie']; conn.query(sql, params, function(err, rows, fields){ if(err){ console.log(err); } else { console.log(rows.insertId); } }); var sql = 'UPDATE topic SET title=?, author=? WHERE id=?'; var params = ['NPM', 'leezche', 1]; conn.query(sql, params, function(err, rows, fields){ if(err){ console.log(err); } else { console.log(rows); } }); var sql = 'DELETE FROM topic WHERE id=?'; var params = [1]; conn.query(sql, params, function(err, rows, fields){ if(err){ console.log(err); } else { console.log(rows); } }); conn.end(); | cs |
- 21, 30 행 확인해보기..!!
- ? 는 치환자를 두고 치환자의 순서에 따라 파라미터를 실제 값을 배열로 생성한 다음 쿼리문의 두번째 인재 값으로 전달 가능 // 보안 관련 sql injection attack 을 막을 수 있음..!!
'H6 > backend (Node.js, tsc)' 카테고리의 다른 글
<6> tsconfig.json 을 통한 컴파일 옵션 설정 (0) | 2018.01.31 |
---|---|
<5> node-mysql (Typescript) (0) | 2018.01.22 |
<3> 에러처리.. (0) | 2018.01.22 |
<2> app.ts 및 server.ts 만들기 (0) | 2018.01.22 |
<1> Node.js, Express, Typescript 환경설정 (0) | 2018.01.21 |