본문 바로가기
책 리뷰/Doit! 오라클로 배우는 데이터베이스 입문

[Chapter4] Do it! 오라클로 배우는 데이터베이스 입문 - SELECT문의 기본 형식

by 조조링 2021. 9. 24.
728x90
반응형
다음 내용들은
책 제목 : Do it! 오라클로 배우는 데이터베이스 입문
출판사 : 이지스퍼블리싱
를 참고하여 작성하였음을 미리 말씀드립니다! ( 사진에 링크 연결 )


04-1 실습용 테이블 살펴보기
04-2 데이터를 조회하는 3가지 방법 - 셀렉션, 프로젝션, 조인
04-3 SQL의 기본 뼈대, SELECT절과 FROM절
04-4 중복 데이터를 삭제하는 DISTINCT
04-5 한눈에 보기 좋게 별칭 설정하기
04-6 원하는 순서로 출력 데이터를 정렬하는 ORDER BY

 

 

04-1 실습용 테이블 살펴보기 

* 실습용 테이블① EMP : 사원 데이터를 보관 및 관리하는 테이블 

DESC EMP;

EMP 테이블

EMP 테이블을 구성하는 열의 설명은 아래와 같다. 

열 이름 열 의미 데이터 종류 설명
EMPNO 사원 번호 네 자리 숫자 EMP 테이블에서 각 사원의 데이터를 구분할 수 있는 유일한 값을 저장하는 열, 기본키로 사용
ENAME 사원 이름 10byte 크기의 가변형 문자열 SCOTT, JONES 등
JOB 사원 직책 9byte 크기의 가변형 문자열 MANAGER, CLERK 등
MGR 직속 상관의 사원 번호 네 자리 숫자 manager의 약어로 현재 행에 해당하는 사원의 상급자의 네 자리 사원 번호를 저장하는 열
HIREDATE 입사일 날짜 데이터 입사일을 나타내는 날짜 데이터
SAL 급여 두 자리 소수점을 포함하는 일곱 자리 숫자 800,1600,5000 등
COMM 급여 외 추가 수당 두 자리 소수점을 포함하는 일곱 자리 숫자 commission의 약어
DEPTNO 사원이 속한 부서 번호 두 자리 숫자 department number의 약어, 사원이 속해 있는 부서의 고유 번호 

* 한글은 한 글자당 2byte, 영어는 한 글자당 1byte를 차지한다. 

* 가변형 문자열 10byte라면, 문자열 데이터가 10byte보다 작은 공간을 차지할 경우에 데이터가 차지하는 공간만큼만 저장 공간을       할당한다.

* 반대로 고정형 문자열은 지정한 byte보다 작아도 저장 공간을 무조건 할당하는 방식이다. 

 

 

* 실습용 테이블② DEPT : 회사를 구성하는 부서 데이터를 관리하는 테이블

DESC DEPT;

열 이름 열 의미 데이터 종류
DEPTNO 부서 번호 두 자리 숫자
DNAME 부서 이름 14byte 크기의 가변형 문자열
LOC 부서가 위치한 지역 13byte 크기의 가변형 문자열 

=> DEPT테이블의 DEPTNO열은 각 부서 데이터를 구분하는 유일한 값이며 기본키이다. 

=> EMP테이블의 DEPTNO열이 DEPT테이블의 DEPTNO 열을 참고하여 부서 관련 데이터를 확인할 수 있다. 

=> 즉, DEPT 테이블의 DEPTNO 열은 EMP 테이블의 외래키이다. 

 

 

* 실습용 데이터③ SALGRADE : EMP테이블에서 관리하는 사원들의 급여와 관련된 테이블 

DESC SALGRADE;

열 이름 열 의미 데이터 종류
GRADE 급여 등급 숫자
LOSAL 급여 등급의 최소 급여액 숫자
HISAL 급여 등급의 최대 급여액 숫자

 


 

04-2 데이터를 조회하는 3가지 방법 - 셀렉션, 프로젝션, 조인

 

데이터를 조회하는 데 사용되는 SELECT문은 출력 데이터를 선정하는 방식에 따라 크게 3가지로 나눈다. 

 

셀렉션; 행 단위로 원하는 데이터를 조회하는 방식 ( R에서 filter 느낌)

프로젝션; 열 단위로 원하는 데이터를 조회하는 방식 ( R에서 select 느낌)

