본문 바로가기

MySQL MariaDB/SQL 문법34

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.
기본 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 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.
MySQL/MariaDB. 날짜 Type 데이터 -> 문자열로 변환 MySQL/MariaDB. 날짜타입 데이터 -> 문자열로 변환. 날짜 or 시간만 분리 추출. select DATA_FORMAT('2022-11-11 13:44:33', '%Y-%m-%d'); 결과값 => '2122-11-11' select DATA_FORMAT('2022-11-11 13:44:33', '%Y%m%d'); 결과값 => '21221111' select DATA_FORMAT('2022-11-11 13:44:33', '%H:%i:%s'); 결과값 => '13:44:33' select DATA_FORMAT('2022-11-11 13:44:33', '%H:%i:%s'); 결과값 => '13:44:33' => '2021-05-04' 2021. 11. 18.
MySQL / MariaDB 날자,시간 차이 계산 / 시간표현 변경 MySQL / MariaDB 날자,시간 차이 계산 / 시간표현 변경 일자차이 계산 : DATEDEFF(날자1. 날자2) ex) selelct DATEDEFF('2022-12-11', '2022-12-11) from table_id; 결과 ==> 10 시간차이 계산 : TIMESTAMPDIFF(시간표현단위, 시작일자시간, 종료일자시간) ex) select TIMESTAMPDIFF(second, date_1, date_2) from table_id; - 시간표현단위: second / minute / hour / day / wee / month / quarter / year 초단위 => 시분초로 변경 / 시간으로 변환 : SEC_TO_TIME(second) - 초단위의 시간을 시:분:초 로 표현한다. ex) .. 2021. 11. 17.
MySQL MariaDB. 함수 FUNCTION 생성 및 함수 호출! MySQL MariaDB. 함수 FUNCTION 생성 및 함수 호출하는 방법입니다..MySQL MariaDB. 함수 FUNCTION 생성.- input   : 코드매핑그룹 ,  Asis_코드- output : Tobe_코드  - 코드테이블 TAB_CODE_MAPP코드매핑그룹 TAB_CODE_MAPPvachar 50Asis_그룹코드명asis_grp_cdvachar 50Asis_코드asis_cdvachar 20Asis_코드명asis_cd_nmvachar  100Tobe_그룹코드명tobe_grp_cdvachar 50Tobe_코드tobe_cdvachar 20Tobe_코드명tobe_cd_nmvachar  100 -- 코드매핑 FUNCTION  생성. CREATE     FUNCTION F_CODE_SET(코드매핑.. 2021. 10. 18.