DDL(create, drop)

최준영·2021년 9월 5일
0

MySQl 데이터 타입



테이블 생성


  • 데이터 형 외에도 속성값의 빈 값 허용 여부는 NULL 또는 NOT NULL로 설정
  • DEFAULT 키워드와 합께 입력하지 않았을 때의 초기값을 지정
  • 입력하지 않고 자동으로 1씩 증가하는 번호를 위한 AUTO_INCREMENT
  • PRIMARY KEY를 필드명 같은 라인에 줄 수 있다.
CREATE TABLE EMPLOYEE2(   
empno INTEGER NOT NULL PRIMARY KEY, // 기본키
name VARCHAR(10),   
ob VARCHAR(9))

테이블 수정


추가, 삭제


alter table EMPLOYEE2 add birthdate varchar(12);

  • EMPLOYEE2 테이블에 생일 칼럼을 varchar(12) 형식으로 추가
    alter table EMPLOYEE2 drop birthdate;
  • EMPLOYEE2 테이블의 생일 칼럼을 삭제

수정

  • change 키워드를 사용하고 칼럼을 새롭게 재정의(이름부터 속성까지 전부)
    alter table EMPLOYEE2 change deptno dept_no int(11);
  • EMPLOYEE2 테이블의 deptno를 dept_no로 수정

이름 변경


alter table EMPLOYEE2 rename EMPLOYEE3;

  • EMPLOYEE2 테이블의 이름을 EMPLOYEE3으로 변경

테이블 삭제


  • 제약조건이 있을 때는 drop table 명령으로 테이블이 삭제되지 않는 경우가 있다. 그럴 경우에는 테이블을 생성한 반대 순서로 삭제를 해야한다.
  • 예를 들어 기본키를 가지고 있는 테이블 1과 테이블 1의 기본키를 외래키고 가지고 있는 테이블 2가 있을 때, 테이블 1을 바로 삭제할 수 없다.
    drop table EMPLOYEE2;
  • EMPLOYEE2 테이블 삭제

생각해보기


  1. 칼럼의 길이가 10인데, 해당 칼럼에 값이 저장되어 있습니다. 이 때 칼럼의 길이를 5로 바꾼다면 어떤 일이 벌어질까요?

    mysql> alter table employee2 change job job varchar(5);
    ERROR 1265 (01000): Data truncated for column 'job' at row 1

  • 위와 같은 에러가 발생하고 실행되지 않는다.
  1. 문자열을 저장하는 데이터 타입인 CHAR와 VARCHAR 차이점에 대해 알아보고 어떤 상황에서 CHAR 또는 VARCHAR 를 선택하는 것이 효율적인지 생각해봅시다.

    CHAR는 고정 길이, 문자열이 가변적이라면 비효율적이다.

    VARCHAR는 가변 길이 (오라클에선 varchar2로, sql server는 varchar로 표기), 할당된 변수값의 바이트만 적용이 된다.

    Varchar는 길이를 계산해야 하기 때문에 미세하게 느릴 수 있지만, 속도 차이가 거의 없다. 또한 프로젝트는 언제든 변할 수 있고, 고정 공간을 만드므로 빈 공간에 대한 비용이 더 큰 경우가 있으므로 varchar를 사용하는 것이 더 낫다.

  2. 문자열 데이터 타입에는 문자셋을 지정할 수 있습니다. 문자셋에 따라 해당 필드가 차지하는 공간 크기를 한번 계산해보자. (예: VARCHAR(10) CHARACTER SET UTF8; 은 몇 Byte 크기를 차지할까요? ASCII 일때는 또 몇 Byte 크기를 가질까요?

    [ euc-kr ] ascii 코드 + 한글 : 영문/숫자/기호는 1바이트. 한글과 한자는 2바이트
    [ utf-8 ] : 영문/숫자/기호는 1바이트로, 한글과 한자 등은 3바이트로 표현

profile
do for me

0개의 댓글