오늘은 여러 함수들을 활용해서 데이터를 간단하게 조회하고 수정해봤는데 별거는 아니지만 데이터를 다루는 게 상당히 재미있는 것 같다. 그리고 내일 Python과 MySQL을 연동하는 것을 해보면 이제 MySQL 파트도 거의 끝난 것 같다.
함수를 사용해서 문자열을 수정해도 원본은 수정되지 않음
SELECT name, birth_date, CONCAT(name, "(", birth_date, ")") name_with_birth
FROM users;
SELECT name, birth_date, CONCAT_WS("-", name, birth_date) name_with_birth
FROM users;
SELECT product_name, LEFT(product_name, 2) FROM products;
SELECT name, SUBSTRING(name, 2, 2) first_name FROM users;
SELECT email, SUBSTRING_INDEX(email, "@", -1) email_domain FROM users;
SELECT name, email, UPPER(email) upper_email FROM users;
SELECT name, REPLACE(name, "이", "LEE") replaced_name FROM users;
# ROUND() = 반올림
SELECT ROUND(3.56); # 4
SELECT ROUND(1234.5678, 2); # 1234.57
# CEIL() = 올림
SELECT CEIL(3.26); # 4
# FLOOR = 내림
SELECT FLOOR(3.26); # 3
SELECT MOD(10, 3); # 1
SELECT ABS(-100); # 100
SELECT RAND(); # 0.10608202042624543
SELECT NOW(); # 2025-10-27 10:30:41
SELECT CURDATE(); # 2025-10-27
SELECT CURTIME(); # 10:31:13
SELECT DATEDIFF(CURDATE(), "2025-10-26"); # 1
SELECT DATE_ADD(CURDATE(), INTERVAL 3 DAY); # 2025-10-30
SELECT YEAR(NOW()); # 2025
SELECT MONTH(NOW()); # 10
SELECT DAY(NOW()); # 27
SELECT name, gender, IF(gender = "남", "Male", "Female") gender_eng FROM student;
SELECT name, price, IF(price >= 10000, "비쌈", "저렴") price_level FROM products;
SELECT product_name, price, IF(price > (SELECT AVG(price) FROM products), "고가", "저가") price_grade FROM products;
SELECT name, IFNULL(phone, "전화번호 없음") FROM customers;
SELECT name, IFNULL(membership_level, "Iron") FROM customers;
SELECT order_id, order_status, IFNULL(order_status, "주문취소") order_status_edit FROM orders;
SELECT order_id, order_status, NULLIF(order_status, "처리중" OR "배송중") order_status_edit FROM orders;
SELECT order_id, order_status,
CASE order_status
WHEN "완료" THEN "결제가 완료됐어요"
WHEN "배송" THEN "배송중이에요"
WHEN "처리중" THEN "주문이 처리되고 있어요"
ELSE "상태를 알 수 없어요"
END AS statuse_label
FROM orders;
SELECT order_id, order_status, created_at,
CASE
WHEN order_status != "배송완료" THEN "대상 아님"
WHEN DATEDIFF(NOW(), created_at) >= 250 THEN "후기 요청"
ELSE "배송 확인"
END AS followup_status
FROM orders;
SELECT "100" + 200; # 300
SELECT "100" + "200"; # 300
SELECT CAST("123" AS SIGNED); # 123
SELECT CAST(3.14 AS CHAR); # 3.14
SELECT CAST("20250403" AS DATE); # 2025-04-03
SELECT CONVERT("123", SIGNED); # 123
SELECT CONVERT(3.14, CHAR); # 3.14
SELECT CONVERT("20250403", DATE); # 2025-04-03
SELECT CONVERT("한글" USING utf8mb4);
다음 주부터는 아두이노를 배우면서 최종 프로젝트를 준비한다고 하는데, 태양광 패널을 아두이노로 다루면서 그것을 지금까지 배웠던 내용들과 어떻게 연관시켜야 할지 지금부터 조금씩 준비해둬야겠다고 생각했다.