[MariaDB] 연산자

Geehyun(장지현)·2024년 2월 12일
0

MariaDB

목록 보기
4/12
post-thumbnail

연산자

SQL의 경우 산술연산자, 대입연산자, 비교연산자, 논리연산자, 등이 있습니다.

💡 값 입력 시 주의할 점
숫자, 수치형 자료일 경우 값 자체를 입력해주면 되고, 수치형 자료가 아닐 경우 ''로 감싸줘야합니다.

# 수치형 자료 O
SELECT *
FROM tbl_member
WHERE mileage = 1000  
;
#수치형 자료 X
SELECT *
FROM tbl_member
WHERE memberId = 'gee1'    
;

수치형 자료도 '' 감싸줘도 되지만, 이럴 경우 DBMS가 자동으로 캐스팅해서 실행하므로 속도이슈가 발생할 수 있으므로 지양하는 것이 옳습니다.

산술연산자

SQL에서 산술연산자는 수치 연산에서만 사용되며, 문자열을 연결시키져줄 때는 concat() 등의 다양한 메서드로 이용해야 합니다.

연산자형식설명
+op1 + op2- op1과 op2를 더한 값을 반환합니다.
- op1과 op2가 integer일 경우 값은 BIGINT로 반환됩니다.
- op1과 op2에 부호가 없으면 반환되는 값에도 부호가 없습니다.
-op1 - op2- op1에서 op2를 뺀 값을 반환합니다.
- op1과 op2가 integer일 경우 값은 BIGINT로 반환됩니다.
*op1 * op2- op1과 op2를 곱해줍니다.
- op1과 op2가 integer일 경우 값은 BIGINT로 반환됩니다.
- op1과 op2에 부호가 없으면 반환되는 값에도 부호가 없습니다.
/op1 / op2- op1을 op2를 나눗셈합니다.
- 0이 들어갈 경우 null이 출력되거나 오류가 발생할 수 있습니다.
- 나눗셈 계산의 경우 기본적으로 소수점 4자리까지 계산됩니다.
DIVop1 DIV op2- op1을 op2로 나눈 몫을 구합니다.
- op2가 0일 경우 결과는 null이 나옵니다.
%
MOD()
op1 % op2
MOD(op1,op2)
- op1을 op2로 나눈 후 나머지를 구합니다.
- op2가 0일 경우 결과는 null입니다.
- %MOD 결과는 같으나, MOD()의 경우 함수로 구분됩니다.

대입연산자

할당연산자로, 변수에 대입해줄 때와 select 문에서 대입해줄 때 사용하는 연산자가 다릅니다.

연산자형식설명
=변수명/컬럼명 = 값- 변수 또는 컬럼에 값을 할당합니다.
:=변수명/컬럼명 = 값- 변수 또는 컬럼에 값을 할당합니다.
- select 문 내에서는 =이 아니라 :=로 사용해줘야합니다.

💡 SQL 에서 변수 선언은 어떻게 할까?

-- 사용법
set @변수명 =;
set @변수명1 =1, @변수명2 =2;
--사용예시
SET @TEMP_ADDR = '', @SSN1 = '', @SSN2='';
SELECT @TEMP_ADDR := CONCAT(addr1, addr2), @SSN1 := LEFT(jumin, 6), @SSN2 := RIGHT(jumin,7)
FROM tbl_member;

변수를 선언 시에는 set키워드로 선언해줍니다. sql에서 변수는 @로 표시해주는 식으로 사용합니다.

비교연산자

비교 연산자의 경우 값을 비교해주는 경우 사용됩니다. where문 안에 주로 사용됩니다.

