ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL/ORACLE] SELECT 문
    SQL/ORACLE 2022. 12. 28. 13:28

    ■ SQL 문장 작성법

    • SQL 문은 대소문자 구분 X
    • SQL 문은 하나 이상의 줄에 입력할 수 있으며 종료문자(;)를 입력
    • 키워드는 다음 줄에 나눠 쓰거나 약어로 쓸 수 없다.
    • 절은 읽기 쉽고 편집하기 쉽도록 서로 다른 줄에 쓰는 것이 좋다.
    • 좀 더 읽기 쉬운 SQL 문을 작성하기 위해 들여쓰기 사용
    • 키워드는 대문자로 입력, 테이블 이름, 열 등은 소문자로 입력하는 것이 좋다.

    ■ SQL 기능

    명칭 설명
    프로젝션(Projection) SELECT 절에 열 이름을 지정
    선택(Selection) 조건문을 사용하여 표시할 행을 제한
    조인(Join) 둘 이상의 테이블을 연결하고 하나의 결과로 조합하여 출력


    SELECT 문
    데이터베이스에 저장된 데이터를 사용자가 원하는 형태로 검색하기 위한 언어

    ■ 구문

    SELECT *|{[DISTINCT] column|표현식 [별칭],...}
    FROM table;

    ■ * 모든 열 선택

    명칭 설명
    * SELECT 뒤에 *를 사용하여 테이블에 있는 데이터의 모든 열을 표시
    -- Y_DEPT 테이블의 모든 열에 모든 행을 표시
    SELECT *
    FROM y_dept;


    ■ 특정 열의 선택

    • SELECT 문을 사용할 때 열 이름을 쉼표로 구분하여 지정하면 테이블의 특정 열을 표시
    -- Y_DEPT 테이블의 모든 부서 번호와 위치 번호 표시
    SELECT dept_id, loc_id 
    FROM y_dept;


    ■ DISTINCT 중복 행의 제거

    명칭 설명
    DISTINCT 중복을 제거하고 표시
    -- Y_EMP 테이블에서 모든 사원의 부서번호를 중복을 제거하고 표시
    SELECT DISTINCT dept_id
    FROM y_emp;

    -- Y_EMP 테이블에서 부서번호와 직급의 중복을 제거하고 표시
    SELECT DISTINCT dept_id, position
    FROM y_emp;


    ■ 산술식의 사용

    명칭 설명
    * 곱하기
    / 나누기
    + 더하기
    - 빼기
    -- 사원의 이름, 급여 및 연간 총수입을 표시한다.
    -- 월급에 12를 곱한 후 $300의 상여금을 더하여 계산한다.
    SELECT emp_name, salary, 12*salary+300
    FROM y_emp;

    • 괄호()를 사용하여 연산자의 실행 순서를 지정
    -- 괄호를 사용하여 연산자의 실행 순서를 지정 가능
    SELECT emp_name, salary, 12*(salary+300)
    FROM y_emp;


    ■ 날짜 데이터의 연산

    -- 사원의 입사일과 입사일로부터 30일 후의 날짜를 사원번호와 함께 표시
    SELECT emp_id, hiredate, hiredate+30
    FROM y_emp;

    명칭 설명
    SYSDATE 현재의 날짜를 표시
    SESSION 세션 내에서 날짜 표현 형식을 변경
    -- 내장 함수 SYSDATE를 사용하여 현재의 날짜 표시
    SELECT SYSDATE 
    FROM dual;

    -- 세션 내에서 날짜 표현 형식을 변경
    ALTER SESSION SET nls_date_format='yyyy/mm/dd hh24:mi:ss';
    SELECT sysdate FROM dual;

    • 날짜에 정수를 더하거나 빼는 것은 일 수에 해당되므로 시간 이하의 단위계산은 하루 24시간으로 환산하여 계산
    -- 현재로부터 3시간 후와 40분 후의 시간 구하기
    SELECT sysdate, sysdate+3/24, sysdate+40/(24*60)
    FROM dual;


    ■ NULL 값의 사용과 산술식

    • NULL이 포함되는 계산식의 결과에서 주의할 사항이 있다.
    • 산술식에서 사용되는 열에서 특정 값이 NULL이면 결과 또한 NULL이 적용된다.
    -- NULL을 포함한 계산식
    SELECT emp_id, salary, comm, (salary*12)+(salary*comm)
    FROM y_emp;

    NULL이 포함되어 NULL이 나오는 모습


    ■ 열 머리글과 열 별칭(Column Alias)

    -- emp_name은 "Name", comm은 "commission", salary*12는 "Annual Salary"로 표현
    -- " "를 사용한 열은 열 머리글이 지정한 형식(대소문자, 공백 등)으로 출력
    -- comm과 같이 큰 따옴표를 사용하지 않은 열은 별칭이 대문자로 출력
    SELECT emp_name "Name", comm AS commission, salary*12 "Annual Salary"
    FROM y_emp;


    ■ 연결연산자(||)와 Q연산자

    명칭 설명
    || 다른 열, 산술식 또는 상수 값에 연결하면 좌우에 있는 열이 결합되어 하나의 열로 출력
    q 연산자 [], {}, () 또는 <> 문자 쌍 중에서 사용하기 편한 구분자를 임의로 선택하여 사용
    -- Y_EMP 테이블에서 이름과 직급을 Employee's Position으로 출력
    SELECT emp_name || position AS "Employee's Position"
    FROM y_emp;

    -- 리터럴을 사용해서 이름과 직급사이에 공백을 추가
    SELECT emp_name || ' ' || position AS "Employee's Position"
    FROM y_emp;

    -- 영문보고서 작성 시 인용부호를 하나만 사용하는 경우 에러 발생
    SELECT emp_name || ''s Salary : ' || salary AS "Employee's Position"
    FROM y_emp;

    -- 이 문제 해결을 위해 인용부호를 짝수로 써서 해결 가능
    SELECT emp_name || '''s Salary : ' || salary AS "Employee's Position"
    FROM y_emp;

    -- 오라클 10G 이상의 경우에는 Q연산자로 가능
    SELECT emp_name || q'['s Salary : ]' || salary AS "Employee's Position"
    FROM y_emp;


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

    [SQL/ORACLE] 데이터의 정렬  (0) 2022.12.29
Designed by Tistory.