사원의 이름, 급여, 연간 총 수입을 총 수입이 많은 것부터 작은 순으로 출력하시오.
연간 총 수입을 월급에 12를 곱한 후 100만원의 상여금을 더해서 계산하시오
SELECT ENAME 이름, SAL 급여, SAL * 12 + 100 연간총수입
FROM EMP
ORDER BY SAL;
-- '-'/공백 안되고 '_' 쓰거나 다 붙여쓰기
급여가 2000만원이 넘는 사원의 이름과 급여를 조회하는데 급여가 많은 것부터 작은 순으로 출력하시오.
SELECT ENAME 이름
, SAL 급여
FROM EMP
WHERE SAL > 2000
ORDER BY SAL DESC;
사원번호가 7788인 사원의 이름과 부서번호, 부서명을 출력하시오.
SELECT A.ENAME 이름
, A.DEPTNO 부서번호
, B.DEPTNO 부서명
FROM EMP A, DEPT B
WHERE EMPNO LIKE '7788';
--WHERE a.empno = '7788' AND a.deptno = b.deptno;
급여가 2000에서 3000 사이에 포함되지 않는 사원의 이름과 급여를 출력하시오.
SELECT ENAME 이름
, SAL 급여
FROM EMP
WHERE SAL NOT BETWEEN 2000 AND 3000;
--WHERE SAL < 2000 OR SAL >3000;
비교연산자
같다
A = B
같지 않다
A <> B, A != B
소 < 대 비교(미만 또는 초과)
A < B, A > B
소 < 대 비교(이상 또는 이하)
A <= B, A >= B
우선순위
(), NOT, AND, OR
IN : 질의 탐색을 위해 사용을 둘 이상의 표현식을 지정(NOT 연산자와 함께 사용 가능)
BETWEEN : 범위 내 모든 값을 탐색, 두 범위 한계 값을 포함
LIKE '형태' / NOT LIKE '형태'
LIKE : 컬럼 값을 지정된 패턴과 비교하여 문자 형태가 같은 Row를 검색, Wildcard를 사용해 문자 형태 지정
% : 여러 문자, _ : 한 문자 => 검색하기 위해선 ESCAPE 사용
2020년 2월 20일 부터 2022년 12월 31일 사이에 입사한 사원의 이름, 담당업무, 입사일을 출력하시오.
SELECT ENAME 이름
, JOB 담당업무
, HIREDATE 입사일
FROM EMP
WHERE hiredate BETWEEN '20/02/20' AND '22/12/31';
부서번호가 20 및 30에 속한 사원의 이름과 부서번호를 출력, 이름을 기준(내림차순)으로 출력하시오.
SELECT ENAME 이름
, DEPTNO 부서번호
FROM EMP
--WHERE deptno BETWEEN 20 AND 30
WHERE deptno IN(20,30)
ORDER BY ename DESC;
사원의 급여가 2000에서 3000사이에 포함되고 부서번호가 20 또는 30인 사원의 이름, 급여와 부서번호를 출력, 이름순(오름차순)으로 출력하시오.
SELECT ENAME 이름
, SAL 급여
, DEPTNO 부서번호
FROM EMP
WHERE SAL BETWEEN 2000 AND 3000
AND DEPTNO IN(20, 30)
ORDER BY ename;
IS NULL
IS NOT NULL
NVL(c, r) : c가 Null이 아니면 c값 Null이면 r
2008년도에 입사한 사원의 이름과 입사일을 출력하시오. (like 연산자와 와일드카드 사용)
SELECT ENAME 이름
, HIREDATE 입사일
FROM EMP
--WHERE HIREDATE LIKE '08%';
WHERE SUBSTR(HIREDATE, 1, 2) = '08';
관리자가 없는 사원의 이름과 담당 업무를 출력하시오.
SELECT ENAME 이름
, JOB 담당업무
FROM EMP
WHERE MGR IS NULL;
커미션을 받을 수 있는 자격이 되는 사원의 이름, 급여, 커미션을 출력하되 커미션을 기준으로 내림차순 정렬하여 표시하시오.
SELECT ENAME 이름
, SAL 급여
, COMM 커미션
FROM EMP
WHERE COMM IS NOT NULL
ORDER BY COMM DESC;
이름의 세번째 문자가 “우”인 사원의 이름을 표시하시오.
SELECT ENAME 이름
FROM EMP
WHERE ENAME LIKE '__우';
이름에 “우”와 “김”을 모두 포함하고 있는 사원의 이름을 표시하시오.
SELECT ENAME 이름
FROM EMP
WHERE ENAME LIKE '%민%'
AND ENAME LIKE '%김%';
담당업무가 점원, 또는 영업사원이면서 급여가 1600, 1500 또는 1300이 아닌 사원의 이름, 담당업무, 급여를 출력하시오.
SELECT ENAME 이름
, JOB 담당업무
, SAL 급여
FROM EMP
WHERE JOB IN ('점원','영업사원')
AND SAL NOT IN (1600, 1500, 1300);
ALTER TABLE EMP
ADD REMARK VARCHAR2(3000);
UPDATE EMP SET REMARK = 'Ooh~~';
입력된 REMARK 속성에 저장된 영문자를 모두 소문자/대문자/첫자대문자로 조회하시오.
SELECT LOWER(REMARK)
FROM EMP;
SELECT UPPER(remark)
FROM EMP;
SELECT INITCAP (remark)
FROM EMP;
가사의 바이트수와 글자수는?
SELECT VSIZE(REMARK) AS BYTESIZE FROM EMP;
SELECT LENGTH(REMARK)
, LENGTHB(REMARK)
FROM EMP;
SELECT LENGTH(ENAME)
, LENGTHB(ENAME)
FROM EMP;
커미션이 500 이상인 사원의 이름과 급여 및 커미션을 출력하시오.
SELECT ENAME 사원이름
, SAL 급여
, COMM 커미션
FROM EMP
WHERE COMM >= 500;
SUBSTR 함수를 사용하여 사원들의 입사한 년도와 입사한 달만 출력하시오.
SELECT ENAME 사원명
, SUBSTR(HIREDATE, 1, 2) 업무잘라낸거 --2 글자수로 잘라냄 바이트 아님
, SUBSTR(HIREDATE, 4, 2) 입사년월
FROM EMP;
SUBSTR 함수를 사용하여 4월에 입사한 사원을 출력하시오.
SELECT ENAME 사원이름
, hiredate 입사년월일
FROM EMP
WHERE SUBSTR(hiredate, 5, 1) = '4';
MOD 함수를 사용하여 사원번호가 짝수인 사람만 출력하시오.
SELECT ENAME 사원이름
, empno 사원번호
FROM EMP
WHERE MOD(empno, 2) = 0;
입사일을 년도는 2자리(YY), 월은 숫자(MON)로 표시하고 요일은 약어 (DD)로 지정하여 출력하시오.
SELECT SUBSTR(HIREDATE, 1, 2) YY
, SUBSTR(HIREDATE, 4, 2) MON
, SUBSTR(HIREDATE, 7, 2) DD
FROM EMP;
SELECT SYSDATE FROM DUAL;
--날짜 타입 >> 문자 타입
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') 날짜 FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD HH24:MI:SS') 날짜 FROM DUAL;
--문자 타입 >> 날짜 타입
SELECT TO_DATE('20190131', 'YYYY-MM-DD') FROM DUAL;
SELECT TO_DATE('20190131191420','YYYY-MM-DD HH24:MI:SS') FROM DUAL;
SELECT TO_DATE('20211212','YYYYMMDD')
, TO_DATE('20211212171000', 'YYYYMMDDHH24MISS') FROM DUAL;
SELECT TO_DATE('88/12/11', 'RR/MM/DD') "1900년대"
, TO_DATE('02/12/11', 'RR/MM/DD') "2000년대" FROM DUAL;
SELECT * FROM nls_session_parameters
WHERE parameter = 'NLS_DATE_FORMAT';