MySQL 42

[MySQL] 프로시저, 이벤트 스케줄러 만들기

// 테이블 생성 CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50), age INT ); insert into users values (1, 'name', 20), (2, 'name2', 21); select * from users; // 프로시저 생성 DELIMITER // CREATE PROCEDURE update_user_age ( IN p_id INT, IN p_age INT ) BEGIN UPDATE users SET age = p_age WHERE id = p_id; END // DELIMITER ; // 프로시저 목록 조회 show procedure status; // 호출 CALL update_user_age(2, 40); // ..

DB 2023.10.06

[MySQL] CMD이용해 CRUD 하기

-MySQL 셸에 액세스 mysql -u root -p 명령어 입력 후 MySQL 루트 사용자 암호를 입력한다. -데이터베이스 생성 CREATE DATABASE [데이터베이스 이름] -데이터베이스 삭제 DROP DATABASE [데이터베이스 이름] -모든 데이터베이스 보기 SHOW DATABASES; -데이터베이스 선택 USE [데이터베이스 이름] -테이블 생성 CREATE TABLE [테이블 이름]( 컬럼명 데이터타입 조건, 컬럼명 데이터타입 조건, ... ); 테이블 구조 확인 DESC [테이블 명] create -데이터 삽입 INSERT INTO [테이블 명] ([칼럼1], [칼럼2], [칼럼3]) VALUES ([값1], [값2], [값3]....) read -테이블 전체 데이터 확인 SELECT..

DB 2023.05.04

[MySQL] 문자열 관련 함수

MySQL 문자열 관련 함수를 정리해보았다. 찾으면 찾을 수록 정말 다양한 함수들을 제공해주는것 같다. LENGTH(str) 문자열의 길이 찾기 SELECT LENGTH('HELLO') -- 5 CONCAT(str, str) 여러 문자열 합치기 SELECT CONCAT('안녕','하','세요'); --'안녕하세요' INSTR(str, substr) 문자열에서 찾는 문자열이 몇번째 위치에 있는지 알아내기 찾는 문자열이 없을 경우 0 리턴, 1개 이상 있는 경우 첫번째 문자열의 시작 자리수 리턴 SELECT INSTR('ABCDE', 'BC') -- 2 REPLACE(str, from_str, to_str) 문자열에서 특정 문자열을 찾아 원하는 문자열로 모두 치환한다. SELECT REPLACE('www.n..

DB 2023.03.04

[MySQL] 자주 나오는 문법 정리

프로그래머스 고득점 KIT 문제를 풀어보면서, 자주 나오는 MySQL 문법들을 정리해보았다. LIMIIT 결과 개수 제한 ORDER BY ID LIMIT 1 # 가장 상위 1개만을 조회한다. * LIMIT 0, 3: 상위 0번째부터 3번째까지의 정보 조회 정렬 우선순위 별 다중 정렬 ORDER BY NAME, ID DESC 이름 오름차순 정렬, 이름이 같으면 ID 내림차순 정렬 LIKE 부분 일치 WHERE NAME LIKE 'A%' # A로 시작하는 NAME WHERE NAME LIKE '%A' # A로 끝나는 NAME WHERE NAME LIKE '%A%' # A가 포함된 NAME DATE_FORMAT 날짜 형식 지정 SELECT DATE_FORMAT(DATE_TIME, '%Y-%m-%d') 날짜를 ..

DB 2023.02.25

[MySQL] 프로그래머스 - 상품을 구매한 회원 비율 구하기(JOIN, DISTINCT)

https://school.programmers.co.kr/learn/courses/30/lessons/131534 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT YEAR(SALES_DATE) YEAR, MONTH(SALES_DATE) MONTH, COUNT(DISTINCT O.USER_ID) PUCHASED_USERS, ROUND(COUNT(DISTINCT O.USER_ID) / ( #2021에 가입한 전체 회원수 SELECT COUNT(USER_ID) FROM USER_INFO WHERE YEAR(JOINED) = 2021 ), 1) AS..

DB 2023.02.23

[MySQL] 프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/131532 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr -- 코드를 입력하세요 SELECT YEAR(SALES_DATE) YEAR, MONTH(SALES_DATE) MONTH, GENDER, COUNT(DISTINCT U.USER_ID) AS USERS FROM USER_INFO U JOIN ONLINE_SALE O ON U.USER_ID = O.USER_ID GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE), GEND..

DB 2023.02.23

[MySQL] 프로그래머스 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/157339 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT CAR.CAR_ID, CAR.CAR_TYPE, ROUND(CAR.DAILY_FEE * (1- 0.01 * DISCOUNT_RATE) * 30) AS FEE FROM CAR_RENTAL_COMPANY_CAR CAR JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN PLAN ON CAR.CAR_TYPE = PLAN.CAR_TYPE WHERE CAR.CAR_ID NOT ..

DB 2023.02.22

[MySQL] 프로그래머스 - 오프라인/온라인 판매 데이터 통합하기(UNION ALL)

https://school.programmers.co.kr/learn/courses/30/lessons/131537# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT FROM( SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT FROM ONLINE_SALE UNION ALL SELECT SALES_DATE, PRODUCT_ID, NULL AS USER..

DB 2023.02.21

[MySQL] 프로그래머스 - 자동차 대여 기록 별 대여 금액 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/151141 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr WITH TRUCK AS( SELECT HISTORY.HISTORY_ID, CAR.DAILY_FEE, (DATEDIFF(END_DATE, START_DATE)+1) DAYS, CASE WHEN(DATEDIFF(END_DATE, START_DATE)+1) >= 90 THEN '90일 이상' WHEN(DATEDIFF(END_DATE, START_DATE)+1) >= 30 THEN '30일 이상' W..

DB 2023.02.14