时间:2021-05-23
1、声明主键的方法:
您可以在创建表的时候就为表加上主键,如:
CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name));
也可以更新表结构时为表加上主键,如:
主键被认为是NOT NULL和UNIQUE约束最好的结合。如果这些列没有被明确地定义为NOT NULL,MySQL会隐含地定义这些列。
2、主键也是索引:
刚才已经说了,主键其实也是索引,甚至在MySQL的术语里面“键”就等于“索引”,所以“外键”一定要先设为“索引”。所以主键也应该和索引一样,既可以作用于单独的字段,又可以作用于多个字段。
举个简的例子吧,我住3单元,501室,我叫小小子,那么只有3单元501室才能在本小区表里面唯一确定我家。因为2单元,501室住着的可能也是个小小子,所以只有两个字段才能唯一确定我,也就是说可以二者组合作为主键。组合的主键,每个列都会隐含定义NOT NULL约束,且其二者加在一起被定义了UNIQUE 惟一约束。
3、设置主键自增
下面我们通过一个实例来讲解设置主键自增的方法:
首先创建数据库,创建表
给主键增加一个自增的功能:
mysql> alter table user modify id integer auto_increment ; Query OK, 1 row affected (0.28 sec) Records: 1 Duplicates: 0 Warnings: 0这样,上面的user表里面的主键,id可以自增了。
给上面的主键id增加默认值和自增功能。
mysql> alter table user modify id integer auto_increment ; Query OK, 0 rows affected (0.39 sec) Records: 0 Duplicates: 0 Warnings: 0MySql获取系统时间:
mysql> alter table user add createtime timestamp default current_timestamp; Query OK, 2 rows affected (0.17 sec) Records: 2 Duplicates: 0 Warnings: 0MySql设置主键不能为空,还要自动增长(这里没有设置默认值,但是默认是1,从1开始增长。),还要得到系统默认日期:
mysql> create table dd( -> id int primary key not null auto_increment, -> name varchar(20), -> time timestamp default current_timestamp -> ); Query OK, 0 rows affected (0.10 sec) mysql> insert into dd(name) values ('fhihgifds');Query OK, 1 row affected (0.14 sec)声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在面试中,大家应该经历过如下场景面试官:"用过mysql吧,你们是用自增主键还是UUID?"你:"用的是自增主键"面试官:"为什么是自增主键?"你:"因为采用自
本文实例讲述了mysql非主键自增长用法。分享给大家供大家参考,具体如下:mysql并非只有主键才能自增长,而是设为键的列就可以设置自增长。如下:CREATET
区别:1、主键,Oracle不可以实现自增,mysql可以实现自增。oracle新建序列,SEQ_USER_Id.nextval2、索引:mysql索引从0开始
1创建带解释的表CREATETABLEgroups(gidINTPRIMARYKEYAUTO_INCREMENTCOMMENT'设置主键自增',gnameVAR
前言自增主键没有持久化是个比较早的bug,这点从其在官方bug网站的id号也可看出(https://bugs.mysql.com/bug.php?id=