1. 데이터 유형

테이블에 특정자료를 입력할 , 자료를 받아드릴 공간의 자료를 유형별로 나눈 기준

 

  1. CHARACTER(S)
    • 고정 길이 문자열 정보 CHAR 표현
    • 기본길이는 1바이트, 최대 길이는 오라클은 2,000바이트 SQL Server 8,000바이트
    • 고정길이를 가지고 있음으로 할당된 변수값의 길이가 작을 경우 차이 길이 만큼 공간으로 채움
  2. VARCHAR(S)
    • CHARACTER VARYING 약자로 가변길이 문자열 정보 오라클은 VARCHAR2, SQL server VARCHAR 표현
    • 최소 길이는 1바이트, 오라클은 4,000바이트 SQL Server 8,000바이트
    • 가변길이로 조정되기 때문에 할당된 변수값의 바이트만 적용
  3. NUMERIC
    • 정수, 실수 등의 숫자 정보 오라클은 NUMBER SQL Server 10가지 이상의 숫자 타입이 있음
    • 오라클은 처음에 전체 자리수는 지정하고 다음 소수 부분의 자리수 지정 ex) NUMBER(8.2)
  4. DATETIME
    • 날짜와 시각정보 오라클은 DATE SQL server DATETIME으로 표현
    • 오라클은 1 단위, SQL Server 3.33ms 단위 관리

 

CHAR VARCHAR 차이점

: 저장영역과 문자열의 비교방법 VARCHAR 실제 데이터 크기만으로 저장함

: CHAR 공백을 채워서 비교하고 VARCHAR 공백도 하나의 문자로 취급하여 공백이 다르면 다른 문자로 취급

 

2. CREATE TABLE

 

. 테이블과 칼럼의 정의

고유하게 식별할 있으며 값이 존재하는 단일 칼럼이나 칼럼의 조합들 하나를 선정하여 기본키 칼럼으로 지정

 

. 테이블 생성 규칙

 

CREATE TABLE 테이블이름

(칼럼명1 DATATYPE [DEFAULT 형식],

 칼럼명2 DATATYPE [DEFAULT 형식] NOT NULL,

 CONSTRAINT 제약조건별명 PRIMARY KEY (칼럼명),

 CONSTRAINT 제약조건별명 FOREIGN KEY (칼럼명) REFERENCES 테이블명(칼럼명)) ;

 

  • 테이블 명은 객체를 의미할 있는 이름, 단수형 권고
  • 테이블 명은 다른 이름과 중복 불가
  • 테이블 내에서 컬럼 중복 불가
  • 테이블의 이름을 지정하고 칼럼들을 ( ) 묶어서 지정
  • 칼럼들은 , 구분되고 테이블 생성문의 마지막은 ;
  • 칼럼은 다른 테이블 고려하려 일관 있게 사용 - 표준화의 관점
  • 테이터 유형은 지정되어야
  • 이름은 반드시 문자로 시작, 벤더별 길이 제한 있음
  • 사전에 정의한 예약어는 사용 금지
  • A-Z, a-z, 0-9, _, $, #문자만 허용
  • /소문자 구분하지 않으나 대부분 칼럼명은 대문자로 만들어짐
  • DATETIME 유형은 별도 크기 지정 안함
  • 문자 데이터는 최대 길이 표시 해야함
  • 제약조건이 있다면 CONSTRAINT 추가가능

 

. 제약조건

사용자가 원하는 조건의 데이터 무결성을 유지하기 위한 특정 칼럼에 설정하는 제약

입력 이후에는 수정이 어려움으로 설계에서 검토 필요

  1. Primary Key 기본키

: 고유하게 식별하기 위한 기본키

: 하나의 테이블엔 하나의 기본키 제약만 정의

: 자동으로 Unique Not Null 제약이 걸림

  1. Unique Key 고유키

: 고유하게 식별하기 위해서 , Null 제약대상이 아님으로 Null값을 가진 여러개가 있어도 제약 위반 아님

  1. Not Null

: Null 입력 금지, 입력 필수

  1. Check

: 입력할 있는 값의 범위 제한, Ture or False 평가할 있는 논리식 지정

  1. Forgein Key

: 테이블 간의 관계를 정의하기 위해 다른 테이블의 외래키로 복사할 있음

