1. 데이터베이스의 데이터 유형
데이터 유형은 테이블에 저장할 데이터의 형식과 속성을 정의합니다. 잘못된 유형의 데이터를 삽입하려고 하면 데이터베이스는 오류를 발생시킵니다.
데이터 유형의 특징
- 숫자형:
- 정수와 실수 데이터를 저장.
- 예: NUMERIC, DECIMAL, SMALLINT, BIGINT, FLOAT, NUMBER.
- 문자형:
- 텍스트 데이터를 저장.
- 예: CHAR, VARCHAR, VARCHAR2.
- 날짜/시간형:
- 날짜와 시간 데이터를 저장.
- 예: DATE, DATETIME, TIMESTAMP.
- 기타:
- 이진 데이터나 특수 데이터를 저장.
- 예: BLOB, CLOB, JSON.
2. 주요 데이터 유형 설명
데이터 유형설명
CHAR(s) | - 고정 길이 문자열 - 길이가 부족하면 공백으로 채움 - 최대 길이: Oracle 2000바이트, SQL Server 8000바이트 |
VARCHAR(2) | - 가변 길이 문자열 - 실제 데이터 크기만큼 저장 - 최대 길이: Oracle 4000바이트, SQL Server 8000바이트 |
NUMERIC | - 정수, 실수와 같은 숫자 데이터 - Oracle에서는 NUMBER로 표현 - 예: NUMBER(8, 2) (정수 6자리, 소수점 2자리) |
DATE | - 날짜와 시간 데이터 - Oracle: 1초 단위 관리 - SQL Server: 3.33밀리초 단위 관리 |
3. CHAR와 VARCHAR (VARCHAR2)의 비교
1) 저장 방식
- CHAR:
- 고정 길이 문자열.
- 선언된 길이에 미달하는 데이터는 공백으로 채워짐.
- 예: CHAR(5)에 'A'를 저장하면 실제 데이터는 'A '(공백 포함).
- 적합한 경우: 고정 길이 데이터(예: 사번, 우편번호).
- VARCHAR (또는 VARCHAR2):
- 가변 길이 문자열.
- 선언된 길이에 미달해도 공백을 추가하지 않음.
- 예: VARCHAR(5)에 'A'를 저장하면 실제 데이터는 'A'.
- 적합한 경우: 길이가 변할 수 있는 데이터(예: 이름, 주소).
2) 비교 방식
- CHAR:
- 공백을 포함하여 비교.
- 예: 'AA'와 'AA '는 동일('AA ' == 'AA ').
- VARCHAR:
- 공백을 다른 문자로 간주하여 비교.
- 예: 'AA'와 'AA '는 다름.
3) 저장 공간 효율성
- CHAR:
- 선언된 길이만큼 공간을 차지.
- 길이가 고정된 데이터에 적합.
- VARCHAR:
- 데이터의 실제 길이만큼 공간을 사용.
- 저장 공간 효율성이 높음.
4. 사용 사례
데이터 유형적합한 데이터
CHAR | - 고정 길이 데이터 (사번, 우편번호, 주민등록번호 등) |
VARCHAR | - 가변 길이 데이터 (이름, 주소, 이메일 등) |
5. 예제 코드
1) CHAR
CREATE TABLE fixed_data (
id CHAR(10), -- 고정 길이 10
code CHAR(5) -- 고정 길이 5
);
2) VARCHAR
CREATE TABLE variable_data (
name VARCHAR(50), -- 최대 50자
address VARCHAR(100) -- 최대 100자
);
3) 데이터 비교
-- CHAR 비교
SELECT * FROM fixed_data WHERE id = '12345 '; -- 공백 포함해 동일하게 판단
-- VARCHAR 비교
SELECT * FROM variable_data WHERE name = 'John '; -- 공백 포함 시 다른 값으로 판단
6. 데이터 유형 선택 시 고려사항
- 데이터 길이:
- 고정 길이 → CHAR.
- 가변 길이 → VARCHAR.
- 저장 공간:
- 저장 공간 최적화가 필요하면 VARCHAR 추천.
- 데이터 비교:
- 공백 무시 → CHAR.
- 공백 고려 → VARCHAR.
요약
- CHAR: 고정 길이 문자열, 저장 공간 낭비 가능, 공백 포함 비교.
- VARCHAR: 가변 길이 문자열, 저장 공간 효율적, 공백은 다른 문자로 취급.
- 데이터의 특성에 따라 적합한 유형을 선택하는 것이 중요합니다.
'소프트웨어 개발 및 시스템 프로그래밍 > 데이터베이스' 카테고리의 다른 글
MySQL Monitor 사용법 (0) | 2024.12.14 |
---|---|
[SQL]Connection Pooling (0) | 2024.12.14 |
[SQL] CREATE TABLE 테이블 생성, 제약조건(CONSTRAINT), 확인(DESC) (0) | 2024.12.14 |
데이터베이스 개념 (1) | 2024.12.13 |