다음 내용들은
책 제목 : 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 테이블을 구성하는 열의 설명은 아래와 같다.
열 이름 | 열 의미 | 데이터 종류 | 설명 |
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;
'책 리뷰 > Doit! 오라클로 배우는 데이터베이스 입문' 카테고리의 다른 글
[Chapter5] Do it! 오라클로 배우는 데이터베이스 입문 - WHERE절과 연산자 (0) | 2021.09.25 |
---|---|
[Chapter2] Do it! 오라클로 배우는 데이터베이스 입문 - 관계형 데이터베이스와 오라클 데이터베이스 (0) | 2021.09.18 |
[Chapter1] Do it! 오라클로 배우는 데이터베이스 입문 - 데이터베이스 (0) | 2021.09.18 |
댓글