ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DML]SELECT-연산자
    SQLD/SQL 2023. 8. 30. 17:31

    연산자

    1.산술 연산자

    연산자 의미 우선 순위
    () 괄호로 우선 순위를 조정 1
    * 곱하기 2
    / 나누기 2
    + 더하기 3
    - 빼기 3
    • NUMBER,DATE 자료형에 적용되는 사칙 연산 기능을 가진 연산자
    • 산술 연산자에서 NULL값은 NULL을 반환한다.
    • 나누기 연산을 할 때 분모가 0값이면 에러가 발생한다

     

    2.합성 연산자

    오라클
    ( || )
    SQL-Server
     ( + )
    SELECT 'S'||'Q'||'L'||'D' SELECT S+Q+L+D
    • 문자와 문자를 연결할 때 사용하는 연산자
    • CONCAT함수를 사용해도 똑같은 결과를 얻는다.

     

    3.비교 연산자와 부정 비교 연산자

    👉🏻비교 연산자

    연산자 의미 예시
    = 같음 col = 10
    < 작음 col < 10
    <= 작거나 같음 col <= 10
    > 크다 col > 10
    >= 크거나 같음 col >= 10

    👉🏻부정 비교 연산자

    연산자 의미 예시
    != 같지 않음 WHERE 성별 != '남'
    ^= 같지 않음 WHERE 성별 ^= '남'
    <> 같지 않음 WHERE 성별 <> '남'
    NOT 컬럼명 >,=,< 같지 않음
    작지 않음
    크지 않음
    WHERE NOT 성별 = '남'
    WHERE NOT 점수 < 90
    WHERE NOT 점수 > 90

     

    4.다중행 비교 연산자

    • 서브쿼리에서 결과가 2건 이상 반환될 수 있다면 반드시 다중 행 비교 연산자와 함께 사용해야한다.
    연산자 설명
    IN(서브쿼리) 서브쿼리 결과에 존재하는 값이 하나라도 포함되어 있는지 확인(OR)
    비교연산자(=,<,<=,>,=>)
    ALL(서브쿼리)
    서브쿼리 결과에 존재하는 값이 모두 만족하는 값을 가져온다.(AND)
    WHERE AGE > ALL(SELECT AGE FROM STUDENT WHERE DEPARTMENT = 'Math')
    -서브쿼리의 결과값인 수학과 학생들의 나이보다 큰 AGE를 가진 조건을 반환
    비교연산자(=,<,<=,>,=>)
    ANY(서브쿼리)
    서브쿼리 결과에 존재하는 어느 하나의 값이라도 만족하는 조건을 의미
    WHERE price > ANY (SELECT price FROM product WHERE color='red');
    *SOME과 ANY모두 동일한 동작을 한다.
    *IN과 ANY의 비교
      -IN은 비교연산자와 함께 사용 불가능
      -ANY는 비교연산자와 함께 사용 가능
    EXISTS(서브쿼리) 서브쿼리의 결과에 존재하는 값이 존재하는지(TRUE,FLASE) 여부를 확인하는 조건
    *IN과 EXISTS비교
      -IN은 서브쿼리 결과를 모두 수행하고,EXITST는 일치 결과가 있다면 더 이상 수행하지 않는다.
      -서브쿼리 데이터량이 많다면 성능상 EXITST가 좋다.

     

    5.SQL연산자와 부정 SQL 연산자

    👉🏻SQL연산자

    연산자 의미 예시
    BETWEEN A AND B A부터 B까지 WHERE COL BETWEEN 1 AND 10
    LIKE '비교 문자열' 비교 문자열과 형태 일치하는지  WHERE signup_date LIKE '2023%' 23년도 조회
    WHERE user_name LIKE '김%' 김씨를 조회
      % : 0개 이상의 문자를 의미
      _ : 1개인 단일 문자를 의미
    IN(LIST) LIST값 중 하나와 일치 WHERE 주소 IN('수원','서울') 수원,서울인 사람만 조회
    IS NULL NULL값을 조회 WHERE 주소 IS NULL 주소가 NULL인 사람 조회
    *NULL은 비교연산자로 조회할 수 없다.
    EX) 주소 = NULL ❌

    👉🏻부정 SQL 연산자

    연산자 의미 예시
    NOT BETWEEN A AND B A와 B사이에 있지 않은 값
    (A,B값은 포함하지 않음)
    WHERE COL BETWEEN 1 AND 10
    1~10사이의 값인 2-9를 제외한 값
    NOT IN(LIST) LIST중 일치하지 않는 값 WHERE 주소 NOT IN('수원','서울') 
    주소가 수원,서울이 아닌 사람 조회
    IS NOT NULL NULL이 아닌 값을 조회 WHERE 주소 IS NOT NULL 
    주소가 NULL이 아닌 사람을 조회

     

    6.논리 연산자

    연산자 의미 예시
    AND 모든 조건이 TRUE WHERE 성적 > 90 AND 과목 = '수학'
    OR 하나 이상의 조건이 TRUE WHERE 주소 = '서울' OR 나이 < 34
    NOT TRUE면 FALSE를 FALSE면 TRUE를 반환 NOT COL > 10

    ❗️논리 연산자의 처리 순서

    NOT → AND → OR

    예제 34회-기출복원 
    다음 데이터를 가진 테이블에서 SQL의 결과를 작성

    EMP_ID MGR_ID CODE SALARY
    1 2 A 100
    2 5 B 300
    3 NULL CODE 150
    4 1 D 400
    5 7 E 500
    SELECT COUNT(*)
    FROM TEST
    WHERE SALARY > 100
    OR MGR_ID IS NULL
    AND CODE = 'B';

    답 : 3

     

    7.집합 연산자

    • 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회할 수 있다.
    • 2개 이상의 질의 결과를 하나의 결과로 만들어준다.

    *관계 대수 

    관계형 데이터베이스의 이론을 수립한 E.F.Codd박사의 논문에 언급되어있는 데이터를 검색하고 조작하는데 사용되는 연산자와 규칙의 집합이다.

    관계 대수는 총 8개로 크게 순수 관계 연산자와 일반집합 연산자로 나뉜다.

    일반 집합 연산자는 현재 집합연산자로 나타내며 다음 테이블과 같다.

    관계 대수 현재 SQL 설명
    UNION UNION
    UNION ALL
    합집합을 제공한다.
    UNION은 중복을 포함하여 출력한다.
    UNION ALL은 중복을 제거하고 출력한다.
    *둘의 출력이 같다면 속도,자원 효율화 측면에서 UNION ALL사용 권고
    INTERSECTION INTERSECT 교집합을 제공한다.
    중복을 제거하여 출력한다.
    DIFFERENCE EXCEPT/MINUS 차집합을 제공한다.
    중복을 제거하고 출력한다.
    대다수 벤더는 EXCEPT로, 오라클에서는 MINUS를 사용한다.
    PRODUCT CROSS JOIN 곱집합을 제공한다.
    JOIN조건이 없는 경우 생길 수 있는 모든 데이터의 조합

     

    'SQLD > SQL' 카테고리의 다른 글

    [DML]SELECT-서브쿼리  (0) 2023.09.07
    [DML]SELECT구문  (0) 2023.08.29
    [DML]INSERT,UPDATE,DELETE  (0) 2023.08.29
    [DDL]ALTER,DROP,TRUNCATE,RENAME  (0) 2023.08.29
    [DDL]CREATE  (0) 2023.08.28
Designed by Tistory.