반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

Oracle SQL 요약정리 - DML(SELECT) 기본문법 본문

Oracle SQL/Oracle SQL 요약정리

Oracle SQL 요약정리 - DML(SELECT) 기본문법

yeonee 여니 2023. 5. 31. 12:13
728x90
반응형
SMALL

안녕하세요.

#yeoneeblog 여니입니다 :)

 


DML : 데이터 조작 , SELECT(DQL) , INSERT , UPDATE , DELETE
DDL : 데이터 정의 , CREATE , ALTER , DROP
TCL : 트랜잭션 제어, COMMIT, ROLLBACK
DCL : 권한 부여, GRANT, REVOKE

 

-명령어, 키워드, 컬럼명, 테이블명은 대소문자를 가리지 않는다.
- 소문자로 해도 무방하지만 대문자로 쓰는게 관례

 

    <SELECT>
    데이터를 조회하거나 검색할 때 사용하는 명령어
    
    - RESERT SET : SELECT 구문을 통해 조회된 데이터의 결과물을 의미
                (조회된 행들을 집합)
    [표현법]
    SELECT 조회하고자하는 컬럼명, 컬럼명2, 컬럼명3
    FROM 테이블명;

 

<컬럼값을 통한 산술연산>
    조회하고자하는 칼럼들을 나열하는 SELECT절에 산술연산(+-/*)을 기술해서 결과를 조회할 수 있다.

ex) 연봉( == 월급 * 12)   ->  SALARY * 12

    * 산술연산과정에서 NULL값이 존재할 경우 산술연산의 결과마저도 NULL이 된다.

   

    * DATE 타입끼리도 연산이 가능(DATE => 년,월,일,시,분,초)

    * 오늘날짜 : SYSDATE

ex) 근무일수 조회(오늘날짜 - 입사일)   ->   SYSDATE - HIRE_DATE

 

 

<컬럼명에 별칭 부여하기>
    [표현법]
    컬럼명 AS 별칭, 컬럼명 AS "별칭" , 컬럼명 별칭 ★가장많이쓰임★, 컬럼명 "별칭"

    AS를 붙이든 안붙이든 간에 별칭에 특수문자나 띄어쓰기가 포함된 경우 무조건 ""로 묶어서 표기해야함.

 

 

<리터럴>
    임의로 지정한 문자열('')을 SELECT절에 기술하면 실제 그 테이블에 존재하는 데이터처럼 조회가 
    가능하다.

 

 

<DISTINCT>
    조회하고자하는 컬럼에 중복된 값을 딱 한번만 조회하고자 할 때 사용
    칼럼명 앞에 기술
    
    [표현법]
    DISTINCT 칼럼명

 

 

<WHERE 절>
    조회하고자 하는 테이블에 특정 조건을 제시해서
    그 조건에 만족하는 데이터들만 조회하고자 할 때 기술하는 구문
    
    [표현법]
    SELECT 컬럼명, 컬럼명... => 컬럼들을 뽑아내겠다.
    FROM 테이블명
    WHERE 조건식; => 조건에 만족하는 행들을 뽑아내겠다.
    
    실행순서 ★짱 암기★
    FROM(1등) => WHERE => SELECT
    
    - 조건식에 다양한 연산자들 사용 가능
    <비교연산자>
    > , < , >= , <=
    =(일치하는가? : 자바, 자스 == 이었음) ★주의★
    != , ^= , <> (일치하지 않는가?)

 

ex) 부서코드가 D9이 아닌 사원들의 사원명

WHERE DEPT_CODE != 'D9';

WHERE DEPT_CODE ^= 'D9';

WHERE DEPT_CODE <> 'D9';

 

* SELECT절에서 부여한 별칭을 WHERE절에서는 사용할 수 없음.

ex) EMPLOYEE 테이블에서 연봉이 5000만원 이상인 사원들의 이름, 연봉

SELECT EMP_NAME 이름, SALARY * 12 연봉

FROM EMPLOYEE
-- WHERE 연봉 >= 50000000; --오류발생 (FROM -> WHERE -> SELECT 순서로 실행되기 때문에, '연봉'이란 별칭이 WHERE 구문에서는 존재하지 않는다.)
WHERE SALARY *12 >= 50000000;

 

 

<논리연산자>
    여러 개의 조건을 엮을 때 사용
    AND(자바 &&), OR(자바 ||)
    AND : ~이면서, 그리고
    OR : ~이거나, 또는

 

 

<BETWEEN A AND B>
    몇 이상 몇 이하인 범위에 대한 조건을 제시할 때 사용  
    [표현법]
    비교대상칼럼명 BETWEEN 하한값 AND 상한값;

* BETWEEN AND 연산자는 DATE 형식간의 범위에도 사용 가능함.

ex) 입사일이 '90/01/01' ~ '03/01/01'인 사원들의 모든 컬럼 조회

WHERE HIRE_DATE >= '90/01/01' AND HIRE_DATE <= '03/01/01';
WHERE HIRE_DATE BETWEEN '90/01/01' AND '03/01/01';

 

* 오라클의 NOT은 자바의 논리부정연산자와 동일한 의미를 가짐. 위치는 칼럼명 앞, 뒤 상관없음.

ex) WHERE NOT SALARY BETWEEN 3500000 AND 6000000;
       WHERE SALARY NOT BETWEEN 3500000 AND 6000000;

 

 

<LIKE '특정패턴'>
    비교하고자하는 칼럼 값이 내가 지정한 특정 패턴에 만족될 경우 조회
    
    [표현법]
    비교대상컬럼명 LIKE '특정패턴'
    
    - 옵션 : 특정패턴부분에 와일드카드인 '%', '_'를 가지고 제시할 수 있음
    
    '%' : 0글자 이상
          비교대상 칼럼명 LIKE '문자%' => 컬럼값중에 '문자'로 시작하는 것을 조회
          비교대상 칼럼명 LIKE '%문자' => 컬럼값중에 '문자'로 끝나는 것을 조회
          비교대상 칼럼명 LIKE '%문자%' => 칼럼값 중에 '문자'가 포함되는 것 조회
          
    '_' : 1글자
          비교대상 컬럼명 LIKE '_문자' => 해당 칼럼값 중에 '문자'앞에 무조건 1글자가 존재
          비교대상 컬럼명 LIKE '__문자' => 해당 칼럼값 중에 '문자'앞에 무조건 2글자가 존재

 

 

<IS NULL>
    해당 값이 NULL인지 비교해준다.
    
    [표현법]
    비교대상 컬럼 IN NULL : 컬럼값이 NULL일 경우
    비교대상 컬럼 IS NOT NULL : 컬럼값이 NULL이 아닌 경우

★NULL 값 비교 대상 헷갈리지않게★

ex) 사수도 없고 부서배치도 아직 받지 않은 사원들의 모든 칼럼 조회
SELECT *
FROM EMPLOYEE
WHERE MANAGER_ID IS NULL AND DEPT_CODE IS NULL;

 

ex) 부서배치는 받지 않았지만 보너스는 받는 사원의 모든 컬럼 조회
SELECT *
FROM EMPLOYEE
WHERE DEPT_CODE IS NULL AND BONUS IS NOT NULL; 

 

 

 

<IN>
    비교 대상 칼럼값에 내가 제시한 목록들 중에 일치하는 값이 있는지 판단

    [표현법]
    비교대상칼럼 IN (값1, 값2, 값3, 값4,..,..)

 

 

<연결 연산자 || >
    여러 칼럼값들을 마치 하나의 컬럼인것처럼 연결시켜주는 연산자
    컬럼과 리터럴(임이의 문자열)을 연결할 수 있음

★자주 사용된다.★

ex) XX번 XXX의 월급은 XXXX원 입니다. AS 급여정보
SELECT 
EMP_ID || '번 ' || EMP_NAME || '의 월급은 ' || SALARY || '원 입니다.' AS 급여정보
FROM EMPLOYEE;

 

 

<연산자 우선순위>
    0. ()
    1. 산술연산자
    2. 연결연산자
    3. 비교연산자
    4. IS NULL, LIKE, IN
    5. BETWEEN AND
    6. NOT
    7. 논리연산자 (AND)
    8. 논리연산자 (OR)

 

 


    <ORDER BY 절>
    SELECT문 가장 마지막에 기입하는 구문일뿐만 아니라 실제로도 가장 마지막에 실행되는 구문
    최종 조회된 결과물들에 대해서 정렬 기준을 세워주는 구문
    
    [표현법]
    SELECT 조회할 칼럼 1,2,3....
    FROM 조회할 테이블명
    WHERE 조건식(생략가능)
    ORDER BY [정렬기준으로 세우고자하는 컬럼명/별칭/컬럼 순번] [ASC/DESC] (생략가능) [NULLS FIRST/NULLS LAST] (생략가능)

* ORDER BY는 숫자 뿐만아니라 문자열, 날짜에 대해서도 정렬가능하다.

    오름차순 / 내림차순
    - ASC : 오름차순 (생략시 기본값)
    - DESC : 내림차순
    
    정렬하고자하는 컬럼값에 NULL이 있을 경우
    - NULLS FIRST : NULL값들을 앞으로 배치하겠다.(내림차순의 기본값)
    - NULLS LAST : NULL값들을 뒤쪽으로 배치하겠다.(오름차순의 기본값)

728x90
반응형
LIST