개발군싹

[ORACLE DATABASE] SELECT문(2) - 별칭(AS), 중복제거(DISTINCT), BETWEEN (1) AND (2) 본문

DB

[ORACLE DATABASE] SELECT문(2) - 별칭(AS), 중복제거(DISTINCT), BETWEEN (1) AND (2)

개발자군싹 2023. 10. 13. 00:48

DATABASE

SELECT문 컬럼 별칭(AS)

SELECT문에 컬럼을 작성하여 데이터를 출력 시 SELECT 작성문에서 컬럼 값에 '별칭'을 설정하여 원하는 컬럼명을 출력할 수 있다. 이는 컬럼에서 연산을 해야할 경우나 출력하고자 하는 컬럼의 의미를 부여하고자 할 때 사용할 수 있다.

SELECT EMP_NAME AS 사원명, SALARY 월급
FROM EMPLOYEE
WHERE SALARY >= 3500000;

별칭(AS) 을 이용한 컬럼명 변경 출력 결과

-- 별칭을 부여할때 띄어쓰기, 특수기호가 가능할까? -> ""로 묶어서 표현해주면 가능하다.
SELECT EMP_NAME AS "사 원 명"
FROM EMPLOYEE;

➡️ AS를 이용하여 별칭을 사용 할 때 띄어쓰기 또는 특수기호를 출력하고자 할 때 " " 를 이용하여 출력할 수 있다.

 

🔥부서(DEPT_CODE)가 'D5'인 직원들의 급여와 연봉을 출력하라. 

SELECT EMP_NAME, DEPT_CODE, SALARY, TO_CHAR((SALARY*12),'L999,999,999') AS YEAR_SAL, 
TO_CHAR((SALARY+(SALARY*NVL(BONUS,0)))*12,'L999,999,999') AS YEAR_BONUS_SAL FROM EMPLOYEE
WHERE DEPT_CODE = 'D5';

❗TO_CHAR('문자열','L999,999,999') 를 이용하면 위 결과와 같이 원화 표시를 하여 출력할 수 있다.

 

DISTINCT

DISTINCT는 출력하는 데이터의 중복을 제거하여 중복 데이터 중 하나의 데이터만 출력하는 예약어

-- 중복 ROW를 제거해서 출력하는 예약어 -> DISTINCT
-- SELECT DISTINCT 컬럼명 FROM 테이블명
SELECT DEPT_CODE
FROM EMPLOYEE;

--DISTINCT 예약어는 컬럼의 맨 앞에 작성해야한다.
SELECT DISTINCT DEPT_CODE
FROM EMPLOYEE
ORDER BY DEPT_CODE;

❗ORDER  BY절은 컬럼의 값에 따라 정렬해준다. 기본 정렬은 오름차순(ASC)이며, 컬럼명 뒤 DESC; 를 작성하면 내림차순 정렬을 해준다. ➡️DEPT_CODE를 오름차순으로 정렬

DISTINCT 예약어 결과 출력

➡️ EMPLOYEE 테이블은 총 23개의 ROW를 출력하는 것을 앞서 볼 수 있었다. 각 ROW의 직원들의 데이터에 DEPT_CODE가 있기에 'DISTINCT' 예약어를 사용하지 않으면 23개의 DEPT_CODE를 출력한다. 하지만 DISTINCT 예약어 사용시 중복되는 DEPT_CODE들을 모두 출력하지 않고 공통 데이터들을 모아 출력한다.

 

AND,OR || BETWEEN AND

-- AND, OR 연산자
SELECT EMP_NAME||'님의 이메일은 '||EMAIL AS MSG
FROM EMPLOYEE
WHERE SALARY>=2500000 AND SALARY<=4000000;

-- BETWEEN AND
SELECT EMP_NAME||'님의 이메일은 '||EMAIL AS MSG
FROM EMPLOYEE
WHERE SALARY BETWEEN 2500000 AND 4000000;

➡️ AND,OR 연산을 이용하여 조건문의 TRUE, FALSE를 결정할 수 있다.

첫번째 구문에서 급여(SALARY)가 200만원이상 400만원 이하의 직원의 이름과 이메일을 출력하도록 WHERE절을 작성하였다. 이렇게 두 범위의 조건을 만족해야할 경우 AND 연산을 이용하여 조건문을 작성할 수 있다.

( OR연산은 두 조건중 하나라도 만족하면 TRUE값을 반환하여 결과를 출력할 수 있는 조건문을 작성할 수 있다.)

➡️ BETWEEN AND는 AND 연산과 같이 범위를 조건문에 표현할 수 있다. BETWEEN 범위1 AND 범위2; 작성 시 해당 범위는 범위1 이상 범위2 이하를 의미하여 위와 같이 작성하여 AND 연산으로 표현하던 식을 작성할 수 있다. 

❓ '||' 연산을 이용하여 문자열을 합쳐 출력할 수 있다. JAVA에서는 String+value를 입력 시 문자열로 변환했듯이 ORACLE DB에서는 '||'를 이용하여 문자열을 결합 할 수 있다.