본문 바로가기

BackEnd/DB(SQL)

[DB_MySQL] 이것이 MySQL이다 ch07 SQL 고급 1(데이터 형식, 변수 사용, 형 변환)

728x90
반응형

1. MySQL의 데이터 형식

◎ MySQL에서 지원하는 데이터 형식의 종류

   ▷ Data Type으로 표현

      ▶ 데이터 형식, 데이터형, 자료형, 데이터 타입 등 다양하게 불림

   ▷ 데이터 형식에 대한 이해가 필요한 이유

      ▶ SELECT문 더욱 잘 활용

      ▶ 테이블의 생성을 효율적으로 하기 위해 필요

   ▷ MySQL에서 데이터 형식의 종류는 30개 정도

      ▶ 중요하고 자주 쓰는 형식에 대해 중점 학습

 

◎ 숫자 데이터 형식

NO 데이터 형식 바이트 수 숫자 범위 설명
1 BIT(N) N/8   1~64bit를 표현. b'0000' 형식으로 표현
2 TINYINT 1 -128 ~ 127 정수
3 ★SMALLINT 2 -32,768 ~ 32,767 정수
4 MEDIUMINT 3 -8,388,608 ~ 8,388,607 정수
5 ★INT
INTEGER
4 약 -21억 ~ + 21억 정수
6 ★BIGINT 8 약 -900 경 ~ +900경 정수
7 ★FLOAT 4 -3.40E+38 ~ -1.17E-38 소수점 아래 7자리까지 표현
8 DOUBLE
REAL
8 -1.22E-308 ~ 1.79E+308 소수점 아래 15자리까지 표현
9 ★DECIMAL(m,[d])
NUMERIC(m,[d])
5~17 -10^38+1 ~ +10^38-1 전체 자릿수(m)와 소수점 이하 자릿수(d)를 가진 숫자형
예) decimal(5,2)는 전체 자릿수를 5자리로 하되, 그 중 소수점 이하를 2자리로 하겠다는 의미

 

 

◎ 문자 데이터 형식

NO 데이터 형식 바이트 수 설명
1 ★CHAR(n) 1~255 고정길이 문자형, n을 1부터 255까지 지정.
character의 약자, 그냥 CHAR만 쓰면 CHAR(1)과 동일
2 ★VARCHAR(n) 1~65535 가변길이 문자형, n을 사용하면 1부터 65535까지 지정.
Variable character의 약자
3 BINARY(n) 1~255 고정길이의 이진 데이터 값
4 VARBINARY(n) 1~255 가변 길이의 이진 데이터 값
5 TEXT
형식
TINYTEXT 1~255 255 크기의 TEXT 데이터 값
6 TEXT 1~65535 N 크기의 TEXT 데이터 값
7 MEDIUMTEXT 1~16777215 16777215 크기의 TEXT 데이터 값
8 ★LONGTEXT 1~4294967295 최대 4GB 크기의 TEXT 데이터 값
9 BLOB
형식
TINYBLOB 1~255 255 크기의 BLOB 데이터 값
10 BLOB 1~65535 N 크기의 BLOB 데이터 값
11 MEDIUMBLOB 1~16777215 16777215 크기의 BLOB 데이터 값
12 ★LONGBLOB 1~4294967295 최대 4GB 크기의 BLOB 데이터 값
13 ENUM(값들...) 1 또는 2 최대 65535개의 열거형 데이터 값
14 SET(값들...) 1, 2, 3, 4, 8 최대 64개의 서로 다른 데이터 값

 

 

◎ 날짜와 시간 데이터 형식

NO 데이터 형식 바이트 수 설명
1 ★DATE 3 날짜는 1001-01-01 ~ 1999-12-31까지 저장되며 날짜 형식만 사용
'YYYY-MM-DD' 형식으로 사용됨.
2 TIME 3 -838:89:59.000000 ~ 838:59:59.000000까지 저장되며.
'HH:MM:SS' 형식으로 사용
3 ★DATETIME 8 날짜는 1001-01-01 00:00:00 ~ 9999-12-31 23:59:59까지 저장되며
형식은 'YYYY-MM-DD HH:MM:SS' 형식으로 사용됨.
4 TIMESTAMP 4 날짜는 1001-01-01 00:00:00 ~ 9999-12-31 23:59:59까지 저장되며
형식은 'YYYY-MM-DD HH:MM:SS' 형식으로 사용됨.
time_zone 시스템 변수와 관련이 있으며 UTC 시간대 변환하여 저장
5 YEAR 1 255 크기의 TEXT 데이터 값

 

 

