데이터베이스/MySQL
SQL - DDL(create,drop)/테이블 관리
개발일기
2019. 1. 12. 12:17
반응형
인덱스,뷰등 다른객체에도 적용 할 수 있지만 기본적인 테이블만 알아봄.
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를 차지한다.
반응형