[Oracle] SQL문 정리(SELECT)

이혜원·2024년 8월 7일

Oracle

목록 보기
5/6
  • 테이블 컬럼 전체 출력
    SELECT * FROM 테이블이름;
    (* -> 해당 문자가 전체란 의미)

  • as : 별칭, 알리아스
    SELECT EMPLOYEE_ID AS "ID",
    SALARY "SAL"
    FROM EMPLOYEES e
    ;

// as를 생략하고 사용가능. employee_id 는 ID로 출력되고 salary는 SAL로 출력


  • distinct : 중복값 제거
    SELECT DISTINCT DEPARTMENT_ID
    FROM EMPLOYEES e
    ;

  •   >, <, >=, <=
    SELECT *
    FROM EMPLOYEES e
    WHERE SALARY <= 5000
    ;

  • and : 그리고.
    =SELECT EMPLOYEE_ID , DEPARTMENT_ID , MANAGER_ID , LAST_NAME
    FROM EMPLOYEES e
    WHERE DEPARTMENT_ID = 50
    AND MANAGER_ID = 100
    ;=
    // department_id가 50이고 manager_id가 100인 값만 출력

  • or : 또는
    =SELECT EMPLOYEE_ID , DEPARTMENT_ID , MANAGER_ID , LAST_NAME
    FROM EMPLOYEES e
    WHERE DEPARTMENT_ID = 50
    OR MANAGER_ID = 100
    ;=
    // department_id가 50이거나 manager_id가 100인 값만 출력

  • not () : 부정
    SELECT EMPLOYEE_ID, LAST_NAME, DEPARTMENT_ID
    FROM EMPLOYEES e
    WHERE NOT (DEPARTMENT_ID = 50)
    ;
    // DEPARTMENT_ID 값이 50이 아닌 결과값만 출력

  • not -> <>
    SELECT EMPLOYEE_ID, LAST_NAME, DEPARTMENT_ID
    FROM EMPLOYEES e
    WHERE DEPARTMENT_ID <> 50
    ;

  • not -> !=
    SELECT EMPLOYEE_ID, LAST_NAME, DEPARTMENT_ID
    FROM EMPLOYEES e
    WHERE DEPARTMENT_ID != 50
    ;

  • between and
    SELECT *
    FROM EMPLOYEES e
    WHERE SALARY BETWEEN 4000 AND 8000
    ;
    // salary값이 4000~8000인 결과값 출력

  • in() -> or와 동일
    SELECT EMPLOYEE_ID , FIRST_NAME , SALARY
    FROM EMPLOYEES e
    WHERE SALARY IN (6500, 7700, 13000)
    ;
    // salary값이 6500이거나 7700이거나 13000인 결과값만 출력

  • like
    SELECT EMPLOYEE_ID , FIRST_NAME , LAST_NAME
    FROM EMPLOYEES e
    WHERE FIRST_NAME LIKE 'D%'
    ;
    // first_name이 D로 시작하는 결과값 출력
    // '%D' = D로 끝나는 결과값 출력, '%D%' D가 들어가는 결과값 출력

  • like -> _a%
    SELECT EMPLOYEE_ID , FIRST_NAME
    FROM EMPLOYEES e
    WHERE FIRST_NAME LIKE '_a%'
    ;
    // first name의 두 번째 글자가 a인 결과값 출력

  • is null
    SELECT *
    FROM EMPLOYEES e
    WHERE DEPARTMENT_ID IS NULL
    ;
    // department_id 값이 null인 결과값 출력

  • is not null
    SELECT *
    FROM EMPLOYEES e
    WHERE COMMISSION_PCT IS NOT NULL
    ;
    // commission_pct 결과값이 null이 아닌것만 출력

  • order by asc : 오름차순으로 출력
    SELECT *
    FROM EMPLOYEES e
    ORDER BY FIRST_NAME ASC
    ;
    // ASC는 생략가능
  • order by desc : 내림차순으로 출력
    SELECT *
    FROM EMPLOYEES e
    ORDER BY SALARY DESC
    ;

  • sum : 합계
    SELECT sum(SALARY)
    FROM EMPLOYEES e
    ;
    // SALARY 값들의 합계를 출력

  • count() : 카운트
    SELECT COUNT(COMMISSION_PCT)
    FROM EMPLOYEES e
    ;
    // COMMISSION_PCT 결과값 갯수를 카운트하여 출력

  • avg() : 평균
    SELECT avg(SALARY)
    FROM EMPLOYEES e
    WHERE DEPARTMENT_ID = 80
    ;
    // SALARY 결과값의 평균을 계산하여 출력

  • max() : 최댓값
    SELECT MAX(SALARY)
    FROM EMPLOYEES e
    ;
    // SALARY 결과값 중 최댓값을 출력

  • min() : 최솟값
    SELECT MIN(SALARY)
    FROM EMPLOYEES e
    ;
    // SALARY 결과값 중 최솟값을 출력



dual

