본문 바로가기

전체 글

(197)
[MySQL] 인덱스 구조 '색인'이라고도 불리는 인덱스는 데이터베이스 객체 중 하나이다. 인덱스는 검색 속도를 향상할 수 있는데 여기서 말하는 검색이란 SELECT 명령에서 WHERE구로 조건을 지정하고 그에 일치하는 행을 찾는 일련의 과정을 말한다. 테이블에 인덱스가 지정되어 있으면 효율적으로 검색이 가능해 WHERE구로 조건이 지정된 SELECT 명령의 처리 속도가 향상된다. 인덱스는 테이블과 별개로 독립된 데이터베이스 객체로 작성되지만, 인덱스만으로는 아무런 의미가 없어 인덱스는 테이블에 의존하는 객체라 할 수 있다. 검색에 사용하는 알고리즘 풀 테이블 스캔(full table scan) 인덱스가 지정되지 않은 테이블을 검색할 때는 풀 테이블 스캔이라 불리는 검색 방법을 사용한다. 테이블에 저장된 모든 값을 처음부터 차례로..
[programmers] MySQL - Lv.4 그룹별 조건에 맞는 식당 목록 출력하기 (join) 문제 풀이 select a.member_name, b.review_text, date_format(b.review_date, '%Y-%m-%d') review_date from member_profile a join rest_review b on a.member_id = b.member_id where a.member_id like (select member_id from rest_review group by member_id order by count(member_id) desc limit 1) order by 3, 2;
[MySQL] 제약 CREATE TABLE로 테이블을 정의할 경우, 열 이외에 제약도 정의할 수 있다. 테이블에 제약을 설정함으로써 저장될 데이터를 제한할 수 있다. NOT NULL 제약 외에도 기본키(Primary Key) 제약이나 외부 참조(정합) 제약 등이 있다. 외부 참조(정합) 제약 복수의 테이블 사이에서 정합성을 유지하기 위해 설정하는 것으로 테이블 간에는 부모 자식과 같은 관계를 가지며 정합성을 유지한다. 자식 테이블에서는 외부 키(Foreign Key)를 지정해 부모 테이블을 참조한다. 부모 테이블에서 참조될 열은 반드시 유일성(Unique Key, Primary Key)을 가진다 a 열에는 NOT NULL 제약, b 열에는 NOT NULL, UNIQUE 제약이 걸려있다. 이처럼 열에 대해 정의하는 제약을 '..
[programmers] MySQL - Lv.4 오프라인/온라인 판매 데이터 통합하기 (select) 문제 풀이 SELECT date_format(a.sales_date, '%Y-%m-%d') sales_date, a.product_id, a.user_id, a.sales_amount from (select online_sale_id, user_id, product_id, sales_amount, sales_date from online_sale union all select offline_sale_id, null, product_id, sales_amount, sales_date from offline_sale) a where month(a.sales_date) = 3 order by sales_date, a.product_id, a.user_id 노트 이 문제는 UNION을 사용해서 풀어내는 문제이다..
[MySQL] 테이블 작성, 삭제, 변경 [SYNTAX] 테이블 작성 : CREATE TABLE 테이블명(열 정의 1, 열 정의 2,... ) 테이블 삭제 : DROP TABLE 테이블명 테이블 변경 : ALTER TABLE 테이블명 하부 명령 SELECT, INSERT, DELETE, UPDATE는 SQL 명령 중에서도 DML(데이터 조작하는 명령)로 분류된다. 위에 나열된 테이블 작성, 삭제, 변경하는 SYNTAX들은 DDL(데이터를 정의하는 명령)로 스키마 내의 객체를 관리할 때 사용한다. DDL은 모두 같은 문법을 사용한다. CREATE로 작성, DROP으로 삭제, ALTER로 변경할 수 있다. 테이블 작성 RDBMS에서 데이터베이스 상에 제일 먼저 만드는 객체 중 하나가 바로 테이블이다. 이때 CREATE TABLE 명령을 사용한다. ..
[programmers] Java - Lv.0 순서쌍의 개수 문제 풀이 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i
[programmers] Java - Lv.0 자릿수 더하기 문제 풀이 class Solution { public int solution(int n) { int answer = 0; while(n != 0) { answer += n % 10; n /= 10; } return answer; } }
[programmers] MySQL - Lv.4 입양 시각 구하기 (2) (group by) 문제 풀이 set @hour = -1; select (@hour := @hour + 1) hour, (select count(*) from animal_outs where hour(datetime) = @hour) count from animal_outs where @hour < 23 order by @hour 노트 처음에 문제 보고 지난번 풀었던 문제랑 동일하다 생각해서 SELECT hour(datetime) hour, count(*) count from animal_outs group by hour(datetime) order by hour 이렇게 풀었더니 시간대가 7시부터 나오는 것을 보고 이렇게 쉽게 풀리는 문제가 아니라는 것을 알아차렸다. 내가 알고 있는 선에서는 이 문제를 풀 수 없어서 다른 ..