728x90
반응형
SMALL

-- 001. 테이블에서 특정 열 선택하기

-- 사원 테이블에서 사원 번호와 이름과 월급을 출력해 보겠습니다.

SELECT empno, ename, sal, deptno

FROM emp;

 

-- 002. 테이블에서 모든 열 선택하기

-- 사원 테이블을 모든 열(column)들을 전부 출력해 보겠습니다.

SELECT *

FROM emp;

 

-- 테이블의 모든 컬럼을 출력하고 맨 끝에 다시 한번 특정 컬럼을 한번 더 출력해야 하는 경우가 있습니다.

-- 이 경우 *(별표) 앞에 '테이블명.'을 붙여 주어 작성하고 그 다음 한번 더 출력하고자 하는 컬럼명을 작성합니다.

SELECT dept.*, deptno FROM dept;

 

-- 003. 컬럼 별칭을 사용하여 출력되는 컬럼명 변경하기

-- 사원 테이블의 사원 번호와 이름과 월급을 출력하는데 컬럼명을 한글로 '사원 번호', '사원 이름'으로 출력해 보겠습니다.

-- 대소문자를 구분하여 컬럼 별칭을 출력하고자 할 때는 별칭 양쪽에 더블 쿼테이션 마크를 감싸 줘야합니다.

-- 컬럼 별칭에 더블 쿼테이션 마크를 사용해야 하는 경우는 다음과 같습니다.

-- 1. 대소문자를 구분하여 출력할 때

-- 2. 공백문자를 출력할 때

-- 3. 특수문자를 출력할 때($,_,#만 가능)

SELECT empno as 사원번호, ename as 사원이름, sal as "Salary"

FROM emp;

 

-- 수식을 사용할 경우 출력되는 컬럼명도 수식으로 출력됩니다. 그런데 수식명이 아닌 한글'월급'으로 컬럼명을 출력하고 싶다면

-- 수식 뒤에 as를 작성하고 컬럼 별칭을 사용하면 됩니다.

SELECT ename, sal *(12 + 3000) as 월급

FROM emp

ORDER BY 월급 desc;

 

-- 004. 연결 연산자 사용하기(||)

-- 사원 테이블의 이름과 월급을 서로 붙여서 출력해 보겠습니다.

SELECT ename || sal

FROM emp;

 

-- 연결 연산자를 이용하면 컬럼과 컬럼을 서로 연결해서 출력할 수 있습니다.

SELECT ename || '의 월급은 ' || sal || '입니다' as 월급정보

FROM emp;

 

SELECT ename ||'의 직업은' || job || '입니다' as 직업정보

FROM emp;

 

-- 005. 주옥된 데이터를 제거해서 출력하기(DISTINCT)

-- 사원 테이블에서 직업을 출력하는데 중복된 데이터를 제외하고 출력해 보겠습니다.

SELECT DISTINCT job

FROM emp;

 

-- DISTINCT 대신 UNIQUE를 사용해도 됩니다.

SELECT UNIQUE job

FROM emp;

 

-- 006. 데이터를 정렬해서 출력하기(ORDER BY)

-- 실행순서는 다음과 같다. 1) FROM 2) SELECT 3) ORDER BY

-- 이름과 월급을 출력하는데 월급이 낮은 사원부터 출력해 보겠습니다.

SELECT ename, sal

FROM emp

ORDER BY sal asc;

 

-- ORDER BY절에는 다음과 같이 컬럼을 여러 개 작성할 수도 있습니다.

SELECT ename, sal as 월급

FROM emp

ORDER BY 월급 asc;

 

-- 부서 번호를 먼저 asceding 하게 정렬하고, 부서 번호를 ascending하게 정렬된 것을 기준으로 월급을 desceding하게 정렬하고 있습니다.

SELECT ename, deptno, sal

FROM emp

ORDER BY deptno asc, sal desc;

 

-- ORDER BY절에 컬럼명 대신 숫자를 적어줄 수도 있습니다.

SELECT ename, deptno, sal

FROM emp

ORDER BY 2 ASC, 3 DESC;

 

-- 007. WHERE절 배우기 (1 - 숫자 데이터 검색)

-- 월급이 3000인 사원들의 이름, 월급, 직업을 출력해보겠습니다.

SELECT ename, sal, job

FROM emp

WHERE sal = 3000;

 

-- 월급이 3000 이상인 사원들의 이름과 월급을 출력하는 SQL 문장을 작성하면 다음과 같습니다.

SELECT ename AS 이름, sal AS 월급

FROM emp

WHERE sal >= 3000;

 

-- 08. WHERE절 배우기 (2 - 문자와 날짜 검색)

-- 이름이 SCOTT인 사원의 이름, 월급, 직업, 입사일, 부서 번호를 출력해 보겠습니다.

SELECT ename, sal, job, hiredate, deptno

FROM emp

WHERE ename = 'SCOTT';

 

-- 81년 11월 17일에 입사한 사원의 이름과 입사일을 출력합니다.

SELECT ename, hiredate

FROM emp

WHERE hiredate = '81/11/17';

 

-- 현재 접속한 세션의 날짜 형식은 NLS_SESSION_PARAMETERS

SELECT *

FROM NLS_SESSION_PARAMETERS

WHERE PARAMETER = 'NLS_DATE_FORMAT';

 

