많은 프로그램 언어에 자료형이 있는 것 처럼 SQL에도 자료형이 있다.
정수형
데이터 형식 | 바이트 | 범위 |
TINYINT | 1 | -128 ~ 127 |
SMALLINT | 2 | -32,728 ~ 32,767 |
INT | 4 | 약 -21억 ~ 약 21억 |
BIGINT | 8 | 약 -900경 ~ 약 900경 |
만약 범위를 벗어나는 값을 입력할 경우 Out of range 오류가 발생한다.
오버플로우가 일어나는 다른 언어들과는 다른 부분
이 형태로 테이블을 만들 때는 아래 예시처럼 만든다.
CREATE TABLE tarelExample (
int_1 TINYINT,
int_2 SMALLINT,
int_3 INT,
int_4 BIGINT
);
만들어진 모습, 사진 속 SQL이 약간 다른데, db를 선택해주는 부분이 추가되었다.
문자형
문자형은 두 가지가 있다.
데이터 형식 | 바이트 |
CHAR(원하는 숫자) | 1~255 |
VARCHAR(원하는 숫자) | 1~16383 |
괄호안의 원하는 숫자는 문자의 최대 길이라고 보면 된다.
즉 CHAR(10)은 최대 10글자라는 뜻이다.
VARCHAR는 가변길이 문자열로 VARCHAR(10)에 3글자를 저장하면 3자리만 사용하고 남은 7자리는 차지하지 않는다.
반면 CHAR(10)에 3글자를 저장하면 7자리의 공간낭비가 발생한다.
이렇게 보면 VARCHAR이 더 좋아보이지만 공간 효율은 VARCHAR가 더 좋으나 시간 효율은 CHAR이 더 좋다.
긴 문자열
만약 블로그에 장문의 소설을 작성한다면 그 많은 글자를 어떻게 저장해야 할까?
이 때 사용하는 것이 TEXT, BLOB형식으로 자주 사용하는건 총 4가지가 있다.
데이터 형식 | 바이트 수 | |
TEXT 형식 | TEXT | 1~65535 |
LONGTEXT | 1~4294967295 | |
BLOB 형식 | BLOB | 1~65535 |
LONGBLOB | 1~4294967295 |
이 외에도 TINYTEXT, MEDIUMTEXT, TINYBLOB, MEDIUMBLOB도 있지만 잘 안쓴다.
BLOB는 글자가 아닌 이미지나 동영상 등의 데이터로 이러한 것을 이진 데이터라고 한다.
즉, 사진이나 영상등을 저장하고 싶다면 BLOB형식으로 저장해야 한다.
실수형
소숫점으로 총 2가지가 있다.
데이터 형식 | 바이트 수 | 설명 |
FLOAT | 4 | 소숫점 7자리까지 |
DOUBLE | 8 | 소숫점 15자리까지 |
특별한 경우가 아닌 이상 FLOAT를 쓰면 된다.
날짜형
날짜와 시간으로 총 3가지가 있다.
데이터 형식 | 바이트 수 | 설명 |
DATE | 3 | 날짜만 저장, YYYY-MM-DD 형식 |
TIME | 3 | 시간만 저장, HH:MM:SS 형식 |
DATETIME | 8 | 날짜와 시간을 저장, YYYY-MM-DD HH:MM:SS 형식 |
변수
일반적인 프로그래밍 언어처럼 변수를 선언하고 사용하기 위한 용도
이름 | 역할 |
SET | 변수를 선언 및 값을 대입 |
SELECT | 변수의 값을 출력 |
아래와 같이 사용한다.
SET @newVar1 = 5;
SET @newVar2 = 10;
SET @Name = "Tarel 베이스";
SELECT @newVar1 + newVar2;
SELECT @Name;
형변환
문자를 정수로 바꾸거나 반대로 정수를 문자로 바꾸는 것으로 직접 함수를 사용하는 명시적 변환과 그런거 없이 자련스럽게 바뀌는 암시적인 변환이 있다.
명시적인 변환
함수는 두 종류가 있고 아래와 같이 사용한다.
CAST(값 AS 데이터 형식 [길이])
CONVERT(값 또는 데이터 형식 [길이])
직접 써보자
암시적인 변환
CAST()나 CONVERT() 없이 자연스럽게 형변환이 일어나는 것이다.
SELECT '100' + '200';
문자열 100과 문자열 200을 더했다.
이때, 문자열은 자연스럽게 숫자형으로 변환되며 300을 출력한다.
그렇다면 100과 200을 이어붙이는, 100200 을 만들고 싶다면 어떨까?
SELECT CONCAT('100','200');
CONCAT은 파라미터 내의 요소를 이어붙여주는 역할을 한다.
'Language > SQL' 카테고리의 다른 글
SQL 공부정리 - 내부조인 (0) | 2023.01.12 |
---|---|
SQL 공부정리 - INSERT, UPDATE, DELETE (0) | 2023.01.08 |
SQL 공부정리 - SELECT - ORDER BY, LIMIT, DISTINCT, GROUP BY, HAVING (0) | 2023.01.08 |
SQL 공부정리 - SELECT - SELECT, FROM, WHERE (0) | 2023.01.06 |
SQL 공부정리 - 워크벤치 간단한 조작법 (0) | 2023.01.06 |