이제 각 테이블에 초기 데이터도 삽입해보았으니 간단한 CRUD 작업을 하는 법을 알아보자.
이것은 이미 배웠습니다.
const cheolsu = Student.build({
registrationNum: 20203718,
name: '김철수',
age: 22,
});
await cheolsu.save();
이렇게 build-save 메소드를 쓰거나
const cheolsu = await Student.create({
registrationNum: 20203718,
name: '김철수',
age: 22,
});
create 메소드를 쓰는 방법이 있었죠.
데이터 조회는 어떻게 할까요? 여러 메소드들이 있지만 일단 findAll과 findOne을 배워봅시다.
const students = await Student.findAll();
이렇게 하면 Students 테이블의 모든 row들이 조회됩니다. 이때 배열 안에 모든 학생들이 담겨서 리턴됩니다. 만약 특정 row들만 조회하고 싶다면 WHERE 절을 지정해야겠죠? WHERE 절은
이렇게 지정할 수 있습니다.
const students = await Student.findAll({
where: {
age: {
[Op.or]: {
[Op.lte]: 20,
[Op.gt]: 30
}
}
});
이것은 Students 테이블에서 age 컬럼의 값이 20 이상 30 미만에 해당하는 row들 그러니까 20대 학생들만 추리는 코드입니다. 해당하는 학생들만 배열에 담겨서 리턴됩니다.
자, 이제 findOne 메소드를 볼까요?
const students = await Student.findAll();
findOne은 딱 하나의 객체만, 그러니까 딱 하나의 row 정보만 리턴하는데요. 특정 row 하나만 리턴하거나 또는 정렬을 해서 1위만 찾거나 할 때 사용합니다.
const student = await Student.findOne({ order: [['age', 'DESC']]});
이것은 학생을 나이순으로 내림차순 정렬해서 가장 나이가 많은 학생 정보를 구해오는 것입니다.
이밖에도 SELECT에 관한 다양한 내용들은 직접 공식 문서를 찾아서 보는 게 좋습니다. 내용이 어렵지 않습니다.
await Student.update({ name: '김새롬' }, {
where: {
registrationNum: 20208712
}
});
await Student.delete({
where: {
registrationNum: 20208712
}
});
별로 어려운 내용들은 아니니 직접 공식 문서를 참조하세요.