본문 바로가기

MySQL MariaDB55

JOIN 문을 활용한 테이블 결합 - MariaDB 가이드 MariaDB의 공식 자료에 따르면, 테이블 간 데이터를 결합하기 위해 다양한 JOIN 유형이 활용됩니다. 이 글은 INNER JOIN, CROSS JOIN, LEFT JOIN, 그리고 RIGHT JOIN 등 기본적인 JOIN 문법과 각각의 결과를 설명합니다.목차1. JOIN이란 무엇인가?JOIN은 두 개 이상의 테이블을 연결하여 관계형 데이터베이스의 데이터를 조합하는 데 사용됩니다. MariaDB에서는 다양한 JOIN 구문을 통해 필요에 따라 데이터의 조건을 설정할 수 있습니다.2. 기본 JOIN 유형(1) INNER JOIN- 조건에 맞는 두 테이블의 공통 데이터를 반환합니다.- 예제:SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.b;결과: t1과 t2의 일치하는 값만.. 2024. 11. 12.
MariaDB.CREATE INDEX CREATE INDEX란 무엇인가?CREATE INDEX는 데이터베이스 테이블에서 하나 이상의 컬럼에 대해 인덱스를 생성하는 명령문입니다. 데이터베이스에서 데이터를 검색하거나 정렬하는 과정을 최적화하는 데 주로 사용됩니다. MariaDB에서 이 명령문은 ALTER TABLE 명령문으로 매핑되어 실행됩니다.CREATE INDEX의 문법기본 문법CREATE [OR REPLACE] [UNIQUE|FULLTEXT|SPATIAL] INDEX [IF NOT EXISTS] index_name [index_type] ON tbl_name (index_col_name,...) [WAIT n | NOWAIT] [index_option] [algorithm_option | lock_option] ...주요 옵션 설명UNI.. 2024. 11. 11.
MariaDB의 Views 생성 및 활용 가이드 MariaDB의 Views(뷰)는 데이터베이스 관리를 간소화하고 효율성을 높이기 위한 강력한 도구입니다. 이 가이드는 뷰의 기본 개념부터 활용 방법까지 설명합니다.목차1. 뷰(View)란 무엇인가?뷰는 데이터베이스 테이블에서 실행된 SQL SELECT문의 결과를 저장하는 가상 테이블입니다. 물리적인 데이터를 저장하지 않고 실시간으로 데이터를 생성하므로 데이터의 일관성을 유지하면서 복잡한 SQL을 간소화할 수 있습니다.2. 뷰를 사용해야 하는 이유복잡한 SQL 간소화: 긴 SQL문을 뷰로 저장하면 코드 재사용성이 높아지고 유지 관리가 편리합니다.데이터 접근 제한: 보안 요구 사항에 따라 특정 컬럼이나 행만을 노출할 수 있습니다.데이터베이스 성능 최적화: 잘 설계된 뷰는 데이터 검색 및 분석에 필요한 시간과.. 2024. 11. 10.
MariaDB 원격 클라이언트 접속 설정 가이드 MariaDB를 원격에서 접속할 수 있도록 설정하려면 몇 가지 중요한 단계를 거쳐야 합니다. 기본적으로 MariaDB는 보안을 위해 로컬 IP 주소(127.0.0.1)로 바인딩되어 있습니다. 따라서 원격 접속이 필요한 경우 몇 가지 구성을 수정해야 합니다.목차 1. 기본 설정 파일 찾기MariaDB의 기본 설정 파일은 일반적으로 아래 경로에 위치합니다./etc/my.cnf (리눅스/BSD)/etc/mysql/my.cnf (리눅스/BSD)DATADIR\my.ini (Windows)설정 파일을 확인하려면 다음 명령어를 실행합니다:mariadbd --help --verbose이 명령은 MariaDB가 읽는 설정 파일의 경로를 보여줍니다.2. 설정 파일 수정설정 파일을 열고 다음과 같은 섹션을 찾습니다:[mys.. 2024. 11. 9.
기본 SQL 디버깅.쿼리 디자인. SQL 디버깅의 기본: MariaDB를 사용한 효과적인 쿼리 작성법목차1. SQL 디버깅의 중요성SQL 쿼리를 작성하는 과정에서 디버깅은 불가피한 작업입니다. 오류를 빠르게 식별하고 수정하려면 가독성 높은 쿼리를 작성하는 것이 중요합니다. 특히, 다른 개발자들과 협업 시 쉽게 이해할 수 있는 쿼리는 디버깅 시간을 대폭 단축합니다.2. 가독성을 높이는 쿼리 작성 방법2-1. 화이트스페이스 활용SQL 쿼리에서 화이트스페이스를 활용하면 가독성이 크게 향상됩니다. 아래 예시를 보면, 공백과 들여쓰기를 적절히 사용했을 때 오류를 훨씬 쉽게 발견할 수 있습니다. 잘못된 예시:SELECT u.id, u.name, alliance.ally FROM users u JOIN alliance ON(u.id=alliance... 2024. 11. 8.
MySQL과 MariaDB의 차이점과 선택 기준 총정리 (라이선스, 성능, 보안, 장점, 차이점,,) MySQL과 MariaDB는 현재 가장 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS) 중 두 가지입니다. MySQL은 오라클이 인수한 후에도 여전히 상용화된 버전과 오픈 소스 버전이 제공되며, 폭넓은 사용자층과 많은 레퍼런스를 보유하고 있습니다. 반면 MariaDB는 MySQL에서 포크되어 개발된 시스템으로, 성능 최적화와 다양한 스토리지 엔진 추가, 높은 호환성을 특징으로 합니다. MariaDB는 특히 대용량 데이터 처리와 고속 쿼리 성능을 필요로 하는 환경에 최적화되어 있으며, MySQL보다 더욱 강화된 보안 기능을 제공합니다. MySQL과 MariaDB는 호환성 측면에서 유사하지만, 각자의 특화된 기능이 있어 사용자의 필요에 따라 선택이 달라질 수 있습니다.목차1. MySQL.. 2024. 11. 7.
MySQL/MariaDB row_number 함수. 랭킹(순위) 구하기. MySQL/MariaDB row_number 함수. 랭킹(순위) 구하기. ROW_NUMBER():함수동일한  값들에 대해서도  각 행에 고유한 순위 번호를 부여예제  ) sale_amount 기준으로 순위 매기기.SELECT      id,     salesperson,     sale_item,     sale_amount,    ROW_NUMBER()  OVER (ORDER BY sale_amount DESC) as row_numberFROM          sales;  결과. - rank 1 : 2개.    다음 rank : 2id | salesperson  | sale_item  | sale_amount | row_number --------------------------------------.. 2024. 7. 15.
MySQL/MariaDB dense_rank 함수. 랭킹(순위) 구하기. MySQL/MariaDB dense_rank 함수. 랭킹(순위) 구하기.DENSE_RANK() 함수동일한 순위를 가진 값들에 대해 동일한 순위를 할당.다음 순위는 생략되지 않고, 순서대로 매깁니다. ex)  두 행이 동일한 값을 가지고 1위로 지정되면, 그 다음 행은 2위로 순위가 됨. 예제  ) sale_amount 기준으로 순위 매기기.SELECT      id,     salesperson,     sale_item,     sale_amount,    DENSE_RANK() OVER (ORDER BY sale_amount DESC) as dense_rank FROM          sales;  결과. - rank 1 : 2개.    다음 rank : 2id | salesperson  | sale.. 2024. 7. 15.
MySQL/MariaDB rank 함수. 랭킹(순위) 구하기. MySQL/MariaDB rank 함수. 랭킹(순위) 구하기.RANK() 함수동일한 순위를 가진 값들에 대해 동일한 순위를 할당.다음 순위는 건너뛰기.  ex) 1,1,3,4,,,,ex)  두 행이 동일한 값을 가지고 1위로 지정되면, 그 다음 행은 3위로 순위가 됨. 예제 1 ) sale_amount 기준으로 순위 매기기.SELECT      id,     salesperson,     sale_item,     sale_amount,    RANK() OVER (ORDER BY sale_amount DESC) as rankFROM          sales;  결과. - rank 1 : 2개.    rank 2 : 없음.    다음 rank : 3.id | salesperson  | sale_item.. 2024. 7. 15.
MySQL / MariaDB case. when. then. 단일/다중 조건문. MySQL / MariaDB case. when. then. 다중조건문 사용하기. select case when 조건1 then 반환값 when 조건2 then 반환값 else 반환값 endfrom table_id; ex ) select case when a= 1 then 'A' when a= 2 then 'B' else 'C' end from table_id; ex ) select case when a= 1 and b = 2 then 'A' when a+b > 2 or b = 3 then 'B' else 'C' end from table_id; 2022. 1. 19.
MySQL/MariaDB 세션 확인 / Session kill MySQL/MariaDB 에서 접속 중인 session 정보 확인 / Session kill - 접속 중인 session list 정보 확인 SHOW PROCESSLIST; id session id. 세션id user 접속한 계정의 id host host + port db 접속한 db command thread가 현재 실행 중인 명령, Sleep의 경우는 idle 상태를 의미 time 현재 state가 유지된 시간, seconds 단위. state 현재 thread의 상태 - 문제가 되는 세션, kill 한다. Session kill KILL 세션id Timeout 값을 설정 connect_timeout 서버 접속시에 접속실패를 메시지를 보내기까지 대기하는 시간 delayed_insert_timeout .. 2021. 12. 17.
MariaDB/MySQL 정규표현식 (Regular Expression) MariaDB/MySQL 정규표현식 (Regular Expression) 정규표현식 (Regular Expression) ? 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어이다. 문자열을 처리하는 방법 중의 하나로, 특정한 조건의 문자를 ‘검색’하거나 ‘치환’하는 과정을 매우 간편하게 처리할 수 있도록 해주는 수단이다. 정규 표현식은 SQL부터 스크립트 언어까지 다양한 곳에서 활용할 수 있다. Matching . 문자 하나 I (수직선) = OR. I(수직선)로 구분된 문자에 해당하는 문자열을 찾음. [] [] 안에 나열된 패턴에 해당하는 문자열을 찾음. ^ 시작하는 문자열을 찾음. $ 끝나는 문자열을 찾음. "..." 문자열의 길이가 세 글자 이상인 것을 찾.. 2021. 12. 9.
MySQL / MariaDB like와 in을 동시 사용 => regexp MySQL / MariaDB_like와 in을 동시 사용 => regexp regexp? 정규식을 이용한 검색 방식이다. like보다 좀 더 다양한 검색을 할 수 있도록 도움을 준다. 정규표현식을 활용하여 기본 연산자보다 복잡한 문자열 조건을보다 간단하게 표현하여 데이터를 검색할 수 있다. select * from tabA where col1 regexp '가' = select * from tabA where col1 like '%가%' - tabA 에서 col1 컬럼에 '가' 포함된 row 출력 select * from tabA where col1 regexp '대한|민국|만세' = select * from tabA where col1 like '%대한%' or name like '%민국%' or na.. 2021. 12. 9.
MySQL/ MariaDB COALESCE: 첫 null 아닌값 리턴. MySQL/ MariaDB COALESCE 함수: 처음으로 null이 아닌 값을 만나면, 그 값을 리턴한다. COALESCE 함수(col1, col2,,,,coln) 첫 null 아닌값 를 리턴한다. - 인자를 두개 이상~n개 사용할 수 있는 함수. - 여러값 중 null아닌, 최초값을 추출할 때 사용. ex) select COALESCE ('a', 'b', 'c', null) => 결과값 : 'a' select COALESCE (null, 'b', 'c', null) => 결과값 : 'b' select COALESCE ('null null, 'c', null) => 결과값 : 'c' ex) select COALESCE (aaa.col_a, aaa.col_b, '333') from ( ( select c.. 2021. 12. 7.
MySQL/ MariaDB 현재날짜, 현재시간 반환 MySQL/ MariaDB 현재날짜, 현재시간 추출 현재 날짜 반환 : CURDATE() select CURDATE(); 결과값 => 2022-11-11 현재 시간 반환 : CURTIME() : select CURTIME(); 결과값 => 13:11;33 현재날짜 & 시간을 반환 : SYSDATE() / NOW() : select SYSDATE(), NOW(); 결과값 => 2022-11-11 13:11;33 2022-11-11 13:11;33 2021. 11. 19.