개발중/MYSQL35 [MYSQL] 이벤트 스케쥴러 (Event Scheduler) 사용법 🎉 안녕하세요!MySQL 이벤트 스케줄러를 사용하면, 정기적으로 반복되는 작업(예: 로그 정리, 데이터 백업, 오래된 레코드 업데이트 등)을 데이터베이스 내부에서 자동으로 실행할 수 있다고 해요!이번 포스팅에서는 이벤트 스케줄러를 조회, 생성, 삭제하는 방법과 이벤트 쿼리 작성법에 대해 알아보도록 할게요. 🚀 1. 이벤트 스케줄러 조회 🔍1-1. 이벤트 스케줄러 상태 확인먼저 이벤트 스케줄러가 활성화되어 있는지 확인해봅시다.MySQL 클라이언트에서 아래 명령어를 입력해 보세요.SHOW VARIABLES LIKE 'event_scheduler'; 결과가 ON이면 이벤트 스케줄러가 활성화된 상태예요. 만약 OFF라면, 다음 명령어로 활성화할 수 있어요. SET GLOBAL event_scheduler = .. 개발중/MYSQL 2025. 3. 26. MySQL 8 my.ini 없을 경우 (Window) 인터넷에서 my.ini 파일의 위치를 아래와 같이 표기 하고 있다. C:\Program Files\MySQL\MySQL Server 8.0\my.ini 내 경우에는 아래와 같은 경로에 위치해있었다. C:\ProgramData\MySQL\MySQL Server 8.0\my.ini Program Files 가 아닌 ProgramData 인 점에 유의하자. 개발중/MYSQL 2024. 3. 19. [CentOS 7] MYSQL 방화벽 설정 해제 mysql> SELECT user, host FROM user; +------------------+-----------+ | user | host | +------------------+-----------+ | root | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 이미 root 계정이 외부에서 접속할 수 있도록 설정되어 있습니다. root 계정의 호스트가 %로 설정되어 있으므로, 모든 호스트에서 접속이 가능합니다. 그러나, MySQL 서버가 방화벽에 의해 차단되어 있다면 외부 접속이.. 개발중/MYSQL 2023. 3. 21. [MySQL8] Authentication method 'caching_sha2_password' not supported by any of the available plugins.| Authentication method 'caching_sha2_password' not supported by any of the available plugins.| 이 오류는 MySQL 8.0 이상에서 기본 인증 플러그인이 caching_sha2_password로 변경되었기 때문에 발생한다. Toad 또는 사용 중인 클라이언트가 이 인증 메서드를 지원하지 않는 경우 이 오류가 발생할 수 있다. 이 문제를 해결하려면, MySQL 서버에서 사용자를 만들 때 인증 플러그인을 이전 버전의 mysql_native_password로 설정해야 한다. 먼저 MySQL에 로그인한 다음, 다음 명령을 실행하여 사용자를 생성하거나 기존 사용자를 변경해야한다: 생성시 플러그인을 변경 CREATE USER 'your_use.. 개발중/MYSQL 2023. 3. 21. [MySQL] EXPLAIN (실행계획) 에 나오는 Extra 분석하기 EXPLAIN의 Extra ? MySQL의 EXPLAIN은 SQL 쿼리의 실행 계획을 분석하고 최적화하는 데 도움이 되는 도구입니다. EXPLAIN의 결과 중 Extra 열에는 실행 계획에 대한 추가 정보가 표시됩니다. 아래는 일반적으로 Extra 열에 나올 수 있는 값들과 그 의미입니다. Using index 쿼리가 인덱스를 사용하여 필요한 데이터를 가져올 수 있음을 나타냅니다. 테이블의 행을 읽지 않고도 인덱스만으로 결과를 얻을 수 있는 상황입니다. 이는 효율적인 실행 방식입니다. Using where WHERE 절의 조건을 사용하여 행을 필터링하는 작업이 필요함을 나타냅니다. 이는 행을 읽은 후에 추가적으로 필터링 작업이 필요하다는 것을 의미합니다. Using temporary 쿼리 실행을 위해 임.. 개발중/MYSQL 2023. 3. 18. [MYSQL] Transaction And Lock (트랜잭션과 잠금) (MyISAM / InnoDB) MYSQL 에서 동시성에 영향을 미치는 잠금과 트랜잭션에 대해서 트랜잭션은 작업의 완전성을 보장해주는 것이다. 즉 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않도록 만들어주는 기능이다. 잠금과 트랜잭션은 서로 비슷한 개념 같지만 잠금은 동시성 제어하기 위한 기능이고 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 하나의 회원 정보 레코드를 여러 커넥션에서 동시에 변경하려고 하는데 잠금이 없다면 하나의 데이터를 어러 커넥션에서 동시에 변경할 수 있게 된다. 결과적으로 해당 레코드의 값은 예측할 수 없는 상태가 된다. 잠금은 여러 커넥션에서 동시에 변경할 수 있게 된다. 결과적으로 해당 레코드의 값은 예측할 수 없는 .. 개발중/MYSQL 2023. 3. 4. 트랜잭션이 뭐냐면 🎨 ACID가뭐냐면 🎨 트랜잭션은 필요한가 ? 트랜잭션(Transaction)이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야할 일련의 연산들을 의미한다. 트랜잭션은 작업의 완전성을 보장해준다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 사용자의 입장에서는 작업의 논리적 단위로 이해를 할 수 있고 시스템의 입장에서는 데이터들을 접근 또는 변경하는 프로그램의 단위가 된다. 트랜잭션은 SELECT, UPDATE, INSERT, DELETE와 같은 연산을 수행하여 데이터베이스의 상태를 변화시키는 작업의 단위다. 트랜잭션의 특징(ACID) Atomicity(원자성).. 개발중/MYSQL 2022. 11. 9. MySQL Error 1093 : You can't specify target table 'tablename' for update in FROM clause 원인 MySQL 은 Oracle 과는 달리 UPDATE 나 DELETE 시 자기 테이블의 데이터를 바로 사용 못하므로 아래와 같은 SQL 을 실행시 1093 에러가 발생함. UPDATE DEVEL_ANA_DICTIONARY SET USE_YN = 'Y' WHERE WORD_NO = ( SELECT WORD_NO FROM DEVEL_ANA_DICTIONARY WHERE WORD_NM = '007가방' ); 처리 Sub Query 를 하나 더 넣고 Sub Query 결과를 임시 테이블로 만든후에 실행하면 해결됨. UPDATE DEVEL_ANA_DICTIONARY SET USE_YN = 'Y' WHERE WORD_NO = ( SELECT TEMP.* FROM (SELECT WORD_NO FROM DEVEL_A.. 개발중/MYSQL 2022. 11. 2. [mysql] 일, 주, 월, 년, 분기 통계 함수 🔊 🔊 🔊 🔊 일 일별 통계가 궁굼할 때는 Group By 로 date_format 을 day 까지 설정하기. SELECT COUNT(T1.seq) AS cnt , date_format(T1.day, '%Y-%m-%d') AS finDate FROM DEVEL_METADATA T1 GROUP BY date_format(T1.day, '%Y-%m-%d') 🔊 주 주별 통계가 궁굼할 때는 Group By 에 WEEK 를 이용하기. 주별 현황이 나온당. SELECT COUNT(T1.doc_nm) AS cnt , CONCAT( WEEK(T1.fin_date, 7), ' 주') AS finDate FROM DEVEL_METADATA T1 GROUP BY WEEK(T1.fin_date) 🔊 월 월 통계는 일 통계와 마찬가지로.. 개발중/MYSQL 2022. 10. 24. [MYSQL] 하위요소들 모두 구해주라 #{acSeq} 에 들어갈 일련번호를 p_ac_seq 로 가지는 애들 모두 구해라 ! select group_concat(ac_seq) from ( select p_ac_seq, ac_seq from ${DB_TABLE_NAME}CATEGORY where use_yn = 'Y') T, ( select @pv := #{acSeq} ) initialization where find_in_set(p_ac_seq, @pv) and length(@pv := concat(@pv, ',', ac_seq)) 개발중/MYSQL 2022. 10. 12. Mysql5 에서 rownum 과 그룹별 rownum 이런 table이 있다고 가정하자 name : scores column : class, name, score class (반), name(학생이름), score(점수) 하고자 하는 작업은 각 반별로 상위 점수 3명을 구하는 것이다. 1. rownum mysql에서는 rownum을 제공하지 않기 때문에 다음과 같이 해서 구할 수 있다. select class, name, score, @rownum:=@rownum+1 as rownum from scores, (select @rownum:=0) r 2. rownum by group : 그룹별로 rownum을 만들어 보자 -- group 별 rownum select class, name, score , case when @grp = class then @row.. 개발중/MYSQL 2022. 9. 2. MYSQL 쿼리 활용 FIND_IN_SET 쿼리를 쓰다 하나의 속성 값에 여러 코드의 값이 ',' 로 묶여 하나의 문자열로 저장되어 있었는데, 현재 ',' 로 엮인 코드들을 OR 값으로 검색해야 하는 일이 생겼다. LIKE 절로 하자니 ,,,,, 뭔가 지저분해서 찾은 방법이 FIND_IN_SET 이다! FIND_IN_SET 는 두 개의 인자를 받는다. FIND_IN_SET( 찾고자 하는 문자열, 타겟 컬럼 ) 아래와 같이 쿼리를 작성하면 즉, CODE 컬럼에 'SB' 라는 문자열이 존재한다면 'SB' 의 인덱스를 반환한다 ! 따라서 0 이상이면 내가 찾고자하는 코드가 있다는거다 ! 쿼리 활용 SELECT * FROM SBTABLE WHERE FIND_IN_SET( 'SB', CODE ) > 0 MYBATIS 활용 WHERE FIND_IN_SET(.. 개발중/MYSQL 2022. 5. 23. 이전 1 2 3 다음