반응형

인덱스,뷰등 다른객체에도 적용 할 수 있지만 기본적인 테이블만 알아봄.


MySQL 데이터 타입

MySQL 데이터 타입-1
MySQL 데이터 타입-2

테이블 생성

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 테이블을 생성하시오.

테이블 생성 실습
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 table 테이블명
          add  필드명 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT];

alter table 테이블명
         drop  필드명;

 

테이블 수정 실습 (컬럼 추가)

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

alter table EMPLOYEE2

add birthdate varchar(12);
테이블 수정 실습(컬럼추가)

테이블 수정 실습 (컬럼 삭제)

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

alter table EMPLOYEE2

drop birthdate;​
테이블 수정 실습(컬럼추가삭제)

테이블 수정 (컬럼 수정)

alter table  테이블명
     change  필드명  새필드명 타입 [NULL | NOT NULL][DEFAULT ][AUTO_INCREMENT];
  • change 키워드를 사용하고  칼럼을 새롭게 재정의 (이름부터 속성까지 전부)

 

테이블 수정 실습 (컬럼 수정)

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

alter table EMPLOYEE2

change deptno dept_no int(11);
테이블 수정 실습(컬럼수정)

테이블 이름 변경

alter table  테이블명 rename 변경이름

 

테이블 이름 변경 실습

실습 – EMPLOYEE2 테이블의 이름을 EMPLOYEE3로 변경하시오.

alter table EMPLOYEE2

rename EMPLOYEE3;
테이블 이름 변경 실습

테이블 삭제하기

drop table 테이블이름;

참고로, 제약 조건이 있을 경우에는 drop table 명령으로도 테이블이 삭제되지 않을 수 있습니다.

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

 

테이블 삭제 실습

* 테이블 삭제 후 desc 명령을 수행하면, 존재하지 않는 테이블이라고 표시됩니다.

실습 – EMPLOYEE2 테이블을 삭제하시오.

drop table EMPLOYEE2;
테이블 삭제 실습



create table syntax -  https://dev.mysql.com/doc/refman/5.7/en/create-table.html
alter table syntax - https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
drop table syntax - https://dev.mysql.com/doc/refman/5.7/en/drop-table.html




Q.칼럼의 길이가 10인데, 해당 칼럼에 값이 저장되어 있습니다.  이 때 칼럼의 길이를 5로 바꾼다면 어떤 일이 벌어질까요?
A.오류가 발생하면서 해당 쿼리는 취소된다.


Q.문자열을 저장하는 데이터 타입인 CHAR와 VARCHAR 차이점에 대해 알아보고 어떤 상황에서 CHAR 또는 VARCHAR 를 선택하는 것이 효율적인지 생각해봅시다.
A.char는 어떤 문자열이 들어와도 지정한 크기만큼 메모리가 할당된다. (c에서 배열과 비슷) varchar는 들어온 문자열의 길이를 계산해 그 크기만큼 메모리가 할당된다. (java에서 arraylist와 비슷) char는 길이 연산을 할 필요가 없는 항상 일정한 길이의 문자열을 처리할 때 즉, 길이를 구하는 연산을 안해도 되는 문자열을 처리할 때 좋고 varchar는 길이가 다양한 문자열을 받을 때 즉, 길이를 구하는 연산은 하지만 메모리 공간을 덜 차지 하게 할 수 있을 때 좋다.


Q.문자열 데이터 타입에는 문자셋을 지정할 수 있습니다. 문자셋에 따라 해당 필드가 차지하는 공간 크기를 한번 계산해보자. (예: VARCHAR(10) CHARACTER SET UTF8; 은 몇 Byte 크기를 차지할까요? ASCII 일때는 또 몇 Byte 크기를 가질까요?
A.utf-8은 mysql에서 최대 3byte 이므로 총 30byte를 차지하고 ASCII는 1byte이므로 총 10byte를 차지한다.
 





반응형

'데이터베이스 > MySQL' 카테고리의 다른 글

SQL - DML  (0) 2019.01.11
SQL - Database 생성  (0) 2019.01.11
MySQL - DBMS,설치,실행.종료  (0) 2019.01.11
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기