연산자형식설명
=비교대상 = 값- 비교대상을 값과 비교하여 완벽히 일치할 경우 1(true), 다를 경우 0(false)를 반환합니다.
- 비교대상, 값 둘 중 하나라도 null일 경우 null을 반환합니다.
- 문자 비교일 경우 대소문자를 구분하지 않습니다.
<=>비교대상 <=> 값- 비교대상을 값과 비교하여 완벽히 일치할 경우 1(true), 다를 경우 0(false)를 반환합니다.
- 비교대상, 값 둘 하나가 null일 경우 0(false)를 반환하고 둘 다 null일 경우 1(true)를 반환합니다.
- 문자 비교일 경우 대소문자를 구분하지 않습니다.
<>
!=
비교대상 <> 값
비교대상 != 깂
- 비교대상을 값과 비교하여 일치하지 않을 경우 1(true), 일치할 경우 0(false)를 반환합니다.
- 비교대상, 값 둘 중 하나라도 null일 경우 null을 반환합니다.
- 문자 비교일 경우 대소문자를 구분하지 않습니다.
<비교대상 < 값- 비교대상이 값보다 작을 경우(같은경우 X) 1(true), 크거나 같을 경우 0(false)를 반환합니다..
- 비교대상, 값 둘 중 하나라도 null일 경우 null을 반환합니다.
>비교대상 > 값- 비교대상이 값보다 클 경우(같은경우 X) 1(true), 작거나 같을 경우 0(false)를 반환합니다..
- 비교대상, 값 둘 중 하나라도 null일 경우 null을 반환합니다.
<=비교대상 <= 값- 비교대상이 값보다 같거나 작을 경우 1(true), 클(같은경우 X) 경우 0(false)를 반환합니다..
- 비교대상, 값 둘 중 하나라도 null일 경우 null을 반환합니다.
>=비교대상 >= 값- 비교대상이 값보다 같거나 클 경우 1(true), 작을(같은경우 X) 경우 0(false)를 반환합니다..
- 비교대상, 값 둘 중 하나라도 null일 경우 null을 반환합니다.
BETWEEN ... AND비교대상 BETWEEN 값1 AND 값2- 비교대상이 값1보다 같거나 크고, 값2 보다는 같거나 작은경우 1(TRUE)를 반환, 그 외는 0(FALSE)를 반환합니다.
IN비교대상 IN(값1, 값2,,,)- 비교대상이 IN 괄호 안 값 중 하나라도 해당되면 1(TRUE) 모두 해당되지 않으면 0(FALSE)를 반환합니다.
IS...대상 IS boolean_value- boolean_value : TURE/FALSE/UNKNOWN이 올 수 있습니다.
- 대상이 boolean_value로 입력한 값에 대해 맞으면 1, 아니면 0을 리턴합니다.
- 예 : 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN 결과 : 1, 1, 1
대상 IS NULL- 대상이 null이면 1, 아니면 0을 반환합니다.
대상 IS NOT NULL- 대상이 null이 아니면 1, 맞으면 0을 반환합니다.
LEASTLEAST(값1, 값,,,)- 나열된 값 중 가장 작은 값을 반환합니다.
LIKE대상 LIKE '%'- 대상에 특정문자가 포함된 값을 찾을 수 있습니다.
- '%'는 와일드카드라고도 불리며
'%특정문자' : 특정문자로 끝나는 값
'특정문자%' : 특정문자로 시작하는 값
'%특정문자%' : 특정문자가 중간 어디든 포함되어있는 값 을 찾을 수 있습니다.

💡 문자열에서 빈 값 체크는?
IS NULL / IS NOT NULL의 경우 수치형에서 사용할 수 있습니다.

# 문자열에서 NULL인경우 체크
WHERE 컬럼명 = "" OR 컬럼명 IS NULL
# 문자열에서 NULL이 아닌 경우 체크
WHERE 컬럼명 <> "" OR 컬럼명 IS NOT NULL
WHERE 컬럼명 != "" OR 컬럼명 IS NOT NULL   
# <>연산자와 != 연산자는 동일한 의미입니다.

논리연산자

논리연산자는 두 가지 이상의 조건을 확인할 수 있도록 만들 수 있습니다!

연산자형식설명
AND
&&
조건1 AND 조건2
조건1 && 조건2
- 조건1과 조건2 모두 true일 경우 1(true)이고 아니면 0(false)를 반환합니다.
OR
||
조건1 OR 조건2
조건1 || 조건2
- 조건1과 조건2 중 하나라도 true가 있을 경우 1(true)를 반환하고, 모두 false일 경우만 0(false)를 반환합니다.
XOR조건1 XOR 조건2- 조건1과 조건2 모두 true거나 모두 false일 때만 0(false)를 반환하고 하나라도 true일 경우 1(true)를 반환합니다.
NOT
!
NOT 조건식
! 조건식
- 해당 조건식이 1(true)일 때 0(false), 해당 조건식이 0(false)일 때 1(true)를 반환합니다.

연산자 우선선위

  1. INTERVAL
  2. BINARY, COLLATE
  3. !
  4. - (산술연산자 X, 단항연산자)
  5. ^
  6. *, /, DIV, %, MOD
  7. +, - (산술연산자 O)
  8. >>, <<
  9. &
  10. |
  11. =, <=>, <=, >=, <, >, <>, !=, IS, LIKE, REGEXP, IN
  12. BETWEEN, CASE, WHEN, THEN, ELSE, END
  13. NOT
  14. &&, AND
  15. XOR
  16. ||, OR
  17. = (대입연산자)

💡 연산자 우선순위를 변겨하고자 할 때
기본적으로 위 우선순위로 동작하며, 해당 우선순위가 아니라 먼저 계산이 필요한 경우 ()로 묶어서 먼저 계산하도록 지정해줄 수 있습니다!

연산자 우선순위 관련해서는 MariaDB 에서 더 자세한 내용을 확인할 수 있습니다.

참고

MariaDB로 따라 하며 배우는 SQL프로그래밍 데이터베이스 기초에서 실무까지 - 나익수, 서연경 지음
위 책을 공부하며 작성하고 있습니다!

profile
개발자를 꿈꾸는 병아리 (블로그 이전 준비중 입니다.)

0개의 댓글