ROW 생성
/* SQL */
INSERT INTO users (name, age, married) VALUES('bob', 27, 0);
/* 시퀄라이즈 */
User.create({
name: 'bob,
age: 27,
married: false
});
ROW 조회
/* SQL */
SELECT * FROM users;
/* 시퀄라이즈 */
User.findAll({});
ROW 하나 조회
/* SQL */
SELECT * FROM users LIMIT 1;
/* 시퀄라이즈 */
User.findOne({});
특정 컬럼 조회
/* SQL */
SELECT name, married FROM users;
/* 시퀄라이즈 */
User.findAll({
attributes: ['name', 'married']
});
기본적인 조건부 조회 (where, op)
/* SQL */
SELECT name, age FROM users WHERE married = 1 AND age > 20;
/* 시퀄라이즈 */
User.findAll({
attributes: ['name', 'age'],
where: {
married: 1,
age: {[Op.gt]: 20}
}
});
/* SQL */
SELECT id, name FROM users WHERE married = 0 OR age < 20;
/* 시퀄라이즈 */
User.findAll({
attributes: ['name', 'age'],
where: {
[Op.or]: [{ married: 0 }, { age: {[Op.lt]: 40} }]
}
});
정렬
/* SQL */
SELECT id, name FROM users ORDER BY age DESC;
/* 시퀄라이즈 */
User.findAll({
attributes: ['name', 'age'],
order: [['age', 'DESC']]
});
조회할 ROW 갯수 설정 (limit, offset)
/* SQL */
SELECT id, name FROM users ORDER BY age DESC LIMIT 1 OFFSET 1;
/* 시퀄라이즈 */
User.findAll({
attributes: ['name', 'age'],
order: [['age', 'DESC']],
limit: 1,
offset: 1
});
limit:1, offset:1 의 뜻은
1개 인스턴스/행을 넘어가고, 거기서부터 1개 인스턴스/행을 가져온다
ROW 수정
SELECT users SET comment = '수정할 내용' WHERE id = 3;
/* 시퀄라이즈 */
User.update({
comment: '수정할 내용'
}, {
where: { id: 3 }
});
ROW 삭제
/* SQL */
DELETE FROM users WHERE id = 4;
/* 시퀄라이즈 */
User.destory({
where: { id: 4 }
});
관계 JOIN
const user = await User.findOne({
include: [{
model: Comment
}]
});
console.log(user.Comments); //사용자의 댓글