ORACLE SQL

SQL 2일차

최종군 2024. 7. 17. 19:35

 

 

 BETWEEN AND : 조건식에서 사용되는 구문

 => 0이상 ~ 이하인 범위에 대한 조건을 제시하는 구문 

 

 [표현법]
         

            비교대상컬럼명 : BETWEEN 최소값 AND 최댓값
            = > 해당 컬럼의 값이 최소값 이상이고 최대값 이하인 경우 

 

BETWEEN을 사용하지 않은 예 : 

 

SELECT EMP_NAME, EMP_ID,  SALARY
FROM employee
WHERE SALARY >= 3500000 AND SALARY <= 60000000;

 

-- BETWEEN을 사용한 예 
SELECT EMP_NAME, EMP_ID,  SALARY
FROM employee
WHERE SALARY BETWEEN 3500000 AND 6000000;

 

논리 부정 연산자 : NOT

 

SELECT EMP_NAME, EMP_ID,  SALARY
FROM employee
WHERE SALARY NOT BETWEEN 3500000 AND 6000000;

 

IN : 비교대상컬럼값이 제시한 값들 중에 일치하는 값이 있는 경우 조회하는 연산자 

 

[표현법] 

         비교대상컬럼명 IN('값1', '값2', '값3' )

 

 

 

LIKE : 비교하고자 하는 컬럼의 값이 제시한 특정 패턴에 만족할 경우 조회 

특정 패턴 : ' % ' ,  '_'를 와일드카드로 사용 

 

ex)

      비교대상 컬럼명 LIKE '문자%'  = > 비교대상 컬럼의 값에 문자로 시작되는 것을 조회 

      비교대상 컬럼명 LIKE '%문자'  = > 비교대상 컬럼의 값이 문자로 끝나는 것을 조회 

      비교대상 컬럼명 LIKE '%문자%' = > 비교대상 컬럼의 문자 포함되는 것을 조회 (키워드 검색)

 

' _ ' 1글자 

ex) 

      비교대상 컬럼명 LIKE ' _문자 ' => 비교대상 컬럼의 값에서 문자 앞에 무조건 한글자가 올 경우 조회 

      비교대상 컬럼명 LIKE ' __문자 ' => 비교대상 컬럼의 값에서 문자 앞에 무조건 두글자가 올 경우 조회 

       비교대상 컬럼명 LIKE ' _문자_ ' => 비교대상 컬럼의 값에서 문자 앞뒤에 무조건 한글자가 올 경우 조회 

 

 

   SELECT EMP_NAME, SALARY, HIRE_DATE
   FROM employee
   WHERE EMP_NAME LIKE '기%'; -- 시작되는 값 조회 

 

  SELECT EMP_NAME, EMP_NO, PHONE
  FROM employee
  WHERE EMP_NAME LIKE '%임%'; -- 키워드 검색 

 

-- 비교대상 컬럼의 문자 포함되는 것을 조회(키워드 검색)

 

 

 

 

SELECT EMP_ID, EMP_NAME, PHONE, email
FROM employee
WHERE PHONE LIKE '__1%'; -- 사원들 중 연락처의 3번째 자리가 1인 사원의 사번 사원명 연락처 이메일 조회 

 

 

SELECT EMP_NAME, PHONE
FROM employee
WHERE EMP_NAME LIKE '_수_'; 

 

가운데에 '수'가 포함된 글자를 조회 

 

 

 

--> 와일드카드로 사용되는 문자와 컬럼에 담긴 문자가 동일하기 때문에 모두 와일드카드로 인식됨
--> 따라서, 구분을 해줘야 함! (=> ESCAPE를 사용하여 등록 후 적용)

 

-- ESCAPE 


SELECT EMP_ID, EMP_NAME, email
FROM employee
WHERE email LIKE '___!_%' ESCAPE '!';

 

 

 

IS NULL,  IS NOT NULL : 컬럼값에 NULL이 있을 경우 NULL값을 비교할 때 사용하는 연산자 

 

 

SELECT EMP_ID, EMP_NAME, SALARY, BONUS
FROM employee
-- WHERE bonus IS not NULL
WHERE NOT bonus IS NULL;

 

-- 부서 배치를 받지 않았지만, 보너스를 받고 있는 사원의 사원명, 보너스, 부서코드 조회
SELECT  EMP_NAME, bonus, DEPT_CODE
FROM employee
-- WHERE bonus IS not NULL
WHERE dept_code IS NULL AND BONUS IS NOT NULL

 

 

 

  * 연산자 우선 순위 :

   - 0 : ()
   - 1 : 산술연산 : +,-,*,/
   - 2 : 연결연산자 : ||
   - 3 : 비교연산자 : > < >= <= = != ^= <>
   - 4 : IS NULL, IS NOT NULL '패턴' / IN
   - 5 : BETWEEN AND
   - 6 : NOT 
   - 7 : AND
   - 8 : OR

 


 

[표현법]  

                  SELECT : 조회할 컬럼.... 

                   FROM : 테이블명 

                   WHERE : 조건식 

                   ORDER BY : 정렬 기준으로 잡은 컬럼 |별칭| 컬럼 순번 [ASC|DESC] 생략이 가능하다 

 

                   ASC : 오름차순 

                   DESC : 내림차순 

 

                   NULLS FIRST  : 정렬하고자하는 컬럼의 값이 NULL인 경우 해당 데이터를 맨 앞에 배치 

                   [DESC인 경우 기본값]

                   

                   NULLS LAST  : 정렬하고자하는 컬럼의 값이 NULL인 경우 해당 데이터를 맨 뒤에 배치 

                   [ASC인 경우 기본값]

 

 

                  SELECT *  
                  FROM employee   
                  ORDER BY bonus; -- 기본값 (ASC, NULLS LAST)

 

                  SELECT *  
                  FROM employee   
                  ORDER BY bonus DESC; -- 기본값 (ASC, NULLS FIST)

                          


                  SELECT *  
                  FROM employee   
                  ORDER BY bonus DESC, SALARY ASC; -- 기본값 (ASC, NULLS FIST

                   -- 보너스 값을 내림차순 정렬하는데 같은 값인 경우 급여의 값을 오름차순 정렬하겠다 

         

 

 

 

 

 

'ORACLE SQL' 카테고리의 다른 글

SQL 관련 문제 풀이  (0) 2024.07.19
SQL 정리 연산자 모음  (0) 2024.07.19
SQL 4일차 형변환  (0) 2024.07.19
SQL 함수 정리 (FUNCTION) 3일차  (0) 2024.07.19
SQL 내용 정리 1일차 완전 기초정리  (0) 2024.07.16