티스토리 뷰
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