-- CASE 문장 : IF ~ ELSE문과 같은 기능

select * from empcopy;


-- EMPCOPY 테이블에서 부서코드를 10-ACCOUNTING, 20-RESEARCH, 30-SALES, 그 외-ETC로 선택

select ename, deptno, case deptno

 when 10 then 'accounting'

 when 20 then 'research'

 when 30 then 'sales'

 else 'etc'

end

from empcopy order by deptno asc; -- deptno 기준 오름차순 정렬 / asc 생략 가능


-- EMPCOPY 테이블에서 급여가 0~1000불 까지는 1호봉, 1000~2000불 까지는 2호봉, 2000~3000불 까지는 3호봉, 3000~4000불 까지는 4호봉, 4000불 이상은 5호봉

select ename, sal, case

 when sal>=0 and sal<=1000 then '1호봉'

 when sal between 1000 and 2000 then '2호봉'

 when sal between 2000 and 3000 then '3호봉'

 when sal between 3000 and 4000 then '4호봉'

 when sal>=4000 then '5호봉'

end

from empcopy;

'응용 SoftWare > Oracle' 카테고리의 다른 글

[내장 함수] COALESCE  (0) 2017.01.11
[내장 함수] NULLIF  (0) 2017.01.11
[내장 함수] MERGE  (0) 2017.01.11
UNIQUE  (0) 2017.01.11
SEQUENCE  (0) 2017.01.04
Posted by Hyun CHO
,

-- MERGE : 병합

select * from emp;


-- EMP 테이블 DEPTNO가 30인 사원을 포함하는 EMPTEST 테이블을 생성

create table emptest

as

select * from emp where deptno=30;


select * from emptest;

select * from emp;


delete from emp where empno=4444; -- emp 테이블에 불필요한 레코드 삭제

commit;


-- EMP 테이블을 EMPTEST 테이블로 병합

-- EMPTEST 테이블에 이미 있는 사원은 급여를 15% 인상하고,

-- EMPTEST 테이블에 없는 사원은 추가한다.

merge into emptest -- 타겟 테이블명

 using emp

 on (emptest.empno = emp.empno) -- 사원 번호를 비교 기준

when matched then -- 양쪽 사원번호가 이미 있는 경우(업데이트)

 update set emptest.sal = emptest.sal*1.15

when not matched then -- 사원번호가 없는 경우(인설트)

 insert values(emp.empno, emp.ename, emp.job, emp.mgr, emp.hiredate, emp.sal, emp.comm, emp.deptno);


select * from emptest;


-- EMP 테이블에서 담당업무가 SALESMAN이 아닌 사원을 포함한 EMP_EX 테이블을 생성한다.

create table emp_ex

as

select * from emp where job!='salesman';


select * from emp_ex;


-- EMP 테이블에서 담당업무가 SALESMAN인 사원을 포함한 EMP_SALESMAN 테이블을 생성한다.

create tavle emp_salesman

as

select * from emp where job='salesman';


select * from emp_salesman;


-- EMP_SALESMAN 테이블에 EMP_EX 테이블을 병합하되, 이미 있는 사원은 급여를 10% 인상하고, 보너스를 50% 인상하며, 없는 사원은 EMP_SALESMAN 테이블에 사원을 추가하라.

merge into emp_salesman s

 using emp_ex e

 on(s.empno = e.empno)

when matched then

 update set s.sal=s.sal*1.1, e.comm=s.comm*1.5

when not matched then

 insert values(e.empno, e.ename, e.job, e.mgr, e.hiredate, e.sal, e.comm, e.deptno);


select * from emp_salesman;

'응용 SoftWare > Oracle' 카테고리의 다른 글

[내장 함수] NULLIF  (0) 2017.01.11
[내장 함수] CASE  (0) 2017.01.11
UNIQUE  (0) 2017.01.11
SEQUENCE  (0) 2017.01.04
GROUP BY절과 HAVING절  (0) 2017.01.03
Posted by Hyun CHO
,

UNIQUE

응용 SoftWare/Oracle 2017. 1. 11. 10:26

-- 가방 판매쇼핑몰의 회원가입과 회원만 글을 쓸 수 있는 자유게시판의 테이블을 설계하여 제약조건을 설정한다.


create table membersInfo(

 memNum number(5) primary key,

 memID varchar2(12) not null,  -- unique

 memPwd varchar2(12) not null,

 memName varchar(10) not null,

 birthday date,

 zipcode number(5),

 addr1 varchar2(50),

 addr2 varchar2(30),

 email varchar2(20) not null,

 tel varchar(13) not null,

 writedate date default sysdate,

 lastvisitdate date default sysdate,

 memLevel char(1) default 'D'

);


-- memId 필드는 중복허용하지 않는다.

alter table memberInfo

add constraint UK_MEMID_MEMBERINFO unique (memId);


create table freeBoard(

 boardNum number(5) primary key,

 memId varchar2(12) not null,  -- foreign key

 subject varchar(100) not null,

 content clob not null,

 hit number(3) default 0,

 writedate date default sysdate

);


alter table freeBoard

add constraint FK_memid_freeboard

foreign key (memid) references MEMBERINFO(memberid);


select * from user_constraints;


create sequence memberInfoSqu

start with 1

increment by 1;


create sequence freeBoard

start with 1

increment by 1;


select * from user_sequences;


-- 외부파일의 쿼리문 실행

@c://fileFolder/member.ddl  -- @경로값

'응용 SoftWare > Oracle' 카테고리의 다른 글

[내장 함수] CASE  (0) 2017.01.11
[내장 함수] MERGE  (0) 2017.01.11
SEQUENCE  (0) 2017.01.04
GROUP BY절과 HAVING절  (0) 2017.01.03
그룹 함수  (0) 2017.01.03
Posted by Hyun CHO
,