더북(TheBook)

이번에는 로우를 조회하는 쿼리들입니다.

다음은 users 테이블의 모든 데이터를 조회하는 SQL문입니다. findAll 메서드를 사용하면 됩니다.

SELECT * FROM nodejs.users;
User.findAll({});

다음은 Users 테이블의 데이터 하나만 가져오는 SQL문입니다. 앞으로 데이터를 하나만 가져올 때는 findOne 메서드를, 여러 개 가져올 때는 findAll 메서드를 사용한다고 생각하면 됩니다.

SELECT * FROM nodejs.users LIMIT 1;
User.findOne({});

attributes 옵션을 사용해서 원하는 컬럼만 가져올 수도 있습니다.

SELECT name, married FROM nodejs.users;
User.findAll({
  attributes: ['name', 'married'],
});

where 옵션이 조건들을 나열하는 옵션입니다.

SELECT name, age FROM nodejs.users WHERE married = 1 AND age > 30;
const { Op } = require('sequelize');
const { User } = require('../models');
User.findAll({
  attributes: ['name', 'age'],
  where: {
    married: true,
    age: { [Op.gt]: 30 },
  },
});

MySQL에서는 undefined라는 자료형을 지원하지 않으므로 where 옵션에는 undefined가 들어가면 안 됩니다. 빈 값을 넣고자 하면 null을 대신 사용하세요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.