MySQL에서는 월요일부터 일요일까지 0~7로 나타내므로 case문을 사용해서 한글로 출력하면 된다 SELECT CASE a.a WHEN '0' THEN '월' WHEN '1' THEN '화' WHEN '2' THEN '수' WHEN '3' THEN '목' WHEN '4' THEN '금' WHEN '5' THEN '토' WHEN '6' THEN '일' END AS week, IFNULL( b.cnt, 0 ) AS cnt FROM ( SELECT a.a FROM ( SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 ) AS a )..
프로젝트를 진행하다보니 여러 형식으로 날짜를 출력해야 할 때가 많았다. 그럴 때마다 DATE_FORMAT에서 사용하는 알파벳들이 헷갈려서 검색하곤 했었는데, 자주 사용할만한 것들을 따로 정리하면 유용하게 쓰일 것 같아서 적어본다! DATE_FORMAT(날짜형식컬럼, 형식지정) 컬럼 대신 now()를 쓰면 현재의 날짜도 얻을 수 있다. ex) DATE_FORMAT(now(), '%Y-%m-%d') 구분 문자 설명 연 %Y 4자리 연도 연 %y 2자리 연도 월 %m 2자리 월(01-12) 월 %c 1자리 월(1-12) 월 %M 영어 월(January, February 등) 월 %b 영어 약자 월(Jan, Feb 등) 일 %d 2자리 일(01-31) 일 %e 1자리 일(1-31) 시 %H 2자리 24시간(00..
B : 데이터 페이지들의 수 R : 페이지 당 레코드들의 수 D : 디스크 페이지를 read/write하기 위한 평균시간 파일 스캔 동등 검색 범위 검색 삽입 삭제 힙 파일 BD 0.5BD BD 2D 검색 연산 + D 정렬 파일 BD Dlog2B D (log2B + match page 수) 검색 연산 + BD 검색 연산 + BD 군집 트리 인덱스 1.5BD DlogF1.5B D(logF1.5B + match page 수) 검색 연산 + D 검색 연산 + D 비군집 트리 인덱스 BD(R + 0.15) D(1 + logF0.15B) D(logF0.15B + matched Records수) D(3 + logF0.15B) D(3 + logF0.15B) 비군집 해시 인덱스 BD(R + 0.125) 2D BD 4D..
한 노드의 왼쪽 노드는 해당 노드보다 작은 값, 오른쪽 노드는 큰 값으로 정렬되어 있음. 내부 노드: 인덱스 엔트리. 키값과 방향 지시자로 구성. 리프 노드: 데이터 엔트리(검색 키 값으로 정렬됨) 검색 과정: 루트 노드(메인 메모리에 상주)에서 검색 시작 -> 검색 값에 따라 해당 자식 노드로 분기 -> Leaf 노드에 도달하여 탐색 레코드를 찾음. B+ 트리 (Balanced tree in height) - 루트 노드에서 리프 노드로 가는 모든 경로의 길이가 동일한 인덱스 구조 - 탐색 키 값에 관계없이 검색 시간이 거의 일정 - 검색을 위한 디스크 IO 횟수는 root로부터 leaf에 도달하는 경로의 길이 - 모든 리프 노드들은 double linked list로 연결됨 - 범위 검색에 유용 - 범..
군집 인덱스(Clustered Index): 정렬된 속성으로 만든 인덱스. 최대 하나만 생성 가능. 비군집 인덱스(Unclustered Index): 정렬되지 않은 일반 속성으로 만든 인덱스. 여러 개 생성 가능 밀집 인덱스(dense index): 데이터 파일의 각 레코드마다 한 개의 데이터 엔트리를 가짐. 즉 모든 레코드를 인덱싱. 희소 인덱스(sparse index): 각 데이터 블록마다 한 개의 데이터 엔트리를 가짐. 데이터 블록 중 하나의 레코드만 인덱싱. 군집 인덱스에서는 대부분 희소 인덱스를 구축. 실제 데이터 파일이 인덱싱된 속성으로 정렬되어 있으므로, 인덱스를 통해 검색값이 어느 데이터 블록에 속하는지를 비교하여 검색. 희소 인덱스가 밀집 인덱스보다 크기가 적으므로 상대적으로 효율적. 비..
인덱스 목적: 찾고자 하는 레코드의 검색 속도 향상 - Digital Index: 모체 데이터(전체 데이터베이스)를 기반으로 search key(탐색 키) 값을 찾기 쉽도록 배열한 data entry들의 집합 - Data entry: 인덱스 파일에 저장된 레코드(탐색키 필드 + 주소 필드) - 탐색 키 값에 따라 정렬 - 범용적인 인덱스 구조: balanced 트리 - 모체 데이터가 추가/삭제/수정되면 각 인덱스에 반영되어야 함 복합 인덱스: 두개 이상의 속성으로 인덱스가 만들어지는 것 ex) 전공, 학년으로 인덱싱: 전공으로 1차 정렬, 학년으로 2차 정렬 Index의 data entry에 저장할 방식 ① k *: search key 값이 k인 실제 data record ② : rid는 k 값에 해당하..
페이지: 데이터를 읽고 쓰는 기본 단위 (대부분 4KB/8KB, 데이터베이스에서 주로 사용) 블락: 메인메모리와 디스크간의 데이터 입출력의 기본 단위. 몇 개의 페이지들로 구성. (운영체제에서 주로 사용) 데이터베이스 연산 처리시간 : 페이지들의 입출력 시간 + CPU 처리 시간 페이지의 입출력 시간이 CPU 처리 시간보다 훨씬 크므로 데이터베이스의 데이터를 빠르게 처리하기 위해서는 데이터의 입출력에 필요한 페이지 수를 최소화할 필요가 있음 데이터베이스는 여러 개의 파일로 구성 논리적으로는 테이블들로 구성, 물리적으로는 파일들로 저장 1) Heap 파일 (순서가 없는 파일) 동등검색(ex: 학번이 1234인 학생을 검색) 키(ex: 학번, 주민번호) : 평균적으로 전체 페이지의 절반을 검색 값을 찾은 후..
정규형(Normal Form, NF) : 릴레이션 스키마에 있는 함수종속의 유형에 따라 정규화된 정도를 등급으로 구별함 정규형 등급이 높아질수록 데이터의 중복이 적어지고 이상현상이 줄어듦 FD를 기반으로 하는 정규형 : 제1정규형 (first normal form: 1NF), 제2정규형 (second normal form: 2NF), 제3정규형 (third normal form: 3NF), 보이스-코드 정규형 (Boyce-Code normal form: BCNF) 그 외의 정규형 : 제4정규형 (fourth normal form: 4NF), 제5정규형 (fifth normal form: 5NF or PJNF)) 1) 제1정규형 (first normal form: 1NF) : 릴레이션에 있는 각 필드가 원..