mysql自增長列
自增長列必須是索引列,否則無法建立成功表,對myisma和innodb都一樣
(localhost@testdb)[root]> create table test5 (id int auto_increment,name varchar(10)) engine=innodb;
ERROR 1075 (42000):
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]> create table test5 (id int auto_increment,name varchar(10),index(id)) engine=innodb;
Query OK, 0 rows affected (0.01 sec)
(localhost@testdb)[root]> create table test5 (id int auto_increment,name varchar(10)) engine=myisam;
ERROR 1075 (42000):
(localhost@testdb)[root]> create table test5 (id int auto_increment,name varchar(10),index(id)) engine=myisam;
Query OK, 0 rows affected (0.00 sec)
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]>
建立成功後id列沒有插入資料,但是可以自動增長
(localhost@testdb)[root]> insert into test5(name) values('aa'),('bb'),('cc');
Query OK, 3 rows affected (0.00 sec)
(localhost@testdb)[root]> select * from test5;
+----+------+
| id | name |
+----+------+
| 1 | aa |
| 2 | bb |
| 3 | cc |
+----+------+
3 rows in set (0.00 sec)
索引
(localhost@testdb)[root]> (localhost@testdb)[root]> show index from test5;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| test5 | 1 | id | 1 | id | A | NULL | NULL | NULL | | BTREE | | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)
刪除表裡的資料,在插入資料id列會依據原來的值繼續增長
(localhost@testdb)[root]> delete from test5;
Query OK, 3 rows affected (0.00 sec)
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]> select * from test5;
Empty set (0.00 sec)
(localhost@testdb)[root]> insert into test5(name) values('aa'),('bb'),('cc');
Query OK, 3 rows affected (0.00 sec)
(localhost@testdb)[root]> select * from test5;
+----+------+
| id | name |
+----+------+
| 4 | aa |
| 5 | bb |
| 6 | cc |
+----+------+
3 rows in set (0.00 sec)
truncate 表裡的資料後在插入資料,id列會從1開始增長。
(localhost@testdb)[root]> truncate table test5;
Query OK, 0 rows affected (0.00 sec)
(localhost@testdb)[root]> select * from test5;
Empty set (0.00 sec)
(localhost@testdb)[root]> insert into test5(name) values('aa'),('bb'),('cc');
Query OK, 3 rows affected (0.00 sec)
(localhost@testdb)[root]> select * from test5;
+----+------+
| id | name |
+----+------+
| 1 | aa |
| 2 | bb |
| 3 | cc |
+----+------+
3 rows in set (0.00 sec)
(localhost@testdb)[root]>
對於複合索引的自增長列
myisam引擎的自增長列,在索引中是非前導列可以建立成功
innodb引擎的自增長列,在索引中必須是前導列,表才能建立成功
(localhost@testdb)[root]> create table test4 (id1 int auto_increment,id2 int,name varchar(10),index(id2,id1)) engine=myisam;
Query OK, 0 rows affected (0.00 sec)
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]> drop table test4;
Query OK, 0 rows affected (0.00 sec)
(localhost@testdb)[root]> create table test4 (id1 int auto_increment,id2 int,name varchar(10),index(id2,id1)) engine=innodb;
ERROR 1075 (42000):
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]> create table test4 (id1 int auto_increment,id2 int,name varchar(10),index(id1,id2)) engine=innodb;
Query OK, 0 rows affected (0.01 sec)
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]> create table test5 (id int auto_increment,name varchar(10)) engine=innodb;
ERROR 1075 (42000):
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]> create table test5 (id int auto_increment,name varchar(10),index(id)) engine=innodb;
Query OK, 0 rows affected (0.01 sec)
(localhost@testdb)[root]> create table test5 (id int auto_increment,name varchar(10)) engine=myisam;
ERROR 1075 (42000):
(localhost@testdb)[root]> create table test5 (id int auto_increment,name varchar(10),index(id)) engine=myisam;
Query OK, 0 rows affected (0.00 sec)
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]>
建立成功後id列沒有插入資料,但是可以自動增長
(localhost@testdb)[root]> insert into test5(name) values('aa'),('bb'),('cc');
Query OK, 3 rows affected (0.00 sec)
(localhost@testdb)[root]> select * from test5;
+----+------+
| id | name |
+----+------+
| 1 | aa |
| 2 | bb |
| 3 | cc |
+----+------+
3 rows in set (0.00 sec)
索引
(localhost@testdb)[root]> (localhost@testdb)[root]> show index from test5;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| test5 | 1 | id | 1 | id | A | NULL | NULL | NULL | | BTREE | | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)
刪除表裡的資料,在插入資料id列會依據原來的值繼續增長
(localhost@testdb)[root]> delete from test5;
Query OK, 3 rows affected (0.00 sec)
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]> select * from test5;
Empty set (0.00 sec)
(localhost@testdb)[root]> insert into test5(name) values('aa'),('bb'),('cc');
Query OK, 3 rows affected (0.00 sec)
(localhost@testdb)[root]> select * from test5;
+----+------+
| id | name |
+----+------+
| 4 | aa |
| 5 | bb |
| 6 | cc |
+----+------+
3 rows in set (0.00 sec)
truncate 表裡的資料後在插入資料,id列會從1開始增長。
(localhost@testdb)[root]> truncate table test5;
Query OK, 0 rows affected (0.00 sec)
(localhost@testdb)[root]> select * from test5;
Empty set (0.00 sec)
(localhost@testdb)[root]> insert into test5(name) values('aa'),('bb'),('cc');
Query OK, 3 rows affected (0.00 sec)
(localhost@testdb)[root]> select * from test5;
+----+------+
| id | name |
+----+------+
| 1 | aa |
| 2 | bb |
| 3 | cc |
+----+------+
3 rows in set (0.00 sec)
(localhost@testdb)[root]>
對於複合索引的自增長列
myisam引擎的自增長列,在索引中是非前導列可以建立成功
innodb引擎的自增長列,在索引中必須是前導列,表才能建立成功
(localhost@testdb)[root]> create table test4 (id1 int auto_increment,id2 int,name varchar(10),index(id2,id1)) engine=myisam;
Query OK, 0 rows affected (0.00 sec)
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]> drop table test4;
Query OK, 0 rows affected (0.00 sec)
(localhost@testdb)[root]> create table test4 (id1 int auto_increment,id2 int,name varchar(10),index(id2,id1)) engine=innodb;
ERROR 1075 (42000):
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]> create table test4 (id1 int auto_increment,id2 int,name varchar(10),index(id1,id2)) engine=innodb;
Query OK, 0 rows affected (0.01 sec)
(localhost@testdb)[root]>
(localhost@testdb)[root]>
(localhost@testdb)[root]>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29108064/viewspace-1995239/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mysql 學習】自動增長列MySql
- mysql重置自增長屬性MySql
- MySQL設定表自增步長MySql
- Mysql實現自增長編號,日期+序列MySql
- mysql自增和orcale自增MySql
- mysql自增長id用完了該怎麼辦MCBZMySql
- mysql 的自增長的策略(查詢與更改初值)MySql
- MySQL自增約束MySql
- 深入剖析 MySQL 自增鎖MySql
- 自增長列和序列的區別(identity與sequence的區別)IDE
- .NET執行insert語句返回自動增長列ID的值
- 向Mysql主鍵自增長表中新增資料並返回主鍵MySql
- MySQL 中的自增主鍵MySql
- MySQL 主鍵自增也有坑?MySql
- Mysql關於自增主鍵,自增主鍵優化總結MySql優化
- SqlServer主鍵和自增長設定SQLServer
- c mac生成器(自動增長)Mac
- MySQL 主鍵自增 Auto Increment用法MySqlREM
- MySQL新增自增主鍵的坑MySql
- MySQL8自增主鍵變化MySql
- MySQL自增主鍵跳號問題MySql
- oracle和mysql設定自增欄位OracleMySql
- oracle 表空間關閉自增長 autoextend offOracle
- SQLServer 2012重啟服務後,自增1的標識列一次增長了1000左右SQLServer
- 深入瞭解MySQL中的自增主鍵MySql
- mysql 資料庫自增id 的總結MySql資料庫
- mysql的自增id的一個問題MySql
- MySQL 8 和 MySQL 5.7 在自增計數上的區別MySql
- Elixir Ecto: PostgreSQL大自增長主鍵的設定SQL
- mysql獲取指定表當前自增id值MySql
- 【mycat】mycat中配合mysql自增主鍵的使用MySql
- MySQL 5.7 自增欄位相關引數說明MySql
- 在MySQL中建立實現自增的序列(Sequence)MySql
- 用技術玩轉業務增長 -- 增長黑客黑客
- 自動增長Textareas的最乾淨技巧「心得分享」
- SQLite設定主鍵自動增長及插入語法SQLite
- PLG SaaS 案例:如何實踐外鏈自動增長策略?
- 各位大俠,鍵值自動增長怎麼解決?