SQL
[SQL] MySQL - Managing Tables
winter17
2023. 2. 14. 10:48
1. Create a table
- DDL : 데이터의 기본 구조 및 형식 변경
- CREATE TABLE statement 테이블 생성
CREATE TABLE table_name (
column_1 data_type,
column_2 data_type,
...,
contraints
);
- 각 필드에 적용할 데이터 타입(data type) 작성
- 테이블 및 필드에 대한 제약조건(contraints) 작성
▶️ Data Types
Numeric | 숫자형 | INT, FLOAT, ... |
String | 문자형 | VARCHAR, TEXT, ... |
Date and Time | 날짜형 | DATE, DATETIME, ... |
▶️ Contraint 제약조건
- 데이터 무결성을 지키기 위해 데이터를 입력받을 때 실행하는 검사 규칙
- 무결성 : 데이터의 정확성과 일관성을 보증
- PRIMARY KEY
- 해당 필드를 기본 키로 지정
- NOT NULL
- 해당 필드에 NULL 값을 저장하지 못하도록 지정
▶️ AUTO_INCREMENT attribute
- 테이블의 기본 키에 대한 번호 자동 생성
- 기본 키 필드에 사용
- 고유한 숫자를 부여
- 시작 값은 1이며 데이터 입력 시 값을 생략하면 자동으로 1씩 증가
- 이미 사용한 값을 재사용하지 않음
- 기본적으로 NOT NULL 제약 조건을 포함
2. Delete a table
- DDL : 데이터의 기본 구조 및 형식 변경
- DROP TABLE statement 테이블 삭제
DROP TABLE table_name;
- DROP TABLE statement 이후 삭제할 테이블 이름 작성
3. Modifying table fields
- DDL : 데이터의 기본 구조 및 형식 변경
- ALTER TABLE statement 테이블 필드 조작(생성, 수정, 삭제)
ALTER TABLE ADD | 필드 추가 |
ALTER TABLE MODIFY | 필드 속성 변경 |
ALTER TABLE CHANGE COLUMN | 필드 이름 변경 |
ALTER TABLE DROP COLUMN | 필드 삭제 |
▶️ ALTER ADD
ALTER TABLE
table_name
ADD
new_column_name column_definition;
- ADD 키워드 이후 추가하고자 하는 새 필드 이름과 데이터 타입 및 제약 조건 작성
➀ examples 테이블에 country 필드 추가(단, country 필드는 가변길이 문자열 최대 100자이며 NULL 값을 허용하지 않음)
➁ examples 테이블에 age, address 필드 추가(단, age 필드는 정수 타입이 저장되며 NULL 값을 허용하지 않음
address 필드는 가변길이 문자열 최대 100자이며 NULL 값을 허용하지 않음)
▶️ ALTER MODIFY
ALTER TABLE
table_name
MODIFY
column_name column_definition;
- MODIFY 키워드 이후 변경하고자 하는 필드 이름, 그리고 데이터 타입 및 제야 조건 작성
➀ examples 테이블의 address 필드를 가변길이 문자열 최대 50자까지 그리고 NULL 값을 허용하지 않도록 변경
➁ examples 테이블의 lastName, firstName 필드를 가변길이 문자열 최대 10자까지 그리고 NULL 값을 허용하지 않도록 변경
▶️ ALTER CHANGE COLUMN
ALTER TABLE
table_name
CHANGE COLUMN
original_name new_name column_definition;
- CHANGE COLUMN 키워드 이후, 기존 필드 이름, 변경하고자 하는 필드 이름 그리고 데이터 타입 및 제약조건 작성
- MODIFY를 잊었을 경우 CHANGE COLUMN 대체 가능
➀ examples 테이블의 country 필드 이름을 state로 변경(단, 데이터 타입 및 제약 조건은 기존과 동일)
▶️ ALTER DROP COLUMN
ALTER TABLE
table_name
DROP COLUMN
column_name;
- DROP COLUMN 키워드 이후 삭제하고자 하는 필드 이름 작성
➀ examples 테이블의 address 필드 삭제
➁ exampels 테이블의 state와 age 필드 삭제
💡반드시 NOT NULL 제약을 사용해야 할까?
- 'NO'
- 데이터베이스를 사용하는 프로그램에 따라 NULL을 저장할 필요가 없는 경우가 많으므로 되도록 NOT NULL로 정의
- '값이 없다'라는 표현을 테이블에 기록하는 것은 0이나 빈 문자열 등을 사용하는 것으로 대체하는 것을 권장