데이터 유형
- 테이블에 특정 자료를 입력할 때 받아들일 공간을 자료의 유형별로 나누는 기준
- 선언한 유형이 아닌 다른 종류의 데이터가 들어오려고 하면 데이터베이스는 에러를 발생
- CHARCTER(s)
> 고정 길이 문자열 정보
> s는 기본 길이 1바이트
> s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당된 변수 값이 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워짐
- VARCHAR(s)
> CHARACTER VARYING의 약자
> 가변 길이 문자열 정보
> s만큼 최대 길이를 갖지만 가변 길이로 조정되기 때문에 할당된 변수값의 바이트만 적용됨
- NUMERIC
> 정수, 실수 등 숫자 정보
- DATETIME
> 날짜와 시각 정보
-> CHAR 유형 : 'AA' = 'AA '
VARCHAR유형 : 'AA' != 'AA '
CREATE TABLE
CREATE TABLE 테이블이름 (
칼럼명1 DATATYPE [DEFAULT 형식],
칼럼명1 DATATYPE [DEFAULT 형식],
칼럼명1 DATATYPE [DEFAULT 형식]
);
- 테이블 생성 시에 주의해야 할 규칙
> 테이블명은 객체를 의미할 수 있는 적절한 이름을 사용 -> 단수형을 권고
> 테이블명은 다른 테이블의 이름과 중복 X
> 한 테이블 내에서는 칼럼명이 중복 X
> 테이블 이름을 지정하고 각 칼럼들은 괄호 "( )"로 묶어 지정
> 각 칼럼들은 콤마 ","로 구분
> 테이블 생성문의 끝은 항상 세미콜론 ";"으로 끝남
> 칼럼에 대해서는 다른 테이블까지 고려하여 데이터베이스 내에서는 일관성이 있게 사용하는 것이 좋음
> 칼럼 뒤에 데이터 유형은 꼭 지정
> 테이블명과 칼럼명은 반드시 문자로 시작, 벤더별로 길이에 대한 한계가 O
> 벤더에서 사전에 정의한 에약여 (Reserved word)는 쓸 수 X
> A-Z, a-z, 0-9, _, $, # 문자만 허용
> 대/소문자 구분 X, 테이블이나 칼럼명은 대문자로 만들어짐
> 제약조건이 있으면 CONSTRAINT를 이용하여 추가 O
제약조건 (CONSTRAINT)
- 데이터의 무결성을 유지하기 위한 데이터베이스의 보편적인 방법으로 테이블의 특정 칼럼에 설정하는 제약
- 제약조건의 종류
> PRIMARY KEY (기본키)
-> UNIQUE 인덱스 생성
-> 기본키 제약 = 고유키 제약 & NOT NULL 제약
> UNIQUE KEY (고유키)
-> 행 데이터를 고유하게 식별하기 위한 고유키를 정의
-> NULL 값을 가진 행 가능
> NOT NULL
-> NULL 값의 입력을 금지
-> 해당 칼럼은 입력 필수
-> CHECK의 일부분으로 이해 할 수 O
> CHECK
-> 입력할 수 잇는 값의 범위 등을 제한
-> TRUE or FALSE로 평가 할 수 있는 논리식을 지정
> FOREIGN KEY
-> 참조 무결성 제약 옵션을 선택 할 수 O
- NULL : 아직 정의되지 않은 미지의 값, 현재 데이터를 입력하지 못하는 경우
- DEFAULT : 기본값, 사전에 정의된 값
생성된 테이블 구조 확인
- ORACLE : "DESCRIBE 테이블명;", "DESC 테이블명;"
- SQL Server : "exec sp_help 'dbo.테이블명'" -> "go"
CTAS : Create Table ~ As Select ~
- SELECT 문장을 활용해서 테이블을 생성할 수 있는 방법
- 칼럼별로 데이터 유형을 다시 재정의 하지 않아도 된다는 장점
- 주의할 점 : 기존 테이블의 제약조건 중에 NOT NULL 만 새로운 복제 테이블에 적용 되고 , 기본키 고유키 외래키 등 다른 제약 조건은 없어진다 -> 제약조건을 추가하기 위해서 ALTER TABLE 기능을 사용해야함
- SQL Server : Select ~ Into ~ -> 칼럼 속성에 Identity를 사용했다면 Identity 속성까지 같이 적용 O
- ORACLE : CREATE TABLE TEAM_TEMP
AS SELECT * FROM TEAM;
- SQL Server : SELECT * INTO TEAM_TEMP FROM TEAM;
ALTER TABLE
- ADD COLUMN
> ALTER TABLE 테이블명
ADD 추가할 칼럼명 데이터 유형;
-> ORACLE : ALTER TABLE PLAYER
ADD (ADDRESS VARCHAR2(80));
-> SQL Server : ALTER TABLE PLAYER
ADD ADDRESS VARCHAR(80);
- DROP COLUMN
> ALERT TABLE 테이블명
DROP COLUMN 삭제할 칼럼명;
-> ORACLE : ALTER TABLE PLAYER
DROP COLUMN ADDRESS;
-> SQL Server : ALTER TABLE PLAYER
DROP COLUMN ADDRESS;
- MODIFY COLUMN
> 테이블의 칼럼에 대한 정의를 변경하는 명령
-> ORACLE : ALTER TABLE 테이블명
MODIFY ( 칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL],
칼럼명2 데이터유형 ... );
-> SQL Server : ALTER TABLE 테이블명
ALTER ( 칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL],
칼럼명2 데이터유형 ... );
> 해당 칼럼의 크기는 늘릴 수는 있지만 줄이지는 못함
> 해당 칼럼의 DEFAULT 값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향을 미침
> 해당 칼럼에 NULL이 없을 경우 NOT NULL 제약조건 추가
- RENAME COLUMN
> 칼렴명을 변경해야 하는 경우
ALTER TABLE 테이블명
RENAME COLUMN 변경해야 할 칼럼명 TO 새로운 칼럼명;
-> ORACLE : ALTER TABLE PLAYER
RENAME COLUMN PLAYER_ID TO TEMP_ID;
-> SQL Server : sp_rename 변경해야 할 칼럼명, 새로운 칼럼명, 'COLUMN';
sp_rename 'dbo.TEAM_TEMP.TEAM_ID', 'TEAM_TEMP_ID', 'COLUMN';
(엔터티 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있다.)
- DROP CONSTRAINT
> 제약조건을 삭제하는 명령어
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
-> (PLAYER 테이블의 외래키 제약조건 삭제)
-> ORACLE : ALTER TABLE PLAYER
DROP CONSTRAINT PLAYER_FK;
-> SQL Server : ALTER TABLE PLAYER
DROP CONSTRAINT PLAYER_FK;
- ADD CONSTRAINT
> 제약조건 추가
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);
-> (PLAYER 테이블의 TEAM_ID 칼럼이 TEAM 테이블의 TEAM_ID를 참조하는 조건)
-> ORACLE : ALTER TABLE PLAYER
ADD CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);
-> SQL Server : ALTER TABLE PLAYER
ADD CONSTRAINT PLAYER_FK
FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);
-> DROP TABLE TEAM; -> ERROR : 외래키에 의해 참조되는 고유/기본키가 테이블에 있다. TEAM 테이블 삭제 할 수 없다.
RENAME TABLE
- ORACLE : RENAME 변경전 테이블명 TO 변경후 테이블명;
RENAME TEAM TO TEAM_BACKUP;
- SQL Server : sp_rename 변경전 테이블명, 변경후 테이블명;
sp_rename 'dbo.TEAM', 'TEAM_BACKUP';
DROP TABLE
DROP TABLE 테이블명 [CASCADE CONSTRAINT];
- CASCADE CONSTRAINT 옵션 : 해당 테이블과 관계가 있었던 참조되는 제약조건에 대해서도 삭제한다는 것을 의미
- ORACLE : DROP TABLE PLAYER;
- SQL Server : DROP TABLE PLAYER;
TRUNCATE TABLE
- 테이블 자체가 삭제되는 것이 아니고, 테이블에 들어있던 모든 행들이 제거되고 저장 공간을 재사용 가능하도록 해제
- ORACLE : TRUNCATE TABLE PLAYER;
- SQL Server : TRUNCATE TABLE PLAYER;
'SQLD자격증독학' 카테고리의 다른 글
[SQLD자격증독학] 제 1장 데이터 모델링의 이해 문제 정리 (2) | 2017.03.02 |
---|---|
[SQLD자격증독학] 21. DML (0) | 2017.01.22 |
[SQLD자격증독학] 19. 관계형 데이터 베이스 (0) | 2017.01.22 |
[SQLD자격증독학] 18. 분산 데이터베이스와 성능 (0) | 2017.01.21 |
[SQLD자격증독학] 17. 데이터베이스 구조와 성능 (0) | 2017.01.21 |