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 |