MySQL----主键(PRIMARY KEY)和自增(AUTO INCREMENT)
Posted iceliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL----主键(PRIMARY KEY)和自增(AUTO INCREMENT)相关的知识,希望对你有一定的参考价值。
UNSIGNED------无符号,没有负数,从0开始
ZEROFILL-------零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNED
NOT NULL------非空约束,也就是插入值的时候这个字段必须要给值,值不能为空
DEFAULT------默认值,如果插入记录的时候没有给字段赋值,则使用默认值
PRIMARY KEY------主键,标识记录的唯一性,值不能重复,一个表只能有一个主键,自动禁止为空
AUTO_INCREMENT------自动增长,只能用于数值列,而且配合索引使用,默认起始值从1开始,每次增长1
UNIQUE KEY------唯一性,一个表中可以有多个字段是唯一索引,同样的值不能重复,但是NULL值除外
FOREIGN KEY------外键约束
-- 测试主键 CREATE TABLE test_primary_key( id INT UNSIGNED PRIMARY KEY, username VARCHAR(20) ); INSERT test_primary_key(id,username) VALUES(1,‘NAME1‘); INSERT test_primary_key(id,username) VALUES(1,‘name2‘); INSERT test_primary_key(username) VALUES(‘name3‘); CREATE TABLE test_primary_key1( id INT UNSIGNED KEY, username VARCHAR(20) ); CREATE TABLE test_primary_key2( id INT UNSIGNED, username VARCHAR(20), PRIMARY KEY(id) ); -- CREATE TABLE test_primary_key3( -- id INT UNSIGNED PRIMARY KEY, -- courseId INT UNSIGNED PRIMARY KEY, -- username VARCHAR(20), -- email VARCHAR(50) -- ); -- 复合主键 CREATE TABLE test_primary_key3( id INT UNSIGNED, courseId VARCHAR(20), username VARCHAR(20), email VARCHAR(50), PRIMARY KEY(id,courseId) ---<<---相当于通过id 和 courseId 都可以定位到要查询的记录 ); -- 1-a INSERT test_primary_key3(id,courseId,username,email) VALUES(1,1,‘xiaoming‘,‘8@qq.com‘); INSERT test_primary_key3(id,courseId,username,email) VALUES(2,1,‘xiaohong‘,‘71946@qq.com‘); INSERT test_primary_key3(id,courseId,username,email) VALUES(3,1,‘张三‘,‘3946@qq.com‘); INSERT test_primary_key3(id,courseId,username,email) VALUES(4,1,‘李四‘,‘17@qq.com‘); -- 测试AUTO_INCREMENT CREATE TABLE test_auto_increment( id INT UNSIGNED KEY AUTO_INCREMENT, username VARCHAR(20) );
-- id INT UNSIGNED KEY AUTO_INCREMENT 中有AUTO_INCREMENT时一定要有KEY, 否则会报错.
INSERT test_auto_increment(username) VALUES(‘A‘); INSERT test_auto_increment(username) VALUES(‘B‘); INSERT test_auto_increment(username) VALUES(‘C‘); INSERT test_auto_increment(id,username) VALUES(NULL,‘E‘); INSERT test_auto_increment(id,username) VALUES(DEFAULT,‘F‘);
INSERT test_auto_increment(id,username) VALUES(‘‘,‘M‘);--报错, 不能为‘‘; INSERT test_auto_increment(id,username) VALUES(15,‘G‘);--此刻id从15开始编号
mysql> select * from test_primary_key3; +----+----------+----------+-------------+ | id | courseId | username | email | +----+----------+----------+-------------+ | 1 | 1 | xiaoming | 8@qq.com | | 2 | 1 | ?? | 3946@qq.com | | 4 | 1 | 李四 | 17@qq.com | +----+----------+----------+-------------+ 3 rows in set (0.00 sec) mysql> CREATE TABLE test_auto_increment( -> id INT UNSIGNED KEY AUTO_INCREMENT, -> username VARCHAR(20) -> ); Query OK, 0 rows affected (0.01 sec) mysql> DESC test_auto_increment; +----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(20) | YES | | NULL | | +----------+------------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec)
INSERT test_auto_increment(username) VALUES(‘A‘); INSERT test_auto_increment(username) VALUES(‘B‘); INSERT test_auto_increment(username) VALUES(‘C‘); INSERT test_auto_increment(id,username) VALUES(NULL,‘E‘); INSERT test_auto_increment(id,username) VALUES(DEFAULT,‘F‘); INSERT test_auto_increment(id,username) VALUES(15,‘G‘);
mysql> SELECT * FROM test_auto_increment;
+----+----------+
| id | username |
+----+----------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | E |
| 5 | F |
| 15 | G |
+----+----------+
6 rows in set (0.00 sec)
以上是关于MySQL----主键(PRIMARY KEY)和自增(AUTO INCREMENT)的主要内容,如果未能解决你的问题,请参考以下文章
零基础带你学习MySQL—primary key主键(二十三)