본문 바로가기

개발중/sql

(34)
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 인 점에 유의하자.
[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 서버가 방화벽에 의해 차단되어 있다면 외부 접속이..
[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] EXPLAIN (실행계획) 에 나오는 Extra 분석하기 EXPLAIN의 Extra ? MySQL의 EXPLAIN은 SQL 쿼리의 실행 계획을 분석하고 최적화하는 데 도움이 되는 도구입니다. EXPLAIN의 결과 중 Extra 열에는 실행 계획에 대한 추가 정보가 표시됩니다. 아래는 일반적으로 Extra 열에 나올 수 있는 값들과 그 의미입니다. Using index 쿼리가 인덱스를 사용하여 필요한 데이터를 가져올 수 있음을 나타냅니다. 테이블의 행을 읽지 않고도 인덱스만으로 결과를 얻을 수 있는 상황입니다. 이는 효율적인 실행 방식입니다. Using where WHERE 절의 조건을 사용하여 행을 필터링하는 작업이 필요함을 나타냅니다. 이는 행을 읽은 후에 추가적으로 필터링 작업이 필요하다는 것을 의미합니다. Using temporary 쿼리 실행을 위해 임..
[MYSQL] Transaction And Lock (트랜잭션과 잠금) (MyISAM / InnoDB) MYSQL 에서 동시성에 영향을 미치는 잠금과 트랜잭션에 대해서 트랜잭션은 작업의 완전성을 보장해주는 것이다. 즉 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않도록 만들어주는 기능이다. 잠금과 트랜잭션은 서로 비슷한 개념 같지만 잠금은 동시성 제어하기 위한 기능이고 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 하나의 회원 정보 레코드를 여러 커넥션에서 동시에 변경하려고 하는데 잠금이 없다면 하나의 데이터를 어러 커넥션에서 동시에 변경할 수 있게 된다. 결과적으로 해당 레코드의 값은 예측할 수 없는 상태가 된다. 잠금은 여러 커넥션에서 동시에 변경할 수 있게 된다. 결과적으로 해당 레코드의 값은 예측할 수 없는 ..
트랜잭션이 뭐냐면 🎨 ACID가뭐냐면 🎨 트랜잭션은 필요한가 ? 트랜잭션(Transaction)이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야할 일련의 연산들을 의미한다. 트랜잭션은 작업의 완전성을 보장해준다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 사용자의 입장에서는 작업의 논리적 단위로 이해를 할 수 있고 시스템의 입장에서는 데이터들을 접근 또는 변경하는 프로그램의 단위가 된다. 트랜잭션은 SELECT, UPDATE, INSERT, DELETE와 같은 연산을 수행하여 데이터베이스의 상태를 변화시키는 작업의 단위다. 트랜잭션의 특징(ACID) Atomicity(원자성)..
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] 일, 주, 월, 년, 분기 통계 함수 🔊 🔊 🔊 🔊 일 일별 통계가 궁굼할 때는 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) 🔊 월 월 통계는 일 통계와 마찬가지로..