반응형

❏ 데이터 유형

 

 

대표적인 4가지 데이터 유형. 이 외에도 여러 다양한 유형이 있다.

 

CHAR(4) 유형

'AA' = 'AA   '

 

VARCHAR2(4) 유형

' AA' = 'AA'

 

 

 

❏ CREATE TABLE

 

 - 테이블 생성. 

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

 

테이블 생성 시 유의사항

 1. 객체를 의미할수 있는 이름. 

 2. 다른 테이블과 중복되면 안되고, 또 테이블 내에서 칼럼명이 서로 중복되면 안됨.

 3. 테이블 이름을 지정하고 각 칼럼들은 괄호 () 로 묶어 지정한다

 4. 각 칼럼들은 콤마(,) 로 구분되고, 테이블 생성문의 끝은 ; 으로 끝난다

 5. 칼럼에 대해서는 다른테이블까지 고려해서 사용하자.

 6. 칼럼 뒤에 데이터타입 은 꼭 써야하고

 7. 반드시 이름은 '문자'로 시작해야한다. 숫자시작 안됨!

 8. 예약어 쓸수 없고, 특수문자 - 안된다. 되는건 _ , $ , # 이 3개 특수문자만 된다

 

 

 

칼럼명과 데이터타입 쭉쭉 쓰면서 내려가면 된다.

마지막은 제약조건 정의하는데, 이렇게 처음부터 테이블 생성할 때부터 정해놓고 만들 수도 있고

후에 테이블 다 생성 해놓고 추가할 수도 있다.

 

CONSTRAINT 제약조건명 제약조건타입 (칼럼명)  <- 기본키니까 혼자 썼지만, 외래키는 참조할데를 조금 더써준다.

 

근데, 마지막 줄 제약조건 외래키 는 안된다. 왜냐면 지금 처음 PLAYER 테이블을 만들었는데

있지도 않은 TEAM 테이블의 TEAM_ID 칼럼과 제약조건을 정하니.. (책을 따라가면서 만들었을 때의 기준)

 

 

❏ 제약조건

 

 

테이블을 생성할 때 제약조건을 반드시 기술할 필요는 없지지만,

이후에 ALTER TABLE 을 이용해서 수정해도 된다.

 

 

 

❏ 생성된 테이블의 구조 살펴보기

 

ORACLE

DESC 테이블명;

SQL Server

exec sp_help 'dbo.테이블명'
go

 

 

❏ SELECT 문장으로 테이블 복사하기!

 

ORACLE

CREATE TABLE TEAM_TEMP
AS SELECT * FROM TEAM;

 

SQL Server

SELECT * INTO TEAM_TEMP FROM TEAM;

 

TEAM_TEMP 테이블을 만드는데!

As Select 를 사용하여 TEAM 테이블의 "유형" 을 그대로 복사해서 만든다.

내용까지 복사되는건 아니고..

 

- 유의점은.. NOT NULL 까지는 복사 되는데

- 기본키, 고유키, 외래키, CHECK 등의 다른 제약조건은 적용이 안된다는 점.

 

 

❏ ALTER TABLE

 

 - 생성된 테이블의 구조를 변경한다.

 

1. ADD COLUMN

ALTER TABLE 테이블명
ADD 추가할 칼럼명 데이터 유형;

 

칼럼을 추가한다. 물론 테이블의 맨 마지막 칼럼으로 오겠지.

 

 

ADDRESS 라는 칼럼명이 추가되었다.

 

 

2. DROP COLUMN

ALTER TABLE 테이블명
DROP COLUMN 삭제할 칼럼명;

 

 

ADDRESS 칼럼이 삭제됬다.

 

 

3. MODIFY COLUMN

ALTER TABLE 테이블명
MODIFY (칼럼명1 데이터유형 [DEFALUT 식] [NOT NULL],
            (칼럼명2 ..... );
 

[DEFAULT 식], [NOT NULL]  처럼 [ ] 은 써도 되고 안써도 되고. 선택 하라는 말.

 

유의사항이 몇가지 있다.

 1. 칼럼의 크기를 늘릴 수는 있는데 줄이지는 못한다! 기존 데이터가 훼손될 수 있어서.

 2. 해당 칼럼이 NULL 값만 가지고 있거나 아무행도 없으면 칼럼의 폭을 줄일 수 있다

 3. 해당 칼럼이 NULL 값만 갖고 있으면 데이터 유형을 바꿀 수 있다.

 4. 해당 칼럼의 DEFAULT 값을 바꾸면 원래건 그대로 있고 바꾼 후 부터 적용된다

 5. 해당 칼럼에 NULL 값이 없을 경우에만 NOT NULL 을 추가할 수 있다.

 

 

 

DEFAULT, NOT NULL 순서를 바꾸면 안된다

 

 

4. RENAME COLUMN

ALTER TABLE 테이블명
RENAME COLUMN 기존 칼럼명 TO 새 칼럼명;

 

 

 

PLAYER_ID    ->   TEMP_ID 

ORACLE 에서는 칼럼명 바꾸면 제약조건도 자동으로 바뀜. 

 

 

5. DROP CONSTRAINT

ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;

 

제약조건을 삭제한다.

 

 

 

 

6. ADD CONSTRAINT

ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);
 

처음에 테이블 만들 때 제약조건 못만들었다면.

 

 

 

DROP TABLE TEAM; 을 하게되면..

PLAYER (TEAM_ID) ----- TEAM (TEAM_ID) 외래키로 참조되었기때문에

삭제를 할 수 없다고 뜬다.

 

 

7. RENAME TABLE



ORACLE

RENAME 기존테이블명 TO 바꿀테이블명;

 

SQL Server

sp_rename 기존테이블명, 바꿀테이블명;

 

 

 

 

 

8. DROP TABLE

DROP TABLE 테이블명 [CASCADE CONSTRAINT];

 

저기 옵션에 CASCADE CONSTRAINT 쓰면 관계가 있던 제약조건들 도 다 삭제해버린다는 뜻.

 

 

9. TRUNCATE TABLE

TRUNCATE TABLE 테이블명;

 

테이블 자체가 삭제되는건 아니고. 테이블 내에 있던 모든 행 (Row) 들이 다 삭제되서 다시 쓸수있게 한다.

한마디로 테이블 구조만 남겨놓고 내용들만 다 삭제하는거! DROP TABLE 은 싹 다 날려버리는거고.

 

 

 

반응형
글이 도움이 되셨다면 공감과 광고 클릭 한번 부탁드려요! :)
감사합니다 ✨