데이터베이스
데이터베이스
데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합체이다.
→ 데이터 중복을 막고, 효율적이고 빠른 연산을 가능하게 한다.
DBMS(DataBase Management System)
데이터베이스(DB)를 운영·관리하는 시스템이다.
ex) Oracle, Mysql, MariaDB 등
SQL
데이터베이스에 연산을 요청하기 위해 사용되는 언어이다.
데이터 생성, 삭제, 수정, 조회 등의 기능을 수행한다.
Docker
원래 프로그램을 설치하거나 실행할 때는 OS(운영체제)와 소통하게 된다.
Docker는 OS위에 설치되어 Docker위에 설치한 프로그램들이 OS가 아닌 Docker와 소통하게 해 준다. 컨테이너를 만들고 그 안에 프로그램(App)을 설치한다. 컨테이너 안에 설치한 프로그램을 사용할 때는 해당 컨테이너 안으로 들어가서 작업한다. 프로그램이 독립적으로 실행될 수 있고, OS가 아닌 Docker와 소통하기 때문에 비교적 빠르고 가볍게 실행 가능하다.
SQL
mariaDB가 있는 컨테이너 접속
docker exec -it mariadb /bin/bash
mariaDB 실행
mariadb -u root -p
DB 조작
DB 목록 확인 | SHOW DATABASES; |
DB 만들기 | CREATE DATABASE DB이름; |
DB 들어가기 | USE DB이름; |
테이블 생성
CREATE TABLE 테이블이름(
컬럼1이름 자료형,
컬럼2이름 자료형,
...
);
테이블 목록 확인
SHOW TABLES;
SELECT
테이블의 데이터를 조회하는 명령어이다.
SELECT 컬럼이름 FROM 테이블이름 WHERE 조건;
INSERT
테이블에 데이터를 삽입하는 명령어이다. 상황에 따라 아래 두 코드 중 선택해서 사용하면 된다.
INSERT 컬럼이름1, 컬럼이름2 ... INTO 테이블이름 VALUES(컬럼1데이터, 컬럼2데이터, ...);
INSERT INTO 테이블이름 VALUES(컬럼1데이터, 컬럼2데이터, ...);
UPDATE
테이블의 데이터를 수정하는 명령어이다. 조건과 일치하는 행의 해당 컬럼이 수정할 값으로 업데이트된다.
WHERE문을 작성하지 않으면 모든 행이 업데이트되므로 주의해서 사용해야 한다.
UPDATE 테이블이름 SET 컬럼이름 = 수정할값 WHERE 조건;
DELETE
테이블의 데이터(행)를 삭제하는 명령어이다. WHERE문을 작성하지않으면 모든 행이 삭제되니 주의하자.
DELETE FROM 테이블이름 WHERE 조건;
Node.js에 DB 연동
mysql 설치
터미널에 아래 명령어 입력
npm install mysql --save
mariaDB 연결
mariadb.js
const mariadb = require('mysql');
const conn = mariadb.createConnection(
{
host: 'localhost',
port: mariadb포트번호,
user: 'root',
password: 'root',
database: DB이름
}
);
module.exports = conn;
index.js
const mariadb = require('./mariadb');
mariadb.connect();
console.log('DB 연결 완료');
쿼리 실행
데이터 삽입
const id = 'test';
const password = 'testPassword';
mariadb.query(`INSERT INTO user VALUES('${id}', '${password}');`);
console.log(`데이터 삽입 완료, 삽입된 데이터 - {id: ${id}, password: ${password}} `);
데이터 조회
console.log('데이터 조회: ');
mariadb.query('SELECT * FROM user;', (err, rows) => {
rows.forEach((row) => {
console.log(`id: ${row.id}, password: ${row.password}`);
})
});
외부 스타일 시트 문제
응답으로 html 파일을 보낼 때 외부 스타일 시트가 동작하지 않는 문제가 발생했는데 아래와 같은 코드를 추가하니까 해결됐다.
const fs = require('fs');
const style_css = fs.readFileSync('./style.css', 'utf-8');
function style(response) {
response.writeHead(200, { 'Content-Type': 'text/css' });
response.write(style_css);
response.end();
}
handle['/style.css'] = style;
'데브코스' 카테고리의 다른 글
[3주차 - DAY3] API (0) | 2024.03.13 |
---|---|
[3주차 - DAY1] 스프린트1 프로젝트 (0) | 2024.03.11 |
[2주차 - DAY4] 웹 실습(1) (0) | 2024.03.07 |
[2주차 복습 발표] Git branch (0) | 2024.03.06 |
[2주차 - DAY3] 웹 이론(2) (0) | 2024.03.06 |