<알고리즘 문제에서 중요한 3단계 중 하나>
1. 자료형 선언
2. 논리 구조화(with Pesudo 코드)
3. 코드 구현
▶숫자 자료형
- 컴퓨터는 이진(1,2)으로 데이터를 저장
- Boolean 자료형 (True, False)가 존재하는 이유
○ 비트(binary digit, bit)
- 0과 1, 두 가지 값만 가질 수 있는 측정 단위
○ 바이트 (Byte)
- 여덟개의 비트로 구성된 데이터의 양을 나타내는 단위
● 정수형
- 정수형 자료형은 기본적으로 SIGNED(기본)과 UNSIGNED
옵션을 가질 수 있음.
- 전자는 양수/음수를 후자는 양수를 저장함
- 또한 정수형 자료형은 AUTO_INCREMENT 제약조건을
이용하여 ID를 생성하는 유용
자료형 | 범위 | 저장크기 | 특징 |
TINYINT | signed : -128 ~127 unsigned : 0 ~ 255 |
1byte | 매우 작은 정수 값을 저장하며 메모리 사용 최소화 |
SMALLINT | signed : -32,768 ~ 32,767 unsigned : 0 ~ 65,535 |
2bytes | 작은 정수값 |
MEDIUMINT | signed : -800만 ~ 800만 unsigned : 0~ 1600만 |
3bytes | 중간크기 정수 값 |
INT | signed: 약 - 20억 ~ 20억 unsigned: 0~ 40억 |
4bytes | 일반적으로 사용되는 정수 자료형 |
BIGINT | signed : 약 -900경 ~ 900경 unsigned : 0 ~ 1800경 |
8bytes | 매우 큰 데이터 셋 혹은 식별자를 다룰 때 사용 |
● 실수형
○ 부동 소수점 이슈
- 이진법으로 데이터를 저장하는 컴퓨터 특성상 소수점의 정확한 저장이 어려움
이를 부동소수점(floating point)이라 함.
- 정수는 2진법으로 모두 나타낼 수 있음
- 소수는 2진법의 역수의 합으로 나타내지만 정확하게 표현 불가
○ 저장 효율적이지만 어느 정도 정확도를 제한하겠다. -> 부동소수점
○ 저장 부효율적이지만 정확도를 추구하겠다 -> 고정소수점
자료형 | 범위 | 저장크기 | 특징 |
FLOAT | 약 -3.4E+38 ~ 3.4E + 38 | 4byte | 일반적인 자료형 소수점 7자리까지 정확 |
DOUBLE | 약 -1.7E +308 ~ 1.7E + 308 |
8byte | 소수점 15자리까지 정확 |
DECIMAL | 사용자 정의 | 고정 소수점 숫자 정확한 소수점을 요구하는 금융데이터 혹은 계산에 적합 ex. DECIMAL(M,D) : M(소수 포함한 총 자릿수), D(소수 자릿수) |
** 일반적으로 MySQL에서는 부동소수점 이슈를 해결하기 위한
자동처리가 되어 있다.
** 숫자 표현을 엄밀해야 하는 이슈의 경우 정수형 혹은 소수점을
표현해야 하는 경우 DECIMAL으로 정리하는 것이 좋다.
● 문자 자료형
자료형 | 최대 길이 | 저장 크기 | 특징 |
CHAR | 255 Char | 1~255bytes | 지정된 길이보다 짧은 문자열은 공백으로 채움 고정된 길이로 속도가 빠름 ex. 국가코드, 우편번호 자주 수정되지 않는 자료형에 유용 |
VARCHAR | 65,535 Char | 문자열 길이 + 1~2bytes | 가변길이 데이터 저장할때 사용 ex. 이름, 이메일 주소 자주 수정되는 자료형에 유효하며 CHAR보다 저장공간 절약 |
TEXT | 65,535 Char | 문자열 길이 + bytes | 긴 문장을 저장할 때 ex. 기사, 설명 |
BLOB(Binary Large Object) | - | - | 이진 데이터 저장용 ex. 이미지, 동영상 |
● 정규표현식
- 문자열에서 특정 패턴을 찾기 위한 강력한 도구
- REGEXP_LIKE() : 주어진 문자열이 정규표현식과 일치하는지 여부를 반환
- REGEXP : 문자열이 정규표현식과 일치하는지 확인
SELECT 'hello world' REGEXP '^hello';
-- 결과: 1 (참)
메타문자 | 표현 |
. | 임의의 한문자 |
^ | 문자열시작 |
$ | 문자열 끝 |
* | 0개 이상의 반복 |
+ | 1개 이상의 반복 |
? | 0개 또는 1개의 반복 |
| | OR 연산자 |
[] | 문자 클래스 중 하나 |
● 자료형 변환
- CAST 함수 : 데이터를 지정된 자료로 변환, 표준 SQL문법
# 문법
CAST(expression as target_type)
#예시
CAST(123 AS CHAR)
- CONVERT 함수 : 데이터를 다른 자료형으로 변환하거나 인코딩을 변경, CAST와 유사
#문법
CONVERT(expression, target_type)
#예시
CONVERT(123 CHAR)
● JSON 자료
- 외부파일을 로드하다 보면 통신에 적합한 자료형인 JSON형식들도 있다.
- RDB에서는 JSON파일 형식도 지원
○ JSON 문자형
- 키-쌍 구조를 이루는 자료형. Python의 Dictionary와 유사
- 빠른 조회보다 데이터 저장에 중심을 둠
- 어플리케이션을 통한 데이터 처리. DB에는 단순 저장
** 외부 파일 import 할 때 - preview로 데이터 불러오는 것 확인 - 적절한 자료형인지 확인. 특히 숫자형이 문자형으로 되어 있지 않은지 - 인코딩 확인하기
○ 인코딩이란 - 데이터를 특정 형식으로 변환하는 과정을 말한다.
○ 데이터베이스 인코딩 설정
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
○ 테이블 생성시 인코딩 설정
CREATE TABLE mytable (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
'데이터분석 study > SQL' 카테고리의 다른 글
TIL_24.09.10_COALESCE함수 (0) | 2024.09.10 |
---|---|
TIL_24.08.01_DDL, DML (0) | 2024.08.01 |
TIL_24.07.30_데이터 모델링 (0) | 2024.07.30 |
TIL_24.07.29_데이터베이스와 MySQL (0) | 2024.07.29 |
TIL_24.07.24_MySQL 날짜형/날짜 변환, 가공함수 (0) | 2024.07.24 |