프로그래밍 언어/SQL

SQL 함수 간단 실습 :: SELECT문2 (SELECT 사칙연산)

gamjadori 2024. 1. 21. 14:48
728x90

<SELECT 사칙연산>

  • 사칙연산: +,-,*,/,%,MOD
SELECT 5 - 2.5 AS deffrence;
>>> 5 - 2.5를 deffrence으로 가져와라.

<결과>

SELECT 3 * (2+4) / 2, 'Hello';
>> 3 * (2+4) / 2과, 'Hello'를 가져와라.

<결과>

1. SELECT 'abc' + 3;
>> 'abc'는 숫자가 아니기 때문에 3으로 출력
2. SELECT 'abc' * 3;
>> 'abc'는 숫자가 아니기 때문에 0으로 출력

<1 결과>

<2 결과>

1. SELECT orderid, productid, orderid + productid AS '더하기'
FROM orderdetails;
>> orderdetails에서 productid와 productid,
orderid + productid를 더한 데이터를 '더하기'로 가져와라.
2. SELECT productname, price / 2 AS HalfPrice
FROM products;
>> products에서 productname과, price / 2한 데이터를 HalfPrice로 가져와라.

<1 결과>

<2 결과>

 

<논리 연산자>

  • 1 = TRUE, true, True, !FALSE, NOT 0
  • 0 = FALSE, false, False, !TRUE, NOT 1
1. SELECT * FROM customers WHERE TRUE;
>> customers의 모든 데이터 출력
2. SELECT * FROM customers WHERE FALSE;
>> customers의 모든 데이터 출력 X

<1 결과>

<2 결과>

<IS 판단>

  • is를 기준으로 양쪽의 뜻이 같으면 1, 다르면 0
SELECT FALSE IS TRUE; > 0
SELECT TRUE IS FALSE; > 0
SELECT TRUE IS FALSE; > 0
SELECT TRUE IS NOT FALSE; > 1
SELECT FALSE IS NOT FALSE; > 0
SELECT (TRUE IS FALSE) IS NOT FALSE;
>> TRUE IS FALSE = 0
NOT FALSE = 1
0 IS 1 > 0

<결과>

 

<AND, OR>

연산자 판단 시,

  • -- AND(&&): 양쪽이 TRUE일 때만 TRUE (1)
  • OR(||): 한쪽만 TRUE면 TRUE (1)
1. SELECT TRUE AND FALSE, TRUE OR FALSE;
2. SELECT 2 + 3 = 6 OR 2 * 3 = 6;
SELECT * FROM products
WHERE productname = 'Tofu' OR categoryid = 8;
SELECT * FROM orderdetails
WHERE `ProductID` = 20 AND (orderid = 10514 OR `Quantity` = 50);

<1 결과>

<2 결과>

SELECT * FROM products
WHERE productname = 'Tofu' OR categoryid = 8;
>> products에서
productname = 'Tofu'이거나 categoryid = 8인 데이터를 가져와라.

<결과>

 

<비교연산자>

  • =: 같다
  • !,<>: 같지 않다
1. SELECT 1 = 1, !(1 <> 1), NOT(1 < 2), 1 > 0 IS NOT FALSE;
2. SELECT 'A' = 'A', 'A' != 'B', 'A' < 'B', 'A' > 'B';
SELECT 'Apple' > 'Banana' OR 1 < 2 IS TRUE;
SELECT 'A' = 'a';

SELECT productname, price, price > 20 as Expensive
FROM products;
SELECT productname, price NOT price > 20 as cheap
FROM products;

<결과 1>

<결과 2>

1. SELECT 'Apple' > 'Banana' OR 1 < 2 IS TRUE;
'Apple' > 'Banana': 0
>> 1 < 2: 1
	0또는 1는 1이다 >> 1
2. SELECT 'A' = 'a';
>> 영어 대소문자를 구분하지 않음
3. SELECT productname, price, price > 20 as Expensive
FROM products;
>> products 테이블에서
productname, price, price가 20보다 큰지 판단하여
Expensive로 출력하시오.

<결과 1>

<결과 2>

<결과 3>

 

<범위연산>

  • BETWEEN {MIN} AND {MAX}: {작은 조건} AND {큰 조건} >> 두 사이에 있는 값
  • NOT BETWEEN {MIN} AND {MAX}: 두 사이의 값이 아닌 것
SELECT 55 BETWEEN 1 AND 10;
>> 55는 1과 10 사이에 있는가
SELECT * FROM orderdetails
WHERE `ProductID` BETWEEN 1 AND 4;

<결과>

1. SELECT * FROM orderdetails
WHERE `ProductID` BETWEEN 1 AND 4;
>> orderdetails중에서 `ProductID`가 1과 4 사이에 있는 내용을 가져와라.
2. SELECT * FROM customers
WHERE `CustomerName` BETWEEN 'b' AND 'd';
>> customers 중에서 CustomerName가 b와 d 사이에 있는 데이터를 가져와라.

<결과1>

<결과2>

 

<IN>

  • IN(...): 괄호 안의 값들 가운데 있는지
  • NOT IN(...): 괄호 안의 값들 가운데 없는지
SELECT 1 + 4 IN (2, 3, 4);
>> 1 + 4 (5)가 2, 3, 4 사이에 있는가 > 없어서 0
SELECT 'Hello' IN (1, True, 'hello');
>> 1, True, 'hello' 사이에 'Hello'가 있는가
(h와 H를 구분하지 않기 때문에 맞다고 판단)

<결과>

1. SELECT * FROM customers
WHERE `City` IN ('Torino', 'Paris', 'Portland', 'Madrid');
>> customers 테이블 중,
'Torino', 'Paris', 'Portland', 'Madrid'에 있는 City를 출력하시오.
2. SELECT * FROM customers
WHERE `City` NOT IN ('Torino', 'Paris', 'Portland', 'Madrid');
>> customers 테이블 중,
'Torino', 'Paris', 'Portland', 'Madrid'에 없는 City를 출력하시오.

<결과 1>

<결과 2>

 

<LIKE>

  • LIKE 'A%c': % 0~N문자를 나타내는 패턴
  • LIKE 'A__c': _의 개수만큼 문자를 나타내는 패턴
SELECT 'HELLO' LIKE 'HEL__', >> _가 2개라 일치
    'HELLO' LIKE 'h___o', >> 총 개수가 맞고, 대소문자를 가리지 않아 일치
    'HELLO' LIKE 'HE_LO', >> 총 개수가 맞아서 일치
    'HELLO' LIKE '_____', >> 총 개수가 맞아서 일치
    'HELLO' LIKE '_HELLO', >> 총 개수가 맞지 않아 틀림
    'HELLO' LIKE 'HEL_', >> 총 개수가 맞지 않아 틀림
    'HELLO' LIKE 'H_O'; >> 총 개수가 맞지 않아 틀림

<결과>

SELECT * FROM orderdetails
WHERE `OrderID` LIKE '1025_';
>> orderdetails 중에서 OrderID가 다섯자리이고 1025인 데이터를 출력하라.

<결과>