개발로 자기계발
728x90
SMALL
article thumbnail
로컬 DB 공유기 포트 포워딩 하는 방법(방화벽 설정 포함)
Database & Data/MySQL 2023. 8. 26. 23:49

로컬 DB를 외부에서 사용하기 위해 포트포워딩이 꼭 필요했다. 그래서 까먹지 않게 방법을 정리해보려고 한다. 하려고 하는 공유기는 SK브로드밴드이지만 Iptime이든 타 공유기도 비슷하지 않을까 싶다. 컴퓨터: Window 11 공유기: SK브로드밴드(RUSH-337AC) 공유기 관리자 페이지에 접속하기 먼저, 관리자 페이지에 접속하기 위해서는 해당 공유기의 IP 주소를 알아야 한다. IP 주소 알아보기 (Windows) 1. 시작 메뉴를 클릭하고 cmd 혹은 명령 프롬프트를 입력하여 프로그램을 실행시킨다. 2. 명령 프롬프트에 ipconfig를 입력하고 엔터를 누른다. 이때 본인이 노트북과 공유기가 어떻게 연결했는지에 따라 다르게 보면 된다. 본인은 Wi-Fi로 연결했기 때문에 Wi-Fi 쪽만 확인하면..

MySQL CASE 구문에서 OR과 IN의 가독성 차이(개인적 견해)
Database & Data/MySQL 2023. 8. 21. 16:17

기본적으로 CASE 문에서는 복수의 조건을 테스트할 때 OR를 사용하곤 한다. 그러나, 같은 컬럼의 값이 특정 집합에 속하는지를 검사하려면 IN 연산자를 사용하는 것이 더 간결하고 읽기 쉬웠다. 예를 들어, lm.subj_nm 값이 '국어' 또는 '국어선택학습'인지를 검사하려면 다음과 같이 OR를 사용할 수 있다: when lm.subj_nm = '국어' or lm.subj_nm = '국어선택학습' then '1' 그러나 이것은 IN을 사용하면 더 간결하게 표현할 수 있다: WHEN lm.subj_nm IN ('국어', '국어선택학습') THEN '1' 두 쿼리는 완전히 동일한 결과를 내지만, 후자는 명확성과 가독성 면에서 더 우수하다고 생각한다. 특히 조건이 많아질수록 IN 연산자를 사용하는 것이 코드..

MySQL --login-path 옵션 이해하기
Database & Data/MySQL 2023. 7. 27. 15:26

MySQL의 --login-path 옵션은 MySQL 5.6.6. 버전부터 추가된 옵션으로, 서버에 로그인하기 위한 사용자 이름, 패스워드, 그리고 기타 연결 매개변수를 설정 파일에 저장하고, 이를 불러올 수 있게 해주는 매우 유용한 기능이다. MySQL --login-path의 중요성 MySQL에 접속할 때 일반적으로 사용자 이름과 패스워드를 직접 입력하는 방식을 사용한다. 그러나 이런 방식은 다음과 같은 문제점이 있다. 보안 문제 : 패스워드를 직접 입력하는 방식은 보안에 취약해진다. 특히, 스크립트나 명령 히스토리에서 패스워드가 노출될 수 있다. 편의성 문제 : 빈번하게 MySQL에 접속해야 할 경우 매번 패스워드를 입력하는 것은 매우 번거로울 수 있다. 그래서 문제점을 보완하기 위해 mysql_c..

MySQL SQL 쿼리 성능 향상: CASE WHEN vs UNION
Database & Data/MySQL 2023. 7. 26. 16:20

데이터베이스에서 쿼리를 수행할 때, 조건 판단 방식이 쿼리의 성능에 큰 영향을 미칠 수 있다. 이 포스팅에서는 WHERE 절에 CASE WHEN 구문을 사용하는 방식과 UNION을 사용하는 방식을 비교하며, 어떤 방식이 더 효율적인 쿼리 성능을 제공하는지 알아보려고 한다. 이 문제는 https://okky.kr/questions/389347 이 사이트에서 확인했다. 우선, SQL 쿼리에서 CASE WHEN 구문은 각 행을 하나씩 검사하면서 조건을 판단한다. 이로 인해 데이터베이스는 모든 행을 전체 검색(Full Scan)해야 하며, 이는 쿼리의 성능을 저하시킨다. SELECT F.friend_one, F.friend_two, F.requested_id, F.status FROM users U, frien..

MySQL 인덱스(클러스터드, 세컨더리, 커버링) 가볍게 이해하기
Database & Data/MySQL 2023. 7. 17. 10:39

개념적 클러스터드 인덱스(Clustered Index): 라이브러리에서 책을 찾는 것을 생각해 보자.책들이 그들의 주요 키인 ISBN 번호 순서대로 정렬되어 있다고 가정한다. 이 경우, ISBN 번호가 클러스터드 인덱스와 같다. 특정 ISBN을 가진 책을 찾으려면, 책장을 탐색하여 정확한 위치를 찾는다. 이러한 방식으로 책은 ISBN 번호에 따라 물리적으로 정렬된다. 세컨더리 인덱스(Secondary Index): 이제 책의 제목으로 책을 찾으려고 한다고 상상해 보자. 이 경우, 책의 제목은 보조 인덱스와 같다. 책 제목에 따라 정렬된 카드 카탈로그(세컨더리 인덱스)를 통해 먼저 책의 ISBN을 찾는다. 그다음, 이 ISBN을 사용하여 책장에서 실제 책을 찾는다. 커버링 인덱스(Covering Index..

MySQL Bulk Insert(LOAD DATA INFILE)
Database & Data/MySQL 2023. 7. 7. 17:45

내용 정리 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 설정하기
Database & Data/MySQL 2023. 7. 6. 10:58

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..

MySQL 랭킹 함수 모음
Database & Data/MySQL 2023. 7. 3. 14:39

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..

MySQL EVENT 간단 이해하기
Database & Data/MySQL 2023. 7. 3. 10:12

예를 들어, 매일 밤 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..

MySQL ON DUPLICATE KEY UPDATE 란?
Database & Data/MySQL 2023. 6. 30. 17:41

이 구문은 새로운 레코드를 삽입하려고 할 때, 이미 존재하는 고유 키(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..

728x90
SMALL