본문 바로가기

Oracle SQLD

table

table 만들기의 예시)
 게시판의 글을 만들자.
 1. 개념 모델링을 거친 결과 생성된 논리 모델.
 create table 자유게시판
 (
 글번호
 글제목
 작성자
 작성일
 내용
 );

 2. 물리모델링
 char는 (90) 일때 공간 90을 다 활용
 varchar2는 (90) 일때 입력된 공간만 활용
 no number(총 길이 수, 소숫점길이수) 5
 create table freeboard
 (
 no number( 5)
 ,title varchar2(90) --not null
 ,writer varchar2(90)
 ,wdate date
 ,wcnts varchar2(3000)
 );

desc [테이블 이름];
 - 테이블의 구조를 보여주는 명령어.
 예시) desc emp;

alter table : 테이블을 수정하는 명령어
 - add : 속성 추가
 - modify : 속성 수정
 - rename column [변경 속성 이름] to [변경 후 속성 이름] : 속성 이름 변경.
 - drop column : 속성 삭제.
주의* add는 column을 붙이지 않는다
예시)
alter table freeboard add(clickcount number(5, 0));
alter table freeboard rename column clickcount to viewcnt;
alter table freeboard modify title varchar2(150);
alter table freeboard drop column viewcnt;

drop table : 테이블 자체를 삭제하는 명령어.
truncate table : 테이블의 내용을 삭제하는 명령어 (테이블의 구조는 남는다.)
 예시)
drop table freeboard;
truncate table freeboard;

insert : 테이블에 데이터를 입력하는 명령어.
 - into, values
 - into의 바로 뒤에는 입력할 테이블 이름이 온다.
 - 테이블 이름의 뒤에는 입력할 속성들의 목록이 온다.
 - insert into freeboard(no title, writer, wdate, wcnts)
 - values : values의 () 안에 테이블의 속성들에 대입 할 값을 넣는다.
 - values의 ()안의 값들은 입력 할 속성 목록과 자리의 위치가 같아야 한다.
 - 속성 전체를 입력하는 경우 테이블 이름 다음에 오는 ()는 생략 가능.
예시)
insert into freeboard : freeboard에 입력을 하는 명령어 --insert와 into는 항상 같이 씀
insert into freeboard(no title, writer, wdate, wcnts) values(1, 'imsi', '김씨', to_date('20220512'), '내용');
주의 * 속성의 순서와 입력하는 값의 위치가 일치해야 한다.
예시2)
 insert into freeboard values(1, 'imsi', '노씨', to_date('20220512'), '내용은 짧게'); 
 * 테이블에 속성 갯수만큼 입력할 때는 테이블 명의 옆에 (속성)을 쓸 필요 없다.

update : 테이블 내의 데이터를 수정하는 명령어.
 - set, where와 함께 사용
 - where절 없는 update는 테이블 전체에 적용  -> 난리남.
 - update [테이블 이름] set [수정하려는 속성 이름] = [수정하려는 값]
 - set (속성이름 = 수정값). (속성 이름 = 수정 값), (속성이름 = 수정 값)...
주의 * 반드시 where절 사용해서 수정하려는 데이터를 정확히 지정 할 것
주의 * 수정 전에 select문으로 where 절을 검증
예시)
insert into freeboard (no, title, writer, wcnts)
values(2, 'test2', 'tester2', '내용은 짧게...');
insert into freeboard (no, title, writer, wcnts)
values(3, 'test3', 'tester3', '내용은 짧게...');
 select * from freeboard where no = 3;
 update freeboard set title = '테스트 update', wcnts = wcnts || 'modify가 조아', wdate = to_date('20220511'),
 writer = 'banana' where no = 3;
 update freeboard set title = '수정 테스트', writer = 'kimchi',
 wdate = to_date('20220511'), wcnts = wcnts || '내용을 수정하였습니다.'
 where wdate is null;

delete : 테이블 내의 데이터를 삭제하는 명령어.
 - from, where과 함께 사용.
 - 예) delete

truncate table : 테이블 내용 전부 삭제.
주의!!! 되돌릴 수 없다.
drop table : 테이블의 내용은 물론 테의블의 구조까지 존재 자체를 삭제 : rollback 안됨!!!

transaction
 - autocommit : 자동 DB 반영 모드.
 - autocommit off : insert, update, delete 결과가 저장되지 않는다.
 - autocommit on : insert, update, delete 결과가 자동 저장된다. *
 - set autocommit off; autocommit off로 만드는 명령어.
 - set autocommit on; autocommit on으로 만드는 명령어. *
 - 작업 결과의 취소는 autocommit off에서만 가능*
 - commit : autocommit off에서 작업 결과를 DB 반영하는 명령어.
 - rollback : autocommit off에서 작업 결과를 취소하는 명령어.

 

'Oracle SQLD' 카테고리의 다른 글

constraints  (0) 2022.06.03
group by, having  (0) 2022.06.03
nvl, nvl2, decode, case ~ when ~ then  (0) 2022.06.03
to_date, months_between, add_months, next_day, last_day, 날짜 반올림과 자르기  (0) 2022.06.03
to_char, data type  (0) 2022.05.25