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자리까지 계산됩니다. |
DIV | op1 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을 반환합니다. | |
LEAST | LEAST(값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)를 반환합니다. |
INTERVAL
BINARY
, COLLATE
!
-
(산술연산자 X, 단항연산자)^
*
, /
, DIV
, %
, MOD
+
, -
(산술연산자 O)>>
, <<
&
|
=
, <=>
, <=
, >=
, <
, >
, <>
, !=
, IS
, LIKE
, REGEXP
, IN
BETWEEN
, CASE
, WHEN
, THEN
, ELSE
, END
NOT
&&
, AND
XOR
||
, OR
=
(대입연산자)💡 연산자 우선순위를 변겨하고자 할 때
기본적으로 위 우선순위로 동작하며, 해당 우선순위가 아니라 먼저 계산이 필요한 경우()
로 묶어서 먼저 계산하도록 지정해줄 수 있습니다!연산자 우선순위 관련해서는 MariaDB 에서 더 자세한 내용을 확인할 수 있습니다.
MariaDB로 따라 하며 배우는 SQL프로그래밍 데이터베이스 기초에서 실무까지 - 나익수, 서연경 지음
위 책을 공부하며 작성하고 있습니다!