본문 바로가기
Database

[MySQL] DDL(Data Definition Language)

by kmmguumnn 2018. 7. 3.

다음은 MySQL의 데이터 타입들이다.







테이블 생성


create table 테이블명( 

          필드명1 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT], 

          필드명2 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT], 

          필드명3 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT], 

          ........... 

          PRIMARY KEY(필드명) 

          );


  • 데이터형 외에도 속성값의 빈 값 허용 여부는 NULL 또는 NOT NULL로 설정
  • DEFAULT 키워드와 함께 입력하지 않았을 때의 초기값을 지정
  • 입력하지 않고 자동으로 1씩 증가하는 번호를 위한 AUTO_INCREMENT


예제) EMPLOYEE와 같은 구조를 가진 EMPLOYEE2 테이블을 생성하시오.

mysql> create table employee2(

            -> empno integer not null primary key,

            -> name varchar(10),

            -> job varchar(9),

            -> boss integer,

            -> hiredate varchar(12),

            -> salary decimal(7,2),

            -> comm decimal(7,2),

            -> deptno integer);





테이블 수정 (column 추가/삭제)


alter table 테이블명

          add  필드명 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT];


alter table 테이블명

         drop  필드명;


예제) EMPLOYEE2 테이블에 생일(birthdate)칼럼을 varchar(12)형식으로 추가하시오.

mysql> alter table employee2

     -> add birthdate varchar(12);



예제) EMPLOYEE2 테이블의 생일(birthdate)칼럼을 삭제하시오.

mysql> alter table employee2

             -> drop birthdate;





테이블 수정 (column 수정)


alter table  테이블명

     change  필드명  새필드명 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT];

  • change 키워드를 사용하고  칼럼을 새롭게 재정의 (이름부터 속성까지 전부)

예제) EMPLOYEE2 테이블의 부서번호(deptno)를 dept_no로 수정하시오.

mysql> alter table employee2

    -> change deptno dept_no int(11);






테이블 이름 변경


alter table  테이블명 rename 변경이름


예제) EMPLOYEE2 테이블의 이름을 EMPLOYEE3로 변경하시오.

mysql> alter table employee2

    -> rename employee3;







테이블 삭제


drop table 테이블이름;


단, 제약 조건이 있을 경우에는 drop table 명령으로도 테이블이 삭제되지 않을 수 있다. (foreign key 등)

그럴 경우는 테이블을 생성한 반대 순서로 삭제를 해야한다.


예제) EMPLOYEE2 테이블을 삭제하시오.

drop table employee2;





















'Database' 카테고리의 다른 글

PostgreSQL 설치하기 (MacOS 기준)  (0) 2019.12.17
트랜잭션(Transaction)이란?  (0) 2019.03.03
[MySQL] DML(Data Manipulation Language)  (0) 2018.07.03
MySQL 기초 정리  (0) 2018.07.03

댓글