개념적 클러스터드 인덱스(Clustered Index): 라이브러리에서 책을 찾는 것을 생각해 보자.책들이 그들의 주요 키인 ISBN 번호 순서대로 정렬되어 있다고 가정한다. 이 경우, ISBN 번호가 클러스터드 인덱스와 같다. 특정 ISBN을 가진 책을 찾으려면, 책장을 탐색하여 정확한 위치를 찾는다. 이러한 방식으로 책은 ISBN 번호에 따라 물리적으로 정렬된다. 세컨더리 인덱스(Secondary Index): 이제 책의 제목으로 책을 찾으려고 한다고 상상해 보자. 이 경우, 책의 제목은 보조 인덱스와 같다. 책 제목에 따라 정렬된 카드 카탈로그(세컨더리 인덱스)를 통해 먼저 책의 ISBN을 찾는다. 그다음, 이 ISBN을 사용하여 책장에서 실제 책을 찾는다. 커버링 인덱스(Covering Index..
내용 정리 MySQL에서 'Bulk Insert'는 한 번에 여러 행을 데이터베이스 테이블에 삽입하는 방법이다. 이를 사용하면 대량의 데이터를 빠르고 효율적으로 처리할 수 있다. 일반적으로 이러한 작업은 CSV 파일 또는 다른 형태의 텍스트 파일에서 데이터를 불러오는 경우에 많이 사용된다. 이 작업을 수행하는 기본 명령어는 LOAD DATA INFILE이다. 다음은 기본적인 LOAD DATA INFILE 구문이다: LOAD DATA INFILE 'data.txt' INTO TABLE my_table; 이 구문은 'data.txt'라는 파일에서 데이터를 읽어와 'my_table'이라는 테이블에 삽입한다. 이 명령어에는 다양한 옵션들이 있다. 예를 들어, 필드를 구분하는 구분자, 행을 구분하는 구분자, 문자..
MySQL 실행 파일이 시스템의 PATH 환경 변수에 포함되어 있어야 어느 위치에서든 MySQL을 실행할 수 있다. Mac에서 MySQL을 설치하면 일반적으로 /usr/local/mysql/bin 디렉토리에 MySQL 실행 파일이 위치해 있다. 이 경로를 PATH 환경 변수에 추가하면 된다. 다음은 터미널을 사용하여 이를 수행하는 방법이다. ~/.bash_profile 또는 ~/.zshrc 파일을 편집하려고 한다 (쉘에 따라 다름). 이를 위해 다음과 같은 명령을 실행한다: nano ~/.bash_profile # bash 쉘 사용 시 or nano ~/.zshrc # zsh 쉘 사용 시 꼭 nano 사용하지 않고 vim 등 상관 없음 다음 줄을 파일에 추가한다: export PATH=$PATH:/usr..
ROW_NUMBER() ROW_NUMBER()는 SQL에서 제공하는 윈도우 함수 중 하나이다. 이 함수는 결과 집합의 각 행에 고유한 숫자를 할당한다. 할당하는 숫자는 1부터 시작하며, 주로 정렬된 데이터에 순위를 부여하는 데 사용된다. 기본적으로 ROW_NUMBER() 함수는 OVER() 절과 함께 사용되며, OVER() 절 내부에서 ORDER BY를 통해 행에 할당되는 숫자의 순서를 결정한다. 예를 들어, 특정 테이블에서 가격(price)을 기준으로 상품에 순위를 부여하고 싶다면 다음과 같이 쿼리를 작성할 수 있다: SELECT product_name, price, ROW_NUMBER() OVER (ORDER BY price DESC) AS rank FROM products; 위 쿼리는 product..
예를 들어, 매일 밤 12시에 특정 테이블의 데이터를 정리하도록 설정할 수 있다. 다음은 MySQL 이벤트를 생성하고 사용하는 기본적인 방법이다. 1단계: Event Scheduler를 활성화 한다. 이벤트 스케줄러는 MySQL 서버에 기본적으로 내장된 구성 요소로서, 이벤트를 실행하는 데 사용된다. 다음 명령어로 이벤트 스케줄러를 활성화 할 수 있다. SET GLOBAL event_scheduler = ON; 2단계: Event 생성 다음은 매일 밤 12시에 'old_data' 테이블에서 30일 이전의 데이터를 삭제하는 이벤트를 생성하는 예: CREATE EVENT ev_daily_delete ON SCHEDULE EVERY 1 DAY STARTS (TIMESTAMP(CURRENT_DATE) + INT..
이 구문은 새로운 레코드를 삽입하려고 할 때, 이미 존재하는 고유 키(Unique Key) 또는 기본 키(Primary Key)에 대한 충돌이 발생하면, 지정된 열을 업데이트하는 기능을 한다. 예를 들어, users테이블이 있고, 각 사용자는 고유한 이메일 주소를 가지고 있다고 가정해 보자. 만약 새로운 사용자를 추가하려고 하는데, 해당 사용자의 이메일이 이미 테이블에 존재한다면, "ON DUPLICATE KEY UPDATE"를 사용해서 이미 존재하는 레코드를 업데이트하거나, 새로운 레코드를 추가하지 않고 기존 레코드를 유지할 수 있다. INSERT INTO users (email, age) VALUES ('test@example.com', 20) ON DUPLICATE KEY UPDATE age=VAL..
데이터베이스 파티셔닝은 큰 옷장을 정리하는 것에 비유할 수 있다. 옷장이 깔끔하게 정리되어 있다면, 특정 옷을 찾을 때 전체 옷장을 뒤져보지 않아도 된다. 이와 마찬가지로, 데이터베이스가 파티션으로 구분되어 있다면, 특정 데이터를 찾을 때 모든 데이터를 검색하지 않아도 된다. 다음으로, 코드 예시를 살펴봅시다. MySQL에서 'sales' 테이블을 연도별로 파티션 하려면 다음과 같이 쿼리를 작성할 수 있다: CREATE TABLE sales ( order_id INT NOT NULL, year INT NOT NULL, amount DECIMAL(10, 2) NOT NULL ) PARTITION BY RANGE (year) ( PARTITION p0 VALUES LESS THAN (1991), PARTIT..
여기서 사용할 파일 이름은- employees.sql- employees.sh현재 포스팅에서는 비밀번호를 쳐서 MySQL에 접속하지만 비밀번호를 기초 설정을 하고 싶다면 추가 링크를 참고!기초 설정을 한 이후에는 -u yoursername -p, yourpassword 등을 할 필요가 없다. MySQL 쉘에서 스크립트 실행:MySQL 쉘을 열고 MySQL 쉘에서 직접 SQL 스크립트를 실행하는 방법이다.mysql -u yourusername -pEnter password: ****mysql> source {/your_path}/employees.sql위 명령어를 실행하면 yourusername을 MySQL에 로그인하는 데 사용하는 사용자 이름으로 변경하고 password에는 DB의 비밀번호를 작성한다./..
MySQL을 사용하면서 가장 기본적이면서도 중요한 일 중 하나는 root 계정의 비밀번호를 설정하고 이를 관리하는 것이다. 이번 포스팅에서는 mysql_config_editor를 사용하여 MySQL의 root 계정 비밀번호를 어떻게 설정하고 확인하는지 알아보려고 한다. mysql_config_editor 사용법 확인 먼저, mysql_config_editor의 사용법을 확인하려면 shell에서 다음 명령어를 실행하면 된다. mysql_config_editor set --help 이 명령어는 mysql_config_editor의 set 옵션에 대한 도움말을 출력한다. root 계정 비밀번호 설정 다음으로, mysql_config_editor를 사용하여 root 계정의 비밀번호를 설정한다. 이때 --logi..
MySQL을 설치하려고 하는데 어떻게 해야 할지 고민이 될 수 있다.이 포스트에서는 간단하게 MySQL 8 Community Edition을 설치하는 방법을 안내하려고 한다.출처 - MySQL 설치AMI:Amazon Linux 2 AMI 인스턴스 타임:t2.micro 세큐리티 그룹 설정:SSH 22 (내 IP)현재 EC2 정보 보기cat /etc/os-release 설치하기MySQL 8 저장소 패키지 다운로드: wget 명령어를 사용하여 MySQL 8 저장소 패키지를 다운로드한다.wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm MySQL 저장소 로컬에 설치: 다운로드 받은 MySQL 저장소 패키지를 로컬 시스템에 설치한다.su..