美文网首页
主外键补充

主外键补充

作者: 听你讲故事啊 | 来源:发表于2019-03-17 21:35 被阅读0次

一张表里只能有一个主键,
主键可以由多列组成

CREATE TABLE product (
    category INT NOT NULL, 
    id INT NOT NULL,
    price DECIMAL,
    PRIMARY KEY(category, id)
)   ENGINE=INNODB;

CREATE TABLE customer (
    id INT NOT NULL,
    PRIMARY KEY (id)
)   ENGINE=INNODB;

CREATE TABLE product_order (
    no INT NOT NULL AUTO_INCREMENT,
    product_category INT NOT NULL,
    product_id INT NOT NULL,
    customer_id INT NOT NULL,

    PRIMARY KEY(no),
    INDEX (product_category, product_id),
    INDEX (customer_id),

    FOREIGN KEY (product_category, product_id)
      REFERENCES product(category, id)
      ON UPDATE CASCADE ON DELETE RESTRICT,

    FOREIGN KEY (customer_id)
      REFERENCES customer(id)
)   ENGINE=INNODB;

https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html

一对一

create table userinfo1(
    id int auto_increment primary key,
    name char(10),
    gender char(10),
    email varchar(64)
)engine=innodb default charset=utf8;

create table admin(
    id int not null auto_increment primary key,
    username varchar(64) not null,
    password VARCHAR(64) not null,
    user_id int not null,

    unique uq_u1 (user_id),
    CONSTRAINT fk_admin_u1 FOREIGN key (user_id) REFERENCES userinfo1(id)
)engine=innodb default charset=utf8;

多对多

create table userinfo2(
    id int auto_increment primary key,
    name char(10),
    gender char(10),
    email varchar(64)
)engine=innodb default charset=utf8;

create table host(
    id int auto_increment primary key,
    hostname char(64)
)engine=innodb default charset=utf8;

create table user2host(
    id int auto_increment primary key,
    userid int not null,
    hostid int not null,

    unique uq_user_host (userid,hostid),
    CONSTRAINT fk_u2h_user FOREIGN key (userid) REFERENCES userinfo2(id),
    CONSTRAINT fk_u2h_host FOREIGN key (hostid) REFERENCES host(id)
)engine=innodb default charset=utf8;
                    

自增和步长

一次登录是一次会话

# 基于会话级别
mysql> show session variables like 'auto_inc%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

# 基于全局级别
mysql> show global variables like 'auto_inc%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set, 1 warning (0.00 sec)
# 设置会话步长
set session auto_increment_offset=10;

# 设置全局步长
set global auto_increment_offset=10;

相关文章

  • 主外键补充

    一张表里只能有一个主键,主键可以由多列组成 https://dev.mysql.com/doc/refman/5....

  • SSM开发大众点评实战之订单模块

    数据库设计 订单模块.PNG建主外键关系?VS 不建主外键关系? 数据一致性 程序自身也得保证数据一致性 订单表....

  • Linux常用命令

    补充(快捷键)

  • MyBatis 笔记

    Mybatis 基础用法 sql数据,建表,注意主外键 关系, 以及建立db.properties 建立pojo文...

  • MySQL视图问题以及主外键

    1,mysql的视图名不能和现有表名重复 查看复制打印? mysql>showtables;//查看表 +----...

  • 2019-10-03 数据库设计

    一、数据库设计 可适当的使用外键,利用Navicat的逆向生成模型工具,可生成整个表间关系图。外键的3种方式:主外...

  • 数据库主外键的关系

    一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,...

  • Chrome快捷键

    一 单键 二 Ctrl+字母快捷键 三 Ctrl+字母快捷键补充 四 Alt快捷键及其他

  • 利用python进行数据分析(1)

    第一章 一. 数据的类型 表格数据 多维数据(矩阵) 多张表数据(主外键关联) 时间序列 二. 重要的Python...

  • sqlserver 2008 r2 主外键建立

    1。右键要建立的外检列字段,2.选择关系 外键表就是要建外键的表, 主键表是因为外键在另一个表上是主键。所以叫做主键表

网友评论

      本文标题:主外键补充

      本文链接:https://www.haomeiwen.com/subject/shypmqtx.html