zoukankan      html  css  js  c++  java
  • MySQL之外键、主键、自增

    1、创建外键

    create table userinfo(
      uid int auto_increment primary key,
      name varchar(32),
      department_id int,
      xx_id int,
      constraint fk_user_depar foreign key (“department_id”) references color(“id”)
    )engine=innodb default charset=utf8; 
    
    create table department(   
      id bigint auto_increment primary key,   
      title char(15) 
    )engine=innodb default charset=utf8;
    View Code

     2、补充主键:

      一个表只能有一个主键

      主键可以由多列组成:

       
    create table t1(
        nid int(11) not null auto_increment,
        pid int(11) not null ,
        num int(11) null,
        primary key(nid,pid)
    ) engine=InnoDB default charset=utf8;
    View Code

    例:

    CREATE TABLE t5 (
      nid int(11) NOT NULL AUTO_INCREMENT,
      pid int(11) not NULL,
      num int(11),
      primary key(nid,pid)    #此时nid,pid整体作为主键,下面就可以整体进行关联
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    create table t6(
      id int auto_increment primary key,
      name char(10),
      id1 int,
      id2 int,
      CONSTRAINT fk_t5_t6 foreign key (id1,id2) REFERENCES t1(nid,pid)    #nid,pid整体作为主键(这个是前提条件),所以这里关联了两个
    )engine=innodb default charset=utf8;

    注:上面foreign key的名字fk_t5_t6不能重复

     3、自增补充

      上面的AUTO_INCREMENT=4表示下一次插入数据的时候id从4开始自增,如果想要定制从10开始自增:

    alter table t10 AUTO_INCREMENT=10;

    MySQL:自增步长

    3.1基于会话级别:(*****)

    一次mysql登录就是一次会话,在当前mysql中设置了步长,再打开一个新的mysql后,新的mysql中步长还是默认为1

    3.1.1 show session variables like 'auto_inc%'; 查看全局的步长,默认为1

    可以知道步长为1

    3.1.2 set session auto_increment_increment=2; 设置会话步长

    可以看出全局步长被设置为2

     

    添加数据id的步长就按照2增加

    3.1.3 # set session auto_increment_offset=10; 设置会话起始值,一般用不到,因为我们在表中已经规定好了

     3.2 基于全局级别

    在当前全局中修改步长之后,再开会话(打开新的mqsql)都会以你设置的全局步长默认设置,不推荐此种方式

     3.2.1 show global variables like 'auto_inc%';     查看全局变量

              set global auto_increment_increment=2;     设置会话步长

       # set global auto_increment_offset=10;      设置全局起始值

  • 相关阅读:
    python全栈开发从入门到放弃之socket并发编程之协程
    python全栈开发从入门到放弃之socket并发编程多线程GIL
    python全栈开发从入门到放弃之socket并发编程多线程
    python全栈开发从入门到放弃之socket并发编程多进程
    python全栈开发从入门到放弃之socket网络编程基础
    python全栈开发从入门到放弃之异常处理
    python全栈开发从入门到放弃之面向对象反射
    python全栈开发从入门到放弃之面向对象的三大特性
    转:经典ACM算法
    反射在Java Swing中的应用
  • 原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/11869009.html
Copyright © 2011-2022 走看看