Peony의 기록 창고 🌼
반응형

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

반응형
profile

Peony의 기록 창고 🌼

@myeongju