티스토리 뷰
궁금증 1.
MySQL Auto Increment 필드에 값을 임의로 지정해서 insert 할경우,
다음 auto increment 값은 insert 한 값 뒤부터 시작될까?
테스트
아래와 같은 테이블이 있다.
mysql> desc test1;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| test1 | text | YES | | NULL | |
+-------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
위와같이, id 값이 1 씩 증가하는 auto_increment 속성을 가진 필드
우선, 데이터를 한개 insert 해봄
mysql> insert into test1 (test1) value ('www');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1;
+----+-------+
| id | test1 |
+----+-------+
| 1 | www |
+----+-------+
1 row in set (0.00 sec)
ID 값이 1로 자동설정되었음.
이제, insert 할때 id 값을 5로 주고 해본다
mysql> insert into test1 (id, test1) value (5, 'www');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1;
+----+-------+
| id | test1 |
+----+-------+
| 1 | www |
| 5 | www |
+----+-------+
2 rows in set (0.00 sec)
5가 되었음
여기서 id 값 없이 다음 insert 를 실행하면 id 는 6으로 되는가?
mysql> insert into test1 (test1) value ('sss');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1;
+----+-------+
| id | test1 |
+----+-------+
| 1 | www |
| 5 | www |
| 6 | sss |
+----+-------+
3 rows in set (0.00 sec)
6임
궁금증 2.
그렇다면, 이 상태에서 id 값을 다시 2로 메뉴얼리 인서트 하게 되면?
테스트
mysql> insert into test1 (id, test1) value (2, 'ttt');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1;
+----+-------+
| id | test1 |
+----+-------+
| 1 | www |
| 5 | www |
| 6 | sss |
| 2 | ttt |
+----+-------+
4 rows in set (0.00 sec)
6다음 2가 나옴
그럼 여기서 다시 id 값 없이 insert 하게 되면??
mysql> insert into test1 (test1) value ('ooo');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1;
+----+-------+
| id | test1 |
+----+-------+
| 1 | www |
| 5 | www |
| 6 | sss |
| 2 | www |
| 7 | ooo |
+----+-------+
5 rows in set (0.00 sec)
7 이 됨.
왜 그런지는 MySQL Auto Increment 에 대한 공식 문서를 읽어 본 후 다시 블로그에 써야겠다
(지금 드는 생각으로는 그냥 테이블의 최댓값 다음값으로 설정하는것이 아닐까 생각은 듬)
궁금증 3.
auto increment 값을 update 로 바꿔놓으면?
테스트
mysql> update test1 set id=50 where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from test1;
+----+-------+
| id | test1 |
+----+-------+
| 1 | www |
| 5 | www |
| 6 | sss |
| 50 | www |
| 7 | ooo |
+----+-------+
5 rows in set (0.00 sec)
50으로 바꿔봤다.
다시 그냥 insert 해보쟈
mysql> insert into test1 (test1) value ('xxx');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1;
+----+-------+
| id | test1 |
+----+-------+
| 1 | www |
| 5 | www |
| 6 | sss |
| 50 | www |
| 7 | ooo |
| 51 | xxx |
+----+-------+
6 rows in set (0.00 sec)
Documentation of Auto_increment in MySQL
AUTO_INCREMENT column 속성에 특정한 값을 지정해 놓지 않는다면, MySQL 이 자동적으로 sequence number 를 할당합니다.
NO_AUTO_VALUE_ON_ZERO SQL mode 가 켜져있지 않는한, 당신은 해당 column 을 0으로 명시할 수 있습니다.
당신이 'AUTO_INCREMENT' column 에 다른 값을 넣을때, 해당 컬럼의 sequence number 는 자동적으로 해당 column 의 최대값로 수정된다.
자동으로 최댓값을 따른다고 명시되어있음
'기타 > 궁금증테스트' 카테고리의 다른 글
Android(Java) 에서 OutOfMemory 를 catch 할 수 있을까? (0) | 2018.01.05 |
---|---|
( Java ) 싱글코어에서 무한루프를 돌리면 CPU 를 다 쓸까? (1) | 2017.05.23 |
(iOS) LTE, 3G 셀룰러 데이터를 꺼도 전화, 문자가 가능한가? (0) | 2017.05.23 |
- Total
- Today
- Yesterday
- 손석희
- node.js
- GIT
- 앵커브리핑
- 노드
- xcode
- git hub
- 리눅스
- Android
- nodejs
- Kotlin
- C언어
- Phaser
- CentOS
- 깃헙
- 안드로이드
- mysql
- php
- IOS
- 서버
- linux
- 뉴스룸
- C
- 점유율
- 스위프트
- 배열
- Node
- BBC 가쉽
- Asterisk
- Swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |