[Oracle] 기본 쿼리문 및 select문

limlim·2023년 4월 11일
0

Oracle

목록 보기
2/4
  1. 데이터 딕셔너리
    : DBMS만이 추가, 수정, 삭제가 가능하며 사용자는 조회만 가능함
  • 테이블 목록 조회하기
    select * from tab;

  • 테이블 정보 조회하기
    desc 테이블명;

  1. DML - Select 기본
  • 모든 컬럼의 데이터 가져오기
    select * from 테이블명;

  • 특정 컬럼의 데이터 가져오기
    select 컬럼명1, 컬럼명2 from 테이블명;

  1. DML - 연산자 사용하기
  • 산술 연산자
    +, -, *, /
    : 오라클에서 null값은 무한대를 의미함
    : null값이랑 숫자 더하면 null값이 나옴
    : nvl(해당값, 0)하면 null값을 0으로 바꿔줌

     ex) nvl(comm, 0) 
  • Concat 연산자
    : 문자열을 합치는 연산자
    문자열 || 컬럼 || 문자열 || 컬럼

     ex) select ename || '사원의 담당 직무는 ' || job || '입니다'
          from emp;
  • Distinct
    : select문을 통해 가져온 모든 로우 중에서 중복된 로우를 제거하는 키워드
    select distinct 컬럼명
    from 테이블명;

  1. 조건절 사용하기
  • 조건절
    select 컬럼명
    from 테이블명
    where 조건절;
    : select ~ from 까지를 통해 모든 로우를 가져오고 각 로우를 조건절과 비교하여 참인 로우만 남겨주고 거짓인 로우는 제거함
    : select ~ from ~ where 작성해주고, 테이블명/조건/데이터 순으로 작성

  • 비교 연산자
    <, >, <=, >=, =
    <>, !=, ^= (3개 같은 의미)

  1. 논리 연산자 사용하기
  • 논리 연산자
    and: 좌우 조건식이 모두 참일 경우 참
    or: 좌우 조건식이 모두 거짓일 경우 거짓
    not: 조건식의 결과를 부정
    between and: 범위 조건
    in: 항목 조건
  1. Like 연산자
  • Like 연산자
    select 컬럼명
    from 테이블명
    where 컬럼명
    like '와일드카드';

    _: 글자 하나를 의미함
    %: 글자 0개 이상을 의미함

  1. null
  • null
    : null은 정해져 있지 않은 값 혹은 무한대의 의미를 갖는 값임
    : 이 때문에 =이나 <>를 통해 컬럼의 값이 null인지 연산을 할 수가 없음
    : 이때, is null이나 is not null을 통해 null 비교가 가능함
  1. 정렬
  • 정렬
    select 컬럼명
    from 테이블명
    where 조건
    order by 컬럼명 [ASC|DESC];

    asc: 오름차순, 생략가능
    desc: 내림차순

  1. 숫자 함수
  1. 문자열 함수
  • 문자열 함수

    lower(): 대문자 -> 소문자

    upper(): 소문자 -> 대문자

    initcap(): 첫 글자만 대문자로, 나머지는 소문자로

    concat(): 문자열 연결

    length(): 문자열 길이

    lengthb(): 문자열 길이 (byte 단위)

    substr(문자열, 인덱스, 개수): 문자열 잘라내기 (주의! 인덱스는 0부터 시작이 아닌 1부터 시작)

    instr(문자열, 찾을 문자열): 문자열 찾기

    lpad(문자열, 채울 자릿수, 채울 문자열): 왼쪽에 특정 문자열로 채우기

    rpad(문자열, 채울 자릿수, 채울 문자열): 오른쪽에 특정 문자열로 채우기

    trim(문자열): 양쪽 공백 제거

    rtrim(문자열): 오른쪽 공백 제거

    ltrim(문자열): 왼쪽 공백 제거

    replace(문자열, 바꿀 문자열, 대체 문자열): 문자열 변경

  1. 날짜 함수
  • 날짜 함수

    sysdate: 현재 날짜와 시간을 반환함

    months_betweeen(날짜, 날짜): 두 날짜 간의 개월 수를 구함

    add_months(날짜, 날짜): 주어진 개월 수 만큼 더함

    to_char(날짜, 형식): 날짜와 숫자를 문자로 변환

    to_date(문자, 형식): 데이터를 날짜 형식으로 변환

  1. DECODE, CASE
  • Decode

    : 값에 따라 반환값이 결정되는 구문

    decode(컬럼명, 값1, 반환값1, 값2, 반환값2, 값3, 반환값3)

    -- 각 사원의 부서 이름을 가져온다.
     -- 10: 인사과, 20: 개발부, 30: 경영지원팀, 40: 생산부
     select empno, ename, 
         decode(deptno, 10, '인사과', 
                        20, '개발부', 
                        30, '경영지원팀', 
                        40, '생산부')
      from emp;
  • case

    : 조건에 따라 반환값이 결정되는 구문

    case when 조건식1 then 반환값1
    when 조건식2 then 반환값2
    end

     -- 직원들의 급여를 다음과 같이 인상한다.
      -- 1000 이하: 100%
      -- 1000 초과 2000미만: 50%
      -- 2000 이상: 200%
      select empno, ename,
         case when sal <= 1000 then sal*2
              when sal > 1000 and sal < 2000 then sal*1.5
              when sal >= 2000 then sal*3
         end
       from emp;
  1. 그룹함수
  • 그룹함수

    sum: 총합

    avg: 평균

    count: 로우의 수

    max: 최대값

    min: 최소값

  1. Group By
  • Group By

    : select~from~where절까지 모두 수행하여 가져온 결과를 하나의 그룹으로 묶어 총합, 평균 등을 구할 수 있음

    select 컬럼명
    from 테이블명
    where 조건절
    group by 그룹기준
    order by 정렬기준;

  1. Having
  • Having

    : Having은 Group by절의 조건이 됨

    (주의사항! where은 로우의 조건, having은 그룹의 조건)

    select 컬럼명
    from 테이블명
    where 조건절
    group by 그룹기준
    having 그룹기준에 대한 조건절;

    -- 부서별 최소 급여액이 1000 이하인 부서에서 직무가 CLERK인 사원들의 급여 총합을 구한다.
     select deptno, sum(sal)
     from emp
     where job = 'CLERK'
     group by deptno
     having min(sal) <= 1000;
profile
不怕慢,只怕站 개발자

0개의 댓글