조인; 두 개 이상의 테이블을 양옆에 연결하여 마치 하나의 테이블인 것처럼 데이터를 조회하는 방식 ( R에서 join 느낌)

 

 


 

04-3 SQL의 기본 뼈대, SELECT절과 FROM절

* SELECT절과 FROM절을 기본 구성으로 SELECT문을 작성한다. 

# 기본 형식 
SELECT [조회할 열1 이름], [열2 이름], ... , [열N 이름]
FROM [조회할 테이블 이름];

** 문장 끝에는 무조건 ;(세미콜론)을 넣어준다

** 모든 열을 조회하고 싶으면 열 이름 대신에 *(애스터러스크)을 적어준다. 

 

# EMP 테이블 전체 열 조회하기 
SELECT * 
  FROM EMP;

# EMP 테이블 부분 열 조회하기
SELECT EMPNO, ENAME, DEPNO
  FROM EMP;

(좌) 전체 열 출력 결과  (우) 부분 열 출력 결과

 


 

04-4 중복 데이터를 삭제하는 DISTINCT

 

DISTINCT로 열 중복 제거하기(열이 한 개인 경우)

=> EMP의 DEPTNO만 불러오면 10,20,30 값만 있지만 중복되어 있다. (사진은 일부만 캡처)

SELECT DISTINCT DEPTNO
  FROM EMP;

=> 중복 행은 한 개만 남겨 두고, 그 밖의 행은 모두 제거가 되었다. 

 

 

DISTINCT로 열 중복 제거하기 (열이 여러 개인 경우)

SELECT DISTINCT JOB, DEPTNO
  FROM EMP;

=> 위의 결과를 보면 JOB이 MANAGER인 데이터가 3번 출력되지만, 부서 번호는 10,20,30으로 다르기 때문에 중복 데이터가 아니다. 그래서 세 행이 모두 출력되었다. 

 


 

04-5 한눈에 보기 좋게 별칭 설정하기

* 위의 출력된 테이블들을 보면 위쪽에 열 이름이 위치한다. 

* 열 이름을 임의로 지정할 수도 있고 이를 별칭이라고 한다. 

 

 

열과 연산식

SELECT ENAME, SAL, SAL*12 + COMM, COMM 
  FROM EMP;

 

=> SAL*12+COMM 식으로 연간 총수입을 계산한 열을 추가하였다. 

=> 하지만 연산 식이 열 이름으로 들어가니 제3자가 보고 이해하기 힘들다. 

=> '짧고 간단한 다른 이름'으로 알기 쉽게 출력할 때 별칭을 쓴다. 

=> 별칭을 지정하는 방식은 4가지가 있고 이 중 하나를 선택해서 사용하면 된다. 

사용 방법
SAL*12+COMM ANNSAL
SAL*12+COMM "ANNSAL"
SAL*12+COMM AS ANNSAL
SAL*12+COMM AS "ANNSAL"

 

SELECT ENAME, SAL, SAL*12+COMM AS ANNSAL, COMM
  FROM EMP;

* 열 이름이 길거나 쉽게 인식을 위해, 보안이나 데이터 노출 문제 때문에 별칭을 사용해야 할 때도 더러 있다. 

* 즉, ANNSAL이 도출되는 식을 노출시키고 싶지 않을 때 별칭을 사용하는 거죠 

 


 

04-6 원하는 순서로 출력 데이터를 정렬하는 ORDER BY

* 데이터를 정렬된 상태로 출력하기 위해 ORDER BY 절을 사용한다. 

* ORDER BY 절은 SELECT문을 작성할 때 사용할 수 있는 여러 절 중 가장 마지막 부분에 쓴다. 

* default는 ASC 오름차순 정렬 , 내림차순 정렬은 옵션에 DESC 

# 기본 형식
SELECT [조회할 열1 이름], [열2 이름], [열3 이름],...
  FROM [조회할 테이블 이름]
  .
  .
 ORDER BY [정렬하려는 열 이름(여러 열 지정 가능)] [정렬 옵션];

 

# 오름차순 정렬
SELECT *
 FROM EMP
ORDER BY SAL;

# 내림차순 정렬
SELECT *
 FROM EMP
 ORDER BY SAL DESC;
 
 # 오름차순 + 내림차순 동시에 사용
 SELECT *
  FROM EMP
 ORDER BY DEPTNO ASC, SAL DESC;
728x90
반응형

댓글