본문 바로가기

Oracle

[Oracle] Table의 create/insert/alter/update/delete 그리고 Sequence

[1]  Create

 

--테이블 생성: create table +테이블명
--primary key:not null(무조건 값을 입력)+unique(중복되는 값이 없음)
create table test 
(num number(5) primary key,
name varchar2(20),  --varchar2: 가변형의 문자열
score number(6,2),  --총 6자리(정수,소수포함) 중 소숫점 2자리
birth date);

--test테이블의 구조확인
desc test;

--test테이블에 전체데이터 insert해보기
insert into test values(1,'이상민',67.8,'2029-12-25');

--test테이블에 일부만 insert해보기
insert into test (num,name) values(2,'홍길동');

--데이터 전체 추가
insert into test values(5,'심슨',7766.11,sysdate);
 
--데이터 일부 추가
insert into person (num,name,hp,ipsaday) values (seq1.nextval,'김하나','031-111-111',sysdate);

--나이를 저장할 컬럼을 추가. 초기값은 무조건 null로 추가됨
alter table test add age number(5);

--주소를 저장할 컬럼을 추가. 초기값을 강남구로 지정
alter table test add addr VARCHAR2(30) default '강남구';

--주소의 문자타입이 30바이트 인데, 50으로 변경
alter table test modify addr VARCHAR2(50);

--age타입을 문자열형식으로 변경하고 초기값을 10으로 설정
--기존 null로 된건 그대로 있고 새로 insert하는것 부터 초기값이 들어감
alter table test modify age VARCHAR2(10) default '10';
 

[2] Insert_테이블에 값 입력


insert into test(num,name,age,addr) values(7,'정하연','27','서울시');
insert into test(num,name,addr) values(17,'강호동','서울시');
--최종 저장
commit;
 

[3] alter_테이블 구조변형



--age라는 컬럼을 삭제
alter table test drop column age;

--score컬럼명을 jumsoo로 변경
alter table test rename column score to jumsoo;

 

[4] update_테이블 값 수정



--수정 예시
update person set job='간호사',age=22;

--수정한 데이터 원래대로(rollback)
ROLLBACK;


--3번의 직업과 나이를 수정(백수,22)
update person set job='백수',age=22 where num=3;

 

[5] delete_테이블 데이터삭제


--전체 삭제
delete from person;

--1번 데이터만 삭제
delete from person where num=1;
 
 

[6] Sequence



--증감숫자가 최댓값에 도달하면 1.생성을 중단한다(NOCYCLE) 2.처음부터 다시생성한다(CYCLE)
--메모리에 시퀀스값을 미리 할당(CACHE) 혹은 할당하지 않음(NOCACHE)

--시퀀스 기본으로 생성_1부터 1씩 증가하는 시퀀스가 생성됨
create sequence seq1;

--다음 시퀀스값을 발생시켜 콘솔에 출력
select seq1.nextval from dual;

--현재 마지막 발생한 시퀀스값 확인
select seq1.currval from dual;

--seq1 시퀀스 삭제
drop sequence seq1;

--10부터 5씩 증가하는 시퀀스 생성 -cache 없애기
create sequence seq1 start with 10 increment by 5 nocache;

--시퀀스 발생
select seq1.nextval from dual;

--시퀀스 수정_start with는 수정 불가. 만약 maxvalue지정후 그값까지 나오면 다시 처음부터 나오도록 하고자 할경우
alter sequence seq1 increment by 10 maxvalue 100 cycle;

--seq1: 시작값-5,증가값-2,끝값-30,nocache,cycle
create sequence seq1 start with 5 increment by 2 maxvalue 30 nocache cycle;

--seq2: 시작값-1,증가값-2,nocache
create sequence seq2 start with 1 increment by 2 nocache;

--seq3: 시작값-1,증가값-1 (nocache가 기본이므로 생략가능)
create sequence seq3;

--출력
select seq1.nextval,seq2.nextval,seq3.nextval from dual;

--전체삭제
drop sequence seq1;
drop sequence seq2;
drop sequence seq3;