老师,我想问一下如何利用navicat在创表时设置主键自增长?

老师,我想问一下如何利用navicat在创表时设置主键自增长?

问题描述:

老师我上网查了怎么在navicat里面设置主键自增长,但是实验以后都失败了,说法不一,不知道到底哪个才是有效的,老师在视频里只讲了auto_increment表示自增长,但是并没有说怎么使用,现在我很疑惑。


相关截图:

https://img1.sycdn.imooc.com//climg/61d2d7b709b0c27814560998.jpg


相关代码:

CREATE TABLE t_goods(
	id INT  PRIMARY KEY NOT NULL AUTO_INCREMENT,
	name VARCHAR(20) NOT NULL,
	price FLOAT NOT NULL,
	desp VARCHAR(20) NOT NULL)
	AUTO_INCREMENT=1;




正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,在MySql中可以通过字段的auto_increment属性来自动增长,使用如下:

1、不设置主键的增长起点(默认1开始)

CREATE TABLE temp1( 
	id INT  PRIMARY KEY NOT NULL AUTO_INCREMENT, 
	name VARCHAR(20) NOT NULL, 
	price FLOAT NOT NULL, 
	desp VARCHAR(20) NOT NULL
) 
INSERT INTO temp1(name,price,desp) VALUES("abc",123.0,"despppp");
INSERT INTO temp1(name,price,desp) VALUES("def",123.0,"ddddespppp");
SELECT * FROM temp1;

执行以上语句,运行结果如下:

https://img1.sycdn.imooc.com//climg/61d3adeb09e6b3cf02900069.jpg

2、设置主键增长的起点(给定一个初始值)

CREATE TABLE temp1( 
	id INT  PRIMARY KEY NOT NULL AUTO_INCREMENT, 
	name VARCHAR(20) NOT NULL, 
	price FLOAT NOT NULL, 
	desp VARCHAR(20) NOT NULL
) auto_increment=1099

INSERT INTO temp1(name,price,desp) VALUES("abc",123.0,"despppp");
INSERT INTO temp1(name,price,desp) VALUES("def",123.0,"ddddespppp");
SELECT * FROM temp1;

执行以上语句运行结果如下:

https://img1.sycdn.imooc.com//climg/61d3aeb109a3880a02900075.jpg

设置主键自增长后数据库会自动编号,在添加数据时可不写id这一项。

祝学习愉快~

  • Heijyu 提问者 #1

    老师,我按照第二种写了,但是在插入数据的时候说我没有默认值

    https://img1.sycdn.imooc.com//climg/61d3b3fb0905b77615561028.jpg

    老师我把所有代码贴上来,不知道哪里出错了:

    CREATE TABLE t_goods(
    	id INT  PRIMARY KEY NOT NULL AUTO_INCREMENT,
    	name VARCHAR(20) NOT NULL,
    	price FLOAT NOT NULL,
    	desp VARCHAR(20) NOT NULL
    ) auto_increment=1;
    	
    INSERT INTO t_goods(name, price, desp)
    VALUES("phone", 2000.0, "black 32G"), ("refridgerator", 1500.0, "silver doubled doors"), ("washing machine", 3000.0, "advanced"), ("air conditioner", 4000.0, "advanced");
    
    SELECT * FROM t_goods;


    2022-01-04 10:42:29
  • Heijyu 提问者 #2

    老师请问能看到我的回复吗?

    2022-01-04 11:10:48
  • 好帮手慕小小 回复 提问者 Heijyu #3

    同学你好,经过测试是可以正确运行的,建议删除表,重新建表再试试。

    https://img1.sycdn.imooc.com//climg/61d3c08c0904dc3f06210364.jpg

    drop table t;
    
    CREATE TABLE t(
        id INT  PRIMARY KEY NOT NULL AUTO_INCREMENT,
        name VARCHAR(20) NOT NULL,
        price FLOAT NOT NULL,
        desp VARCHAR(20) NOT NULL
    ) auto_increment=1;
    
    INSERT INTO t(name, price, desp) VALUES
    	("phone", 2000.0, "black 32G"), ("refridgerator", 1500.0, "silver doubled doors"), 
    	("washing machine", 3000.0, "advanced"), ("air conditioner", 4000.0, "advanced");
    SELECT * FROM t;

    祝学习愉快~

    2022-01-04 11:46:08
Heijyu 提问者 2022-01-03 19:06:35

老师,假设主键自增长设置成功了,那接下来插入数据的时候还要写id这一项吗?还是去掉id?

NSERT INTO t_goods(name, price, desp)
VALUES("phone", 2000.0, "black 32G"), ("refridgerator", 1500.0, "silver doubled doors"), ("washing machine", 3000.0, "advanced"), ("air conditioner", 4000.0, "advanced");
  • 提问者 Heijyu #1

    复制过来漏了I,本身在系统中有写

    2022-01-03 19:07:34
  • 好帮手慕小小 回复 提问者 Heijyu #2

    同学你好,可以写也可以不写:

    drop table temp1;
    CREATE TABLE temp1( 
    	id INT  PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    	name VARCHAR(20) NOT NULL, 
    	price FLOAT NOT NULL, 
    	desp VARCHAR(20) NOT NULL
    ) 
    
    INSERT INTO temp1(name,price,desp) VALUES("abc",123.0,"despppp"),("def",123.0,"ddddespppp");
    INSERT INTO temp1(id,name,price,desp) VALUES(3,"def",123.0,"ddddespppp");
    SELECT * FROM temp1;

    祝学习愉快~

    2022-01-04 10:32:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师