Today I Learned (TIL)/SQL

[TIL] SQL 챌린지 - 3회차

신짜린 2024. 7. 22. 16:12

1. 자료형

- Python의 기본자료형

 문자열, 숫자형, 리스트, 딕셔너리, 튜플

- SQL의 기본자료형

 문자열, 숫자형, 날짜

 

2. 숫자 자료형

- 비트와 바이트

 

- 정수형

 정수형 자료형은 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경*
Unsinged: 0 ~ 1800 경
8bytes 매우 큰 데이터 셋 혹은 식별자를 다룰 때 사용

 

- 실수형

 이진법으로 데이터를 저장하는 컴퓨터 특성상 소수점의 정확한 저장이 어렵다. 이를 부동소수점이라고 한다. 소수는 2진법의 역수의 합으로 나타내지만 정확하게 표현이 불가하다

 저장이 효율적이지만 어느 정도 정확도를 제한하겠다면 부동소수점, 저장이 비효율적이지만 정확도를 추구하겠다면 고정소수점을 활용한다. 

구분 범위 저장크기 특징
FLOAT 약 -3.4E+38 ~ 3.4E+38 4bytes 일반적인 자료형 소수점 7자리까지 정확
DOUBLE 약 -1.7E+308 ~ 1.7E+308 8bytes 소수점 15자리까지 정확
DECIMAL 사용자 정의 - 고정 소수점 숫자 정확한 소수점을 요구하는 금융데이터 혹은 계산에 적합

 

3. 문자 자료형

- 문자형

구분 최대 길이 저장 크기 특징
CHAR 255 char 1 ~ 255bytes 지정된 길이보다 짧은 문자열은 공백으로 채움
자주 수정되지 않는 자료형에 유용
VARCHAR 65,535 char 문자열 길이 + 1 ~ 1bytes 가변길이 데이터를 저장할 때 사용
자주 수정되는 자료형에 유효하며 CHAR 보다 저장공간이 절약 됨
TEXT 65,535 char 문자열 길이 + bytes 긴 문장을 저장할 때
- 기사, 설명
BLOB
(Binary Large Object)
- - 이진 데이터 저장용
- 이미지, 동영상

 

- 정규표현식

 문자열에서 자연어를 처리할 수 있는 제일 간단한 도구로 특정 패턴을 찾기 위한 강력하다. REGEXP_LIKE()를 통해 주어진 문자열이 정규표현식과 일치하는지 여부를 반환한다.

메타문자 표현 메타문자 표현
. 임의의 한 문자 * 0개 이상의 반복
^ 문자열 시작 + 1개 이상의 반복
$ 문자열 끝 ? 0개 또는 1개의 반복
| OR 연산자 [] 문자 클래스 중 하나
SELECT email
FROM users
WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';

 

- 자료형변환

 테이블의 구조를 바꾸는 것이 아닌 내가 보는 테이블의 형태를 임시로 변경하는 것이다. 만약 테이블의 형태를 바꾸고 싶다면 CREATE TABLE이나 ALTER를 사용해야 한다.

-- CAST 함수: 데이터를 지정된 자료로 변환, 표준 SQL 문법
CAST(expression as target_type)
-- CONVERT 함수: 데이터를 다른 자료형으로 변환하거나 인코딩을 변경
CONVERT(expression, target_type)

 

4. JSON 자료

- JSON 문자형

키-쌍 구조를 이루는 자료형으로 Python의 Dictionary와 유사하다. 빠른 조회보다 데이터 저장에 중심을 둔다.

-- json 테이블
CREATE TABLE jsontable (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(45) NULL,
    jsoncol JSON NULL,
    PRIMARY KEY (id)
);

-- json 값 넣기
INSERT INTO jsontable(name, jsoncol) VALUES ("json_string", '{"a": "A", "b":"B"}');

-- json 조회
select id, name, jsoncol FROM jsontable;

-- json 특정 키 조회
select id, name, json_extract(jsoncol, '$.a') FROM jsontable;

'Today I Learned (TIL) > SQL' 카테고리의 다른 글

[TIL] SQL 베이직 - 3회차  (0) 2024.07.25
[TIL] SQL 챌린지 - 4회차  (0) 2024.07.24
[TIL] SQL 챌린지 - 2회차  (0) 2024.07.22
[TIL] SQL 베이직 - 2회차  (0) 2024.07.18
[TIL] DA를 위한 데이터베이스 완전 정복  (0) 2024.07.16