কম্পিউটার টিউটোরিয়াল

MySQL에서 데이터 삭제 후 AUTO_INCREMENT를 1부터 다시 시작하려면 TRUNCATE

DELETE는 자동 증가 값을 초기화하지 않지만, TRUNCATE TABLE은 테이블을 비우고 AUTO_INCREMENT를 1로 리셋합니다.

테이블 생성 및 데이터 삽입

mysql> CREATE TABLE DemoTable1796 (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1796(StudentName) VALUES('Chris Brown');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1796(StudentName) VALUES('David Miller');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1796(StudentName) VALUES('John Doe');
Query OK, 1 row affected (0.00 sec)

DELETE 후 재삽입 (AUTO_INCREMENT 유지)

mysql> DELETE FROM DemoTable1796;
Query OK, 3 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1796(StudentName) VALUES('John Doe');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM DemoTable1796;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|         4 | John Doe    |
+-----------+-------------+
1 row in set (0.00 sec)

TRUNCATE 후 재삽입 (AUTO_INCREMENT 리셋)

mysql> TRUNCATE TABLE DemoTable1796;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1796(StudentName) VALUES('John Doe');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM DemoTable1796;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|         1 | John Doe    |
+-----------+-------------+
1 row in set (0.00 sec)

차이점:

  • DELETE: 행 단위 삭제, 트리거 실행, 롤백 가능, AUTO_INCREMENT 유지
  • TRUNCATE: 테이블 재생성 수준, 트리거 미실행, 롤백 불가, AUTO_INCREMENT 리셋, 훨씬 빠름

테스트 데이터 초기화엔 TRUNCATE, 실제 서비스 데이터 삭제엔 DELETE를 쓰세요.

  1. MySQL Workbench-এ সার্ভার থেকে ER মডেল জেনারেট করা

  2. MySQL-ে ইনডেক্সসহ টেবিল তৈরি করা (CREATE INDEX)

  3. MySQL স্টোরড প্রোসিজারে OUT প্যারামিটার ব্যবহার করে SELECT INTO করা

  4. MySQL-এ ডিলিট হওয়া AUTO_INCREMENT আইডি পুনঃক্রমিকরণ (Re-sequence) করা