DDL(데이터 정의어)

한준수·2023년 5월 29일
0

SQLD

목록 보기
15/31

SQLD 시리즈에 있는 모든 쿼리문은 Oracle 기준으로 작성됩니다.

데이터 유형

데이터 유형은 데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준이다.

데이터 유형 설명
CHAR(s) - 고정 길이 문자열 정보 (Oracle, SQL Server 모두 CHAR로 표현)
- 최대 길이만큼 공간을 채움 ex) 'AA' = 'AA '
VARCHAR(s) - 가변 길이 문자열 정보(Oracle은 VARCHAR2로, SQL Server는 VARCHAR로 표현)
- 할당된 변수 값의 바이트만 적용 ex) 'AA' !='AA '
NUMBER - 정수, 실수등 숫자 정보
- Oracle은 처음에 전체 자리수를 지정하고 그 다음 소수 부분의 자리수를 지정한다.
ex) 정수부분이 6자리이고, 소수부분이 2자리인 경우 NUMBER(8,2)
DATE - 날짜와 시각 정보
- Oracle은 DATE로 표현 하며 1초단위
- SQL Server는 DATETIME로 표현하며 3.33ms 단위

CREATE TABLE

테이블에 존재하는 모든 데이터를 고유하게 식별할 수 있으면서 반드시 값이 존재하는 단일 칼럼이나 칼럼의 조합들(후보키)중에 하나를 선정하여 기본키 칼럼으로 지정한다.

CREATE TABLE 구문 형식

CREATE TABLE table_name(column_1 DATA_TYPE[default 형식],
column_2 DATA_TYPE[default 형식],
column_3 DATA_TYPE[default 형식]);

테이블 생성 예

CREATE TABLE EMP01(
EMPNO NUMBER(4),
ENAME VARCHAR2(20),
SAL NUMBER(7,2));

테이블 구조확인

DESC TABLE_NAME; //아래와 동일
DESCRIBE TABLE_NAME; //위와 동일

테이블 명명 규칙

  • 테이블 명은 다른 테이블의 이름과 중복되면 안된다.
  • 테이블 내의 칼럼명은 중복될 수 없다.
  • 각 칼럼들은 , 로 구분되고 ; 로 끝난다.
  • 칼럼 뒤에 데이터 유형은 꼭 지정해야 한다.
  • 테이블명과 칼럼명은 반드시 문자로 시작해야 한다.
  • A-Z,a-z,0-9,_,$,#만 사용가능

제약조건(CONSTRAINT)

제약 조건이란 사용자가 원하는 조건의 데이터만 유지하기 위한.. 데이터의 무결성을 유지하기 위한 데이터베이스의 보편적인 방법으로 테이블의 특정 칼럼에 설정하는 제약이다.

제약조건의 종류

PRIMARY KEY - 기본키

테이블의 유일성을 보장하기 위한 제약조건
하나의 테이블에는 하나의 기본키만 가질 수 있다.
UNIQUE + NOT NULL

  • 방법 1 > 컬럼레벨로 기본키 지정
    하나의 컬럼을 이용하여 간단하게 기본키를 지정

    CREATE TABLE table_name(
    column_name[CONSTRAINT 제약조건이름] PRIMARY KEY;
    );
  • 방법 2 > 테이블레벨로 기본키 지정
    하나이상의 컬럼을 이용하여 기본키를 지정할 수 있다.

    CREATE TABLE table_name(
    column_name DATA_TYPE
    .
    .
    ,CONSTRAINT 제약조건이름 PRIMARY KEY(column_name,[column_name2])
    );

    방법 2는 외워두자

    제약 조건의 이름을 붙이는 이유는 아래와 같은 것들을 수행하는데 있어서 어떠한 제약조건이 붙어있는지 확인이 불가능 하기 때문이다.
    - 제약조건의 이름을 통해 제약조건을 삭제하거나 변경
    - 제약조건 이름은 다른 제약조건, 개체와도 중복될 수 없다.

    UNIQUE KEY - 고유키

    테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의한다.(중복X)

    NULL은 고유키 제약의 대상이 아니므로 NULL값을 가진 행이 있더라도 고유키 제약이 아니다.

    NOT NULL

    NULL 값 입력 금지

    CHECK

    입력할 수 있는 값의 범위 등을 제한

    CHECK 제약으로는 TRUE or FALSE로 평가할 수 있는 논리식을 지정한다.

    FOREIGN KEY

    NULL이 허용되며, 다른 테이블의 컬럼을 복사하여 기본키로 복사하는 경우 생성된다.

    여러 속성을 이용할 수 있다.


