오라클 시험대비 DML정리(SELECT)

안효빈·2022년 11월 15일
0

개인 공부

목록 보기
30/36

DB

  • 데이터를 저장해두고 있다가 필요할때 제공해주는 시스템.

DML(select)

[표현식]

  • select 조회할컬럼명(*을 적으면 모든 컬럼) from 테이블명

컬럼값 적는곳에 산술연산 가능

-- EMPLOYEE 테이블에서 사원명, 연봉(급여*12) 조회
SELECT EMP_NAME, SALARY*12 FROM EMPLOYEE;
--EMPLOYEE테이블에서 입사일부터 오늘날짜까지 며칠근무했는지
SELECT EMP_NAME, HIRE_DATE, SYSDATE-HIRE_DATE FROM EMPLOYEE;
  • SYSDATE = 현재 시간

컬럼명에 별칭 추가하기


    산술연산시 컬럼명은 산술에 들어간 수식 그대로 컬럼명이 됨 이때 별칭 부여
    
    
    [표현법]
    컬럼명 별칭 | 컬럼명 as 별칭 | 컬럼명 "별칭" | 컬럼명 AS "별칭"
    
    * 별칭에 반드시 쌍따옴표가 들어가야 될 때
        - 띄어쓰기가 있던지, 특수문자가 들어가 있을 때(자바스크립트랑 비슷)

컬럼명 AS "별칭" 으로 외우고 따옴표나 AS는 상황에 맞게 생략 가능

별칭은 한번 SELECT할때만 적용되고, 다음번에 또 같은 컬럼을 부른다고 전에 붙인 별칭이 나오진 않음


연결연산자


    <연결연산자>
    || : 여러 COLUMN을 마치 하나인것처럼 연결하거나, 컬럼값과 리터럴을 연결

예시

하나의 컬럼처럼 붙어서 나와버림

문자열과 연결하려면 '작은따옴표' 로 감싸야함


DISTINCT - 중복미표시


    <DISCINCT>
    컬럼에 중복된 값들을 한번씩만 표시하고자 할 때

예시

EMPLOYEE 테이블 안의 모든 사람들을 불러왔는데도 직급코드는 겹치는거 하나 없이 나옴


WHERE절

  • SELECT 쿼리문에 조건을 달아 해당 조건을 만족하는 부분만 확인하게해줌
    
    >> 비교연산자
    > < >= <= : 대소비교
    = : 같다
    != ^= <> : 같지않다
    

WHERE절 안에서 쓰일 수 있는 비교연산자들

WHERE절 논리연산자


    <논리연산자>
    AND와 OR를 씀

AND나 OR로 WHERE절 연결 가능

예시

BETWEEN A and B

  • A 이상 B 이하를 표현할 때 쓰임

예시

**날짜를 쓸때 '00/00/00' 형식으로 쓸것


LIKE


    <LIKE>
    비교하고자 하는 컬럼값이 내가 제시한 특정패턴에 만족하는 것만 조회
    
    [표현법]
    비교대상컬럼 LIKE '특정패턴';
    : 특정패턴에 => '%' 나 '_' 를 와일드카드 사용

자바나 자스의 정규식과 비슷


    - % : 0글자 이상
    EX) 비교대상컬럼 LIKE '문자%' => 비교대상의 컬럼값이 문자로 시작하는 컬럼 조회
    EX) 비교대상컬럼 LIKE '%문자' => 비교대상의 컬럼값이 문자로 끝이나는 컬럼 조회
    EX) 비교대상컬럼 LIKE '%문자%' => 비교대상의 컬럼값에 문자가 포함되어있는 컬럼 조회
    
    - _ : 딱 1글자
    EX) 비교대상컬럼 LIKE '문자_' => 비교대상의 컬럼값이 문자뒤에 딱 한글자인 컬럼 조회
    EX) 비교대상컬럼 LIKE '_문자' => 비교대상의 컬럼값에서 문자 앞에 딱 한글자만
    EX) 비교대상컬럼 LIKE '__문자' => 앞에 두글자는 뭐가 와도 상관없는데 뒤에 문자로 끝나야함(총 4글자) 
    EX) 비교대상컬럼 LIKE '_문자_' => 비교대상의 컬럼값에 문자 앞뒤로 딱 한글씩만 있어야함


  • 글자수가 딱 정해진 형식이 아니면 %를 쓰는게 대부분 유리함



LIKE를 쓸 때 %나 _를 써야하는 경우

  • 와일드카드를 이용해서 %나 _를 구별해줌
  
-- 와일드카드로 사용되고 있는 문자와 컬럼값에 들어있는 문자가 동일한 경우
-- _가 모두 와일드카드로 인식되므로 어떤건 와일드카드고 어떤건 문자인지 구분해줘야함
-- 데이터값으로 취급하고싶은값 앞에 나만의 와일드카드(아무문자나숫자)를 제시
-- 제시하고 해당 값이 나만의 와일드카드값임을 알려주면 됨(ESCAPE OPTION)

SELECT EMP_NAME, EMAIL AS "MAIL", EMP_NO
FROM EMPLOYEE
WHERE EMAIL LIKE '___#_%' ESCAPE '#';
  

NULL인지 아닌지


    <IS NULL과 IS NOT NULL>
    NULL이 있는지 아닌지 


IN ('','')

  • 안에 내가 찾고자하는 값이 있는지 뱉어줌

    <IN>
    컬럼값에 내가 제시한 목록이 포함되어있는지 조회
    
    [표현법]
    비교대상컬럼 IN ('값1', '값2', '값3', ...)


LIKE를 써도 같지만 코드 길이를 줄여주고 훨씬 편하게 여러개를 조회할 수 있음


연산자의 우선순위(✅)


    <연산자에 우선순위가 있음>
    1. ()
    2. 산술연산자
    3. 연결연산자(AND OR)
    4. 비교연산자(<=>)
    5. IS NULL / LIKE / IN
    6. BETWEEN AND
    7. NOT(논리연산자)
    8. AND(논리연산자)-**
    9. OR(논리연산자)-** and와 or의 순서가 자주 나옴

우선순위를 잘 고려해서 써야함 시험에 나올 가능성 좀 있음


ORDER BY

  • 내가 조회한 컬럼을 정렬할 때 이용, 나중에 ROWNUM을 쓸 때 중요함

    <ORDER BY>
    내가 제시한 컬럼을 기준으로 정렬할 때 사용
    
    -SELECT문 맨 마지막에 기술을 함(WHERE보다 뒤에, 실행순서 가장 마지막임)
    
    [표현법]
    SELECT 보고싶은컬럼들
    FROM 테이블명
    WHERE 조건식
    ORDER BY 정렬기준의 컬럼명 | 별칭(AS) | 컬럼순번 [ASC|DESC] [NULLS FIRST|NULLS LAST]
    
    - [ASC|DESC] : 오름차순OR내림차순(생략시오름차순이기본값)
    - [NULLS FIRST|NULLS LAST] : 생략가능 NULL을 맨 앞에 쓸지 뒤에쓸지
    (생략하면 ASC일땐 맨 뒤로가고 DESC일떈 맨 앞부터 나옴)

profile
다들 화이팅

0개의 댓글