데이터베이스- 내장함수, 데이터형 변환

지환·2023년 8월 19일
0

Mysql

목록 보기
5/17
post-thumbnail

출처| https://www.youtube.com/watch?v=UVY0mfa4VP0&list=PLqTUMsvO70nk8WfCyU-IPmc85390CaSqM&index=1

https://cafe.naver.com/thisisMySQL
https://velog.io/@ong_hh/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B5%AC%EC%B6%95

데이터형 변환 및 내장함수

숫자 데이터 형식

문자 데이터 형식

날짜와 시간 데이터 형식

변수

USE sqldb;
SET	@myVar1 = 5;
SET	@myVar2 = 10;
SET	@myVar3 = 15;
SET	@myVar4 = '가수 이름 ==> ';

SELECT @myVar1;
SELECT @myVar2 + @myVar3;

SELECT @myVar4, Name FROM usertbl WHERE height > 180;

SET @myvar1 = 3;
PREPARE myQuery
	FROM 'SELECT Name, height FROM usertbl ORDER BY height LIMIT ?';
EXECUTE myQuery USING @myVar1;
  • PREPARE 쿼리를 준비해놓는다. -> EXECUTE myQuery USING @myVar1; 이 부분이 실행된다.

데이터 형식 변환

CAST()

[형식]
CAST ( expression AS 데이터형식 [ (길이) ] )
CONVERT ( expression , 데이터형식 [ (길이) ] )

[예시]
USE sqldb;
SELECT AVG(amount) AS '평균 구매 개수' FROM buytbl;

정수로 보기 위해서 변환함.

[변환 완료]
1. SELECT CAST(AVG(amount) AS SIGNED INTEGER) AS '평균 구매 개수' FROM buytbl;
2. SELECT CONVERT(AVG(amount), SIGNED INTEGER) AS '평균 구매 개수' FROM buytbl;

SELECT CAST('2020$12$12' AS DATE);
SELECT CAST('2020/12/12' AS DATE);

쿼리문을 보기 좋게 처리할 대도 단가와 수량을 곱한 실제 입금액을 표시하는 쿼리는 다음과 같이 표현 가능하다.

SELECT num, CONCAT(CAST(price AS CHAR(10)), 'X', CAST(amount AS CHAR(4)), '=') AS '단가x수량', price*amount AS '구매액'

FROM buytbl;

암시적인 형변환

Mysql 내장함수

IF(수식,참,거짓)

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

-> 거짓이 출력된다.

IFNULL(수식1,수식2)

  • 수식1이 NULL이 아니면 수식1이 반환되고, 수식1이 NULL이면 수식2가 반환된다.
SELECT IFNULL(NULL,'별이군요'), IFNULL(100,'낼이군요');

CASE~WHEN~ELSE~END

  • CASE는 내장함수는 아니며 연산자로 분류된다. 다중 분기에 사용될 수 있으므로 내장 함수와 알아두면좋다.
SELECT CASE 10 
	WHEN 1 	THEN '일'
    WHEN 5	THEN '오'
    WHEN 10	THEN '십'
    ELSE '모름'
 END AS 'CASE 연습'
---> 십 출력

문자열 함수

ASCII,CHAR(숫자)

SELECT ASCII('A'), CHAR(65);
-->65와 'A'를 돌려준다. 

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

SELECT CONCAT_WS('/', '2025'. '01', '01');

--> 2025/01/01 반환

날짜 및 시간 함수

ADDDATE(날짜,차이),SUBDATE(날짜,차이)

  • 날짜를 기준으로 더하거나 뺀 날짜를 구한다.
SELECT ADDDATE('2025-01-01', INTERVAL 31 DAY), ADDDATE('2025-01-01', INTERVAL 1 MONTH);

--> 31일후 또는 한달 후인 2025-02-01 출력

SELECT SUBDATE('2025-01-01', INTERVAL, 31 DAY), SUBDATE('2025-01-01', INTERVAL, 1 MONTH);

--> 한달 전인 2024-12-01 반환한다.

YEAR(날짜), MONTH(날짜),DAY(날짜)

HOUR(시간),MINUTE(시간),SECOND(시간)

SELECT YEAR(CURDATE()), MONTH(CURDATE()), DAYOFMONTH(CURDATE());
profile
아는만큼보인다.

0개의 댓글