mysql9 MySQL WITH RECURSIVE 재귀적 공통 테이블 표현식 MySQL의 WITH RECURSIVE 구문은 재귀적 공통 테이블 표현식(CTE) 을 작성할 때 사용된다.이는 재귀적인 쿼리를 작성하여 계층 구조 데이터를 탐색하거나 연속적인 시퀀스를 생성하는 데 유용하다. 1. WITH RECURSIVE WITH RECURSIVE 는 재귀적인 CTE를 정의하여 쿼리 내에서 임시 결과 집합을 생성하고 이를 재귀적으로 참조할 수 있게 해준다.WITH RECURSIVE cte_name (column_list) AS ( -- 앵커 멤버: 재귀가 시작되는 초기 쿼리 초기_쿼리 UNION [ALL] -- 재귀 멤버: 자기 자신을 참조하는 쿼리 재귀_쿼리)SELECT * FROM cte_name;앵커 멤버: 재귀의 시작점이 되는 쿼리로, 재귀적 처리를 시.. 2024. 10. 25. MySQL 인덱스의 카디널리티 Index Cardinality 카디널리티(Cardinality)는 인덱스에서 고유한 값의 수를 의미한다. 인덱스가 적용된 열에 얼마나 많은 고유 값이 존재하는 지를 나타낸다. 카디널리티는 데이터베이스 인덱스가 얼마나 효율적으로 작동할지를 결정하는 중요한 요소이다.카디널리티가 높다: 열에 고유한 값이 많다. 카디널리티가 낮다: 열에 고유한 값이 적다.카디널리티와 인덱스 성능카디널리티는 인덱스의 선택성과 밀접한 관계가 있다. 선택성(selectivity)은 인덱스를 통해 얼마나 효율적으로 원하는 데이터를 조회할 수 있는지를 나타낸다. 카디널리티가 높은 열에 인덱스를 적용하면, 쿼리가 더 적은 행을 읽어도 원하는 결과를 얻을 수 있어 성능이 향상된다.높은 카디널리티: 조회할 때 특정 값을 더 쉽게 찾을 수있어서, 인덱스의 선택성이 높아 쿼.. 2024. 10. 18. MySQL 프로시저(Procedure) 정리 프로시저(Procedure)는 데이터베이스 내에서 자주 사용하는 복잡한 SQL 작업을 미리 정의해놓고, 필요할 때마다 호출하여 사용할 수 있는 저장된 프로그램이다. 프로시저는 반복적인 작업을 자동화하고, 코드의 재사용성을 높이며, 데이터베이스와 관련된 비즈니스 로직을 중앙 집중화하는 데 유용하다.1. 프로시저 생성CREATE PROCEDURE GetEmployeeById(IN emp_id INT)BEGIN SELECT * FROM employees WHERE id = emp_id;END; 2. 프로시저 호출CALL GetEmployeeById(101); 3. 사용시 주의사항권한: 프로시저를 생성, 삭제, 수정하려면 충분한 권한이 있어야한다.오류 처리: 프로시저 내에서 할생할 수 있는 오류를 처리하기.. 2024. 9. 4. 문자열 결합 함수 CONCAT , GROUP_CONCAT ... 쿼리를 작성하다보면 문자열을 결합해야 하는 경우가 많다그럴때 대부분의 SQL 에서 CONCAT을 사용한다.한번 자세히 알아보자 1. CONCAT두 개 이상의 문자열을 하나의 물자열로 결합하는데 사용한다SELECT CONCAT('Hello', ' ', 'World') AS greeting;// Hello World조심해야 할것은 함수의 인수중 NULL이 있으면 결과도 NULL이 된다.또 인수로 숫자등의 데이터가 있어도 자동으로 문자열로 변환되어 결합된다. 2. GROUP_CONCAT그룹화된 행의 데이터를 하나의 문자열로 결합한다.SELECT GROUP_CONCAT(name) AS all_names FROM users;// 모든 NAME 값들이 쉼표(",")로 구분된 하나의 문자열로 반환//구분자지정SEL.. 2024. 8. 16. 문자, 괄호 바꾸는 방법 ( REPLACE ... ) Blacklist 에 대한 업무( WLF : Watch List Filtering) 를 하다가특정 상호를 검색했을 때 그 상호에 해당하는 업체가 블랙리스트로 등록되어 있는지 확인 하는 로직을 만들어야 했다. 여기서 상호에 주식회사, (주), (주식회사), 유한회사, (특정 지역) 등이 들어가는 곳이 꽤 많아서이러한 단어들이랑 괄호는 무시하는 쿼리를 만들기로 하였다.DB는 MySQL을 사용하고 있었고MySQL 에서 이런 문자들을 제거하는 방법을 알아보자. 1. REPLACE 함수 사용가장 흔하면서 여러 DB에서 다 사용하는 함수이다.SELECT REPLACE(column, '(주)', '') AS result; 2. REGXEP_REPLACE 함수 사용괄호안에 내용이 다양할 경우 특정 패턴을 처리할 수 있.. 2024. 8. 15. MySQL 데이터베이스 메타데이터 쿼리 출장을 가서 DBMS에 붙어서 테이블을 조회하고 싶은데SELECT 권한만 부여되서 테이블이 어떤게 있는지 확인을 못하는 상황이 있었다.그럴땐 쿼리를 이용해서 SELECT 를 하면 쿼리에 대한 간단한 정보를 알 수 있다.이런 쿼리들을 메타데이터 쿼리라고 한다. 메타데이터 쿼리의 주요 목적 데이터베이스 구조 이해: 데이터베이스 내의 테이블, 컬럼, 인덱스 등의 구조를 파악.성능 모니터링: 테이블 크기, 인덱스 크기, 데이터베이스 크기 등을 확인하여 성능을 모니터링.데이터베이스 관리: 사용자, 권한, 데이터베이스 설정 등을 관리.데이터 무결성 확인: 테이블 행 수, 데이터 타입, 기본값 등을 확인하여 데이터 무결성을 유지. 메타데이터 쿼리들 중 SELECT에 관한 쿼리를 알아보자1.데이터베이스에 있는 테이블.. 2024. 8. 8. 이전 1 2 다음 728x90 반응형 LIST