-- select
SELECT * FROM EMP WHERE 1!=1; -- 1 = 1 |
-- 10번 부서 사람들만 조회
SELECT * |
-- 직업이 'CLERK' 인 사람들 조회
SELECT * |
-- like 검색 (%,_)
-- 이름에 C자가 들어있는 사람을 조회
SELECT * |
-- 두번째 글자가 C로 시작하는 사람 조회
SELECT * |
-- order by절 컬럼으로 정렬을 함.(오름차순 : ascending, 내림차순 : descending)
-- 월급 오름차순으로 정렬
SELECT * FROM EMP --order by sal asc; ORDER BY SAL DESC, 2; |
-- 문제1. 20번 부서 사람들의 사원번호, 이름, 직업을 조회하시오.(별칭 줄 것)
SELECT EMPNO AS "사원번호",ENAME AS "사원명", JOB AS "직업명" |
-- 문제2. 월급이 2000 이상인 사람들의 정보를 오름차순으로 정렬하세요.
SELECT * |
-- 문제3. 이름이 M으로 시작하는 사원들을 이름순으로 출력하세요.
SELECT * |
-- 문제4. 20번 부서 사람들 직업을 내림차순으로 정렬하고, 월급의 오름차순으로
-- 정렬해서 출력하세요.
SELECT ENAME, JOB 직업, SAL |
-- NULL 검색 : is null, is not null
SELECT * |
-- distinct : 중복제거
-- 30번 부서 사람들의 직업을 출력하세요
SELECT distinct JOB--, ename 다 같지 않으면 삭제 안됨 FROM EMP WHERE DEPTNO = 30; |
-- 연봉 출력
SELECT sal*12 || '$' 연봉, ename || '이(가) 받는 월급은 ' || sal || '입니다.', 0 |
-- 날짜 비교
-- 문자(varchar2,char), 숫자(number), 날짜(date)
DESC EMP; -- describe
-- 82년부터 입사한 사람들 출력
SELECT * UPDATE EMP SET HIREDATE = '1987/07/13' WHERE EMPNO = 7876; |
-- and or
-- 직업이 ANALYST이고 월급이 3000이상
SELECT * |
-- 직업이 SALESMAN 이고 월급이 1500 이상인 사람이거나 부서번호가 30번인 사람
SELECT * |
-- not
SELECT *
FROM EMP
WHERE NOT DEPTNO = 30; // !=, ^=, <>
-- between A and B A에서 B까지 (이상 ~ 이하)
-- 월급 1000이상 2000이하 직원 출력
SELECT * |
-- where sal >= 1000 and sal <= 2000;
--where not sal between 1000 and 2000;
--IN, not in
-- 직업이 CLERK, MANAGER인 사람들 출력
select *
FROM EMP
WHERE JOB IN ('CLERK', 'MANAGER');
-- where job not in ('CLERK', 'MANAGER');
-- where job = 'CLERK' or job = 'MANAGER';
-- 연습문제 1
--(15) 이름이 B와 J사이의 모든 사원의 이름을 출력하라
SELECT ENAME 이름 |
--(22) 이름이 S로 시작하고 마지막 글자가 H인 사람의 이름을 출력하라
SELECT ENAME 이름 FROM EMP WHERE ENAME LIKE 'S%H'; |
--(28) 급여가 $1,500 이상이고, 부서번호가 30번인 사원 중 직업이 MANAGER인 사람의 급여, 부서번호,
직업을 출력하라
select sal 급여, deptno 부서번호, job 직업 FROM EMP WHERE SAL >= 1500 AND DEPTNO = 30 AND JOB = 'MANAGER'; |
--(20) 입사일이 81년도인 사람의 입사일, 이름을 출력하라
SELECT HIREDATE 입사일, ENAME 이름 |
-- where hiredate between '1981-01-01' and '1981-12-31';
-- 0시0분0초 기준이기 때문에 12월31일 2시에 들어온 사람은 적용되지 않음
/*
INSERT INTO EMP(EMPNO, HIREDATE, ENAME)
VALUES(9999, TO_DATE('1981-12-31 14:50:00','yyyy-mm-dd hh24:mi:ss'), '미스빈');
rollback;
*/
/************************** 함수 ***************************/
-- 단일행 숫자 함수
-- abs(n), ceil, floor, mod, power, round(n, 자리수), sqrt(n) 제곱근,
-- trunc(n, 자리수)
SELECT ABS(-234.32423) FROM DUAL;
SELECT CEIL(3.3), CEIL(33.33), CEIL(33.333*100)/100 FROM DUAL;
SELECT FLOOR(3.3), FLOOR(5.5) FROM DUAL;
SELECT MOD(5, 2) FROM DUAL;
SELECT POWER(5, 4) FROM DUAL;
SELECT ROUND(55.5555, 0), ROUND(55.5555, 1), ROUND(55.5555, -2) FROM DUAL;
SELECT SQRT(4) FROM DUAL;
SELECT TRUNC(28, -1) FROM DUAL;
-- 단일행 문자함수
-- chr, ascii, lower, upper, lpad, rpad, ltrim, rtrim, trim
SELECT CHR(65), ASCII('A'), ASCII('완샘') FROM DUAL;
SELECT LOWER('ABcD'), UPPER('abCd') FROM DUAL;
-- 사원명이 s로 시작하는 사람을 출력하세요
SELECT lower(ename)
FROM EMP
WHERE LOWER(ENAME) LIKE LOWER('S%');
SELECT LPAD('1234', 6), RPAD('1234', 6)||'끝' FROM DUAL;
SELECT LTRIM(' 1234'), LTRIM('아아아아졸려', '아'), TRIM(' 트림 ') FROM DUAL;
SELECT LPAD('333', 6, '0'), RPAD('333', 6, '0') FROM DUAL;
SELECT LPAD('$'||SAL, 5) FROM EMP;
-- regexp_replace(문자열, 패턴 [, 대체문자열])
SELECT REGEXP_REPLACE('123abc123', '[a-z]') FROM DUAL;
-- oracle.tahiti.com 오라클 문서
-- oracleclub.com 한국어 오라클 튜토리얼
-- w3schools.com 정규식
'Oracle DataBase > SQL' 카테고리의 다른 글
3day (0) | 2012.07.05 |
---|---|
문제1 (select) (0) | 2012.07.04 |
1day (0) | 2012.07.04 |
1차 시험 ( 2012.04.13 ) (0) | 2012.06.05 |
2차 시험 ( 2012.04.17 ) (0) | 2012.06.05 |