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');
'데이터 > SQL' 카테고리의 다른 글
[혼공] 4-3장 SQL 프로그래밍 (0) | 2023.08.12 |
---|---|
[혼공] 4-2장 두 테이블을 묶는 조인 (0) | 2023.08.08 |
[혼공] 3-3장 데이터 변경을 위한 SQL문 (0) | 2023.08.07 |
[혼공] 3-2장 Select문 기본(2) (0) | 2023.08.06 |
[혼공]3-1 select문 기본(1) (0) | 2023.08.04 |