모든지 기록하자!

[Oracle] SELECT문과 예제 본문

Database

[Oracle] SELECT문과 예제

홍크 2021. 5. 26. 19:25
728x90

Scott 계정에 존재하는 기본 테이블과 hr 계정에 존재하는 기본 테이블로 

SELECT문과 WHERE의 사용법을 예제를 통해 알아보자

 

이번 게시물에 핵심 기능을 요약해보자

SELECT문의 형식 : 
		SELECT (값, 컬럼명(항목), 함수, SUB QUERY)
        	FROM (테이블명, SUB QUERY)
SELECT 1 FROM DUAL; --가상 테이블

SELECT * FROM emp; --emp 테이블 정보 명세

-- 현재 계정 (SCOTT) 의 테이블 정보 모두 명세
SELECT * FROM TAB;
-- ALIAS     --별칭 사이에 공백이 있는경우 ""를 반드시 사용해야한다. 
SELECT 컬럼명 AS 별칭  
FROM 테이블명;
-- || 연결연산자  --문자열은 '' 를 사용한다.  
SELECT 컬럼명 || '출력내용' || 컬럼명 || '출력내용' AS "별칭" 
FROM 테이블명;
-- distinct : 중복행 삭제
SELECT distinct 컬럼명
FROM 테이블명;
-- desc : table의 column(항목)의 명세
DESC emp;
-- NVL 함수  --NUll값은 자바로 넘어갈 때 오류가 많으므로 0으로 변경
NVL(대상컬럼, 대상컬럼이 NULL인 경우에 출력할 값)

사용 예시와 실습문제 

/*
        형식 :
            SELECT (값, 컬럼명(항목), 함수, SUB QUERY)
            FROM (테이블명, SUB QUERY)
*/

SELECT 1 FROM DUAL; --가상 테이블

SELECT * FROM emp; -- 해당 테이블(emp) 정보 출력


-- 현재 계정 (SCOTT) 의 테이블 정보 모두 명세
SELECT * FROM TAB;

SELECT empno, ename, sal 
FROM emp;

SELECT empno, ename, sal*12  -- sal은 월급 sal*12는 연봉을 뜻 한다.
FROM emp;

-- ALIAS
SELECT empno AS 사원번호, sal as "월 급", sal * 12 "일년치 월급"
FROM emp; -- 컬럼명을 AS를 이용해 별칭으로 바꿀 수 있다.

-- || 연결연산자 
SELECT ename || '의 월급은 ' || sal || '입니다.' as "이름 + 월급"
FROM emp;

-- distinct : 중복행 삭제
SELECT distinct job
FROM emp;

-- desc : table의 column(항목)의 명세
DESC emp;

--[실습문제]
--1)emp 테이블에서 사원번호, 사원이름, 월급을 출력하시오
SELECT ename, empno, sal
FROM emp;
--2)emp 테이블에서 사원이름과 월급을 출력하는데 컬럼명은 이 름, 월 급 으로 바꿔서 출력
SELECT ename as "이 름", sal as "월 급"
FROM emp;
--3)emp 테이블에서 사원번호, 사원이름, 월급, 연봉을 구하고 각각 컬럼명은
-- 사원번호, 사원이름,월급,연봉으로 출력
SELECT empno as 사원번호, ename as 사원이름, sal as 월급, sal*12 연봉
FROM emp;
--4)emp 테이블의 업무(job)를 중복되지 않게 표시
SELECT DISTINCT job
FROM emp;
--5) emp 테이블의 사원명과 업무로 연결(SMITH, CLERK)해서 표시하고
-- 컬럼명은 Employee and job으로 표시하시오
SELECT '(' || ename || ', ' || job || ')' as  "Employee and job"
FROM emp;


-- hr 계정
-- 문제1) EMPLOYEES Table의 모든 자료를 출력하여라.
SELECT  * FROM EMPLOYEES;

-- 문제2) EMPLOYEES Table의 컬럼들을 모두 출력하라.
DESC EMPLOYEES;

-- 문제3) EMPLOYEES Table에서 사원 번호, 이름, 급여, 담당업무를 출력하여라.
SELECT employee_id , first_name , salary ,  job_id
FROM EMPLOYEES;

-- 문제4) 모든 종업원의 급여를 $300증가 시키기 위해서 덧셈 연산자를 사용하고 결과에 SALARY+300을 디스플레이 합니다.
SELECT first_name, salary, salary+300 as "salary+300"
FROM EMPLOYEES;

-- 문제5) EMP 테이블에서 사원번호, 이름, 급여, 보너스, 보너스 금액을 출력하여라. 
-- (참고로 보너스는 월급 + (월급*커미션))
SELECT employee_id, first_name, salary, NVL(commission_pct * salary, 0),
        salary+NVL(commission_pct * salary, 0)
FROM EMPLOYEES;

-- NVL 함수 : NVL(대상컬럼, 대상컬럼이 NULL인 경우에 출력할 값)

-- 문제6) EMPLOYEES 테이블에서 LAST_NAME을 이름으로 SALARY을 급여로 출력하여라.
SELECT last_name 이름, SALARY 급여
FROM EMPLOYEES;

-- 문제7) EMPLOYEES 테이블에서 LAST_NAME을 Name으로 SALARY * 12를 Annual Salary(연봉)로 출력하여라
SELECT last_name Name, SALARY*12 "Annual Salary(연봉)" -- AS는 생략이 가능하다.
FROM EMPLOYEES;

-- 문제8) EMPLOYEES 테이블에서 이름과 업무를 연결하여 출력하여라. 
SELECT first_name ||', ' || job_id as "Name + job"
FROM EMPLOYEES;

-- 문제9) EMPLOYEES 테이블에서 이름과 업무를 “KING is a PRESIDENT” 형식으로 출력하여라. 
SELECT first_name || ' is a ' || job_id
FROM EMPLOYEES;

-- 문제10) EMPLOYEES 테이블에서 이름과 연봉을 “KING: 1 Year salary = 60000” 형식으로 출력하여라. 
SELECT first_name || ' : 1 Year salary =  ' || salary*12
FROM EMPLOYEES;

-- 문제11) EMPLOYEES 테이블에서 JOB을 모두 출력하라.
SELECT DISTINCT job_id
FROM EMPLOYEES;

SELECT job_title
FROM jobs;
728x90

'Database' 카테고리의 다른 글

[Oracle] ORDER BY , GROUP BY 와 예제  (0) 2021.05.26
[Oracle] WHERE절과 비교연산자와 예제  (0) 2021.05.26
[Oracle] Standard Function  (0) 2021.05.25
[Oracle] 기본 입출력  (0) 2021.05.25
[Oracle] 기본 SQL  (0) 2021.05.25
Comments