반응형
SELECT절
- 데이터를 조회하는데 사용
- 기본 구성: SELECT절 + FROM절
SELECT 열_이름
FROM 테이블 이름
WHERE 조건식
GRUOP BY 열_이름
HAVING 조건식
ORDER BY 열_이름
LIMIT 숫자
*로 테이블 전체 열 출력하기
SELECT * FROM EMP;
테이블 부분 열 출력하기
SELECT EMPNO, ENAME, DEPTNO FROM EMP;
- SELECT문은 기본적으로 출력되는 데이터의 정렬 순서를 보장 X
=> 정렬을 위해서는 ORDER BY절을 이용한다. - 데이터를 제외한 SQL문의 띄어쓰기와 줄 바꿈은 명령 수행에 영향 X.
SELECT 문장의 특징
원하는 행을 선택할 수 있다.
select *
from emp
where job = 'MANAGER';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7566 JONES MANAGER 7839 81/04/02 2975 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
열 단위로 선택할 수 있다 .
select ename, job, sal, hiredate
from emp
where job = 'MANAGER';
ENAME JOB SAL HIREDATE
-------------------- ------------------ ---------- --------
JONES MANAGER 2975 81/04/02
BLAKE MANAGER 2850 81/05/01
CLARK MANAGER 2450 81/06/09
다른 테이블과 합쳐서 선택할 수 있다.
select ename, job, sal, hiredate, dname, loc
from emp inner join dept
on emp.deptno = dept.deptno
where job = 'MANAGER';
ENAME JOB SAL HIREDATE DNAME LOC
-------------------- ------------------ ---------- -------- ---------------------------- --------------------------
CLARK MANAGER 2450 81/06/09 ACCOUNTING NEW YORK
JONES MANAGER 2975 81/04/02 RESEARCH DALLAS
BLAKE MANAGER 2850 81/05/01 SALES CHICAGO
DISTINCT
SELECT문으로 데이터를 조회한 후 DISTINCT를 사용하여 중복을 제거
열이 한 개인 경우
- 같은 내용이 두 개 이상일 경우, 중복 행은 한 개만 남겨 두고 그 밖의 행은 모두 제거
SELECT DISTINCT DEPTNO FROM EMP;
열이 여러 개인 경우
- 완전 똑같은 경우가 아니면 제거하지 않는다.
SELECT DISTINCT JOB, DEPTNO FROM EMP;
JOB DEPTNO
------------------ ----------
MANAGER 20
PRESIDENT 10
CLERK 10
SALESMAN 30
ANALYST 20
MANAGER 30
MANAGER 10
CLERK 30
CLERK 20
9 rows selected.
ALL로 중복되는 열 제거 없이 그대로 출력하기
- ALL 데이터 중복을 제거하지 않고 그대로 출력한다.
- SELECT절에서 중복 설정이 없을 경우, ALL을 기본으로 사용한다.
SELECT ALL JOB, DEPTNO FROM EMP;
JOB DEPTNO
------------------ ----------
CLERK 20
SALESMAN 30
SALESMAN 30
MANAGER 20
SALESMAN 30
MANAGER 30
MANAGER 10
ANALYST 20
PRESIDENT 10
SALESMAN 30
CLERK 20
CLERK 30
ANALYST 20
CLERK 10
14 rows selected.
SELECT절 계산
별칭 달기
as 말고 다른 방법들도 있지만, as를 주로 사용한다.
SQL> select ename, job, sal * 12
2 from emp;
ENAME JOB SAL*12
-------------------- ------------------ ----------
SMITH CLERK 9600
ALLEN SALESMAN 19200
WARD SALESMAN 15000
...
14 rows selected.
SQL> select ename, job, sal * 12 as ann_sal from emp;
ENAME JOB ANN_SAL
-------------------- ------------------ ----------
SMITH CLERK 9600
ALLEN SALESMAN 19200
WARD SALESMAN 15000
JONES MANAGER 35700
...
14 rows selected.
값 채우기
값이 null값인 값 채워주기
SQL> select ename, job, sal, comm, sal * 12 + nvl(comm, 0) as ann_sal from emp;
ENAME JOB SAL COMM ANN_SAL
-------------------- ------------------ ---------- ---------- ----------
SMITH CLERK 800 9600
ALLEN SALESMAN 1600 300 19500
WARD SALESMAN 1250 500 15500
JONES MANAGER 2975 35700
MARTIN SALESMAN 1250 1400 16400
BLAKE MANAGER 2850 34200
CLARK MANAGER 2450 29400
SCOTT ANALYST 3000 36000
KING PRESIDENT 5000 60000
TURNER SALESMAN 1500 0 18000
ADAMS CLERK 1100 13200
JAMES CLERK 950 11400
FORD ANALYST 3000 36000
MILLER CLERK 1300 15600
14 rows selected.
Order by
Order by절
SELECT [조회할 열1 이름], ... ,[열N 이름]
FROM [조회할 테이블 이름]
...
ORDER BY [정렬하려는 열 이름(여러 열 지정 가능)] [ ASC(default) / DESC];
SQL> select *
2 from emp
3 order by hiredate;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7566 JONES MANAGER 7839 81/04/02 2975 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7839 KING PRESIDENT 81/11/17 5000 10
7900 JAMES CLERK 7698 81/12/03 950 30
7902 FORD ANALYST 7566 81/12/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7876 ADAMS CLERK 7788 83/01/12 1100 20
반응형