GeehDev

[MariaDB] 연산자 본문

Study/DB

[MariaDB] 연산자

geehyun 2024. 9. 29. 19:02

Index

    반응형

    velog에서 이관해온 글


    연산자

    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)를 반환합니다.
    반응형

    연산자 우선선위

    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프로그래밍 데이터베이스 기초에서 실무까지 - 나익수, 서연경 지음
    위 책을 공부하며 작성하고 있습니다!

    728x90

    'Study > DB' 카테고리의 다른 글

    [MariaDB] 내장 함수① - 문자/시간/수치 관련  (1) 2024.09.29
    [MariaDB] 기본 조작 (DDL/DML)  (0) 2024.09.29
    [MariaDB] 데이터 유형  (1) 2024.09.23
    [MariaDB] 데이터베이스 기초  (1) 2024.09.23