-- ALTER SESSION명령어는 현제 내가 접속한 세션의 파라미터를 변경하는 명령어입니다.

-- 세션이란 데이터베이스 유저로 로그인해서 로그아웃할 때까지의 한 단위를 말합니다.

-- 바로 이 세션의 파라미터인 NLS_DATE_FORMAT은 현재 세션에서만 유효한 파라미터입니다. SCOTT으로 접속한 상태라면 다시 로그아웃을 했다가 접속하면 NLS_DATE_FORMAT은 RR/MM/DD인 기본값으로 복귀되어 세팅됩니다.

ALTER SESSION SET NLS_DATE_FORMAT = 'RR/MM/DD';

 

-- 09. 산술 연산자 배우기(*,/,+,-)

-- 연봉이 3600 이상인 사원들의 이름과 연봉을 출력해 보겠습니다.

SELECT ename, sal*12 AS 연봉

FROM emp

WHERE sal*12 >= 36000;

 

-- 부서 번호가 10번인 사원들의 이름, 월급, 커미션, 월급 + 커미션을 출력하는 SQL입니다.

SELECT ename, sal, comm, sal + comm

FROM emp

WHERE deptno = 10;

 

-- 커미션을 NULL이 아닌 숫자로 변경해주어야 월급 + 커미션 값이 출력될 수 있습니다.

-- NVL은 NULL 데이터를 처리하는 함수입니다.

SELECT ename, sal, comm, sal + nvl(comm, 0)

FROM emp

WHERE deptno = 10;

 

-- 10~12. 비교 연산자 배우기

-- 월급이 1200 이하인 사원들의 이름과 월급, 직업, 부서 번호를 출력해 보겠습니다.

SELECT ename, sal, job, deptno

FROM emp

WHERE sal <= 1200;

 

-- 월급이 1000에서 3000 사이인 사원들의 이름과 월급을 출력해 보겠습니다.

-- BETWEEN 하한값 AND 상한값 순으로 작성해야 검색이 됩니다.

SELECT ename, sal

FROM emp

WHERE sal BETWEEN 1000 AND 3000;

 

SELECT ename, sal

FROM emp

WHERE (sal >= 1000 AND sal <= 3000);

 

-- 다음의 쿼리는 월급이 1000에서 3000사이가 아닌 사원들의 이름과 월급을 조회합니다.

SELECT ename, sal

FROM emp

WHERE sal NOT BETWEEN 1000 AND 3000;

 

SELECT ename, sal

FROM emp

WHERE (sal < 1000 OR 3000 > sal);

 

-- 1982년도에 입사한 사원들의 이름과 입사일을 조회하는 쿼리입니다.

SELECT ename, hiredate

FROM emp

WHERE hiredate BETWEEN '82/01/01' AND '82/12/31';

 

-- 이름의 첫 글자가 S로 시작하는 사원들의 이름과 월급을 출력해 보겠습니다.

-- 와일드 카드는 이 자리에 어떠한 철자가 와도 상관없고 철자의 개수가 몇 개가 되든 관계없다는 뜻입니다.

-- %는 와일드 카드(Wild Card)라고 합니다. 이퀄 연산자(=)가 아닌 LIKE 연산자를 사용해야 합니다.

SELECT ename, sal

FROM emp

WHERE ename LIKE 'S%';

 

-- 이름의 두 번째 철자가 M인 사원의 이름을 출력합니다.

-- 언더바(_)는 어떠한 철자가 와도 관계없으나 자리수는 한 자리여야 된다는 의미입니다.

SELECT ename

FROM emp

WHERE ename LIKE '_M%';

 

-- 이름의 끝 글자가 'T'로 끝나는 사원들의 이름을 출력합니다.

SELECT ename

FROM emp

WHERE ename LIKE '%T';

 

-- 이름에 A를 포함하고 있는 사원들의 이름을 출력합니다.

SELECT ename

FROM emp

WHERE ename LIKE '%A%';

 

-- 13. 비교 연산자 배우기 (IS NULL)

-- 커미션이 NULL인 사원들의 이름과 커미션을 출력해 보겠습니다.

SELECT ename, comm

FROM emp

WHERE comm IS NULL;

 

-- 14. 비교 연산자 배우기 (IN)

-- 직업이 SALESMAN, ANALYST, MANAGER인 사원들의 이름, 월급, 직업을 출력해 보겠습니다.

SELECT ename, sal, job

FROM emp

WHERE job in ('SALESMAN', 'ANALYST', 'MANAGER');

 

SELECT ename, sal, job

FROM emp

WHERE (job = 'SALESMAN' or job ='ANALYST' or job = 'MANAGER');

 

SELECT ename, sal, job

FROM emp

WHERE job NOT in ('SALESMAN', 'ANALYST', 'MANAGER');

 

SELECT ename, sal, job

FROM emp

WHERE (job != 'SALESMAN' and job != 'ANALYST' and job != 'MANAGER');

 

-- 15. 논리 연산자 배우기 (AND, OR, NOT)

-- 직업이 SALESMAN이고 월급이 1200 이상인 사원들의 이름, 월급, 직업을 출력해 보겠습니다.

SELECT ename, sal, job

FROM emp

WHERE job = 'SALESMAN' and sal >= 1200;

728x90
반응형
LIST

+ Recent posts