Oracle에서 기본으로 제공하는 dummy table로 간단하게 함수의 쓰임이나 결과값을 확인하고 싶을때 특정 테이블을 생성할 필요 없이 dual table을 이용하여 함수 값을 리턴 받을 수 있다.

  • abs : 절댓값
    SELECT ABS(-33)
    FROM dual
    ;
    // -33의 절댓값(33)을 출력

  • round() : 반올림
    SELECT ROUND(0.123), ROUND(3.5678)
    FROM dual
    ;
    // 0.123을 반올림하여 0을 출력하고
    // 3.5678을 반올림하여 4를 출력한다.

  • trunc() : 절삭
    SELECT TRUNC(1234.5678)
    FROM dual
    ;
    // 소숫점을 모두 절삭하여 1234 출력

  • trunc(n, n)
    SELECT TRUNC(1234.5678, 2)
    FROM dual
    ;
    // 소숫점 둘 째 자리까지만 출력
    // 결과값 = 1234.56

  • trunc(n, -n)
    SELECT TRUNC(1234.5678, -1)
    FROM dual
    ;
    // 소숫점 자리 모두 절삭 후
    // 정수의 일의 자리를 0으로 표기
    // 결과값 = 1230


  • concat(char1, char2), || : 문자열 연결
    SELECT CONCAT('Hello', 'Bye'), CONCAT('good', 'bad'), 'good' || 'bad'
    FROM dual
    ;
    // 결과값 = HelloBye, goodbad, goodbad

  • initcap : 첫 글자를 대문자로 표기
    SELECT INITCAP('good morning')
    FROM dual
    ;
    // 결과값 = Good Morning
  • upper(char), lower(char) : 대/소문자로 표기
    SELECT LOWER('GOOD'), UPPER('good')
    FROM dual
    ;
    // 결과값 = good, GOOD

  • LPAD(값, 총문자길이, 채움문자)
    SELECT LPAD('good', 6), LPAD('good', 7, '#'), LPAD('good', 8, 'A')
    FROM dual
    ;
    // 결과값 = good, ###good, AAAAgood

  • RPAD(값, 총문자길이, 채움문자)
    SELECT RPAD('good', 6), RPAD('good', 7, '#'), RPAD('good', 8, 'A')
    FROM dual
    ;
    // 결과값 = good, good###, goodAAAA


  • sysdate : 시간
    SELECT SYSDATE
    FROM dual
    ;
    // 현재 YY-MM-DD hh:mm:ss.000 출력

  • add_months() : n개월을 더함
    SELECT ADD_MONTHS(SYSDATE, 7)
    FROM dual
    ;
    // 현재 날짜에 7개월을 더하여 결과값 출력

  • last_day : 현재달의 마지막 날짜
    SELECT LAST_DAY(SYSDATE)
    FROM dual
    ;
    // 현재 달의 마지막 날짜를 출력 YY-MM-DD hh:mm:ss.000

SELECT SYSDATE + (INTERVAL '1' YEAR),
SYSDATE + (INTERVAL '1' MONTH),
SYSDATE + (INTERVAL '1' DAY),
SYSDATE + (INTERVAL '1' HOUR),
SYSDATE + (INTERVAL '1' MINUTE),
SYSDATE + (INTERVAL '1' SECOND)
FROM dual
;
// 순서대로 현재의 년월일시간분초에 1씩 더하여 출력


  • to_char() : 문자열 변환
    SELECT TO_CHAR(SYSDATE, 'yyyy/mm/dd')
    FROM dual
    ;

SELECT TO_CHAR(SYSDATE,'yyyymmdd'),
TO_CHAR(SYSDATE,'yyyy/mm/dd'),
TO_CHAR(SYSDATE,'yyyy-mm-dd'),
TO_CHAR(SYSDATE,'yyyy-mm-dd HH24:MI:SS')
FROM dual
;


  • to_date() : 날짜형으로 변환
    SELECT TO_DATE('2024/07/30', 'yyyy/mm/dd')
    FROM dual
    ;
  • nvl() : null값을 다른 데이터로 변경하는 함수
    SELECT FIRST_NAME , LAST_NAME ,COMMISSION_PCT,
    NVL(COMMISSION_PCT, 0) commission
    FROM EMPLOYEES e
    ;
    // COMMISSION_PCT 값 중 null값은 0으로 출력한다. AS를 입력하지 않으면 NVL(COMMISSION_PCT, 0)이렇게 그대로 출력된다.

  • decode() : switch문의 역할을 하는 함수
    SELECT *
    FROM DEPARTMENTS d
    ;
    SELECT DEPARTMENT_ID , DECODE(DEPARTMENT_ID, 20, 'MA', 60, 'IT', 90, 'EX', 'ETC')
    FROM DEPARTMENTS d
    ;
    // DEPARTMENT_ID값이 20이면 'MA', 60이면 'IT', ... 이렇게 출력된다.

  • case -when : switch문의 역할을 하는 함수
    SELECT FIRST_NAME , DEPARTMENT_ID ,
    CASE WHEN DEPARTMENT_ID = 20 THEN 'MA'
    WHEN DEPARTMENT_ID = 60 THEN 'IT'
    WHEN DEPARTMENT_ID = 90 THEN 'EX'
    ELSE 'ETC'
    END "departments"

    FROM EMPLOYEES e
    ;
    // DEPARTMENT_ID값이 20이면 'MA', 60이면 'IT', ... 이렇게 출력된다.
    // AS의 역할을 하는 END를 입력하지 않으면 오류가 발생한다.

0개의 댓글