본문 바로가기
컴퓨터/SQL

5_Oracle DML select where 연산자-2(오라클 sql_select_조건출력_UPPER,LOWER_코딩 실행 순서)

by 버니케이 2021. 7. 30.
반응형

 

 

5_Oracle DML select where 연산자-2(오라클 sql_select_조건출력)

 

 

WHERE절을 알아보겠습니다.

 

 

 

1_WHERE_비교연산자

SELECT productname, price
FROM products
WHERE price = 40;

40달러인 상품이 어떤건지 출력해봤습니다.

WHERE는 이렇게 원하는 데이터를 찾아 출력하게 해줍니다.

WHERE절에서 보편적으로 사용하는 비교 연산자입니다.

 

 

 

2_WHERE_산술연산자

SELECT productname, price
FROM products
WHERE price <= 40;

이렇게 조건에 범위를 정해줘서 여러 개의 데이터를 출력할 수도 있습니다.

저는 40달러 이하 조건을 걸어서 상품의 이름을 출력했습니다.

 

 

 

SELECT productid, productname, unit, price
FROM products
WHERE productname = ‘Tofu’;

숫자 뿐만 아니라 문자 데이터도 조건으로 둘 수 있습니다.

이 때 주의해야 할 것은 ''작은 따음표를 사용해야 한다는 점이며,

대 소문자를 구별해서 검색해야 한다는 것입니다.

여기서 만약에 tofu를 검색했다면,

SELECT productid, productname, unit, price
FROM products
WHERE productname = ‘tofu’;

아무것도 안나옵니다.

 

 

2_1_UPPER LOWER

테이블 내 특정 문자 데이터를 검색할 때대문자와 소문자를 구분해서 검색해야 합니다.

그래서 만약에 데이터가 대문자인지, 소문자인지 정확하지 않을 때 

UPPER LOWER를 이용하면 대소문자 모두 출력할 수 있습니다.

 

 

 

SELECT UPPER(productname), LOWER(productname)
FROM products;

Upper함수를 이용해서 대문자로 데이터를 출력할 수있고,

lower함수를 이용해서 소문자로 데이터를 출력할 수 있습니다

 

 

2_2_출력 순서

SELECT productname, price*30 as 한달순매출
FROM products
WHERE price*30 >=5000;

제품을 한달에 한개씩 팔았다고 합니다

5000달러 이상의 순매출을 낸 상품을 찾고 싶네요

한달을 30일로 가정하고 커맨드를 작성해주면

다음과 같은 결과가 나옵니다.

 

여기서 주목해야 할 점이 하나 더 있습니다.

저는 분명히 price컬럼을 한달순매출로 바꿔줬는데

where절에서 다시 price사용했을까요??

SELECT productname, price*30 as 한달순매출
FROM products
WHERE 한달순매출*30 >=5000;

Price를 한달순매출로 바꿔서 출력해주면

엉뚱한 결과가 나오게 됩니다.

 

 

 

왜냐하면 코딩 순서와 실행 순서가 다르기 때문입니다

Sqlselect를 제일 마지막으로 실행하기 때문에

Where문을 실행할 때 한달 순매출이라는 열을 찾지 못해, 오류가 나거나 이상한 결과를 출력하게 되는 것입니다.

 

 

 

3_비교연산자

다음 비교연산자들은 where과 함께 사용하는 연산자입니다

하나하나 알아보도록 하겠습니다.

NULL값은 나중에 알아봅니다.

 

 

 

SELECT productname, price
FROM products
WHERE price BETWEEN 80 AND 100;

Between and 를 사용하여

가격이 80부터 100사이인 제품을 찾았습니다.

물론 아래처럼 커맨드를 짜도 되지만

Between and를 사용한다면 더 심플하고 가독성이 좋은 커맨드가 됩니다.

SELECT productname, price
FROM products
WHERE price NOT BETWEEN 80 AND 100;

이렇게 중간에 NOT을 추가해서

가격이 80부터 100사이가 아닌 제품을 찾을 수도 있습니다.

 

 

 

 

SELECT productname, price
FROM products
WHERE productname LIKE ‘m%’;

상품 이름이 m으로 시작하는 제품의 가격을 알아보겠습니다

이렇게 like를 사용하면 해당 문자를 갖고있는 데이터의 정보를 출력할 수 있습니다.

M 뒤에 %가 사용된 것을 알 수 있습니다.

 

 

 

% 특정 문자를 찾기위한 와일드 카드입니다.

와일드 카드는 이 자리에 어떤 철자가 와도 상관이 없고, 철자의 개수가 몇 개가 되든 관계가 없다는 뜻입니다..

S다음에 %가 오면, s로 시작하는 단어를 찾아줍니다.

S앞에 %가 오면, s로 끝나는 단어를 찾아줍니다.

%사이에 s가 있으면 s 가 들어있는 단어를 찾아줍니다.

 

 

 

SELECT productname, price
FROM products
WHERE price IN (18, 31, 36);

In을 사용하면, 여러 개의 정보에 대한 결과값을 출력할 수 있습니다.

 

 

 

=을 사용하면 한 가지 정보에 대한 결과값만을 출력할 수 있습니다. 그래서 이렇게 하나하나 입력해줘야 합니다.

똑같은 결과를 출력하지만 아래는 가독성이 너무 떨어지죠??

 

 

 

반응형

댓글