MySQL

Programming/Database

[DB,Transaction] Transaction 과 Lock

트랜잭션이란. 데이터베이스의 데이터를 조작하는 작업의 단위. 트랜잭션은 이론적으로 ACID 원칙을 보장해야 한다. Atomicity (원자성) : 트랜잭션의 부분 작업만 성공할 순 없다. 전체가 성공하거나, 전체가 실패해야 한다. Consistency (일관성) : 트랜잭션이 성공하면 언제나 일관성이 있는 데이터베이스 상태를 유지하는 것을 의미. 만약 모든 계좌는 잔고가 있어야 한다면, 이를 위반하는 트랜잭션은 중단된다. Isolation (독립성) : 하나의 트랜잭션이 실행되고 있을 때, 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. Durability (지속성) : 성공적으로 수행된 트랜잭션은 영원이 반영되어야 한다. 모든 트랜잭션은 로그로 남고, 시스템 장애 발생 전으로 되..

Programming/Algorithm

[Mysql] 프로그래머스 - GROUP BY입양 시각 구하기(2)

programmers.co.kr/learn/courses/30/lessons/59413 코딩테스트 연습 - 입양 시각 구하기(2) ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 programmers.co.kr 풀이: SET @hour := -1; SELECT (@hour := @hour + 1) as HOUR, (SELECT COUNT(ANIMAL_ID) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT FROM ANIMAL_OUT..

Programming/Database

[Mysql] group_concat 으로 그룹핑한 데이터 하나로 모으기

쿼리로 통계 또는 지표 데이터를 만들다 보면 그룹화된 데이터를 하나의 데이터로 표출해야 하는 경우가 생기게 된다. ex) 서비스를 이용하고 있는 사용자들의 이름 또는 아이디 정보를 쉼표로 구분해서 하나의 문자열로 합쳐서 보고 싶다!. 그런 경우에는 mysql에서는 group_concat 함수를 실행시키면 된다. group_concat 함수의 자세한 스펙은 다음과 같다. https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_group-concat MySQL :: MySQL 8.0 Reference Manual :: 12.20.1 Aggregate Function Descriptions MySQL 8.0 Reference Manu..

Programming/Database

[Mysql] 버전 문자열 비교 및 숫자 변환

어제 회사에서 앱을 스토어에 배포하고, 버전업을 테스트하는 과정에서 서버가 버전을 제대로 비교하지 못하는 이슈가 있었다. app 버전 정보를 저장하는 DB TABLE은 다음과 같다. [ app ] app_id package_name version_name created_at 1 'com.test.mobile' '1.0.0' 2019-03-06 1:00:10.000000 2 'com.test.mobile' '1.0.1' 2019-03-07 1:00:10.000000 3 'com.test.mobile' '1.0.5' 2019-03-08 1:00:10.000000 SELECT * FROM app WHERE package_name = {target_package_name} ORDER BY version_name..

JohnMark
'MySQL' 태그의 글 목록