Oracle 데이터베이스에서의 쿼리 및 필터링: 초보자로서 실제로 이해가 된 점

발행: (2026년 1월 20일 오전 07:59 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

위 링크에 있는 전체 텍스트를 제공해 주시면, 해당 내용을 한국어로 번역해 드리겠습니다.

오늘의 조용하지만 중요한 SQL 하루

새로운 테이블은 없습니다. 화려한 조인도 없습니다. 이미 가지고 있는 데이터에 대해 더 좋은 질문을 하는 방법을 배우고 있습니다.

이번 교훈은 행을 조회하고 필터링하는 것에 관한 것이었으며—즉, 데이터베이스에 정확히 원하는 결과만 반환하도록 지시하는 방법을 배우는 것이었습니다.

저는 간단한 toys 테이블을 통해 이를 배웠는데, 솔직히 큰 도움이 되었습니다. 오라클 강좌는 독특하면서도 재미있는 방식으로 가르쳐서 학습하면서 즐길 수 있게 해줍니다. 매우 어려운 주제도 이해하기 쉬운, 친숙한 개념으로 접근함으로써 덜 위협적으로 보이게 합니다.

create table toys (
  toy_name varchar2(100),
  colour   varchar2(10),
  price    number(10,2)
);

insert into toys values ( 'Sir Stripypants',   'red',   0.01 );
insert into toys values ( 'Miss Smelly_bottom','blue',  6.00 );
insert into toys values ( 'Cuteasaurus',       'blue', 17.22 );
insert into toys values ( 'Mr Bunnykins',      'red',  14.22 );
insert into toys values ( 'Baby Turtle',       'green', null );

commit;

행 선택하기 (그리고 SELECT *가 함정인 이유)

  • FROM → 데이터가 위치한 곳
  • SELECT → 실제로 반환받고 싶은 열

처음에는 SELECT * FROM toys;가 매우 편리하지만, 데이터베이스가 작을 때만 그렇습니다. 10 000 행이 넘는 큰 데이터베이스를 상상해 보세요—SELECT *만으로는 Mr Bunnykins을 찾을 수 없습니다.

select toy_name, price
from toys;

이렇게 하면 실제로 필요한 것이 무엇인지 생각하게 만들고, 또한:

  • 네트워크를 통해 전송되는 데이터 양이 적어집니다
  • 컬럼이 변경될 때 문제가 덜 발생합니다

그 자체만으로도 내가 쿼리를 작성하는 방식이 바뀌었습니다. 구체적이고 효율적으로 작성하세요.

WHERE 로 행 필터링하기

테이블의 모든 데이터를 가져오는 대신, 다음과 같은 질문을 할 수 있습니다:

“빨간 장난감만 보여줘”

select *
from toys
where colour = 'red';

“특정 행 하나만 보여줘”

select *
from toys
where toy_name = 'Sir Stripypants';

간단하지만, 이는 거의 모든 실제 쿼리의 기본입니다.

조건 결합: AND, OR, 그리고 혼란

이 부분은 예상보다 더 많이 헷갈리게 만들었습니다.

where toy_name = 'Mr Bunnykins'
or  toy_name = 'Baby Turtle'
and colour = 'green';

결과가 기대와 달랐던 이유는 ANDOR보다 먼저 실행되기 때문입니다. SQL은 우리 뇌가 생각하는 대로 왼쪽에서 오른쪽으로 조건을 읽지 않습니다.

해결 방법? 항상 괄호를 사용하세요.

where (toy_name = 'Mr Bunnykins' or toy_name = 'Baby Turtle')
  and colour = 'green';

이제 쿼리는 보이는 대로 정확히 동작합니다. 이 한 줄만으로도 앞으로 발생할 버그를 예방할 수 있었습니다.

Source:

IN을 사용한 값 목록

대신에 다음과 같이 작성하는 대신:

where colour = 'red'
   or colour = 'green'
   or colour = 'blue'
   or colour = 'yellow';

다음과 같이 작성할 수 있습니다:

where colour in ( 'red', 'green', 'blue', 'yellow' );

훨씬 깔끔하고 읽기 쉬우며, 특히 100 000개 이상의 행 중에서 몇 개의 행만 필요할 때 훨씬 더 효과적입니다.

범위와 =, BETWEEN

where price between 6 and 20;

중요한 점: BETWEEN은 양쪽 끝을 포함합니다. 엄격한 경계를 원한다면, 직접 작성하세요:

where price > 6
  and price `:
where colour <> 'green';

하지만 다시 말하지만—NULL은 특수합니다. NULL을 제외하려면, 반드시 다음을 사용해야 합니다:

where colour is not null;

여기에 대한 단축키는 없습니다.

Final Thoughts

This lesson didn’t feel flashy, but it felt important. Everything else in SQL builds on this:

  • Aggregations
  • Joins
  • Subqueries
  • Real‑world analytics

If you can’t filter data confidently, everything else falls apart.

Feels Fragile

나는 속도를 늦추고, 명확하게 표현하며, 읽기 쉽고 효과적인 쿼리를 작성하는 방법을 배우고 있습니다.

당신도 SQL을 배우면서 가끔 WHERE 절에 걸려 어리석게 느껴진다면… 혼자가 아닙니다.

나는 이 여정을 계속 기록할 것입니다—혼란, 명료함, 그리고 모든 것들을.

Back to Blog

관련 글

더 보기 »