SQL을 node.js 환경에서 사용하는 과제를 진행하였다.
데이터베이스를 연결해주는 세팅은 다 구현이 되어있었고,
TODO를 따라 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;
INSERT INTO 테이블이름 (칼럼1, 칼럼2...) VALUES ('값1', '값2')
테이블.칼럼
으로 명확히 위치를 지정해야한다.모든 유저 조회
SELECT * FROM users;
...
주문 내역이 있는 유저를 조회
SELECT users.username
FROM users JOIN orders
ON orders.user_id = users.id;
UPDATE 테이블명
SET 컬럼1 = 값1, 컬럼2 = 값2
WHERE 조건
...
강시모자의 가격을 변경
UPDATE items
SET price = 99000
WHERE name = '강시모자'
DELETE FROM 테이블명
WHERE 조건;
...
유저 '정재민'의 데이터를 삭제
DELETE FROM users
WHERE name = '정재민';
mysql에서는 미리 작성된 스키마 배치 파일을 이용해 내부 테이블을 만들 수 있다.
한마디로, 미리 작성된 데이터 베이스를 받아오는것으로 정의할 수 있겠다.
mysql -u root -p < server/schema.sql -Dcmarket 명령어를 이용하여 cmarket 데이터베이스에 테이블을 생성합니다.
해당 파일이 있는 경로에서 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