MySQL에서 제공하는 데이터 형식의 종류는 수십 개 정도이고, 각 데이터 형식마다 크기나 표현할 수 있는 숫자의 범위가 다름.
정수형은 소수점이 없는 숫자, 즉 인원 수, 가격, 수량 등에 많이 사용됨.

1) 정수형에는 TINYINT, SMALLINT, INT, BIGINT가 있음.
간단한 테이블 만들기

각 열의 최대값 입력하기

각 숫자에 1을 더하여 입력하기(마지막 값에는 0을 하나 더 붙임)

1) 오류가 발생하였음.
2) Out of range는 입력값의 범위를 벗어났다는 의미임.
정수형을 사용하는 예제 (전에 만든 코드 살펴보기)
1) 인터넷 마켓의 회원 테이블에서 인원수(mem_number) 열은 INT로, 평균 키(height) 열은 SMALLINT로 지정함.

2) 인원수(mem_num) 열은 INT로 지정해서 -21억 ~ +21억까지 저장할 수 있음.
3) 그러나, 가수 그룹의 인원은 그 정도로 많지 않기에, 최대 127명까지 지정할 수 있는 TINYINT로 지정해도 충분함.
4) 평균 키 열은 -128 ~ +127 범위인 TINYINT는 사용 불가하며, -32768 ~ +32767인 SMALLINT로 지정할 수 있음.
5) 평균 키와 같은 경우, TINYINT를 쓰지 못하는 대신 UNSIGNED 예약어를 사용할 수 있음.
6) TINYINT UNSIGNED는 0~255를 표현함.
더 효율적인 코드

1) 나머지 정수형도 마찬가지로 UNSIGNED를 붙이면 0부터 65535까지 저장됨.
문자형은 글자를 저장하기 위해 사용하며, 입력할 최대 글자의 개수를 지정해야 함.

1) CHAR는 자릿수가 고정되어 있으므로 고정길이 문자형이라고 부름.
2) CHAR(10)에 '가나다' 3글자만 저장해도 10자리를 모두 확보한 후에 앞에 3자리를 사용하고 뒤의 7자리는 낭비하게 됨.
3) 반면, VARCHAR은 가변길이 문자형임.
4) VARCHAR(10)에 '가나다' 3글자를 저장할 경우, 3자리만 사용함.
5) VARCHAR가 CHAR보다 공간을 효율적으로 운영할 수 있지만, MySQL 내부적으로 빠른 속도 면에서는 CHAR로 설정하는 것이 더 좋음.
회원 테이블의 문자형 확인하기

1) 회원 아이디(mem_id)는 BLK, APK, GRL 등 3글자로 입력되는데, 데이터 형식은 CHAR(8)로 설정되어 있음.
2) CHAR(8)을 CHAR(3)으로 줄여도 되지만, 향후에 더 긴 회원 아이디를 만들 수 있다는 가정 하에 CHAR(8)로 설정함.
3) 이는 VARCHAR(8)로 변경해도 문제는 없음.
4) phone1에서 연락처 국분은 02, 031, 055 등과 같이 제일 앞에 0을 붙여야 하는데, 정수형으로 지정하면 0이 사라짐. 따라서 CHAR로 설정함.
5) phone2(전화번호) 또한 모두 숫자로 이루어져 있으므로 정수형으로 지정해야 할 것 같지만, 전화번호는 숫자로서 의미가 없으므로 문자형으로 지정함.
문자형인 CHAR은 최대 255자까지, VARCHAR은 최대 16383자까지 지정이 가능함.

1) 위의 코드는 열의 길이를 너무 크게 설정했다는 점에서 오류가 발생함.
따라서 더 큰 데이터를 저장하려면 아래와 같은 형식을 사용함

1) TEXT로 지정하면, 최대 65535자까지, LONGTEXT로 지정하면 최대 약 42억자까지 저장됨.
2) BLOB은 글자가 아닌 이미지, 동영상 등의 데이터이며 이진 데이터라고 부름.
3) 즉, 사진이나 동영상과 같은 것을 저장하고 싶다면, BLOB나 LONGBLOB로 데이토 형식을 지정해야 함.

1) 자막(movie_script) 열은 LONGTEXT, 동영상(movie_film) 열은 LONGBLOB로 설정해야 대용량은 텍스트와 이진 데이터를 저장할 수 있음.

SQL도 변수를 선언하고 사용할 수 있음.
SET @변수이름 = 변수의 값;
SELECT @변수이름;
1) 변수는 MySQL 워크벤치를 재시작할 때까지는 유지되지만, 종료하면 없어짐.
변수는 임시로 사용한다고 생각할 것, 예시와 함께 살피기



LIMIT에는 변수를 사용할 수 없음.
위와 같은 문제를 해결하는 것이 PREPARE와 EXECUTE임
1) PREPARE는 실행하지 않고 SQL문만 준비해놓고, EXECUTE에서 실행하는 방식임.

2) @count 변수에 3을 대입함.
3) PREPARE는 'SELECT ~~ LIMIT?' 문을 실행하지 않고 mySQL이라는 이름으로 준비만 해놓음. 주의해서 볼 것은 LIMIT 다음에 오는 물음표이며, 이는 현재는 모르지만, 나중에 채워진다는 의미로 이해하면 됨.
4) EXECUTE로 mySQL에 저장된 SELECT 문을 실행할 때, USING으로 물음표에 @count 변수의 값을 대입하는 것임.
5) 결론적으로 다음과 같은 SQL이 실행되는 것
SELECT mem_name, height FROM member ORDER BY height LIMIT 3;
데이터의 형식을 변환하는 함수는 CAST(), CONVERT()임. 이는 형식만 다를 뿐 동일한 기능을 함.
CAST ( 값 AS 데이터형식 [ ( 길이 ) ] )
CONVERT ( 값, 데이터 형식 [ ( 길이 ) ] )
간단한 예

1) 위의 결과는 실수로 제시됨.
가격을 실수가 아닌 정수로 표현하고자 함.


날짜 확인하기

SQL의 결과를 원하는 형태로 표현할 때도 사용할 수 있음.
1) 가격(price)와 수량(amount)을 곱한 실제 구매액을 표시하는 SQL

2) CAST() 함수를 통해 정수인 가격과 수량을 문자로 바꿈.
3) CONCAT() 함수는 문자를 이어주는 역할을 함.
암시적인 변환은 CAST()나 CONVERT() 함수를 사용하지 않고도, 자연스럽게 행이 변환되는 것을 말함.
덧셈 예시

문자 연결하기

숫자와 문자를 CONCAT() 함수로 연결하기
1) 숫자가 문자로 변환되어 연결됨.
2) CONCAT() 함수를 사용하지 않으면, 문자가 숫자로 변환되어 계산됨.

