4. SELECT문의 기본 형식

사원 정보가 들어 있는 EMP 테이블

DESC EMP;

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

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

기억장소가 절약되는 장점이 있다.

  • 고정형:

CHAR(7)은 3byte만 사용해도 7byte 만큼의 데이터가 사용된다.

사이즈가 고정인 만큼 추후에 연산 필요성이 없어 검색 및 읽기 속도가 다른 타입보다 빠르다.

회사 부서 정보가 들어 있는 DEPT 테이블

DESC DEPT;

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

좌 : EMP, 우 : DEPT


  • EMP 테이블의 DEPTNO 열이 DEPT 테이블의 DEPTNO 열을 참조하여 부서 관련 데이터를 확인할 수 있다. 즉 DEPT 테이블의 DEPTNO 열은 EMP 테이블의 외래키로 사용할 수 있다.

데이터를 조회하는 3가지 방법

  • 셀렉션(selection) : 행 단위로 원하는 데이터를 조회
  • 프로젝션(projection) : 열 단위로 원하는 데이터를 조회
  • 조인(join) : 두 개 이상의 테이블을 연결하여 하나의 테이블인 것처럼 데이터를 조회

SELECT절과 FROM절

SELECT [조회할 열1 이름], [2 이름], ..., [열N 이름] 또는 애스터리스크(*)로 전체 열
FROM [조회할 테이블 이름];
  • EMP 테이블 전체 열 조회하기
SELECT *
FROM EMP;

❗문장 끝에 세미콜론(;)을 꼭 넣자.

  • EMP 테이블 부분 열 출력
SELECT EMPNO, ENAM
FROM EMP;

중복 데이터 삭제 DISTINCT

  • 열 중복 제거하기
SELECT DISTINCT JOB, DEPTNO                        //DISTINCT DEPTNO, JOB
FROM EMP;

  • SALESMAN의 경우 JOB(직책)과 DEPTNO(부서 번호)가 모두 일치하므로 중복 데이터로 걸러져 한 번만 출력되지만 MANAGER의 경우 DEPTNO(부서 번호)가 다르기 때문에 중복 데이터가 아닙니다.

⭐ DISTINCT [열1 이름], [열2 이름] 순서를 바꾸면 열 출력 순서만 바뀌고 결과는 똑같다~

  • ALL로 중복되는 열 제거 없이 그대로 출력하기
SELECT JOB, DEPTNO          // SELECT ~~ALL~~ JOB, DEPTNO     
FROM EMP;                   // FROM EMP;

별칭 설정하기

  • SQL문에서는 최종 출력되는 열 이름을 임의로 지정할 수 있다.

  • 별칭 지정하는 방식

사용 방법설명
SAL*12+COMM ANNSAL연산 및 가공된 문장 이후 한 칸 띄우고 별칭 지정
SAL*12+COMM “ANNSAL”연산 및 가공된 문장 이후 한 칸 띄우고 별칭을 큰따옴표(” “)로 묶어 지정
SAL*12+COMM AS ANNSAL연산 및 가공된 문장 이후 한 칸 띄운 후 ‘AS’, 한 칸 뒤에 별칭 지정
SAL*12+COMM AS “ANNSAL”연산 및 가공된 문장 이후 한 칸 띄운 후 ‘AS’, 한 칸 뒤에 별칭을 큰따옴표(” “)로 묶어 지정

좌 : 별칭 지정 ❌, 우 : 별칭 지정 ⭕벼


별칭은 가독성을 위해 사용하기도 하지만 보안이나 데이터 노출 문제 때문에 사용하는 경우도 있다.

예로 별칭을 사용하지 않으면 위와 같이 계산식 자체가 열 이름에 노출되는 경우이다.

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

  • ORDER BY절은 SELECT문을 작성할 때 사용할 수 있는 여러 절 중 가장 마지막 부분에 쓴다.
SELECT [조회할 열1 이름], [2 이름], ..., [열N 이름]
FROM   [조회할 테이블 이름]
.
. (그 밖의 절)
.
ORDER BY [정렬하려는 열 이름(여러 열 지정 가능)] [정렬 옵션];
  • 정렬 옵션
  1. ASC(오름차순) : 기본값이라 정렬 옵션을 지정하지 않을 경우 ASC로 정렬
  2. DESC(내림차순)
  • 각각의 열에 ASC와 DESC 동시에 사용하기
SELECT *
FROM EMP
ORDER BY DEPTNO ASC, SAL DESC;

SELECT *
FROM EMP
ORDER BY SAL DESC, DEPTNO; //DEPTNO ASC <-- ASC는 기본값이라 생략가능

⭐ ORDER BY절은 먼저 기입하는 것에 따라 우선순위가 부여된다.

❗정렬을 하지 않으면 더 빨리 데이터 출력이 가능하고 여러 이유로 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋다.

5. 더 정확하고 다양하게 결과를 출력하는 WHERE절과 연산자

필요한 데이터만 출력하는 WHERE절

  • 특정 조건을 기준으로 원하는 을 결과가 참(true)인 경우 출력하는데 사용한다.
SELECT *
FROM EMP
WHERE ~~DEPTNO = 30;~~

AND, OR 연산자

profile
블로그 이사 중 ⭐️ || https://bebeco.tistory.com/

0개의 댓글