自增長列必須是索引列,否則無法建立成功表,對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]>
mysql標識列 自增長列
直接po 和案例 標識列 又稱為自增長列 含義 可以不用手動的插入值,系統提供預設的序列值 特點 1 標識列必須和主鍵搭配嗎?不一定,但要求是乙個key 2 乙個表可以有幾個標識列?至多乙個!3 標識列的型別只能是數值型 4 標識列可以通過 set auto increment increment ...
mysql 標識列 自增長列
1.含義 可以不用手動插入值,系統提供預設的序列值 2.特點 1 標識列不一定必須和主鍵搭配,但要求是乙個key 主鍵 unique 外來鍵 2 乙個表最多有乙個標識列 3 標識列的型別只能是數值型 int float double等 4 標識列可以通過 set auto increment inc...
133 標識列 自增長列
特點 1 表示列必須和主鍵搭配嗎?不一定,但要求是乙個key 2 乙個表可以有幾個標識列?至多乙個!3 標識列的型別,只能是數值型。4 標識類可以通過set auto increment 值,來設定步長 建立表時設定標識列 create table tab identity id int prima...