데이터베이스/오라클

[오라클] SQL의 조회 - SELECT문의 기본 형식

9__bin 2023. 9. 1. 11:11

SELECT

SELECT문은 데이터베이스에 보관된 데이터를 조회할 때 사용한다.

SELECT 열 이름, 출력할 데이터 하나 이상 지정, * (전체 열을 가져오는 문자) FROM 테이블이름

나는 우리말로 바꿨을 때 더 이해하기 쉬웠다.

예를들어 선택한다 무엇을? ~로부터 테이블

즉, 테이블로부터 무엇을 선택해서 조회한다!라고 생각하면 확 와닿았다. 

SELECT DEPTNO FROM EMP; --왼쪽 이미지
SELECT * FROM EMP; -- 오른쪽 이미지

 

 


 

 

DISTINCT

이때 부서번호를 조회한 결과를 보면 중복이 돼서 출력이 되는걸 볼 수 있다. 우리가 만약에 중복을 없애고 싶은 경우가 있다면 DISTINCT를 열을 선언하기 전에 붙여서 사용하면 중복을 제거할수 있다.

SELECT DISTINCT DEPTNO FROM EMP;

 

만약 열이 여러개일 때는 어떻게 될까라는 생각이 들것이다.

이때는 선택된 열들이 모두 같다면 생략이 된다!! -> 항상 이럴땐?? 이라는 생각을 가지고 한번 시도해보자.

 

 


 

 

출력 컬럼명 지정하기

맨 윗줄 출력결과를 보면 우리가 조회할 때 지정한 컬럼명이 그대로 출력되는걸 볼 수 있다.

만약에 해당 열이 의미하는 바를 한번에 알아보기 위함이나 컬럼명을 바꾸고 싶다면 

AS(alias)를 사용하거나 컬럼명 뒤에 뛰고 지정할 이름을 써주면 된다. 즉, AS는 생략이 가능하다.

 

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

SELECT
    ENAME, SAL SALLLLL, SAL*12*12 AS "내가 원하는 컬럼명"
FROM EMP;

 

 


 

 

ORDER BY

어떤 컬럼을 기준으로 정렬을 하고 싶다면! ORDER BY 컬럼 ASC, 컬럼 DESC

ASC는 오름차순 , DESC는 내림차순

기본적으로 생략이 돼있으면 ASC가 디폴트

SELECT
    DEPTNO
FROM EMP
ORDER BY DEPTNO;

SELECT
    DEPTNO
FROM EMP
ORDER BY DEPTNO ASC;

SELECT
    DEPTNO
FROM EMP
ORDER BY DEPTNO DESC;

 

 

만약에 정렬해야하는 컬럼이 여러개라면 ??

SELECT 
    DEPTNO, EMPNO
FROM EMP
ORDER BY DEPTNO;

SELECT 
    DEPTNO, EMPNO
FROM EMP
ORDER BY DEPTNO, EMPNO;

이 경우는 먼저 앞에있는 컬럼을 기준으로 정렬이되고 만약 같다면 다음 컬럼을 기준으로 정렬이된다.

(먼저 DEPTNO가 같을 때 다른 컬럼도 정렬하고 싶은데? 라는 생각이 들어서 금방 이해할 수 있었다.)

 

 

주의사항

(먼저 쿼리 실행문이 FROM - WHERE - GROUP BY - HAVING -SELECT - ORDER BY 순으로 실행됨을 기억하자)

ORDER BY는 SELECT 절이 실행이 되고 나중에 실행이 되면서 데이터가 많이 조회가 상태에서 정렬을 하게되면 많은 시간이 걸린다. 이 뜻은 서비스를 제공할 때 응답이 느려진다는 것이므로 정렬을 꼭 필요할때만 사용하자!