: 참조 무결성 제약 옵션 선택 가능

 

  • Null : 숫자 0이랑은 전혀 다른 값이며 공집합도 아닌 아직 정의되지 않은 미지의 , 데이터를 입력하지 못하 경우를 의미
  • Default : 기본값, 명시되지 않은 경우는 Null 입력

 

. 생성된 테이블 구조확인

오라클 "DESCRIBE 테이블명", "DESC 테이블명"

SQL Server "sp_help 'dbo.테이블명'"

 

. SELECT 문장을 통한 테이블 생성 사례

CTAS : Create Table As Select ~

컬럼별로 데이터 유형을 다시 재정의 하지 않아도

, 기존 제약 조건 Not NUll 적용되고 기본키, 고유키, 외래키, check 등의 다른 제약 조건은 없어짐 Alter Table 기능 추가해야함

SQL server에서는 select into 활용가능, 칼럼 속성 전부 적용

 

[Oracle] CREATE TABLE TEAM_TEMP AS SELECT * FROM TEAM; 테이블이 생성되었다.

[SQL Server] SELECT * INTO TEAM_TEMP FROM TEAM; (1개 행이 영향을 받음)

 

3. Alter Table

 

. ADD COLUMN

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

새롭게 추가된 칼럼은 테이블의 마지막 칼럼이 되며 칼럼의 위치를 지정할 수는 없다.

 

. DROP COLUMN

필요없는 칼럼삭제, 모두 삭제가능, 복구불가능

한번에 하나의 칼럼만 삭제 가능, 삭제 후에는 최소 하나의 칼럼이 테이블에 존재해야한다.

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

 

. MODIFY COLUMN

칼럼의 데이터 유형, DEFUALT, NOTNULL 제약조건에 대한 변경 포함

[Oracle] ALTER TABLE 테이블명

              MODIFY (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터 유형 …);

[SQL Server] ALTER TABLE 테이블명

                     ALTER (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터 유형 …);

 

주의사항

  1. 크기는 늘릴 있지만 줄일수는 없다
  2. NULL값만 가지고 있거나 테이블에 아무행도 없으면 컬럼 폭을 줄일 있다.
  3. NULL값만 가지고 있으면 데이터 유형을 변경할 있다.
  4. DEFAULT 바꾸면 변경작업 이후 발생하는 삽입에만 영향을 미친다.
  5. NULL값이 없을 경우에만 NOTNULL조건을 추가할수 있다.

 

  • RENAME COLUMN

 부득이하게 컬럼명을 바꿔야 할때만 사용, 제약조건에 대해서도 자동변경되지만 오라클에서만 지원하는 것이다.

ALTER TABLE 테이블명 RENAME COLUMN 변경해야 할 칼럼명 TO 새로운 칼럼명; 

SQL server에서는 다른 방식 사용함

sp_rename 변경해야 할 칼럼명, 새로운 칼럼명, 'COLUMN';

 

. DROP CONSTRAINT

제약조건을 삭제하는 명령

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

 

. ADD CONSTRAINT

제약조건을 추가하는 경우

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

 

외부키를 설정함으로써 실수에 의한 테이블 삭제나 필요한 데이터를 의도하지 않은 삭제과 같은 불상사를 방지하는 효과 발휘

 

4. RENAME TABLE

 

[ORACLE] RENAME 변경전 테이블명 TO 변경후 테이블명;

[SQL server] sp_rename 변경전 테이블명, 변경후 테이블명;

 

5. DROP TABLE

 

DROP TABLE 테이블명 [CASCADE CONSTRAINT];

테이블의 모든 데이터 구조를 삭제한다.

Cascade 옵션은 제약조건에 대해서도 삭제한다는 것을 의미 SQL server에서는 존재하지 않으며, 미리 제약조건을 참조하는 테이블을 삭제해야함

 

6. TRUNCATE TABLE

테이블 자체가 삭제되는 것도 아니고 해당 테이블에 들어있던 모든 행들이 제거되고 저장공간을 재사용 가능하도록 해제

TRUNCATE TABLE 테이블명;

 

DROP : 테이블 자체가 없어짐, 구조 확인 불가

TRUNCATE : 테이블 구조는 그대로 유지, 데이터만 삭제, AUTO COMMIT 특성으로 DDL 분류, 부하가 delete보다 적으나 정상적인 복구가 불가능


+ Recent posts