ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Oracle DB] SQL 기본
    코딩일기 2022. 5. 2. 12:14

     📖 사용 가능 테이블 보기 

    select * from emp

    - 사용자가 만든 테이블을 볼 수 있음

     

     📐 테이블 구조 

    desc 테이블명

    - 테이블 구조 (이름, null, 유형)

     

     ❓ 기본 질의문 

    select [distinct] {*, column [alias] ...}
    from 테이블명
    [where query 조건]
    [order by {column, 표현식} [asc | desc]];

    - from → where → select 순서로 처리

    - { } : 이 안에서 택 1

    - [ ] : 생략 가능

    - a | b : 둘 중 하나 사용

    - distinct : 중복 제거

    - asc : 오름차순 / desc : 내림차순

     

     🔎 WHERE 

    where 조건

    - 조건을 부여하기 위해 사용

    - 비교 연산자 : = / > / >= / < / <= / != / <> (!=, <>는 같음)

    - SQL 연산자

    between ... and ... not between ... and ...
    in (list) not in (list)
    like not like
    is null is not null

    - 논리 연산자 : and / or / not

     

     ⚙️ SQL 연산자 

    - between ... and ...

    where sal between 1000 and 2000
    where sal >= 1000 and sal <= 2000
    -- 같은 동작을 함

    - in

    where a in (1, 2, 3)
    where a = 1 or a = 2 or a = 3
    -- 같은 동작을 함

    - like

    -- 임의의 문자를 포함한 문자를 찾음
    -- % : 문자 0개 이상 / _ : 문자 1개 (wildcard)
    select * from emp where ename like '%A%'     -- 이름에 A가 포함된 사람
    select * from emp where ename like 'N%'      -- 이름이 N으로 끝나는 사람
    select * from emp where ename like '_A%'     -- 이름의 2번째가 A인 사람
    select * from emp where ename not like '%A%' -- 이름에 A가 없는 사람

    - is null

    -- null인지 비교
    select * from emp where mgr is null

     

     🔑 논리 연산자 

    - a and b : a, b 둘 다 만족

    - a or b : a, b 둘 중 하나만 만족

    - not a : a 만족 X

     

     ✚ 수식 표현

    select 수식
    select sal * 12

     

     

     🔖 별칭 지정 

    select 수식 [as column_이름]
    select sal * 12 as "연봉"

    - as 사용 (생략 가능)

    - 대소문자, 공백, 한글 사용 가능 (특수문자 사용 시 " " 사용)

     

     🗂 집합 연산

    - union / intersect / minus

    - in / op any / op all / exists

    - 중복 자동 제거 (중복 허용 : all)

     

     🗃 IN

    - 서브 쿼리의 출력 결과와 하나라도 일치하면 참

    - ex. BLAKE와 같은 부서에 있는 사람

    select ename, hiredate, deptno
    from emp
    where deptno in (select sal
                     from emp
                     where ename = 'BLAKE')

     

     🤷‍♀️ ANY

    - <any : 최댓값보다 작으면 참

    - >any : 최솟값보다 크면 참

    - =any : in 연산자와 같음

    - ex. 30번 부서에서 급여를 가장 적게 받는 사원보다 더 많은 급여를 받는 사원

    select ename, sal
    from emp
    where sal >any (select sal
                    from emp
                    where deptno = 30)

     

     🙆‍♀️ ALL 

    - <all : 최솟값보다 작으면 참

    - >all : 최댓값보다 크면 참

    - ex. 30번 부서에서 급여를 가장 많이 받는 사원보다 더 많은 급여를 받는 사원

    select ename, sal
    from emp
    where sal >all (select sal
                    from emp
                    where deptno = 30)

     

     🔗 EXISTS 

    - 상호연관 서브 쿼리와 exists 연산자

    - ex. 직원이 있는 부서만 출력

    select dname, deptno
    from dept d
    where exists (select *
                  from emp e
                  where e.deptno = d.deptno)

     

    '코딩일기' 카테고리의 다른 글

    [Oracle DB] 단일행 함수 - 문자 함수  (0) 2022.05.10
    [Oracle DB] 단일행 함수 - 숫자 함수  (0) 2022.05.04
    [Python] 파일 입출력  (0) 2021.01.05

    댓글

Designed by Tistory.