ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 - 기초
    web coding/Oracle 2022. 3. 10. 23:29


    DESC 

    - 테이블 구조 살펴볼 때 사용

    DESC EMP


    SELECT

    - 테이블에 저장된 데이터를 검색할 때 사용

    SELECT [DISTINCT] { * | COLUMN [ALIAS]....}
    FROM TABLE
    [WHERE CONDITION]
    [GROUP BY group_by_expression] 
    [HAVING group_condition]
    [ORDER BY coulmn]

     

    1. SELECT

    - 조회하고자 하는 칼럼 명의 리스트를 나열

    - (*) 에스테리스크 기호는 '모든' 칼럼 선정

    - ALIAS(=AS)는 별칭 지정

    - DISTINCT로 지정하면 칼럼 내 중복 값을 제거해줌

    - 산술연산자( * / + - )는 숫자 또는 날짜 형태의 데이터 타입일 경우 사용 가능

     

    2. FROM

    - 조회하고자 하는 테이블 명의 리스트를 나열

     

    3. WHERE

    - 테이블에 저장된 데이터 중에서 원하는 데이터만 선택적으로 추출하기 위해 사용함

    - 비교연산자 : =(같다) >(크다) >=(크거나 같다) <(작다) <=(작거나 같다) <>, !=, ^=(같지 않다)

    - 논리연산자 : AND(두 조건 모두 만족해야 참) OR (둘 중 하나만 만족해도 참) NOT(반대되는 논리값)

     

    4. GROUP BY

    - 동일한 값을 갖는 로우들을 한 그룹으로 묶음

    - 그룹 함수 (MAX, MIN,  AVG, SUM, COUNT...)를 쓸 때 사용

     

    5. HAVING

    - 로우들의 그룹이 만족해야 하는 조건을 제시

    - [GROUP BY] 그룹 함수를 사용한 경우, 조건을 걸 때 WHERE 조건절 대신에 HAVING으로 작성

     

    6. ORDER BY

    - 로우들의 정렬 순서를 제시

    - ASC(디폴트), DESC


    PRACTICE ▼
    더보기

    1. 전체 사원 출력하기

    SELECT *
    FROM EMP

     

    2. 사원번호와 사원명만 출력하기

    SELECT EMPNO, ENAME
    FROM EMP

     

    3. 연봉 구하기

    SELECT ENAME, SAL, SAL*12
    FROM EMP

     

    4. 커미션을 더한 연봉 구하기

    SELECT ENAME, SAL, JOB, DEPTNO, COMM, SAL*12, SAL*12+COMM
    FROM EMP

     → 기존 COMM칼럼 내 NULL 값이 존재하므로 그 행은 'SAL*12+COMM' 칼럼 값이 NULL로 처리됨

     → 해결하기 위해서 NULL 값을 0으로 치환하여 계산할 것 (*NVL)

     

    5. NVL 함수 사용하기

    SELECT ENAME, SAL, JOB, DEPTNO, NVL(COMM, 0), SAL*12, SAL*12+NVL(COMM,0)
    FROM EMP

     → COMM값이 NULL이었던 로우도 계산이 되어 NULL이 아닌 결과를 나타내는 것 확인 완료

     

    6. 칼럼명에 별칭 짓기

    SELECT ENAME, SAL*12+NVL(COMM, 0) 연봉
    FROM EMP

    → AS 또는 한 칸 띄고 별칭을 입력해서 사용 가능

     

    6-1. ""로 별칭 지정하기

    SELECT ENAME, SAL*12+NVL(COMM, 0) "연 봉"
    FROM EMP

    → 별칭 사이 공백 또는 특수문자 추가 및 대소문자를 구분할 땐 [ "" ]을 사용해 별칭을 지정

     

    7.  DISTINCT로 중복된 데이터를 한 번씩만 출력하기

    SELECT DISTINCT DEPTNO
    FROM EMP

    8.  급여가 1500 이상인 사원 출력하기

    SELECT * FROM EMP
    WHERE SAL >= 1500

     

    9. 10번 부서 소속 사원 출력

    SELECT * FROM EMP
    WHERE DEPTNO = 10

     

    10. 이름이 SCOTT인 사원 출력하기

    SELECT * FROM EMP
    WHERE ENAME='SCOTT'

     → 문자 상수는 작은따옴표 [ ' ' ]로 묶어줄 것

     

    11. 입사일 81-01-01 이전인 사원만 출력하기

    -- 기본 데이터 포맷 조회
    -- SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT'
    
    -- DATE 포맷 변경
    -- ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'
    
    SELECT * FROM EMP WHERE HIREDATE <= '1981-01-01'

    → 포맷 때문에 해결하는데 오래 걸림, 포맷 설정하는 방법에 대해 나중에 포스팅할 것.

     


    12. 부서 번호가 10이고 직급이 'MANAGER'인 사원만 출력하기

    SELECT * FROM EMP
    WHERE DEPTNO IN (10) AND JOB IN ('MANAGER')

     

    13. 부서번호가 10이거나 직급이 'MANAGER'인 사원만 출력하기

    SELECT * FROM EMP
    WHERE DEPTNO IN (10) OR JOB IN ('MANAGER')

     

    14. 10번 부서에 소속된 사원만 제외하고 나머지 사원을 정보를 출력하기 - NOT을 이용한 조건 지정하기

    SELECT * FROM EMP
    WHERE DEPTNO NOT IN (10)
    -- WHERE DEPTNO <> 10

     


     15. 급여가 1000에서 1500 사이인 사원 출력하기

    SELECT * FROM EMP
    WHERE SAL>= 1000 AND SAL<=1500

    16. 급여가 1000 미만이거나 1500 초과인 사원 출력하기

    SELECT * FROM EMP
    WHERE SAL < 1000 OR SAL > 1500

     

    17. 커미션이 300이거나 500이거나 1400인 사원 출력하기

    SELECT * FROM EMP
    WHERE COMM IN (300, 500, 1400)

     18. 급여가 1000에서 1500 사이인 사원을 출력하기

    SELECT * FROM EMP
    WHERE SAL BETWEEN 1000 AND 1500

     

    19. 1982년에 입사한 사원 출력하기

    SELECT * FROM EMP
    WHERE HIREDATE BETWEEN '1982/01/01' AND '1982/12/31'

     


     19. 이름이 'F'로 시작하는 사원 출력하기

    SELECT * FROM EMP
    WHERE ENAME LIKE 'F%'

    20. 이름에 'M'이 포함되어 있는 사원 출력하기

    SELECT * FROM EMP
    WHERE ENAME LIKE '%M%'

     21. 이름이 'N'으로 끝나는 사원 검색하기

    SELECT * FROM EMP 
    WHERE ENAME LIKE '%N'

     

     

    댓글

Designed by Tistory.