데이터의 형식
데이터의 형식은 크게 숫자형, 문자형(날짜형)으로 나누어진다.
정수형
데이터 형식 | 바이트 | 범위 |
TINYINT | 1 | -128 ~ 127 |
SMALLINT | 2 | -32,768 ~ 32.767 |
INT | 4 | 약 -21억 ~ +21억 |
BIGINT | 8 | 약 -900경 ~ +900경 |
*INT를 가장 많이 사용한다.
*UNSIGNED 예약어 : 값의 범위가 0부터 시작된다.
실수형
소수점이 있는 숫자를 저장할 때 사용한다.
데이터 형식 | 바이트 | 설명 |
FLOAT | 4 | 소수점 아래 7자리까지 표현 |
DOUBLE | 8 | 소수점 아래 15자리까지 표현 |
문자형
데이터 형식 | 바이트 | 설명 |
CHAR(개수) | 1~255 | - 고정길이 문자형으로 자릿수가 고정되어 있다. - 공간이 낭비될 수 있다. - 성능이 빠르다. - 전화번호 같은 개수가 고정된 문자에 사용한다. |
VARCHAR(개수) | 1~16383 | - 가변길이 문자형으로 VARCHAR(10)에 3글자만 저장할 경우 3자리만 사용한다. - 공간을 효율적으로 활용할 수 있다. - 사용하지 않는 공간은 반납해야하므로 성능이 느리다. - 동적인 문자에 사용한다. |
전화번호, 등번호처럼 숫자로서의 의미가 없는 숫자는 문자로 사용할 수 있다. 숫자로서 의미를 가지려면 다음 2 가지중 1 가지는 충족해야 한다.
- 더하기/빼기 등의 연산에 의미가 있다.(산술 연산자)
- 크다/작다 또는 순서에 의미가 있다.(비교 연산자)
대량의 데이터 형식
사진, 영상, 자막과 같은 큰 데이터를 저장하기 위해서는 다음과 같은 형식을 사용해야 한다.
데이터 형식 | 바이트 | |
TEXT형식 | TEXT | 1~65535 |
LONGTEXT | 1~4294967395 | |
BLOB형식 | BLOB | 1~65535 |
LONGBLOB | 1~4294967295 |
*BLOB은 Binary Long Object의 약자로 사진, 영상 같은 파일을 뜻한다.
날짜형
날짜 및 시간을 저장할 때 사용한다.
데이터 형식 | 바이트 | 설명 |
DATE | 3 | 날짜만 저장. YYYY-MM-DD 형식으로 사용 |
TIME | 3 | 시간만 저장. HH:MM:SS 형식으로 사용 |
DATETIME | 8 | 날짜 및 시간을 저장. YYYY-MM-DD HH:MM:SS 형식으로 사용 |
변수
SQL도 다른 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있다.
*@는 지역변수 @@는 전역변수를 뜻한다.
SET @변수 = 값; ==> 변수 선언 및 초기화
SELECT @변수; ==> 변수의 값 출력
SET @myVar1 = 10;
SET @myVar2 = 4.25;
SELECT @myVar1;
SELECT @myVar1+@myVar2;
SET @txt = '가수 이름=>';
SET @height = 166;
SELECT @txt, mem_name, height
FROM member
WHERE height > @height;
특징
- 변수를 선언할 때 데이터 타입을 지정해주지 않아도 된다.
- 변수끼리의 연산이 가능하다.
- 변수를 다른 명령어에서 사용할 수 있다.
PREPARE / EXECUTE
LIMIT절에는 변수를 사용할 수 없는데 이를 해결하는 것이 바로 PREPARE / EXECUTE다. JAVA의 PreparedStatement와 똑같은 기능을 하며 사용 방법도 비슷하다.
SET @count=3;
PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE mySQL USING @count;
- SET @count = 3;로 LIMIT에 사용할 변수를 설정한다.
- PREPARE 명령으로 SQL 쿼리를 미리 준비한다.. 이때, LIMIT 절에서 사용할 자리 표시자?를 설정한다.
- EXECUTE 명령으로 준비한 쿼리를 실행한다. USING @count를 통해 @count 변수의 값을 쿼리에 전달한다.
데이터 형 변환
데이터의 형식을 변환시키는 것을 형 변환이라고 하며, 함수를 사용하여 변환하는 명시적 형 변환과, 자연스럽게 변환되는 암시적인 변환이 있다.
명시적 형 변환
CAST(), CONVERT() 함수를 사용하여 데이터의 형식을 변환할 수 있다.
함수 안에 올 수 있는 데이터 타입은 CHAR, SIGNED, UNSIGNED, DATE, TIME, DATETIME등이 있으며, SIGNED는 부호( - )가 있는 정수 UNSIGNED는 부호( - )가 없는 정수를 의미한다.
CAST(값 AS 데이터형식)
CONVERT(값, 데이터형식)
CONVERT()
SELECT CONVERT(AVG(price), SIGNED) AS '평균 가격'
FROM buy;
CAST()
SELECT CAST(AVG(price) AS SIGNED) AS '평균 가격'
FROM buy;
- 평균 가격의 소수점을 없애기 위한 형 변환이다.
SELECT CAST('2022%10%12' AS DATE) AS '날짜';
SELECT CAST('2022*12*12' AS DATE) AS '날짜';
SELECT CONVERT('2021/10/23', DATE) AS '날짜';
SELECT CONVERT('2010^12@04', DATE) AS '날짜';
- 특정 문자열을 날짜형으로 변경하는 형 변환이다.
SELECT num, CONCAT(CONVERT(price, CHAR), 'X', CAST(amount AS CHAR), '=')
AS '가격X수량', price*amount AS '구매액'
FROM buy;
- CONCAT()함수 안에서 형 변환을 진행할 수 있다.
암시적 형변환
함수를 사용하지 않고도 자연스럽게 형이 변환되는 것을 의미하며, SQL에서 자동으로 데이터형식을 인식하여 변환해 준다.
SELECT '100' + '200'; ==> 300
SELECT CONCAT(100, '200'); ==> 100200
SELECT '100' + 200; ==> 300
'SQL' 카테고리의 다른 글
SQL - 뷰(VIEW) (0) | 2024.11.07 |
---|---|
SQL - JOIN (0) | 2024.11.07 |
SQL - 기본 문법(데이터 변경) (0) | 2024.11.06 |
SQL - 기본 문법(SELECT) (4) | 2024.11.06 |
SQL - 기본 문법 (0) | 2024.11.05 |