[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);
--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);
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;
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;
'Oracle' 카테고리의 다른 글
[Oracle] SQL그룹함수, TO_CHAR함수, 서브쿼리 (0) | 2022.08.07 |
---|---|
[Oracle] Group함수, Having절, Cube함수, Join, View (0) | 2022.08.07 |
[Oracle] where절(조건절), NVL, UNION/UNION ALL (0) | 2022.08.07 |
[Oracle] Select문(조회),연결연산자 및 산술연산자 (0) | 2022.08.07 |