본문 바로가기
데이터베이스/Oracle

[Oracle] DDL / DML / DCL

by BGwon_C 2023. 8. 2.

테이블 생성

create table 테이블명(필드명 필드타입, 필드명 필드타입,...);

: 테이블명, 필드명 한글 가능

 

[ex]

create table 연산(

x int, -- 고정형, int는 소수이하 자른다(반올림 된다)

y number, -- 가변형, number는 소수이하 놔둔다

z number(10,3));

 

SQL> select * from tab; -- 테이블 보기

SQL> desc 연산;

 

create table dbtest(

name varchar2(15), -- char(고정형), varchar2(가변형)

age number,

height number(10, 2),

logtime date);

 

Enterprise 한글 1= 2byte

Express 한글 1= 3byte

 

 

테이블 삭제

drop table 테이블명;

drop table 테이블명 purge; 휴지통을 거치지 않고 바로 삭제 (영구 삭제)

 

flashback table 테이블명 to before drop; 복원

purge recyclebin; 휴지통비우기

select * from recyclebin; 휴지통에 테이블 정보 검색

show recyclebin;

 


 

레코드 추가

[형식]

insert into 테이블명(필드명,...) values(, ...);

insert into 테이블명 values(,...); 테이블의 필드순서가 일치하면 필드명은 생략가능

 

[ex]

insert into 연산(x, y, z) values(25, 36, 12.34567);

insert into 연산(x, y, z) values(25.34567, 36.34567, 12.34567);

insert into 연산(x, y) values(25.666, 36.88888); -- 25.666 (반올림 되서 26 나온다)

insert into 연산(z, y, x) values(1, 2, 3); -- 순서가 바뀌어도 된다

 

insert into 연산 values(25, 36, 12.34567);

-- 필드명 생략 가능하게 되면 필드를 빠짐없이 순서대로 입력해야한다

insert into 연산 values(25, 36, 1234567.3456); -- 유효숫자는 최대7자리

insert into 연산 values(25, 36, 12345678.3456); -- error

---------------------------------------------

insert into dbtest(name, age, height, logtime) values('홍길동', 25, 185.567, sysdate);

insert into dbtest(name, age, height, logtime) values('Hong', 30, 175.56, sysdate);

insert into dbtest(name, age) values('희동이', 3);

insert into dbtest(name, height) values('홍당무', 168.89);

insert into dbtest values('분홍신', 5, 123.5, sysdate);

insert into dbtest(name) values('진분홍');

 

 

레코드 수정

[형식]

update 테이블명 set 수정할 내용 where 조건

 

update dbtest set age=0 where name='홍당무';

update dbtest set age=0, height=0 where name='진분홍';

update dbtest set age=age+1;

update dbtest set age=age+1 where name='홍길동';

 

레코드 삭제

[형식]

delete 테이블명; 모든 레코드 삭제

delete 테이블명 where 조건;

 

트랜잭션

: commit을 하기 전까지의 모든 명령어

 

insert, update, delete에는 lock이 걸려있다.

commit - 갱신

rollback

- 취소

- commit한 이후의 시점으로 돌아간다

- 현재 트랜잭션이 취소된다.

 
 

시퀀스 객체

: 순차적으로 정수값을 자동으로 생성하는 객체

 

create sequence 시퀀스명

[increment by 증가값]

[start with 시작값]

[maxvalue 최대값 | minvalue 최소값]

[cycle | nocycle]

[cache | nocache]

- increment by 증가값 : 증가/감소 간격(기본값 : 1)

- start with : 시작번호(기본값 : 1)

- maxvalue/minvalue : 시퀀스의 최대/최소값 지정

- cycle/nocycle : 최대/최소값에 도달 시 반복여부 결정

- cache/nocache : 지정한 수량 만큼 메모리 생성여부 결정

(최소값 : 2, 기본값 : 20)

 

 

SQL> create sequence test increment by 2 start with 1 maxvalue 9 cycle nocache;

Sequence created.

SQL> select test.nextval from dual; -- dual 가상 테이블명

SQL> select test.currval from dual;

SQL> select * from user_sequences;

SQL> drop sequence test;

Sequence dropped.

 

: 순차적으로 정수값을 자동으로 생성하는 객체

 

create sequence 시퀀스명

[increment by 증가값]

[start with 시작값]

[maxvalue 최대값 | minvalue 최소값]

[cycle | nocycle]

[cache | nocache]

- increment by 증가값 : 증가/감소 간격(기본값 : 1)

- start with : 시작번호(기본값 : 1)

- maxvalue/minvalue : 시퀀스의 최대/최소값 지정

- cycle/nocycle : 최대/최소값에 도달 시 반복여부 결정

- cache/nocache : 지정한 수량 만큼 메모리 생성여부 결정

(최소값 : 2, 기본값 : 20)

 

 

SQL> create sequence test increment by 2 start with 1 maxvalue 9 cycle nocache;

Sequence created.

SQL> select test.nextval from dual; -- dual 가상 테이블명

SQL> select test.currval from dual;

SQL> select * from user_sequences;

SQL> drop sequence test;

Sequence dropped.

 

'데이터베이스 > Oracle' 카테고리의 다른 글

[Oracle] Select절 - group by, having  (0) 2023.08.07
[Oracle] Join(조인)  (0) 2023.08.02
[JDBC] 웹과 오라클DB 연동하기  (0) 2023.08.01
[Oracle] Select문 연습2  (0) 2023.08.01
[Oracle] Select문 연습1  (0) 2023.08.01

댓글