본문 바로가기

DB

SQL 문제풀이 1) SQL 문제풀이 중 인상 깊은 문제가 존재하여 게시글을 작성합니다. 문제 내용을 요약하자면 다음과 같습니다. 1.테이블의 열을 행으로 표시해라. 2.행으로 표시할 때 열에 해당되는 특정 데이터는 순서가 존재한다. 3. 특정 데이터가 여러 개 일경우 알파벳 순으로 다음 행에 표시한다. 4. 행에 표시할 데이터가 없을경우 NULL로 표시한다. Output Jun July Kim hong Null amily doc collen 우선 요구사항을 정리하자면 열을 행으로 표시하기 위해 피벗을 이용해야한다는 것을 알 수 있었습니다. MySQL은 pivot을 지원하지 않지만 group_concat 함수를 이용하여 행에 열 데이터(구분자 포함)를 표시할 수 있습니다. group_concat(column, separato.. 더보기
MariaDB에서 사용하는 스토리지 엔진에 대해 알아보자 오늘은 MariaDB에서 사용하는 스토리지 엔진에 대해서 알아볼텐데요. 스토리지 엔진의 종류은 8가지이나 여기서는 MyISAM과 InnoDB만 다룰예정입니다. MariaDB에서 테이블을 생성할 때 기본적으로 적용되는 엔진이 InnoDB입니다. 그렇다면 각각의 스토리지 엔진에 대한 특징을 알아보겠습니다. MyISAM Table-Level Locking 트랜잭션과 ACID를 지원하지 않음 외래키 지원 X InnoDB Row-Level Locking 트랜잭션과 ACID를 지원 외래키 지원 MyISAM은 Table Level로 Locking하기 때문에 CRUD가 빈번한 서비스의 경우 적절하지 않으며 검색 위주의 서비스에 적절하다.(InnoDB에 비해 검색 속도가 빠름) 반면 InnoDB는 트랜잭션과 ACID를 .. 더보기
View란 무엇인가? View는 하나 또는 그 이상의 기본테이블로부터 만들어지는 가상의 테이블입니다. 기본테이블의 경우 물리적으로 데이터가 저장되는 반면 View는 뷰의 정의만 시스템 내에 저장되어있다가 실행시간에 테이블을 구축합니다. 뷰는 다음과 같은 특징을 가지고 있습니다. 데이터 검색의 경우 기본 테이블과 아무런 사용없이 사용가능합니다. 뷰에 대한 갱신(삽입, 삭제, 수정) 연산은 제약이 존재합니다. 뷰 생성 SQL CREATE VIEW 뷰이름 AS SELECT 문 WITH CHECK OPTION 뷰 제거 SQL DROP VIEW 뷰이름 {RESTRICT | CASCADE} 뷰의 제약조건 집계 함수(COUNT, SUM, AVG, MAX, MIN)가 관련되어 정의된 경우 DISTINCT, GROUP BY, HAVING이 .. 더보기
트랜잭션에서 사용되는 ACID란? 데이터베이스의 트랜잭션이 성공적으로 수행하는 것을 보장해야하는 성질들의 앞글자를 표현한 약어 원자성(Atomicity) 일련의 작업들이 하나의 작업과 같이 모두 성공처리하거나, 실패처리해야하는 성질 일관성(Consistency) 데이터베이스의 무결성제약을 위반하면 트랜잭션은 중단되는 성질 고립성(Isolation) 하나의 트랜잭션이 실행될 때, 다른 트랜잭션이 실행하는 것을 방지하는 성질 ex) 고립성이 없다면 Dirty Read, NonRepeatable Read, Pantom Read가 발생할 수 있습니다. 지속성(Durability) DBMS가 트랜잭션에 대한 응답을 사용자에게 응답해야할 때, 데이터베이스의 장애가 발생하더라도 트랜잭션에 대한 커밋은 보장되어야 하는 성질 DBMS는 지속성을 보장하기.. 더보기