favicon

Jayden { do: smite }

230223(목)

🎄 성장일지 3.1

행복한 이기주의자(웨인 다이어)의 내용에 자극받아 시작하는 소박한 성장기록

살아있는 꽃과 죽은 꽃은 어떻게 구별하는가?<br/> 성장하고 있는 것이 살아 있는 것이다.<br/> 생명의 유일한 증거는 성장이다!

🌳 키워드 (1.0)<br/> 최대한 간단하게 정리, 추후에 보면서 스스로 설명<br/> 🍉 경험 위주로 (2.0)<br/> 단순 정보를 전달하기보다 무엇을 배웠고 어떻게 해결했는지 짧고 간단하게 작성<br/> ❄️ 정해진 템플릿에 맞춰서 (3.0)<br/> 키워드, 경험 모두 좋다. 다만 매일 작성하기로 마음 먹은만큼 핵심만 간결하게 정리할 수 있게 템플릿을 작성 (3.1) 230102부터 시작되는 학습에 관한 내용 추가

🔑 오늘의 키워드

데이터베이스

  • 데이터의 집합, 흔히 DB(DataBase)라고 부른다.
  • 일반적으로 그냥 데이터베이스라고 하면 보통 관계형 데이터베이스를 말한다.
  • 또한, 엄밀히 DB는 데이터 저장소를 의미하고 우리가 사용하는 MySQL, MariaDB, MongoDB 등은 DBMS(DataBase Management System)이다.

어댑터

  • 서로 다른 전기, 기계 장치를 연결해서 작동할 수 있도록 만들어주는 결합도구
  • 각 언어에 맞는 db 라이브러리를 통해 현재 내가 짠 프로그램과 db를 연결하는 어댑터를 구현할 수 있다.

DB Connection

  • DB와 내가 작성하고 있는 코드(프로그램)을 연결하는 것
  • 어떻게 보면 어댑터를 구현하는 것과 같다.
npm i -D mysql mysql2
const mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'jayden', password: '1234', port: 3306, database: 'databasename', }); // 보통 port는 3306을 사용하지만, 만약 로컬에 MySQL이 설치되어있는 상태로 // docker에 mysql container를 만들어 사용한다면 port를 3307과 같은 비어있는 포트를 할당해줘야 한다.

MySQL

  • 가장 널리 사용되고 있는 RDBMS(Relational DBMS; 관계형)으로 썬 마이크로시스템즈가 개발하고 추후 오라클에 인수됐다.
  • 기본적으로는 오픈 소스 라이센스이지만 상업적으로 사용 시, 상업용 라이센스를 구입해야한다.
  • 15년도 11월에 발표된 5.7버전이 범용적으로 많이 사용되고 있다.(글작성 기준 8.0까지 출시)

SELECT

  • DML(Data Manipulation Language)에 속하는 쿼리문(데이터베이스 내부의 데이터를 관리하기 위한 쿼리)
  • AUTO COMMIT되지 않는다.(즉, 언제든 롤백이 가능하다.)
  • 특정 테이블에서 원하는 조건의 데이터를 선택한다.
SELECT 컬럼(필드)FROM 테이블명 WHERE (어떤 조건);

INSERT

  • 마찬가지로 DML에 속하는 쿼리문
  • 테이블에 특정 데이터를 추가한다.
INSERT INTO 테이블명 (컬럼1, 컬럼2, 컬럼3...) VALUES (1,2,3...);

UPDATE

  • 마찬가지로 DML에 속하는 쿼리문
  • 테이블에 존재하는 데이터를 수정한다.(WHERE절의 조건문을 만족하는 레코드의 값을 수정한다.)
UPDATE 테이블명 SET 컬럼1 =1, 컬럼2 =2, 컬럼3 =3... WHERE 컬럼 = 특정값;

DELETE

  • 마찬가지로 DML에 속하는 쿼리문
  • 테이블에 존재하는 데이터를 삭제한다.
DELETE FROM 테이블명; // 테이블의 데이터들을 전부 지운다. DELETE FROM 테이블명 WHERE 컬럼명 =; // WHERE절에 해당하는 레코드만 지운다.

DROP, TRUNCATE와의 차이<br/> DROP: 데이터를 지우는 게 아니라, 그냥 테이블 자체를 통째로 지우는 것으로 DDL에 속한다.(즉, 실행하면 롤백이 안됨)<br/> TRUNCATE: 테이블을 초기화한다. 얼필 보면 'DELETE FROM 테이블명;'과 같아보이지만, TRUNCATE은 DDL이다. 즉, 롤백이 안된다.<br/> 즉, DELETE는 테이블을 전부 지우더라도 이전 데이터를 로그로 저장해두는 반면 TRUNCATE는 진짜 완전 삭제처럼 지워버린다.<br/> 그러므로 확실하게 필요없는 데이터를 지우는 거라면 DELETE보다 TRUNCATE가 더 좋다.(시스템적인 부하가 적음)

참고

📝 요약 및 하루 간단 회고

오늘 정말 중요한 개념들을 많이 알게 되었다. 도커로 띄우는 컨테이너 포트와 내 로컬 호스트 포트와의 관계, 그리고 DB에 직접 접근해서 코드를 짜는 게 어떤 의미인지 등등..!<br/> 또, 미션을 구현하면서 계속 쿼리문을 연습하게 된 거 같아서 좋았다. 그런데 이렇게 쿼리문을 작성하면 할수록 TypeORM은 도대체 어떤걸까 궁금하게 된다...ㅠ 너무 욕심부리지 않되 내가 시도해볼 수 있는 선에서 다뤄봐야겠다..!

오늘의 잘한 점

  • 미션 구현 완료 및 개념 정리 정말 열심히 함!!!

오늘의 아쉬운 점

  • 딱히 없다 :) 지금 글 작성하느라 좀 늦게 자는 점..?
undefined

Copyright 2023. all rights reserved by Jayden