◎ 기타 데이터 형식

NO 데이터 형식 바이트 수 설명
1 ★GEOMETRY N/A 공간 데이터 형식으로 선, 점 및 다각형 같은 공간 데이터 개체를 저장하고 조작
2 ★JSON 8 JSON(JavaScript Object Notation) 문서를 저장

 

 

◎ LONGTEXT, LONGBLOB

   ▷ LOB(Large Object, 대량의 데이터)을 저장하기 위해 LONGTEXT, LONGBLOB 데이터 형식 지원

   ▷ 지원되는 데이터 크기는 약 4GB의 파일을 하나의 데이터로 저장 가능

   ▷ LONGTEXT

      ▶ ex) 장편소설과 같은 큰 텍스트 파일

   ▷ LONGBLOG

      ▶ ex) 동영상 파일과 같은 큰 바이너리 파일

 

◎ 변수의 사용

   ▷ Workbench를 재시작할 때까지는 계속 유지, Workbench를 닫았다가 재시작하면 소멸

   ▷ 변수의 선언과 값의 대입 형식

SET @변수이름 = 변수의 값;		-- 변수의 선언 및 값 대입
SELECT @변수이름;		-- 변수의 값 출력

 

◎ 변수 사용 예제

-- 변수 사용

use sqldb;
set @myVar1 = 5;
set @myVar2 = 3;
set @myVar3 = 4.25;
set @myVar4 = '가수 이름==> ';

select @myVar1;

select @myVar2 + @myVar3;

select @myVar4, Name from usertbl where height > 180;

 

◎ 데이터 형식과 형변환

   ▷ 데이터 형식 변환 함수

      ▶ CAST(), CONVER() 함수를 가장 일반적으로 사용

      ▶ 데이터 형식 중에서 가능한 것은 BINARY, CHAR, DATE, DATETIME, DECIMAL, JSON,

           SIGNED INTEGER, TIME, UNSIGNED INTEGER

      ▶ 함수 사용법

cast(expression as 데이터형식 [(길이)])
convert(expression, 데이터형식 [(길이)])


ex) sqlDB의 구매 테이블(buyTbl)에서 평균 구매 개수를 구하는 쿼리문

select cast(avg(amount) as signed integer) as '평균 구매 개수' from buytbl;
-- 또는
select convert(avg(amount) as signed integer) as '평균 구매 개수' from buytbl;


실수를 정수로 변환시 형변환 예제

-- 실수 -> 정수로 형 변환시 자동으로 반올림 적용
select distinct prodName as '물품명',
	price as '원가격',
	@salevar as '할인율',
	cast(price*(1-@salevar) as signed integer) as '할인 가격'
	from buytbl;

select distinct prodName as '물품명',
	price as '원가격',
	@salevar as '할인율',
	convert(price*(1-@salevar), signed integer) as '할인 가격'
	from buytbl;​


아래와 같이 동일한 결과 값이 출력됩니다.


날짜 형태로 자동 변환

select cast('2020$12$12' as date);
select cast('2020/12/12' as date);
select cast('2020%12%12' as date);
select cast('2020@12@12' as date);

-- 2020-12-12 반환



◎ 정수를 문자형으로 자동형 변환

-- 형 변환 -> 정수를 문자형
-- num, 단가 X, 수량, 구매액
-- concat 단어와 단어를 이어주는 함수
select num, concat(cast(price as char(10)), 'x', cast(amount as char(4)), '=') as '단가x수량',
	price*amount as '구매액' from buytbl

 

 

 

   ▷ 암시적인 형 변환

      ▶ CAST()나 CONVERT() 함수를 사용하지 않고 형이 변환되는 것

-- 임시적 형 변환 : 
select '100' + '200';		-- 문자 + 문자 : + 사칙연산이 들어가면 문자를 숫자로 인식해서 계산
-- 300 반환

select concat('100', '200');	-- concat (문자열 연결)
-- 100200 반환

select concat(100, '200');
-- 100200 반환

select 1 > '2mega';		-- 숫자 비교 연산 : 문자 -> 숫자 1>2 거짓(0), 참(1)
-- 0 반환

select 3 > '2MEGA';
-- 1 반환

select 0 = 'mega2';		-- mega가 앞쪽에 있으면 0으로 인식합니다. 0 = 0 (t, 1)
-- 0 반환

 

SQL의 데이터 형식과 변수, 함수 사용 방법 등을 공부해보았습니다!!

 

변수쪽으로 들어가니까 점점 더 어려워지네요,,,

 

다른 구문들에 대해서도 정리해 보겠습니다!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형