[[数据库]] MySQL的主键、外键、自增 MADPEACH

    科技2022-07-10  109

    Chapter2 MySQL的主键、外键、自增

    文章目录

    Chapter2 MySQL的主键、外键、自增一、主键二、外键三、自增


    一、主键

    #主键的作用是保证数据的唯一性 #主键不能重复,不能为空 #一个表只能有一个主键,但主键可以由多列构成,只要多列合成表现唯一即可 primary key (nid,pid);

    二、外键

    1.外键 create table department( id bigint auto_increment primary key, title char(15) )engine=innodb default charset=utf8; create table userinfo( uid bigint auto_increment primary key, name varchar(32), department_id int, constraint fk_user_depart foreign key(department_id) references department(id) )engine=innodb default charset=utf8; 注:当表1中主键采用多列的时候,表2中的外键可以连两个,如下(使用foreign key的表2则不需要采用多列主键) 表1中:primary key(nid,pid)2中:constraint fk_t1_t2 foreign key(id1,id2) references t1(nid,pid) 2.外键变种(1对N):普通外键 3.外键变种(11):FK()+唯一索引约束 unique 唯一索引名称(列名) 4.外键变种(N对N):FK()+联合唯一索引约束 unique 唯一索引名称(列名,列名) #例如:1个用户可以使用多台主机,1台主机可以被多个用户使用。此时再创建一张用户主机关系表 注:唯一索引不能重复,可以为空 主键不能重复,不能为空

    三、自增

    1.基本操作 desc t1; #查看字段及各属性 show create table t1; #查看这个表是怎么创建的,可看见(下一个插入时)自增值 show create table t1\G; #以表格的方式展现 alter table t1 auto_increment=20; #设置自增列的当前起始值 2.MySQL的自增步长 基于会话级别(登录自己账号时,下线即失效): show session variables like 'auto_inc%'; #查看全局变量,可看到当前步长 set session auto_increment_increment=2; #设置会话步长 set session auto_increment_offset=10; #起始值 基于全局级别(再开会话,再登录其他账号都不失效): show global variables like 'auto_inc%'; set global auto_increment_increment=2; set global auto_increment_offset=10;
    Processed: 0.027, SQL: 8