시퀀스 (Sequence)
1. 자동 번호 부여하는 기능을 가진 객체. nextVal 명령에 의해서 자동으로 일련번호를 리턴받는다. 번호는 기본적인 상태에서는 1부터 1씩 증가한다.
- 한번 사용할때마다 반환되는 숫자는 유니크하므로 생성한 시퀀스를 다른 목적으로 사용한 경우 그때 리턴된 번호 다음 번호부터 사용할 수 있다.
2. 형식
CREATE SEQUENCE 시퀀스명; -- 1부터 1씩 증가하는 일련번호
CREATE SEQUENCE 시퀀스명
START WITH 시작번호; -- 시작번호부터 1씩 증가하는 일련번호
CREATE SEQUENCE 시퀀스명
INCREMENT BY 증가분
START WITH 시작번호; -- 시작번호부터 증가분만큼씩 증가하는 일련번호
DROP SEQUENCE 시퀀스명; -- 시퀀스 삭제
select 시퀀스명.currVal from dual; -- 현재 사용할 수 있는 번호 확인 명령. (nextVal 명령대신 currVal 을 사용한다)
Sequence 예제)
create sequence test15Seq;
CREATE TABLE test15 (
col1 NUMBER
,col2 varchar2(10)
);
alter table test15
add constraint test15_col1_pk primary key (col1);
insert into test15 (col1, col2) values (test15Seq.nextVal, 'kim'); -- 1, kim
insert into test15 (col1, col2) values (test15Seq.nextVal, 'park'); -- 2, park
insert into test15 (col1, col2) values (test15Seq.nextVal, 'choi'); -- 3, choi
문제) city, buseo, jikwi 테이블에서 기본 테이블을 입력한다. 시퀀스 사용.
자료 수정 (UPDATE), 삭제(DELETE)
1. 형식
UPDATE 테이블명 SET 컬럼 = 신규자료, 컬럼 = 신규자료,....
WHERE 조건식;
UPDATE 테이블명 SET 컬럼 = (서브쿼리의 결과값), 컬럼 = 신규자료,....
WHERE 조건식(조건식대신 서브쿼리 이용가능);
DELETE 테이블명
WHERE 조건식(조건식대신 서브쿼리 이용가능);
※ 조건식이 없으면 모든 행이 대상으로 되어 모든 행이 변경되므로 반드시 주의할것~
2. INSERT, UPDATE, DELETE 실행 후 영구적인 적용은 COMMIT;
취소하려면 ROLLBACK;
3. 참조당하는 테이터(PK 지정된 컬럼이면서 FK에 의해 참조 당하는 컬럼)인 경우 수정, 삭제가 안될 수 있다.
자료수정 및 삭제 예제)
******************
create table test17 (
col1 number
,col2 varchar2(10)
);
insert into test17 (col1, col2) values (1, 'kim');
insert into test17 (col1, col2) values (2, 'choi');
select * from test17;
commit;
update test17 set col2 ='kang' where col1 = 2;
select * from test17;
commit;
delete test17 where col1 = 2;
select * from test17;
commit;
서브쿼리를 이용한 DML 예제)
-- EMPLOYEES 테이블 직원들의 SALARY 를 10% 인상합니다. 단, 부서명(department_name)이 'IT'인 경우만 실행.
update employees set salary = (salary * 1.1)
where department_id = (select department_id
from departments
where department_name = 'IT'
);
문제) employees 테이블에서 jobs.job_title이 'Sales Manager' 인 직원들의 salary를 해당 직무의 최고 급여(jobs.max_salary)로 수정.
단, 입사일(employees.hire_date)가 2005년 이전(해당 년도 포함) 입사자만 적용.
update employees set salary = ( select max_salary from jobs where jobs_title = 'Sales Manager')
where to_char(hire_date, 'yyyy') <= '2005';
데이터베이스 모델링 작업
1. ERD
2. CREATE TABLE
3. 제약조건
4. 기초코드입력
5. 뷰 생성
-- 조인 기반 쿼리문 작성시 뷰로 생성하면 편리하게 작업이 가능.
6. SQL 파일 작성
'Oracle > 기본문법' 카테고리의 다른 글
WRITTEN BY