SQL COALESCE()
·
SQL
COALESCE()COALESCE(expr1, expr2, expr3, …)왼쪽부터 차례대로 평가하면서 최초 NULL이 아닌 값을 반환한다. 모든 값이 NULL인 경우 NULL을 반환하다 예시1. 기본SELECT COALESCE(NULL, NULL, 'Hello', 'World');결과는 NULL 2개 건너뛰고, 처음 나온 Hello를 반환한다. 2. NULL 값 대체SELECT name, COALESCE(phone, '전화번호 없음') AS phone_displayFROM customers;NULL값이 포함된 경우 특정 값으로 대체할 수 있다. 3. 숫자 컬럼SELECT id, COALESCE(discount, 0) AS discountFROM orders; 숫자 컬럼의 값이 NULL인 경우 0으로 대..
DBLock, 블로킹, DeadLock
·
SQL/MySQL
DBLockDB에 여러 트랜잭션이 동시에 동일한 데이터에 접근했을 때 정합성을 유지하고 충돌을 방지하여 순차적으로 처리될 수 있도록 지원하는 기능이다. 종류범위(Scope) 기준 (동시성 높은 순)Row-Level Lock (행 락)레코드(row)에 락을 설정작은 범위의 락으로 동시성을 높일 수 있지만 오버헤드가 발생할 수 있다Page-Level Lock (페이지 락)페이지(데이터 블록 단위)에 락을 설정페이지는 테이블을 구성하는 요소로 용량이 8kb로 제한되어 있다.Table-Level Lock (테이블 락)테이블 전체에 락을 설정동시성은 낮지만 간단하고 빠르게 구현할 수 있다Database-Level Lock (데이터베이스 락)데이터베이스 전체에 락을 설정주로 백업이나 복구 작업 등에서 사용된다.공유..
프로그래머스 Lv.5 - 멸종위기의 대장균 찾기
·
SQL/MySQL
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명대장균들은 일정 주기로 분화하며, 분화를 시작한 개체를 부모 개체, 분화가 되어 나온 개체를 자식 개체라고 합니다.다음은 실험실에서 배양한 대장균들의 정보를 담은 ECOLI_DATA 테이블입니다. ECOLI_DATA 테이블의 구조는 다음과 같으며, ID, PARENT_ID, SIZE_OF_COLONY, DIFFERENTIATION_DATE, GENOTYPE 은 각각 대장균 개체의 ID, 부모 개체의 ID, 개체의 크기, 분화되어 나온 날짜, 개체의 형질을 나타냅니다.Column nameTypeNullab..
프로그래머스 Lv.4 - 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기
·
SQL/MySQL
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제설명HR_DEPARTMENT 테이블은 회사의 부서 정보를 담은 테이블입니다. HR_DEPARTMENT 테이블의 구조는 다음과 같으며 DEPT_ID, DEPT_NAME_KR, DEPT_NAME_EN, LOCATION은 각각 부서 ID, 국문 부서명, 영문 부서명, 부서 위치를 의미합니다.Column nameTypeNullableDEPT_IDVARCHARFALSEDEPT_NAME_KRVARCHARFALSEDEPT_NAME_ENVARCHARFALSELOCATIONVARCHARFALSE  HR_EMPLOYEES 테이블..
MySQL CTE(Common Table Expression) 공통 테이블 표현식
·
SQL/MySQL
CTE(Common Table Expression) 공통 테이블 표현식 단일 쿼리문 내에서 임시 테이블을 생성하여 여러번 참조가 가능한 임시 결과 집합 MySQL 8.0.1부터 도입 WITH문 단일 레코드 # WITH {테이블명} AS (SELECT a AS A, b AS B) WITH temp AS ( SELECT "홍길동" AS name, 20 AS age ) # WITH {테이블명} (A, B) AS (SELECT a, b) WITH temp (name, age) AS ( SELECT "홍길동", 20 ) WITH문 다중 레코드 WITH temp (name, age) AS ( SELECT"홍길동", 20 UNION ALL -- 두 레코드를 병합 SELECT "김아무개", 30 ) WITH문 재귀사용..