Oracle DB_데이터 정의어 (DDL)

JW__1.7·2022년 8월 26일
0

DB 공부일지

목록 보기
8/27

데이터 정의어 (DDL)

  • Data Query Language
  • 데이터 질의어
  • 테이블의 데이터를 조회/검색
  • 데이터베이스에 변화가 없으므로 COMMIT 없다.
    (트랜잭션의 대상이 아니다.)

DDL 형식

SELECT 칼럼1, 칼럼2, ...
  FROM 테이블
[WHERE 조건식]
[GROUP BY 그룹화]  -- 통계 관련 함수 뽑을 때 (합계, 평균, 최소최대값 등...)
[HAVING 그룹화_조건식]
[ORDER BY 정렬]

DDL 실행 순서

⑤ SELECT 칼럼
① FROM 테이블
② WHERE 조건식
③ GROUP BY 그룹화
④ HAVING 그룹화 조건식
⑥ ORDER BY 정렬기준

모든 칼럼 : *

사원 테이블의 모든 칼럼 조회하기

  • 중요! 실무에서는 * 사용 금지이다. 성능에 문제 있다.
SELECT *
  FROM EMPLOYEE;

모든 칼럼이 필요하면 모두 명시

SELECT EMP_NO, NAME, DEPART, POSITION, GENDER, HIRE_DATE, SALARY
  FROM EMPLOYEE;

중복 제거 : DISTINCT

부서 테이블에서 지역명 조회하기
단, 동일한 지역은 한 번만 조회하기

SELECT DISTINCT LOCATION
  FROM DEPARTMENT;

NULL 유무

  • IS NULL NULL이다
  • IS NOT NULL NULL 아니다

사원 테이블에서 성별이 없는 사원 조회하기

SELECT EMP_NO, NAME, DEPART, POSITION, GENDER, HIRE_DATE, SALARY
  FROM EMPLOYEE
 WHERE GENDER IS NULL;

만능문자(WILD CARD)

  • % : 모든 문자, 글자수 제한 없음
  • _ : 모든 문자, 한 글자로 제한
  • 연산자 : LIKE , NOT LIKE

예시

  • 김으로 시작하는 이름 찾기 : 김%
  • 김으로 끝나는 이름 찾기 :%김
  • 김을 포함하는 이름 찾기 : %김%

사원 테이블에서 사원번호가 1로 시작하는 사원 조회하기

SELECT EMP_NO, NAME, DEPART, POSITION, GENDER, HIRE_DATE, SALARY
  FROM EMPLOYEE
 WHERE EMP_NO LIKE '1%';

ORDER BY절

  • ASC : 오름차순 정렬, 생략 가능
  • DESC : 내림차순 정렬

사원 테이블에서 사원명의 가나다순으로 조회하기

SELECT EMP_NO, NAME, DEPART, POSITION, GENDER, HIRE_DATE, SALARY
  FROM EMPLOYEE
 ORDER BY NAME ASC;

사원 테이블에서 급여가 높은 순서로 조회하기

SELECT EMP_NO, NAME, DEPART, POSITION, GENDER, HIRE_DATE, SALARY
  FROM EMPLOYEE
 ORDER BY SALARY DESC;

WHERE절과 ORDER BY절 함께 사용

  • WHERE절 먼저, ORDER BY절 나중에

사원 테이블에서 급여가 5000000 이상인 사원들을 고용된순으로 조회하기

SELECT EMP_NO, NAME, DEPART, POSITION, GENDER, HIRE_DATE, SALARY
  FROM EMPLOYEE
 WHERE SALARY >= 5000000
 ORDER BY HIRE_DATE;

SELECT문 처리 순서

/* 3 */  SELECT EMP_NO, NAME, DEPART, POSITION, GENDER, HIRE_DATE AS HD, SALARY
/* 1 */   FROM EMPLOYEE
/* 2 */  WHERE SALARY >= 5000000
/* 4 */  ORDER BY HD;

0개의 댓글