티스토리 뷰

INSERT query

SQL

INSERT INTO [테이블명] (COL1, COL2 ... ) VALUES (VAL1, VAL2 ...);

Seqeulize

const { 테이블명 } = require('../models');
테이블명.create({
    COL1 : VAL1,
    COL2 : VAL2,
    ...
)};

create 메서드를 이용하여 INSERT query를 처리하여 ROW를 추가시킬 수 있다.

단 value를 넣을 때는 sql의 자료형을 따라가지않고 sequelize 모델에 정의한대로 따라가야한다. (알아서 변환)

ex) boolean value에서 0 (X) false(O)

 

SELECT query

SQL

Seqeulize

[테이블명].findAll({});
[테이블명].findAll({
    attributes: ['COL1','COL2', ... ]
    order : [['COL이름', 'ASC|DESC']] //여러 COL을 통해 정렬가능하므로 배열안의 배열이용
    limit: NUM,
    offset: NUM,
});

 

이것과 별개로 하나의 데이터를 가져올 때 LIMIT 1을 뒤에 붙였지만 findOne 메서드를 이용가능

SELECT와 관련된 기타 옵션

SQL

SELECT [col1, col2 ...] FROM [테이블명] WHERE [조건];

Seqeulize

const { Op } = require('sequelize');
const { 테이블명 } = require('../models');
테이블명.findAll({
    attributes: ['COL1', 'COL2', ...],
    where: { 조건 },
});

그런데 여기서 조건문이 조금 특이하다. 우선 연산자부터 정리

  • Op.gt (초과)
  • Op.gte (이상)
  • Op.lt (미만)
  • Op.lte (이하)
  • Op.ne (!=)
  • Op.or (OR)
  • Op.in (one of Array elements)
  • Op.notIn (none of Array elements)

 

ex) SQL

SELECT id, name FROM users WHERE married = 0 OR age > 30;

Seqeulize

const { Op } = require('sequelize');
const { User } = require('../models');
User.findAll({
    attributes: ['id', 'name'],
    where: {
    	[Op.or]: [{ married: false }, {age: { [Op.gt]: 30 } }],
    },
});

Op.or에 적용할 쿼리들을 배열로 나열하면 됨

 

UPDATE query

SQL

UPDATE [테이블명] SET [COL이름] = [바꿀 값] WHERE [조건]

Seqeulize

테이블명.update({
    COL 이름: '바꿀 값',
}, {
  where: { 조건 },
});

DELETE query

SQL

DELETE FROM [테이블명] WHERE [조건]

Seqeulize

테이블명.destroy({
  where: { 조건 },
});

destroy 메서드를 이용해야함 (delete가 아님)

'Web > BackEnd' 카테고리의 다른 글

장고 REST API 정리  (0) 2022.08.19
[MySQL] Foreign Key 설정 시 유의점  (0) 2021.12.12
[MySQL] Create, Read, Update, Delete (CRUD)  (0) 2021.12.10
[MySQL] SQL table 생성 정리  (0) 2021.12.09
Node.js 시작  (0) 2021.12.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday