TIL 21.06.22

Jaemin Jung·2021년 6월 22일
0

Today I Learned

목록 보기
44/62
post-thumbnail

오늘한일

SQL을 node.js 환경에서 사용하는 과제를 진행하였다.
데이터베이스를 연결해주는 세팅은 다 구현이 되어있었고,
TODO를 따라 sql을 작성하는 과제였다.
과제를 통해 알게된 것들에 대해서 적어보겠다.

Achievement goals

  • SQL을 node.js 앱에서 쿼리할 수 있다.
  • 클라이언트의 HTTP 요청에 따라 CRUD API를 구현할 수 있다. (CRUD: Create, Read, Update, Delete)

SQL 사용규칙

터미널에서 mySQL을 통해 데이터베이스를 만들고 조회하고 다양하게 활용해 보았다.
이때, 나는 명령어를 모두 소문자로 작성하였는데,
기능상에 문제는 없으나, 개발자는 혼자 일하는것이 아니기에 어느정도 규칙을 따라야한다고 한다.
SQL의 명령어는 대문자로, 컨벤션은 소문자로 작성해야 가독성이 좋다고 한다.

나쁜예

select *
from Orders
right join Customers
on Orders.CustomerID=Customers.CustomerID;

...

좋은예

SELECT *
FROM Orders
RIGHT JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;

CRUD

  • Create
    INSERT INTO를 사용하여 테이블에 데이터를 생성 가능하다.
    이때 작성한 값은 작성한 칼럼의 순서를 따른다.
INSERT INTO 테이블이름 (칼럼1, 칼럼2...) VALUES ('값1', '값2')
  • Read
    앞서 다룬 기본적인 SQL 문법과, JOIN 명령어 이용해 원하는 데이터를 조회 가능하다.
    이때 여러 테이블이 연결되어 있는 경우, 객체의 키값을 조회 할때 처럼 테이블.칼럼으로 명확히 위치를 지정해야한다.
모든 유저 조회
SELECT * FROM users;

...

주문 내역이 있는 유저를 조회
SELECT users.username 
FROM users JOIN orders 
ON orders.user_id = users.id;
  • Update
    UPDATE 명령어를 이용해 데이터의 값을 수정 가능하다.
    이때 WHERE 명령어로 꼭 특정한 데이터를 지정해줘야한다.
UPDATE 테이블명 
SET 컬럼1 = 값1, 컬럼2 = 값2 
WHERE 조건

...

강시모자의 가격을 변경
UPDATE items 
SET price = 99000
WHERE name = '강시모자'
  • Delete
    DELETE 명령어를 이용해 데이터의 값을 삭제 가능하다.
DELETE FROM 테이블명
WHERE 조건;

...

유저 '정재민'의 데이터를 삭제

DELETE FROM users
WHERE name = '정재민';

batch mode

mysql에서는 미리 작성된 스키마 배치 파일을 이용해 내부 테이블을 만들 수 있다.
한마디로, 미리 작성된 데이터 베이스를 받아오는것으로 정의할 수 있겠다.

mysql -u root -p < server/schema.sql -Dcmarket 명령어를 이용하여 cmarket 데이터베이스에 테이블을 생성합니다.

해당 파일이 있는 경로에서 mysql을 실행후 해당하는 데이터베이스를 생성한다.
그리고 위 명령어를 이용해서 내부 테이블을 한번에 생성 가능하다.

mysql 모듈

npm 패키지인 mysql 모듈을 이용해서 node.js 환경에서 데이터베이스를 받아와 변수에 저장하여 핸들링 가능하고, 내부 메소드를 이용해서 요청을 받고 응답을 보낼때 sql문법을 통해 요청한 데이터를 query 메소드로 전달 가능하다.
query 메소드는 첫번째 인자는 작성한 sql을 받고 두번째 인자는 콜백 함수를 받는다.

const sql = SELECT * FROM user WHERE name = '정재민'

db.query (sql, (err, result) => {
if (err) throw err;
//응답
})

헷갈리는 용어 정리

DATABASE - 여러 테이블을 가지고 있는 하나의 큰 데이터 묶음
TABLE - 데이터베이스에 데이터(행, 열) 저장하기 위해 맨 첫 단계에 만드는 테이블
Filed - 관계형 데이터베이스에서 행(레코드)을 분류하는 기준
Record - 각 칼럼에 따르는 값이 모인 한 줄

Filed = Column
Record = Row

참고사이트

https://plbarts.tistory.com/245
https://www.youtube.com/watch?v=udJjxv3IA4k

profile
내가 보려고 쓰는 블로그

0개의 댓글