본문 바로가기

SQL/MySQL7

[MySQL] Delete 쿼리 Syntax Error (delete query in subquery) MySQL 로 DELETE 쿼리를 날리는데 아래 에러가 발생했다. SQL Error [1093] [HY000]: You can't specify target table 'my_table_key' for update in FROM clause 음??????? 내가 아는 delete 문법에 어긋나지 않은 것 같은데...??? 하던 중 stackoverflow 에서 나와 같은 문제에 직면한 사람을 만났고, subquery 를 아래처럼 사용해야 한다고 답변을 받았다. (왤까? 이건 찾아봐야겠다.) -- error DELETE FROM my_table WHERE my_table_key IN ( SELECT jt.join_table_key FROM join_table jt RIGHT JOIN my_table mt .. 2021. 3. 19.
[MySQL] 대용량 데이터 select 시 limit 사용 주의점 대용량 데이터를 RDB 로 관리하던 중, 아래와 같이 limit offset 을 사용하며 select 할 때 문제가 있었다. -- 0부터 시작하는 offset 은 빨랐지만 SELECT * FROM my_table LIMIT 0, 5000; -- offset 이 높을수록 성능이 저하가 되었다. (속도 느림) SELECT * FROM my_table LIMIT 1000000, 5000; 조금만 구글링해도 나오는 원인이었는데.. 단순 LIMIT 는 인덱스를 타지 않아서 두번째 쿼리 같은 경우는 100만번까지 쿼리를 읽고 거기에서 5천개를 가져오는거라서 느릴 수 밖에 없었다. 그에 따른 해결방법은 아래와 같았음을 기록.. -- #1. SELECT * FROM my_table WHERE my_table_pk BE.. 2020. 12. 22.
[MySQL] localhost root 비밀번호 까먹었을 때 (mac) MySQL 워크벤치에서 localhost DB 에 붙으려고 Connection 생성하는데 연결이 안된다 ㅠ.ㅠ 로컬에 MySQL 을 설치할 때 root 계정의 비밀번호를 뭐라고 설정했는지 까먹음... 😓 그럴 땐 이렇게 하자, (물론 사전에 mysql 이 실행 중 이라면 stop 시켜줘야 한다!) # STEP1. 터미널을 띄워 안전모드로 mysql 에 접속한다. (= root 계정으로 비밀번호 없이 접속이 가능하다.) $ sudo mysqld_safe --skip-grant-tables # STEP2. mysql 에 접속한다. $ mysql -u root # STEP3. 비밀번호를 변경해준다. mysql> UPDATE mysql.user SET authentication_string=PASSWORD("설.. 2020. 3. 2.
[MySQL] 대용량 text 파일(.txt) DB 에 업데이트 하는 방법 (feat.행안부) 이번엔 text 파일을 DB 에 업데이트 하는 방법에 대해 알아보자! 정확히는 그 방법에 대해서 공유하고자 하는 게 아니라, 시도하면서 겪은 에러케이스를 공유하고자 포스팅 한다.. (역시 또 에러) 우선 검색하면 나오겠지만, MySQL 에서 대용량 데이터를 insert 하는 방법은 파일을 파싱하여 아래와 같이 'LOAD DATA~' 명령어로 하는 방법이 제일 나은 것 같다. LOAD DATA [LOCAL] INFILE ${파일위치} INTO TABLE ${테이블명} CHARACTER SET utf8 FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' 자세한 문서는 공홈 참고 > https://dev.mysql.com/doc/refman/8.0/en/load-data... 2020. 1. 20.
unsigned 사용하는 이유 DB Table 생성시 PK 값이 될 컬럼에 unsigned 를 지정하는 일이 있어서 찾아봤다. 와 같이 값의 범위에서 음수는 제외되고 그 범위만큼 양수가 늘어난다.시퀀스, 인덱스처럼 0부터 순차적으로 늘어나는 컬럼이라면 unsigned 를 활용하면 좋을 것 같다. 2018. 10. 29.
MySQL 에서 위도 경도에 알맞는 데이터 타입 일반적으로 Decimal 데이터 타입을 추천하고 있다.Decimal 이 아닌 Float 등 다른 데이터 타입을 쓰게 되면 DB에서 SELECT 할 때 소수점이 짤려서 가져오는 경우가 있더라. ** 사용법DECIAML(숫자의 총 자릿수, 소수점 자리수) 1. 테이블 생성123CREATE TABLE SPOT(spotX DECIMAL(13,10),name VARCHAR(10));cs2. 데이터 추가1INSERT INTO SPOT VALUES('128.123456789', '공원');cs하게되면 DB에 소수점 모두 보여지게 된다. 2018. 7. 5.