NULL의 의미

'아직 정의되지 않은 미지의 값'

DEFAULT

기본값. DEFAULT값을 미리 설정해두면 값을 입력하지 않아도 NULL값이 아닌 미리 정해둔 기본값이 입력된다.

SELECT절을 이용한 테이블 생성

칼럼별롱 데이터 유형을 다시 재정의 하지 않아도 되는 장점이 있지만, 기존 테이블의 제약조건 중에 NOT NULL만 새로운 복제 테이블에 적용이 되고 그 외에 제약조건은 복제되지 않는다.

EX)

CREATE TABLE EMP02
AS
SELECT * FROM EMP
WHERE DEPTNO=10;

CREATE TABLE EMP03
AS
SELECT * FROM EMP
WHERE 1=0; // WHERE 1=0; 조건은 항상 거짓임
			//이를 이용하여 테이블의 데이터는 가져오지 않고 구조만 복사할 수 있다.

테이블 구조변경

ALTER TABLE

  • 기존 테이블의 구조를 변경하기 위한 DDL 명령문이다.
  • 테이블에 대한 구조를 변경하게 되면 기존에 저장되어 있던 데이터에 영향을 주게 된다.

    ADD COLUMN or ADD CONSTRAINT
    새로운 칼럼을 추가 or 새로운 제약조건을 추가
    MODIFY COLUMN
    칼럼을 수정
    DROP COLUMN or DROP CONSTRAINT
    칼럼을 삭제 or 제약조건을 삭제
    RENAME COLUMN or RENAME TABLE
    칼럼명 변경 or 테이블명 변경

ADD CONSTRAINT or ADD COLUMN

제약조건 추가 or 기존 테이블에 칼럼 추가
형식

                  *****제약조건 추가*****
ALTER TABLE table_name 
ADD CONSTRAINT 제약조건명 제약조건 (column_name);

// PLAYER 테이블에 TEAM 테이블과의 외래키 제약조건을 추가 
// PLAYER 테이블의 TEAM_ID 칼럼이 TEAM 테이블의 TEAM_ID를 참조하는 조건
ALTER TABLE PLAYER
ADD CONSTRAINT PLAYER_FK FROREIGN KEY
(TEAM_ID) REFERENCES TEAM(TEAM_ID);
                *****칼럼 추가*****
ALTER TABLE table_name 
ADD(추가할 칼럼명,data_type expr,...);

ALTER TABLE EMP01
ADD(JOB VARCHAR2(9));

MODIFY COLUMN

기존 테이블 칼럼에 데이터 유형,디폴트 값, NOT NULL 제약 조건 변경

ALTER TABLE table_name
MODIFY(column_name, data_type expr,...);

ALTER TABLE EMP01
MODIFY(JOB VARCHAR2(30));

ALTER TABLE TEAM_TEMP
MODIFY(ORIG_YYYY VARCHAR2(8)
DEFAULT '20020129' NOT NULL);

DROP TABLE or DROP COLUMN

테이블 삭제 혹은 칼럼 삭제

              *****테이블 삭제*****
DROP TABLE table_name;

DROP TABLE EMP01;
              *****칼럼 삭제*****
ALTER TABLE table_name
DROP COLUMN column_name;

ALTER TABLE EMP01
DROP COLUMN JOB;

RENAME TABLE or RENAME COLUMN

                *****테이블명 변경*****
RENAME 변경해야할 테이블 명 TO 변경 후 테이블 명;

RENAME EMP01 TO EMPLOYEE;
                *****칼럼명 변경*****
ALTER TABLE table_name 
RENAME COLUMN 변경해야 할 칼럼명 TO 새로운 칼럼명

ALTER TABLE PLAYER 
RENAME COLUMN PLAYER_ID TO TEMP_ID;

TRUNCATE TABLE

테이블에 들어있던 모든 데이터를 삭제

TRUNCATE TABLE table_name;

TRUNCATE TABLE EMP01;
profile
빅데이터과 1학년

0개의 댓글