파트 5-1. 데이터 형식, 변수
1. 데이터 형식
숫자 데이터 형식
숫자형 데이터 형식은 정수, 실수 등의 숫자를 표현한다.
범위를 확인해서 적절한 데이터 형식을 사용해야 한다.
문자 데이터 형식
varchar 형식은 가변길이 문자형으로 varchar(100)에 ‘abc’ 3 글자를 저장할 경우에 3자리만 사용하게 된다.
범위를 확인해서 적절한 데이터 형식을 사용해야 한다.
날짜와 시간 데이터 형식
SELECT CAST('2020-10-19 12:35:29.123' AS DATE) AS 'DATE';
SELECT CAST('2020-10-19 12:35:29.123' AS TIME) AS 'TIME';
SELECT CAST('2020-10-19 12:35:29.123' AS DATETIME) AS 'DATETIME';
cast를 이용해서 as date, time, datetime으로 변환한다. 뒤에 ‘date’는 열이름
기타 데이터 형식
LONGTEXT, LONGBLOB
MySQL은 LOB(대량의 데이터)를 저장하기 위해 LONGTEXT, LONGBLOB 데이터 형식을 지원한다. 예로 장편소설과 같은 큰 텍스트 파일이라면, 그 내용을 전부 LONGTEXT 형식으로 지정된 하나의 컬럼에 넣을 수 있고, 동영상 파일과 같은 큰 바이너리 파일이라면 그 내용을 전부 LONGBLOB 형식으로 지정된 하나의 컬럼에 넣을 수 있다.
2. 변수의 사용
- SQL도 다른 일반적인 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있다. 변수는 Workbench를 재시작할 때까지는 유지되지만 닫았다가 재시작하면 소멸된다. 따라서 잠시만 쓰는 것이라고 생각하면 된다.
- set 이외의 명령문에서는 = 가 비교연산자로 취급되기 때문에 select로 변수를 선언하고 값을 대입할 때는 := 를 사용한다.
- 사용자 정의 변수는 @을 이용하여 선언하지만 프로시저를 사용할 때(declare)의 변수 선언에서는 @를 사용하지 않는다.
SET @변수이름 = 대입값; -- 변수 선언 및 값 대입
SET @변수이름 := 대입값; -- 위에 것과 이것 모두 동일한 표현
SELECT @변수이름; -- 변수의 값 출력
SELECT @변수이름 := 대입값 ; -- 대입과 출력
-- 예시
SET @myVar4 = '가수 이름==> ';
SELECT @myVar4, name from usertbl where height > 180;
예시처럼 사용할 경우 결과를 좀더 깔끔하게 볼 수 있다.
일반적으로 limit에는 원칙적으로 변수사용이 불가능하다. 하지만 prepare 문을 사용하면 사용할 수 있다.
set @myvar1 = 3;
PREPARE myQuery -- 아래 쿼리를 준비한다.
from 'select name, height from usertbl order by height limit ?';
execute myQuery using @myVar1; -- ? 자리에 myvar1값이 들어간다.