zoukankan      html  css  js  c++  java
  • MySQL自动编号与主键

    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       |
    | 22  | Tom       |
    +----+---------+
    2 rows in set (0.00 sec)

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

  • 相关阅读:
    剑指OFFER之包含min函数的栈
    剑指OFFER之二叉树的镜像
    关于【最长递增子序列(LIS)】
    题目1113:二叉树
    剑指OFFER之字符串的排列
    题目1120:全排列
    题目1460:Oil Deposit
    题目1459:Prime ring problem
    剑指OFFER之二叉树中和为某一值的路径
    python 线程、进程
  • 原文地址:https://www.cnblogs.com/toudoubao/p/6596451.html
Copyright © 2011-2022 走看看