MariaDB / TABLE / AUTO_INCREMENT / 자동으로 증가하는 값 만들기
테이블에는 데이터를 특정할 수 있는 고유값이 있는 게 좋습니다. 고유값을 수동으로 넣을 수는 없으므로, 값을 자동으로 증가시키는 AUTO_INCREMENT를 사용합니다.
AUTO_INCREMENT로 고유값이 어떻게 만들어지는지 알아보겠습니다. 사용하는 테이블 이름은 test입니다.
자동으로 증가하는 열 만들기
- 열 이름은 id, 데이터 타입은 정수(INT)로 만듭니다.
- 데이터 타입 뒤에 AUTO_INCREMENT PRIMARY KEY를 붙입니다.
MariaDB [codingfactory.net_example]> CREATE TABLE test ( id INT AUTO_INCREMENT PRIMARY KEY ); Query OK, 0 rows affected (0.01 sec)
PRIMARY KEY를 붙이지 않으면 에러가 납니다.
MariaDB [codingfactory.net_example]> MariaDB [codingfactory.net_example]> CREATE TABLE test ( id INT AUTO_INCREMENT ); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'MariaDB [codingfactory.net_example]> CREATE TABLE test ( id INT AUTO_INCREMENT )' at line 1
- 다음과 같이 테이블이 만들어집니다.
MariaDB [codingfactory.net_example]> DESCRIBE test; +-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | +-------+---------+------+-----+---------+----------------+ 1 row in set (0.00 sec)
데이터 추가하기
- 데이터를 추가할 때 값을 지정하지 않아도 됩니다. 1부터 값이 저장됩니다.
MariaDB [codingfactory.net_example]> INSERT INTO test VALUES (); Query OK, 1 row affected (0.00 sec)
MariaDB [codingfactory.net_example]> SELECT * FROM test; +----+ | id | +----+ | 1 | +----+ 1 row in set (0.00 sec)
- 다시 데이터를 추가하면 1보다 하나 큰 2가 값이 됩니다.
MariaDB [codingfactory.net_example]> INSERT INTO test VALUES (); Query OK, 1 row affected (0.00 sec)
MariaDB [codingfactory.net_example]> SELECT * FROM test; +----+ | id | +----+ | 1 | | 2 | +----+ 2 rows in set (0.00 sec)
값을 정하여 데이터를 추가할 수도 있습니다. 아래는 123을 값으로 하여 행을 추가하라는 뜻입니다.
MariaDB [codingfactory.net_example]> INSERT INTO test VALUES ( 123 ); Query OK, 1 row affected (0.00 sec)
이후 값이 없는 행을 추가하면 id는 123보다 하나 큰 124가 됩니다.
- 두번째 행을 지우고...
MariaDB [codingfactory.net_example]> DELETE FROM test WHERE id = 2; Query OK, 1 row affected (0.00 sec)
MariaDB [codingfactory.net_example]> SELECT * FROM test; +----+ | id | +----+ | 1 | +----+ 1 row in set (0.00 sec)
- 데이터를 추가하면 3이 값이 됩니다. 즉, 삭제한 값을 다시 사용하지 않습니다.
MariaDB [codingfactory.net_example]> INSERT INTO test VALUES (); Query OK, 1 row affected (0.00 sec)
MariaDB [codingfactory.net_example]> SELECT * FROM test; +----+ | id | +----+ | 1 | | 3 | +----+ 2 rows in set (0.00 sec)
- 테이블의 모든 값을 삭제하고...
MariaDB [codingfactory.net_example]> DELETE FROM test; Query OK, 2 rows affected (0.00 sec)
- 데이터를 추가해도...
MariaDB [codingfactory.net_example]> INSERT INTO test VALUES (); Query OK, 1 row affected (0.01 sec)
- 이전에 사용한 값보다 큰 값부터 시작합니다.
MariaDB [codingfactory.net_example]> SELECT * FROM test; +----+ | id | +----+ | 4 | +----+ 1 row in set (0.00 sec)
초기화 하기
- 초기화 또는 시작하는 번호를 정하고 싶다면 다음과 같이 합니다. 1부터 시작하라는 뜻입니다.
MariaDB [codingfactory.net_example]> ALTER TABLE test AUTO_INCREMENT = 1; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0