1、自动编号(AUTO_INCREMENT),必须与主键组合使用

默认情况下,起始值为1,增量也为1。

2、主键(PRIMARY KEY)

每张数据表只能存在一个主键

主键保证记录的唯一性

主键自动为NOT NULL

3、AUTO_INCREMENT必须与主键一起使用,主键不一定必须与AUTO_INCREMENT一起使用。

mysql> CREATE TABLE tb3(
-> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> username VARCHAR(30) NOT NULL
-> );
Query OK, 0 rows affected (0.35 sec)

mysql> 
mysql> SHOW COLUMNS FROM tb3; #查看数据表结构
+----------+----------------------+------+-----+---------+----------------+
| Field        | Type                       | Null | Key | Default   |       Extra          |
+----------+----------------------+------+-----+---------+----------------+
| id            | smallint(5) unsigned | NO  | PRI  | NULL      | auto_increment |
| username | varchar(30)             | NO  |        | NULL     | 
+----------+----------------------+------+-----+---------+----------------+
2 rows in set (0.14 sec)

mysql> INSERT tb3(useRname) VALUES('JOHN');
Query OK, 1 row affected (0.04 sec)

mysql> INSERT tb3(useRname) VALUES('Tom');
Query OK, 1 row affected (0.04 sec)

mysql> INSERT tb3(useRname) VALUES('Rose');
Query OK, 1 row affected (0.02 sec)

mysql> INSERT tb3(useRname) VALUES('Dimi tar');
Query OK, 1 row affected (0.04 sec)

mysql> SELECT * FROM tb3;
+----+----------+
| id | username |
+----+----------+
| 1  | JOHN       |
| 2  | Tom        |
| 3  | Rose        |
| 4  | Dimi tar    |
+----+----------+

4、创建一张表只有主键,没有AUTO_INCREMENT

mysql> CREATE TABLE tb4(
-> id SMALLINT UNSIGNED PRIMARY KEY,
-> usename VARCHAR(20) NOT NULL
-> );
Query OK, 0 rows affected (0.22 sec)

mysql>
mysql> SHOW COLUMNS FROM tb4;
+---------+----------------------+------+-----+---------+-------+
| Field       | Type                        | Null    | Key | Default   | Extra |
+---------+----------------------+------+-----+---------+-------+
| id           | smallint(5) unsigned  | NO     | PRI | NULL      |          |
| usename | varchar(20)              | NO     |       | NULL      |          |
+---------+----------------------+------+-----+---------+-------+
2 rows in set (0.07 sec)

主键允许赋值,但不允许存在两个相同的值

mysql> INSERT tb4 VALUES(4, 'Tom');
Query OK, 1 row affected (0.03 sec)

mysql> INSERT tb4 VALUES(22, 'Tom');
Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM tb4;
+----+---------+
| id    | usename|
+----+---------+
| 4    | Tom       |
|  | Tom       |
+----+---------+
2 rows in set (0.00 sec)

mysql> INSERT tb4 VALUES(22, 'Li');
ERROR 1062 (23000): Duplicate entry '22' for key 'PRIMARY'

MySQL自动编号与主键的更多相关文章

  1. javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  2. javaweb(三十七)——获得MySQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  3. 五.获得MYSQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  4. MySQL为什么需要一个主键

    主键 表中每一行都应该有可以唯一标识自己的一列(或一组列). 一个顾客可以使用顾客编号列,而订单可以使用订单ID,雇员可以使用雇员ID 或 雇员社会保险号. 主键(primary key) 一列(或一 ...

  5. JDBC 复习5 mysql 的自增长主键 auto_increment

    MySQL 自增长主键 (1)如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号.编号从1开始,并1为基数递增. (2)把0插入AUTO_INCRE ...

  6. 使用JDBC获取能自动增加的主键

    本篇讲述如何使用JDBC获取能自动增加的主键的值.有时候我们在向数据库插入数据时希望能返回主键的值,而不是通过查询的方式.一般来说,在多表相互关联主键约束,也就是说别的表的外键约束是该表的主键,那么在 ...

  7. PowerDesigner中表名过长,自动生成的主键名截取的问题

    在PowerDesinger中,若表名过长,自动生成的主键名会被自动截取. 解决如下:DataBase/Edit Current DBMS/Scripts/Objects/PKey/ConstName ...

  8. (jdbc)取得数据库自动生成的主键方法

    一些类,在前面的博客中有,就不重复了 public class Test2 { TestDAO t=new TestDAO(); /*前提是数据表的主键是自动增加的, *取得数据库自动生成的主键 * ...

  9. JDBC学习笔记(6)——获取自动生成的主键值&处理Blob&数据库事务处理

    获取数据库自动生成的主键 [孤立的技术是没有价值的],我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: /** * 获取数据 ...

随机推荐

  1. 51Nod--1117 聪明的木匠(排序)

    我们可以反过来想,如何将这几个线段组成一根 并且每次花费是组成的两段的和 #include<bits/stdc++.h> using namespace std; #define maxn ...

  2. Manjaro更新出现冲突

    ➜ ~ sudo pacman -Syyu :: Synchronizing package databases... core 147.5 KiB 1378K/s 00:00 [########## ...

  3. 洛谷P2486 染色

    LCT的一种姿势. 题意:给定一棵树.每次把一条路径上的点染成一种颜色,求一条路径上有多少段颜色. 解: 首先可以很轻易的用树剖解决,只不过代码量让人望而却步... 有一种难以想象的LCT做法... ...

  4. A1142. Maximal Clique

    A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ...

  5. POJ 3463 Sightseeing (次短路经数)

    Sightseeing Time Limit: 2000MS   Memory Limit: 65536K Total Submissions:10005   Accepted: 3523 Descr ...

  6. re-download dependencies and 无法下载jar 的解决

    Re-download dependencies and sync project (requires network) 其实就是修改gradle 的path 路径:

  7. 高级组件——文件选择器JFileChooser

    1.创建文件选择器 JFileChooser 2.设置选择模式 setFileSelectionMode(int mode) JFileChooser.FILES_ONLY 只能选择文件(默认) JF ...

  8. go tail

    安装导入 go get github.com/hpcloud/tail import "github.com/hpcloud/tail" 使用 package main impor ...

  9. linux下安装SlickEdit

    title: linux下安装SlickEdit tags: 软件 date: 2018-10-08 21:32:12 --- linux下安装SlickEdit 下载安装包和补丁文件 补丁文件 官方 ...

  10. Java Hibernate中的悲观锁和乐观锁的实现

    锁(locking) 业务逻辑的实现过程中,往往需要保证数据访问的排他性.如在金融系统的日终结算 处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒种, ...