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;

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;

例:

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;      设置全局起始值

MySQL之外键、主键、自增的更多相关文章

  1. MySQL与Oracle主键Query性能测试结果

    测试结果总结如下: 1. 按主键读:SQL形式:SELECT * FROM table WHERE id=?. 1.1. 主键为数字.如果所有ID均不存在,纯比较SQL解析能力.MySQL解析SQL的 ...

  2. 设置MySQL数据表主键

    设置MySQL数据表主键: 使用“primary key”关键字创建主键数据列.被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合.如下SQL语句所示: My ...

  3. Mysql 创建联合主键

    Mysql 创建联合主键2008年01月11日 星期五 下午 5:21使用primary key (fieldlist)      比如:   create table mytable (       ...

  4. sqoop从hive导入数据到mysql时出现主键冲突

    今天在将一个hive数仓表导出到mysql数据库时出现进度条一直维持在95%一段时间后提示失败的情况,搞了好久才解决.使用的环境是HUE中的Oozie的workflow任何调用sqoop命令,该死的o ...

  5. day03 MySQL数据库之主键与外键

    day03 MySQL数据库之主键与外键 昨日内容回顾 针对库的基本SQL语句 # 增 create database meng; # 查 show databases; shwo create da ...

  6. mysql中,主键与普通索引

    一.什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里 ...

  7. MySQL中的主键,外键有什么作用详解

    MySQL中的主键,外键有什么作用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学关系型数据库的同学,尤其在学习主键和外键时会产生一定的困惑.那么今天我们就把这个困惑连根拔起 ...

  8. mysql update获取主键

    mysql update获取主键<pre>SET @update_id := 0;UPDATE mobantestinfo1 SET info2 = 'value', id = (SELE ...

  9. 【Android】Android实现监听返回键,主键(HOME),菜单键

    目录结构: contents structure [+] 简介 监听 返回键 监听 主键(Home键) 监听 菜单键 一.简介 本篇文章介绍如何在Android中实现监听返回键,主键,菜单键.一般情况 ...

  10. mysql 原有的主键情况下设置自增字段

    mysql 的自增字段只能是主键,如果原表已经有主键,需要设置自增字段应该怎么做呢? 1.alter table bu_staff  drop primary key;  先删除表的主键  id为原表 ...

随机推荐

  1. 字符串中的count()方法

    描述 Python count() 方法用于统计字符串里某个字符出现的次数.可选参数为在字符串搜索的开始与结束位置. 语法 count()方法语法: str.count(sub, start= 0,e ...

  2. 深入理解NIO(二)—— Tomcat中对NIO的应用

    深入理解NIO(二)—— Tomcat中对NIO的应用 老哥行行好,转载和我说一声好吗,我不介意转载的,但是请把原文链接贴大点好吗 Tomcat大致架构 先贴两张图大致看一眼Tomcat的架构 Tom ...

  3. 《Flutter 动画系列》组合动画

    老孟导读:在前面的文章中介绍了 <Flutter 动画系列>25种动画组件超全总结 http://laomengit.com/flutter/module/animated_1/ < ...

  4. 【poj 2429】GCD & LCM Inverse (Miller-Rabin素数测试和Pollard_Rho_因数分解)

    本题涉及的算法个人无法完全理解,在此提供两个比较好的参考. 原理 (后来又看了一下,其实这篇文章问题还是有的……有时间再搜集一下资料) 代码实现 #include <algorithm> ...

  5. captcha-killer burp验证码识别插件体验

    0x01 使用背景 在渗透测试和src挖洞碰到验证码不可绕过时,就会需要对存在验证码的登录表单进行爆破,以前一直使用PKav HTTP Fuzzer和伏羲验证码识别来爆破,但是两者都有缺点PKav H ...

  6. php 安装教程

    php 安装教程 本文采用php7.0.1作为样例,进行安装. 系统环境: CentOS6.7. gcc 4.8.2 libzip 1.0.1 在安装之前,可以先更新CentOS系统. yum -y ...

  7. 在线诊断工具arthas (windows)

    介绍: arthas是阿里巴巴开发的一款开源的,Java应用程序排查问题的非常好用的工具 当你遇到以下类似问题而束手无策时 arthas 可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各 ...

  8. 实际开发中 dao、entity的代码怎样自动生成?一款工具送给你

    01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...

  9. App 性能测试分享

    在本文内,主要以Android性能测试为主进行分析 一.性能测试包含 1.启动时间测试   测试场景包括 - - - 首次安装启动时间.冷启动.热启动测试 2.页面响应时间:   用户从点击一个控件, ...

  10. js 实现浏览器全屏效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...