BoostCource/MySQL

[MySQL] 데이터 정의어 DDL

칸타탓 2018. 7. 15. 17:33

<2. DB 연결 웹 애플리케이션 - DDL>

[boostcourse full-stack] http://www.edwith.org/boostcourse-web




* 데이터 정의어


데이터베이스에 스키마 객체를 생성하거나 변경, 제거하는 일들을 수행한다.




MySQL 데이터 타입









테이블 생성 - create

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 키워드와 함께 입력하지 않았을 때의 초기값을 지정한다.

  • AUTO_INCREMENT: 입력하지 않고 자동으로 1씩 증가하는 번호 설정


Ex) 아래와 같은 구조를 가진 EMPLOYEE2 테이블을 생성하시오.


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);





테이블 수정 (컬럼 추가, 삭제) - alter

alter table 테이블명
          add  필드명 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT];

alter table 테이블명
         drop  필드명;



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

alter table EMPLOYEE2

add birthdate varchar(12);


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

alter table EMPLOYEE2

drop birthdate;​





테이블 이름 변경 - alter

alter table  테이블명 rename 변경이름


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

alter table EMPLOYEE2

rename EMPLOYEE3;






테이블 컬럼 수정 - change


alter table  테이블명
     change  필드명  새필드명 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT];

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

 



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

alter table EMPLOYEE2

change deptno dept_no int(11);






테이블 삭제 - drop


drop table 테이블이름;

제약조건이 있을 경우 drop table 명령어로 삭제되지 않을 수 있다. (외래키 관계일 경우)

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




'BoostCource > MySQL' 카테고리의 다른 글

[MySQL] 터미널을 통해 SQL 불러오기  (0) 2018.11.24
[MySQL] 데이터 조작어 DML  (0) 2018.07.15
[MySQL] MySQL 사용하기  (0) 2018.07.15