1. DATA TYPES
01. 데이터 타입 개요
💡MySQL은 여러 가지 데이터 유형을 지원(문자열, 숫자, 날짜, 시간)한다. 적절한 데이터 유형을 정의하면 데이터 저장 공간을 효율적으로 사용하고 데이터 입력의 유효성 검사에도 도움이 된다.
02. 데이터 형식 종류
(1) 숫자 데이터 형식
| BIT(N) | N/B | 1~64Bit 표현, b'0000'형식으로 표현 | |
| TINYINT | 1 | -128 ~ 127 | 정수 |
| SMALLINT | 2 | -32,768 ~ 32,767 | 정수 |
| MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 | 정수 |
| INT | |||
| INTEGER | 4 | 약-21억 ~ +21억 | 정수 |
| BIGINT | 8 | 약 -900경 ~ +900경 | 정수 |
| FLOAT | 4 | 3.40E+38 ~ -1.17E-38 | 소수점 아래 7자리까지 표현 |
| DOUBLE | |||
| REAL | 8 | -1.22E-308 ~ 1.79E+308 | 소수점 아래 15자리까지 표현 |
| DECIMAL(m,[d]) | |||
| NUMBER(m,[d]) | 5~17 | -10^38+1 ~ 10^38-1 | 전체 자릿수(m)와 소수점 이하 자릿수(d)를 가진 수로 표현 |
(2) 문자 데이터 형식
| CHAR(n) | 1 ~ 255 | 고정길이 문자형 / n을 1부터 255까지 지정 |
| 그냥 CHAR만 쓰면 CHAR(1)과 동일 | ||
| VARCHAR(n) | 1 ~ 65535 | 가변길이 문자형 / n을 사용하면 1부터 65535까지 지정 |
| BINARY(n) | 1 ~ 255 | 고정길이의 이진 데이터 값 |
| VARBINARY(n) | 1 ~ 255 | 가변길이의 이진 데이터 값 |
| TINYTEXT | 1 ~ 255 | 255 크기의 TEXT 데이터 값 |
| TEXT | 1 ~ 65535 | N 크기의 TEXT 데이터 값 |
| MEDIUMTEXT | 1 ~ 16777215 | 16777215 크기의 TEXT 데이터 값 |
| LONGTEXT | 1 ~ 4294967295 | 최대 4GB 크기의 TEXT 데이터 값 |
| TINYBLOB | 1 ~ 255 | 255 크기의 BLOB 데이터 값 |
| BLOB | 1 ~ 65535 | N 크기의 BLOB 데이터 값 |
| MEDIUMBLOB | 1 ~ 16777215 | 16777215 크기의 BLOB 데이터 값 |
| LONGBLOB | 1 ~ 4294967295 | 최대 4GB 크기의 BLOB 데이터 값 |
| ENUM(값들...) | 1 또는 2 | 최대 65535개의 열거형 데이터 값 |
| SET(값들...) | 1, 2, 3, 4, 8 | 최대 64개의 서로 다른 데이터 값 |
(3) 날짜와 시간 데이터 형식
DATE / TIME /DATETIME / TIMESTAMP / YEAR
(4) 기타 데이터 형식
| GEOMETRY | N/A | 공간 데이터 형식으로 선, 점 및 다각형 같은 공간 데이터 개체를 저장하고 조작 |
| JSON | 8 | JSON 문서를 저장 |
03. 형변환
- SQL 데이터의 형변환에는 명시적 형변환과 암시적 형변환이 있다.
(1) 명시적 형변환
- CAST (expression AS 데이터형식 [(길이)])
- CONVERT (expression, 데이터형식 [(길이)])
- 데이터 형식으로 가능한 것은 BINARY, CHAR, DATE, DATETIME, DECIMAL, JSON, SIGNED INTEGER, TIME, UNSIGNED INTEGER 등이 있다.
(2) 암시적 형변
따로 처리하지 않아도 내부적으로 자동으로 형변환이 이루어진다.
2. 내장함수
💡MySQL은 문자열, 숫자, 날짜, 시간에 관한 다양한 작업 수행에 많은 내장 함수를 제공한다.
(1) 문자열 관련 함수 : ASCII, CHAR, BIT_LENGTH, CHAR_LENGTH, LENGTH, CONCAT, FORMAT, BIN, INSERT, LEFR, RIGHT, UPPER, LOWER, LPAD, RPAD, LTRIM, REPEAT, REPLACE, REVERSE 등
(2) 수학 관련 함수 : ABS, CEILING, FLOOR, ROUND, CONV, MOD, POW, SIGN, TRUNCATE 등
(3) 날짜 및 시간 관련 함수 : ADDDATE, SUBDATE, CURDATE, NOW
3. 쿼리 연산자
💡SET 연산은 두개 이상의 SELECT문의 결과 집합을 결합하는데 사용한다. SET 연산을 통해 결합하는 결과 집합의 컬럼이 동일해야 한다.
01. UNION
- 두개 이상의 SELECT 문의 결과를 결합하여 중복된 레코드를 제거한 후 반환하는 SQL 연산자이다.
02. UNION ALL
- 두개 이상의 SELECT 문의 결과를 결합하며 중복된 레코드를 제거하지 않고 모두 반환하는 SQL 연산자이다.
03. INTERSECT
- 두 SELECT 문의 결과 중 공통되는 레코드만을 반환하는 SQL 연산자이다.
- MySQL은 INTERSECT를 제공하지 않는다. 하지만 INNER JOIN 또는 IN 연산자 활용해서 구현하는 것은 가능하다.
04. MINUS
- 첫 번째 SELECT 문의 결과에서 두 번째 SELECT 문의 결과가 포함하는 레코드를 제외한 레코드를 반환하는 SQL 연산자이다.
- MySQL은 MINUS를 제공하지 않는다. 하지만 LEFT JOIN을 활용해서 구현하는 것은 가능하다.

'SKN > 02. DB' 카테고리의 다른 글
| 17. 서브쿼리 (0) | 2025.02.20 |
|---|---|
| 16. JOIN (0) | 2025.02.20 |
| 14. DML (0) | 2025.02.20 |
| 13. SQL 작성 (select / order_by / where / distinct) (0) | 2025.02.19 |
| 04. 개념/논리/물리 모델 (1) | 2025.02.19 |