본문 바로가기

데이터/SQL

[혼공] 4-1장 MySQL의 데이터 형식

1. 데이터 형식

 

1.1 정수형

 

- 소수점이 없는 숫자, 즉 인원수, 가격, 수량 등에 사용

- 정수형의 크기

데이터 형식 바이트 수 
TINYINT 1
SMALLINT 2
INT 4
BIGINT 8

- Out of range : 입력값의 범위를 벗어남

- UNSIGEND : 값의 범위가 0부터 시작

 

 

1.2 문자형

 

- 글자를 저장하기 위해 사용

- 입력할 최대 글자의 개수를 지정해야함

 

데이터 형식 바이트 수
CHAR(개수) 1~255
VARCHAR(개수) 1~16383

 

CHAR 

- Character

-고정 길이 문자형

- 자릿수가 고정

 

VARCHAR

- Variable Character

- 가변길이 문자형


- 대량의 데이터 형식

데이터 형식 바이트 수 
TEXT 형식 TEXT
LONGTEXT
BLOB 형식 BLOB
LONGBLOB

TEXT : 최대 65535자까지 저장

LONGTEXT : 최대 약 42억자까지 저장

 

BLOB

- Binary Long Object

- 글자가 아닌 이미지, 동영상 등의 데이터

- 이진데이터

 

 

1.3 실수형

 

- 소수점이 있는 숫자를 저장할 때 사용

데이터 형식 바이트 수 설명
FLOAT 4 소수점 아래 7자리까지 표현
DOUBLE 8 소수점 아래 15자리까지 표현

 

1.4 날짜형

 

- 날짜 및 시간을 저장할 때 사용

데이터 형식 바이트 수 설명
DATE 3 날짜만 저장. YYYY-MM-DD형식
TIME 3 시간만 저장. HH:MM:SS형식
DATETIME 8 날짜 및 시간 저장 YYYY-MM-DD HH:MM:SS

 

2. 변수의 사용 

 

- 변수의 선언과 사용

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

- 변수는 MySQL 워크벤치를 재시작할 때까지는 유지되지만, 종료하면 없어짐

 

ex)

USE market_db;
SET @myVar1 = 5;
SET @myVar2 = 4.25;

SELECT @myVar1;
SELECT @myVar1 + @myVar2;

SET @txt = '가수이름 ==> ';
SET @height = 166;
SELECT @txt , mem_name FROM member WHERE height > @height;

 

- LIMIT 에는 변수를 사용할 수 없기 때문에 문법상 오류 

SET @count = 3;
SELECT mem_name, height FROM member ORDER BY height LIMIT @count;

 -> PREPARE와 EXECUTE로 해결

 

-PRESERVE

 : 실행하지 않고 SQL문만 준비 해놓고 EXECUTE에서 실행하는 방식

 

ex)

USE market_db;
SET @count = 3;
PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE mySQL USING @count;

- PREPARE는 'SELECT ~~ LIMIT?'문을 실행하지 않고 mySQL이라는 이름으로 준비해놓음

- EXECUTE로 mySQL에 저장된 SELECT문을 실행할 때 USING으로 물음표(?)DP @count 변수의 값을 대입 

 

 

3. 데이터 형 변환

 

- 명시적인 변환 (ecplicit conversation)

 : 직접 함수를 사용해서 변환

 

- 암시적인 변환 (implicit conversation)

 : 별도의 지시 없이 자연스럽게 변환

 

 

3.1 함수를 이용한 명시적인 변환

 

- CAST(), CONVERT()함수 이용

CAST (값 AS 데이터_형식 [(길이)])
CONVERT (값, 데이터_형식 [ (길이)])

- SIGNED : 부호가 있는 정수 

- UNSIGNED : 부호가 없는 정수 

 

ex)

SELECT AVG(price) AS '평균 가격' FROM buy;

실수 -> 정수 형변환

SELECT CAST(AVG(price) AS SIGNED) '평균 가격' FROM buy;
SELECT CONVERT(AVG(price), SIGNED) '평균 가격' FROM buy;

 

- SQL의 결과를 원하는 형태로 표현할 때도 사용 가능

 

ex) 가격(price)과 수량 (amount)을 곱한 실제 구매액 표시

- 가격과 수량을 CAST()함수를 통해 문자로 변환

- CONCAT() : 문자를 이어주는 역할

 

SELECT num, CONCAT((CAST(price AS CHAR), 'X', CAST(amount AS CHAR),'=')
	'가격X수량', price*amount '구매액'
	FROM buy;

 

3.2 암시적인 변환

 

- CAST()나 CONVERT() 함수를 사용하지 않고도 자연스럽게 형이 변환되는 것

 

ex)

문자 '100'과 '200' 더하기 

-> 문자는 더할 수 없으므로 자동으로 숫자 100과 200으로 변환해서 덧셈 실행

SELECT '100'+'200';

 

- 문자 '100'과 '200'을 연결한 '100200'

SELECT CONCAT('100','200');