SQLD 3-2 ] DDL (DATA DEFINITION LANGUAGE)
❏ 데이터 유형
대표적인 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 은 싹 다 날려버리는거고.
댓글
이 글 공유하기
다른 글
-
SQLD 3-4 ] TCL (TRANSACTION CONTROL LANGUAGE)
SQLD 3-4 ] TCL (TRANSACTION CONTROL LANGUAGE)
2016.02.22 -
SQLD 3-3 ] DML (DATA MANIPULATION LANGUAGE)
SQLD 3-3 ] DML (DATA MANIPULATION LANGUAGE)
2016.02.22 -
SQLD 3-1 ] 관계형 데이터베이스 개요
SQLD 3-1 ] 관계형 데이터베이스 개요
2016.02.18 -
오라클 DB 설치하기
오라클 DB 설치하기
2016.02.18