숲로 2023. 2. 1. 09:54

1) 숫자 데이터 형식

ㆍ  DECIMAL 정확한 수치를 저장

UN 부호 없이 사용

 

2) 문자 데이터 형식

ㆍ CHAR  문자 길이가 고정되어 있을 경우 사용 (일반적으로 더 좋은 성능)

ㆍ VARCHAR 문자 길이 가변적

ㆍ LONGTEXT: 큰 텍스트 파일

ㆍ LONGBLOB: 동영상 파일과 같은 큰 바이너리 파일

3) 날짜 시간 데이터 형식

4) 기타 데이터 형식

ㆍ GEOMETRY: 공간 데이터 형식으로 점, 선,

ㆍ JSON 

 

2. 변수의 사용

1) 변수 선언

SET @변수이름 = 변수의 값;    -- 변수 선언 및 값 대입
SELECT @변수이름;   --변수 값 출력 
USE sqldb;

SET @myVar1 = 5;
SET @myVar2 = 3;
SET @myVar3 = 4.25;
SET @myVar4 = '가수 이름 ==>';

SELECT @myVar1;
SELECT @myVar2 + @myVar3;
SELECT @myVar4, Name FROM usertbl WHERE height > 180;

2)  PREPARE EXCUTE

LIMIT는 변수선언이 안돼

PREPARE 쿼리이름 FROM

prepare 

excute 할 떄 실행돼 

USE sqldb;

SET @myVar1 = 3;
PREPARE myQuery
	FROM 'SELECT Name, height FROM usertbl ORDER BY height LIMIT ?';
EXCUTE myQuery USING @myVar1;

 

3. 데이터 형식과 형 변환

1) CAST() 2) CONVERT()

형식:
CAST (expression AS 테이블 형식 [ (길이) ] )
CONVERT (expression, 데이터형식 [ (길이) ] )
use sqldb;
SELECT AVG(amount) AS '평균 구매 개수' FROM buytbl;

SELECT CAST(AVG(amount) AS  SIGNED INTEGER) AS '평균 구매 개수' FROM buytbl;

SELECT CONVERT(AVG(amount), SIGNED INTEGER) AS '평균 구매 개수' FROM buytbl;

3) 암시적 형 변환

SELECT '100' +'200'; -- 문자와 문자 더함(정수로 변환됨)
SELECT CONCAT('100','200'); -- 문자와 문자를 연결(문자로 처리)
SELECT CONCAT(100, '200'); -- 정수와 문자를 연결(정수가 문자로 변환되어 처리)
SELECT 1 > '2mega';
SELECT 3 > '2MEGA'; 
SELECT 0 = 'mega2'; -- 문자는 0으로 변환

 mega


4, 내장 함수

1) 제어 흐름 함수

ㆍ IF(수식, 참, 거짓)

 

ㆍ IFNULL(수식1, 수식2)

수식1이 NULL이 아니면 수식1 반환, NULL이면 수식2 반환

앞에 있는 것이 NULL인지 아닌지

 

ㆍ NULLIF(수식1, 수식2)

수식1과 수식2가 같으면 NULL 반환, 다르면 수식1 반환

SELECT IF (100>200, '참이다', '거짓이다');
-- 거짓이다

SELECT IFNULL(NULL, '널이군요'), IFNULL(100, '널이군요');
-- 널이군요 / 100

SELECT NULLIF(100,100), IFNULL(200,100);
-- NULL / 200

 

ㆍ CASE~ WHEN ~ ELSE ~ END

 

SELECT CASE 10
		WHEN 1 THEN '일'
		WHEN 5 THEN '오'
		WHEN 10 THEN '십'
		ELSE '모름'
	END AS 'CASE연습'; -- 출력될 열의 별칭

 

2) 문자열 함수

ㆍ ASCII(아스키 코드), CHAR(숫자)

 

ㆍ CONCAT(문자열1, 문자열2,...)

CONCAT_WS(구분자, 문자열1, 문자열2,...)

구분자와 함께 문자열을 이어줌

 

 


INNER JOIN

애칭 쓰는게 더 효율적,  직관적으로 이름 볼 수 있어