본문 바로가기
반응형

개발/database34

mariadb 이메일 유효성 체크 함수 웹에서 서버단에 이메일을 보낼때는 보통 SMTP 서버를 이용하여 이메일을 발송한다. 이때, SMTP서버에 따라 수신자 이메일 주소가 정확하지 않을 경우 멈춤 현상이 발생할 수 있다. java에서 수신자 이메일 주소 유효성을 체크하는 방법도 있지만, 보통은 mariadb에서 수신자 목록을 조회하여 발송하는 경우가 많이 존재한다. 이때, mariadb에서 수신자 이메일 주소가 이메일 형식에 맞는지 체크하는 간단한 함수를 이용하면 편하게 업무를 진행 할 수 있다. 함수생성 CREATE OR REPLACE FUNCTION IS_EMAIL_VALID(EMAIL VARCHAR(255)) RETURNS BOOLEAN BEGIN DECLARE IS_VALID BOOLEAN; SET IS_VALID = FALSE; IF.. 2023. 8. 28.
mariadb group by 중 특정 컬럼 값이 다를 경우 count 다르게 조회 쿼리를 작성하다보면, GROUP BY 하여 값을 가져오는데, 특정 컬럼의 값이 다른경우 COUNT를 다르게 조회해야할 경우가 존재한다. 작성해야 하는 쿼리 조건 : 특정 컬럼 값이 다를 경우에만 COUNT를 다른 값으로 계산하고, 그렇지 않은 경우에는 리턴되는 ROW가 1개여야 한다 아래 쿼리를 예시로 들어보자. 테이블 이름이 your_table이며, 특정 컬럼이 specific_column이라고 가정한다. SELECT specific_column, CASE WHEN COUNT(DISTINCT column1, column2, ...) > 1 THEN COUNT(DISTINCT column1, column2, ...) ELSE 1 END AS count_result FROM your_table GROUP .. 2023. 8. 9.
mariadb 트리거 생성 예제 - 입력,수정,삭제 mariadb 트리거 생성 예제 - 입력,수정,삭제 아래 예제는 MariaDB에서 특정 테이블에 새로운 레코드가 삽입, 수정 또는 삭제될 때 트리거를 이용하여 별도의 로그 테이블에 해당 이벤트를 기록하는 쿼리다. 예를 들어, employees 테이블에 새로운 레코드가 삽입, 기존 레코드가 수정, 레코드가 삭제되었을 때 이를 employees_log 테이블에 기록하는 트리거를 생성하는 쿼리. employees_log 테이블은 event_type, event_time, id, name, position, salary 열을 가지고 있다. -- 트리거 생성 CREATE TRIGGER employees_trigger AFTER INSERT ON employees FOR EACH ROW BEGIN INSERT IN.. 2023. 8. 4.
WITH 절 사용법 WITH WITH절에 정의된 SQL 문장으로 공유 메모리에 임시 테이블을 생성하여 반복 재사용이 가능하도록 할 수 있다. 사용 시 동일 테이블 접근을 최소화하며 메모리에 생성된 임시 테이블에서 필요한 데이터를 메모리로 접근하기 때문에 디스크 IO로 테이블에 접근하는 것보다 성능을 개선할 수 있다. 사용예제 - 서브쿼리를 WITH 절로 만들어서 테이블을 사용하듯 사용 WITH EXAMPLE AS ( SELECT 'WITH절' AS STR1 FROM DUAL ) SELECT * FROM EXAMPLE WITH절에 정의된 내용을 한번만 사용 시 서브 쿼리를 사용하는 것과 크게 성능 차이가 나지 않는다. WITH문의 효율적 사용은 한 번 WITH절의 내용을 한 번에 올려놓고 계속 재사용한다는 것에 큰 의미가 있.. 2023. 3. 28.
MySQL/MariaDB 프로파일링 프로파일링 SQL문에서 문제가 되는 병목 지점을 찾고자 사용하는 수단으로 느린 쿼리나 문제가 있다고 의심되는 SQL문의 원인을 확인 할 수 있다. 툴에서 실행하지 않고, CLI 환경에서 실행해야 정확한 확인이 가능하다. -- 해당 접속 세션에서만 영향을 활성화 되며, 다른 세션에는 영향을 미치지 않는다. -- 프로파일링 활성화 / 비활성화를 확인한다. mysql> show variables like 'profileing%'; -- 비활성화 되어 있을 경우 SET 키워드로 활성화 해준다. mysql> set profileing = 'ON'; -- 프로파일링 할 쿼리를 실행한다. mysql> SELECT 컬럼, 컬럼, 컬럼 -> FROM 테이블명 -> WHERE 조건 -- show profiles 명령으로 .. 2022. 9. 18.
MySQL/MariaDB 실행계획 수행 기본 실행 계획 수행 키워드 : EXPLAIN, DESCRIBE, DESC SQL 문 앞에 원하는 키워드를 작성하여 실행하면 옵티마이저가 만든 실행계획이 출력됨. EXPLAIN SQL문; DESCRIBE SQL문; DESC SQL문; 실행계획이 출력되면, id, select_type, table, type, key등 정보가 출력됨. id 실행순서를 표시하는 숫자, 조인할때는 동일한 ID가 표시되며 숫자가 작을수록 먼저 수행된 것 select_type SELECT 문의 유형을 출력, 단순히 FROM 절에 위치한 것인지, 서브쿼리인지, UNION 절로 묶인 SELECT 문인지 등의 정보를 제공 select_type 유형 (* = 튜닝대상) PRIMARY : 서브쿼리가 포함된 SQL문이 있을때 첫번째 SELE.. 2022. 9. 18.
반응형