ALTER SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
□ 테이블에 새로운 데이터를 입력하거나 기존 데이터를 수정 또는 삭제하기 위한 명령어
□ 종류
○ INSERT : 새로운 데이터 입력 명령어
- INSERT INTO table [(column [, column…])]
VALUES (value [, value…]);
insert into student
values(10110, '홍길동', 'hong', '1', '8501011143098', '85/01/01', '041)638-314', 170, 70, 101, 9903);
--null입력 : 데이터 삽입을 할 필드명만 기재하여 코드작성
insert into department(deptno, dname)
values(300,'생명공학부');
--날짜형식
insert into professor(profno, name, position, hiredate, deptno)
values (9920, '최윤식', '조교수' TO_DATE('2006/01/01', 'YYYY/MM/DD'), 102);
--다중행 입력 : student 테이블의 값을 height_info 테이블에 모두 적재
insert all
into height_info values(studno,name,height)
select studno, name, height, weight from student
where grade>='2';
--Conditional : 특정테이블에 있는 데이터를 조건에 맞는 데이터만 각 테이블로 적재
insert all
when height > 170 then into height_info values(studno, name, height)
when weight > 70 then into weight_info values(studno, name, weight)
select studno, name, height, weight
from student
where grade >= '2';
○ UPDATE : 기존 데이터 수정 명령어
- UPDATE table
SET column=value [, column=value, …]
[WHERE condition];
--일반
update professor
set position = '부교수'
where profno = 9903;
--서브쿼리
update student
set(ggrade, deptno) = (select grade, deptno from student where studno = 10103)
where studno = 10201;
○ DELETE : 기존 데이터 삭제 명령어
- DELETE [FROM] table [WHERE condition1];
--단일행
delete from student where studno = 10103;
--서브쿼리
delete from student
where deptno = (select deptno from department where dname = '컴퓨터공학과');
○ MERGE : 두개의 테이블을 하나의 테이블로 병합하는 명령어
- 구조가 같은 두개의 테이블을 비교하여 하나의 테이블로 합치기 위한 데이터 조작어
- WHEN 절의 조건절에서 결과 테이블에 해당 행이 존재하면
- UPDATE 명령문에 의해 새로운 값으로 수정,그렇지 않으면
- INSERT 명령문으로 새로운 행을 삽입
- 대량의 데이터를 분석하기 위한 업무에 유용
- MERGE INTO [table][alias]
USING [table | view | subquery]alias
ON[join condition]
WHEN MATCHED THEN
UPDATE SET ……
WHEN NOT MATCHED THEN
INSERT INTO ……
VALUES ……;
* MERGE INTO : 하나의 테이블로 합치기 위한 결과 테이블
* USING : 테이블, 뷰, 서브쿼리에 대한 별명 지정
* ON : 조인 조건 지정
* WHEN MATCHED THEN : ON 절의 조인 조건을 만족하는 행 존재하면 지정된 값으로 행을 UPDATE
* WHEN NOT MATCHED THEN:ON 절의 조인 조건을 만족하지 않을 경우 새로운 행으로 INSERT
* WHEN MATCHED THEN 절과 WHEN NOT MATCHED THEN 절에서는 테이블이나 뷰 이름 대신에 USiNG 절에서 지정한 별명 사용
merge into professor p
using professor_temp f
on (p.profno = f.profno)
when matched then
update set p.position = f.position
where not matched then
insert values(f.profno, f.name, f.userid, f.position, f.sal, f.hiredate, f.comm, f.deptno);
□ 트랜잭션
○ 관계형 데이터베이스에서 실행되는 여러 개의 SQL 명령문을 하나의 논리적 작업 단위로 처리하는 개념
○ 여러 개의 명령문을 하나의 논리적인 작업단위로 처리하는 기능
○ 트랜잭셔 관리 명령어
- COMMIT : 트랜잭션의 정상적인 종료를 위한 명령어
→ 하나의 트랜잭션에서 실행되는 모든 SQL 명령문의 처리 결과가 하드디스크에 안전하게 보장되는 것을 보장
→ 처리 결과를 디스크에 영구적으로 저장
→ 해당 트랜잭션에 할당된 CPU, 메모리 같은 자원이 해제
→ 서로 다른 트랜잭션을 구분하는 기준
→ COMMIT 명령문 실행하기 전에 하나의 트랜잭션 변경한 결과를 다른 트랜잭션에서 접근할 수 없도록 방지하여 일관성 유지
- ROLLBACK : 트랜잭션의 비정상적인 중단을 위한 명령어
→ 하나의 트랜잭션에서 실행된 SQL 명령문의 처리결과를 취소
→ CPU,메모리 같은 해당 트랜잭션에 할당된 자원을 해제, 트랜잭션을 강제 종료
□ 시퀀스
○ 유일한 식별자
○ 기본 키 값을 자동으로 생성하기 위하여 일련번호 생성 객체
○ 예를 들면, 웹 게시판에서 글이 등록되는 순서대로 번호를 하나씩 할당하여 기본키로 지정하고자 할때 시퀀스를 편리하게 이용
○ 여러 테이블에서 공유 가능
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
- INCREMENT BY n : 시퀀스 번호의 증가치로 기본은 1, 일반적으로 –1사용
- START WITH n : 시퀀스 시작번호, 기본값은 1
- MAXVALUE n : 생성 가능한 시퀀스의 최대값
- MAXVALUE n : 시퀀스 번호를 순환적으로 사용하는 cycle로 지정한 경우, MAXVALUE에 도달한 후 새로 시작하는 시퀀스값
- CYCLE | NOCYCLE : MAXVALUE 또는 MINVALUE에 도달한 후 시퀀스의 순환적인 시퀀스 번호의 생성 여부 지정
- CACHE n | NOCACHE : 시퀀스 생성 속도 개선을 위해 메모리에 캐쉬하는 시퀀스 개수, 기본값은 20
○ CURRVAL : 시쿼스에서 생성된 현재번호 확인
○ NEXTVAL : 시퀀스에서 다음 번호 생성
○ CURRVAL, NEXTVAL
- INSERT, UPDATE 문에서 사용
- 서브쿼리, GROUP BY, HAVING, ORDER BYm DISTINCR와 함께 사용할 수 없음, 컬럼의 기본값으로 사용불가
sequence.CURRVAL
sequence.NEXTVAL
○ 시퀀스 정의 변경
ALTER SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
○ 시퀀스 삭제
drop sequence s_seq;
'DB > SQL_Example' 카테고리의 다른 글
데이터 무결성(By Oracle) (0) | 2024.01.22 |
---|---|
테이블 관리(By Oracle) (0) | 2024.01.22 |
서브쿼리 (By Oracle) (0) | 2024.01.22 |
조인함수 (By Oracle) (0) | 2024.01.22 |
그룹함수 (by Oracle) (1) | 2024.01.22 |