본문 바로가기

DB4

MariaDB 내 중복된 데이터 삭제하기 MariaDB에서 중복된 데이터를 삭제하는 방법을 알아보겠습니다. SELECT col1, COUNT(col1) FROM tbl GROUP BY col1 HAVING COUNT(col1) > 1; 위 SELECT 쿼리를 통해 특정 열에서 같은 값을 가지는 데이터가 몇개 있는지 추출할 수 있습니다. DELETE t1 FROM tbl t1 JOIN tbl t2 ON t1.col1=t2.col1 WHERE t1.id > t2.id; 위 DELETE 쿼리를 통해 특정 열에서 같은 값을 가지는 데이터중 가장 먼저 생성된 한 행을 제외한 중복 데이터들을 삭제할 수 있습니다. 참조 https://www.mysqltutorial.org/mysql-delete-duplicate-rows/ 2023. 2. 27.
DB 정규화 (제 1정규형 ~ 제 3정규형, BCNF) DB 정규화(제 1정규형 ~ 제 3정규형, BCNF)에 대해 알아보겠습니다. 정규화(Normalization)란? 정규화는 이상현상이 있는 테이블을 기준에 따라 여러개로 나누어 이상현상을 없애는 작업을 말합니다. 이상현상(Anomaly)이란? 이상현상은 세 종류가 있습니다. 삽입 이상: 행(row) 삽입시 특정 컬럼(column)에 해당하는 값이 없어 null을 입력하는 현상 수정 이상: 행 수정시 중복된 데이터의 일부만 수정되는 데이터 불일치 현상 삭제 이상: 행 삭제시 같이 저장된 다른 정보까지 삭제되는 현상 예시를 통해 자세히 알아보겠습니다. 삽입 이상 '자이언츠'라는 작품을 추가한다고 가정해보겠습니다. 자이언츠의 작가는 작품 설명을 따로 등록하고 싶지 않아 작품 설명을 적지 않았습니다. 이 경우 .. 2023. 2. 13.
외래 키가 있는 테이블을 truncate/delete하는 방법 외래키가 존재하는 테이블 내의 데이터를 삭제할 때 위와 같은 에러 메시지가 발생한다. set FOREIGN_KEY_CHECKS = 0; TRUNCATE user_table; set FOREIGN_KEY_CHECKS = 1; 위와 같이 외래키를 체크 하지 않는 설정으로 변경해준 후, truncate하면 정상적으로 실행되는 것을 알 수 있다. 이후 반드시 외래키를 체크하게 설정을 변경해주어야 한다. 2022. 7. 11.
MySQL 더미 데이터 생성하기 MySQL에서 더미 데이터를 생성하는 법을 알아보겠습니다. 쿼리 성능을 측정하기 위해 더미 데이터를 10만개 정도를 Insert 할 일이 있었습니다. 가장 먼저 사용한 방법은 서버 내부에서 for문을 사용해 Insert 해주는 방법이었습니다. 그러나 이 방법은 1만개 정도의 데이터를 Insert 하는데 분 단위 이상의 시간이 소요되어 다른 방법을 찾아야 했습니다. 다음으로 사용한 방법은 오늘 알아볼 MySQL에 직접 Insert 쿼리를 작성해주는 방법이었습니다. 아래는 더미 데이터를 10만개 생성하는 프로시저 쿼리문입니다. // MySQL Query문 DELIMITER $$ DROP PROCEDURE IF EXISTS loopInsert$$ CREATE PROCEDURE loopInsert() BEGIN.. 2022. 7. 11.