Oracle/SQL

테이블생성

psys 2020. 6. 2. 18:52
728x90

테이블생성

[테이블명 규칙]

1) 컬럼명의 최대 크기는 30바이트

2) 컬럼명으로 예약어는 사용 불가

3) 컬럼명으로 문자, 숫자, _, $, #을 사용할 수 있지만 첫 글자는 문자만

4) 한 테이블에 사용가능한 컬럼은 최대 255까지

 

[테이블 생성]

구문형식

CREATE TABLE 테이블명(
	컬럼명1 DATATYPE [DEFAULT 형식]
      , 컬럼명2 DATATYPE [DEFAULT 형식]
      , ...
);

ex> ex2_1_1 테이블 생성

 CREATE TABLE ex2_1_1 (
        col1 CHAR(10) ,
        col2 VARCHAR2(10)
 );

col1은 문자타입으로 10 

col2는 가변문자타입으로 10

CHAR는 고정형으로 저장 공간의 효율화를 위해 VARCHAR타입을 사용하는 것이 바람직

INSERT INTO ex2_1_1 (col1, col2) VALUES ('abc', 'abc');

INSERT INTO를 통해 col1과 col2에 각각 값을 넣어준다.

create table ex2_2(
            col1 varchar2(3) ,  -- 디폴트 값인 byte 적용
            col2 varchar2(3 byte),
            col3 varchar2(3 char) 
);

insert into ex2_2 (col1, col2, col3 ) values('abc','abc','abc'); 

select col1
      , lengthb(col1)
      , col2 
      , lengthb(col2)   
      , col3 
      , lengthb(col3) 
from ex2_2;

select col1 , lengthb(col1) , col2 , lengthb(col2) , col3 , lengthb(col3) from ex2_2;

 

insert into ex2_2 (col1, col2, col3) values('오라클', '오라클', '오라클');

이건 오류가 난다.

한글은 한글자에 3바이트라 총 18바이트가 필요하기 때문이다.

 

insert into ex2_2 (col3) values('오라클');

위의 코딩은 오류가 나지 않는데 이는 col3을 char형태로 데이터 길이를 지정해주었기 때문이다.

 

테이블 삭제

DROP TABLE 테이블명;

 

테이블 변경

ALTER TABLE 테이블명 ADDD(컬럼명 데이터타입(사이즈));
ALTER TABLE 테이블명 MODIFY(컬럼명 데이터타입(사이즈));
ALTER TABLE 테이블명 DROP COLUMN 컬럼명
ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 바꿀컬럼명;

1) ADD

INFO 테이블에 새로운 컬럼인 INO_NO을 VARCHAR2(13) 타입으로 추가

ALTER TABLE INFO ADD(INO_NO VARCAHR2(13)); 

2) MODIFY

INFO 테이블에 INO_NO 컬럼을 VARCHAR2(3) 타입으로 수정

ALTER TABLE INFO MODIFY(INO_NO VARCHAR2(3));

3) DROP

INFO 테이블에서 INO_NO 컬럼을 삭제

ALTER TABLE INFO DROP COLUMN INO_NO;

4) RENAME

INFO 테이블에 INO_NO 컬럼을 No로 변경

 ALTER TABLE INFO RENAME COLUMN INO_NO TO No;

 

 

 

 

 

'Oracle > SQL' 카테고리의 다른 글

DML(Data Manipulation Language, 데이터조작어)  (0) 2020.06.03
제약조건  (0) 2020.06.02
시간타입과 NOTNULL  (0) 2020.06.02
오라클 제약조건 SQL  (0) 2020.06.02
숫자데이터타입  (0) 2020.06.02