[오라클] 테이블 생성 삭제 Oracle

1. 테이블 관리
가. 데이터 유형
데이터 유형의 종류
아래 예문의 데이터 유형 중에는 Column의 데이터 유형은 문자, 숫자, DATE가 있습니다
SQL> create table member(
no number not null,
1 name varchar2(10) not null,
tel varchar2(15),
addr varchar2(50),
2 jumsu number,
code number not null,
gaip date
);
Table created.
(1) 문자열
·Char(size) : (size)byte 고정길이 문자 data
·Varchar2(size) : (size)byte 가변길이 문자 data
(들어가는 데이터의 양만큼 가변적으로 사용하므로 char보다 유용하게 바이트를 줄일 수 있습니다.)
(2) 숫 자
·number : 최대 38자까지의 정수, 실수, 숫자
·number (size) : (size)byte까지의 정수 숫자 기억
·number (p,s) : p=전체자릿수(소수점을 제외한), s=소수점이하 자리 수
정수/실수 숫자 기억
346.98 : number(10,3) =======>결과=346.98
234.378 : number(10,2) =======>결과= 234.38 (반올림이 됨)
(3) 날 짜
·Date : BC 4712 1,1부터 AD 4712 12,31 까지 표현 가능
(4) Long
·긴 문자열을 저장할 수 있는 데이터 타입으로 2 G byte까지의 자료를 기억할 수 있습니다.
·단 하나의 테이블에 하나만 만들 수 있습니다.
·index키로 사용할 수 없습니다.
·SQL 함수나, select시, where조건, order by, group by절에는 사용불가능
·제약조건에 사용할 수 없습니다.
(5) Raw와 Long raw
·image, video, sound등 동화상 자료를 저장할 때 쓰입니다.
·테이블 당 하나만 만들 수 있습니다.
·최대 2G(giga) 바이트까지 저장이 가능합니다.
나. 명명법
(1) 테이블 명과 column명은 반드시 문자로 시작하고 최대 30자까지만 허용됩니다.
(2) 이름은 문자 A-Z, a-z, 0-9, _(밑줄), $, #만으로 이루어져야 합니다.
(3) 동일한 사용자가 소유한 다른 객체의 이름과 중복되지 않도록 해야 합니다.
(4) Reserved word는 쓸 수 없습니다.
다. 제약조건 추가, 삭제
(1) NOT NULL 제약조건
column에 not null의 제약조건을 명시하면 그 column에 null값을 가질 수 없습니다.
member 테이블의 name column에 10byte의 가변길이 문자를 가지며not null조건을 적용합니다
SQL> CREATE TABLE MEMBER(.....,
NAME VARCHAR2(10) NOT NULL, ......);
다음 예는member 테이블의 tel column에 15byte의 문자를 갖는 가변길이 문자 column인 TEL column에 NOT NULL 제약조건을 적용하며 이 제약조건의 이름은 MEMBER_TEL_NN입니다.
SQL> CREATE TABLE MEMBER(....., TEL VARCHAR2(15)
CONSTRAINT MEMBER_TEL_NN NOT NULL, .......);
(2) UNIQUE 제약조건
·column이나 column의 조합을 고유키로 지정합니다.
·테이블에는 이 키에 대해 같은 값을 갖는 행이 하나밖에 없습니다.
·키가 한 column에 대한 것이라면 null 값을 쓸 수 있습니다.
·column이나 테이블 레벨에서 정의할 수 있습니다.
·조합된 경우에는 테이블 레벨에서 정의할 수 있습니다.
·UNIQUE 인덱스는 unique column에 대해 자동적으로 생성됩니다.
(3) PRIMARY KEY 제약조건
·테이블에 대한 primary key를 생성합니다.
·테이블 당 하나의 primary key만을 정의.
·테이블의 각 행을 고유하게 식별하는 column이나 column의 집합.
·column이나 column의 조합에 대한 유일성을 강화하고 column이 null값을 배제.
·column이나 테이블 레벨에서 정의.
·Composite primary key는 테이블 레벨에서 생성합니다.
·UNIQUE 인덱스는 primary key column에 대해 자동적으로 생성합니다.
(4) FOREIGN KEY 제약조건
·동일 테이블이나 테이블간의 primary key나 foreign key간의 관계를 설정.
·foreign key 값은 parent 테이블간의 값과 일치하거나 null이어야 합니다.
·자식 테이블에 정의하고, 참조되는 column을 갖는 테이블은 부모테이블입니다.
(5) CHECK 제약조건
·각 행이 만족해야 하는 조건을 정의.
DROP 절이 있는 ALTER TABLE 명령을 사용, DROP절의 CASCADE 옵션은
종속적인 다른 제약조건도 삭제시킵니다.
ALTER TABLE 테이블 명
DROP PRIMARY KEY | UNIQUE (column)
CONSTRAINT 제약조건 [CASCADE];
SQL> alter table member
2 drop primary key cascade;
테이블이 변경되었습니다.
ADD나 DROP 절이 있는 ALTET TABLE 명령을 써서 테이블에 대한 제약조건을 추가하거나 삭제할 수 있습니다. (반드시 상대 테이블의 기본키가 지정되어 있어야 외래키(foreign key)로 수정이 됩니다.)
ALTER TABLE 테이블 명
ADD [CONSTRAINT 제약조건명]
type (column);
SQL> alter table member
2 add constraint member_code_fk
3 foreign key (code)
4 references circle(code);
테이블이 변경되었습니다.
SQL> desc member
이름 Null? 유형
------------------------------- -------- ----
NO NOT NULL NUMBER
NAME NOT NULL VARCHAR2(10)
TEL VARCHAR2(15)
ADDR VARCHAR2(50)
JUMSU NUMBER
CODE NOT NULL NUMBER
GAIP DATE
(6)제약조건 Enable, Disable시키기
ALTER TABLE 테이블 명
DISABLE | ENABLE CONSTRAINT 제약조건 [CASCADE];
라. 테이블 생성, 삭제
(1) 테이블 생성
CREATE TABLE 명령을 실행하여 데이터를 저장할 테이블구조를 만든 다음 display합니다.
CREATE TABLE 테이블이름
(column datatype [DEFAULT 식] [column제약조건].
.....
[테이블 제약조건]);
SQL> create table member (
no number constraint member_no_nn not null,
name varchar2(10) constraint member_name_nn not null,
tel varchar2(15),
addr varchar2(50),
jumsu number,
code number constraint member_code_nn not null,
gaip date
);
SQL> desc member
이름 Null? 유형
------------------------------- -------- ----
NO NOT NULL NUMBER
NAME NOT NULL VARCHAR2(10)
TEL VARCHAR2(15)
ADDR VARCHAR2(50)
JUMSU NUMBER
CODE NOT NULL NUMBER
GAIP DATE
테이블이 생성되었습니다.
(2) 테이블 명 변경과 TRUNCATE
RENAME 명령은 테이블, 뷰, sequence, synonym의 이름을 수정하는 데에 사용하며, TRUNCATE 명령은 테이블의 모든 행을 삭제하고 테이블이 사용한 저장 공간을 해제하는데 사용합니다.
RENAME 명령
RENAME 이전이름 TO 새로운 이름;
rename 명령을 실행하여 member 테이블 이름을 다른 menber 테이블 이름으로 수정 한다음 display합니다.
SQL> rename emp to renber;
테이블명이 바뀌었습니다.
TRUNCATE 명령
TRUNCATE TABLE 테이블명;
SQL> rename member to renber;
테이블명이 바뀌었습니다.
SQL> select * from renber;
NO NAME TEL ADDR JUMSU CODE GAIP
----------------------------------------------------------------
1 이정석 324-7912 서울 종로구 창신동 14-1 80 103 99/09/01
2 강호식 298-4871 서울 관악구 신림3동 45-2 70 104 98/08/29
..........
15 이석준383-3939 성남시 분당구 내정동 4-5 99 102 96/08/30
19 개의 행이 선택되었습니다.
truncate 실행명령어를 실행하여 테이블들 중에 mm테이블 이름을 삭제하여 display할 경우 "선택된 레코드가 없습니다."라고 메시지가 나옵니다..
SQL> truncate table mm;
테이블이 잘렸습니다.
SQL> select * from mm;
선택된 레코드가 없습니다.
(3)테이블 삭제
(가)DROP TABLE 명령은 table의 자체를 삭제.
(나)테이블을 삭제하면 테이블의 모든 데이터 및 관련된 모든 인덱스가 없어짐.
(다)CASCADE CONSTRAINTS 옵션은 종속적인 참조 무결성 제약조건도 삭제.
DROP TABLE 테이블 [CASCADE CONSTRAINT];
SQL> DROP TABLE MEMBER;
테이블이 삭제되었습니다.

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://happy2ni.egloos.com/tb/2837930 [도움말]

덧글

  • 최자 2007/11/30 13:45 # 답글

    좋은글 잘 보고 갑니다 퍼갈께요 ^^
덧글 입력 영역


문화꽃 키우기