본문 바로가기
  • Coding & Book
학습단/SQL 학습단

혼공스 9일차(데이터 형식에 대해 알아 보자)

by 루이3 2023. 7. 17.

데이터 형식

  • 테이블을 만들때는 데이터 형식을 설정해야 합니다.
  • 데이터 형식에는 숫자형 문자형 날짜형등이 있습니다.

 

정수형

  • 정수형은 소수점이 없는 숫자를 말합니다.
데이터 형식 바이트 수 숫자 범위
TINYINT 1 -127~127
SMALLINT 2 -32.768~32.767
INT 4 약 -21억 ~ +21억
BIGINT 8 약 -900경 ~ +900경
USE market_db;
CREATE TABLE hongong4 (
tinyint_col TINYINT,
smallint_col SMALLINT,
int_col INT,
big_col BIGINT );

INSERT INTO hongong4 VALUES(127,32767,21495522,90000000000000);

 

SELECT * FROM market_db.hongong4;

 

&UNSIGNED

  • 데이터 범위를 확장하기 위해 사용합니다.
  • 숫자 데이터는 음수와 양수를 모두 허용하지만 (-128~127) UNSIGNED를 사용하면 오직 양수만
    허용하는(0~256) 데이터 유형으로 정의 할수 있습니다.

 

문자형

  • 문자형은 글자를 저장하기 위해 사용합니다.
  • CHAR는 문자를 의미하며 고정길이 문자형이라고도 부릅니다.
  • VARCHAR는 가변길이 문자형으로 3글자만 사용하면 3글자 자리만 사용합니다.
  • VARCHAR가 CHAR 보다 공간을 효율적으로 운영할수 있지만 성능면에서는 CHAR가 조금더 좋습니다.

 

CHAR(10)에 3글자만 적어도 10자리 모두를 확보하지만

VARCHAR(10)에 3글자를 적으면 3자리만 확보하는것입니다.

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

 

대량의 데이터

  • TEXT로 지정하면 최대 65535까지 LONGTEXT로 지정하면 최대 약 42억개까지 저장됩니다.
  • BLOB와 LONGBLOB 는 글자가 아닌데이터(이미지,동영상등)을 저장할때 사용합니다.
데이터 형식 바이트 수
TEXT 형식 TEXT 1~65535
LONGTEXT 1~4294967295
BLOB 형식 BLOB 1~65535
LONGBLOB 1~4294967295

 

실수형

  • 소수점이 있는 숫자를 저장할때 사용합니다.
데이터 형식 바이트 수 설명
FLOAT 4 소수점 아래 7자리까지 
DOUBLE 8 소수점 아래 15자리까지 

 

날짜형

  • 날짜및 시간을 저장할때 사용합니다.
데이터 형식 바이트 수 설명
DATE 3 날짜만 저장
TIME 3 시간만 저장
DATETIME 8 날짜와 시간 저장

 

변수 사용

  • SQL도 변수를 선언하고 사용할수 있습니다.
  • LIMIT은 변수에 사용할수 없습니다.
SET @변수이름 = 변수의 값;
SELECT @변수이름;

 

PREPARE 와 EXECUTE

  • 변수에 LIMIT을 사용할수 없어 이를 해결하기 위해 사용합니다.
  • PREPARE은 실행하지 않고 준비 그리고 EXECUTE에서 실행하는 방법 입니다.
SET @COUNT = 3;
PREPARE mySQL FROM 'SELECT mem_name,height FROM member ORDER BY height LIMIT ?';
EXECUTE mysql USING @count;

 

데이터 형변환

  • 문자형에서 정수형 정수형에서 문자형으로 바꾸는 것을 데이터 형변환이라고 합니다.
  • 직접 함수를 사용해 변환하는것을 명시적인 변환이라고 합니다.
  • 별도의 지시없이 자연스럽게 변환되는것을 암시적인 변환이라고 합니다.

 

 

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

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

 

 

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

& 암시적인 변환

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