當前位置:首頁 » 數據倉庫 » mysql主鍵自增如何配置
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql主鍵自增如何配置

發布時間: 2023-01-06 19:23:49

A. mysql怎麼設置自動遞增從1開始

如果希望在每次插入新記錄時,自動地創建主鍵欄位的值。可以在表中創建一個 auto-increment 欄位。MySQL 使用 AUTO_INCREMENT 關鍵字來執行 auto-increment 任務。默認地AUTO_INCREMENT 的開始值是 1,每條新記錄遞增 1。

主鍵又稱主關鍵字,主關鍵字(primary key)是表中的一個或多個欄位,它的值用於唯一地標識表中的某一條記錄。

B. mybatis mysql 主鍵自增加怎麼配置

mybatis自增主鍵配置:


mybatis進行插入操作時,如果表的主鍵是自增的,針對不同的資料庫相應的操作也不同。基本上經常會遇到的就是 Oracle Sequece 和 Mysql 自增主鍵。主要說明下在mybatis中對於自增主鍵的配置。


1、不返回自增主鍵值:

如果考慮到插入數據的主鍵不作為其他表插入數據的外鍵使用,可以考慮這種方式。


Oracle Sequence 配置

<sqlid='TABLE_NAME'>TEST_USER</sql>
<sqlid='TABLE_SEQUENCE'>SEQ_TEST_USER_ID.nextval</sql>
<!--注意這里直接調用sequence的nextval函數-->
<insertid="insert"parameterType="User">
insertinto<includerefid="TABLE_NAME"/>(ID,NAME,AGE)
values(<includerefid="TABLE_SEQUENCE"/>,#{name},#{age})
</insert>


當插入語句如上配置時,那麼針對如下語句

Useruser=newUser();
user.setName("test");
user.setAge(24);
userMapper.insert(user);
System.out.println(user.id);//user.id為空

user.id為空,也就是說如上的配置並不能在完成插入操作後將插入時的主鍵值存放到保存的對象中。


2、Mysql自增主鍵配置

由於mysql資料庫中,可以設置表的主鍵為自增,所以對於Mysql資料庫在mybatis配置插入語句時,不指定插入ID欄位即可。主鍵的自增交由Mysql來管理。

<sqlid='TABLE_NAME'>TEST_USER</sql>

<!--注意這里的插入SQL中是沒有指明ID欄位的!-->
<insertid="insert"parameterType="User">
insertinto<includerefid="TABLE_NAME"/>(NAME,AGE)
values(#{name},#{age})
</insert>


同樣,針對Mysql如此配置myts,插入完成後user.id為空。


插入後獲取自增主鍵值:


上述的情況能滿足大部分情況,但有時候我們會遇到類似一對多的那種表結構,在插入多端數據時,需要獲取剛剛保存了的一段的主鍵。那麼這個時候,上述的配置就無法滿足需要了。為此我們需要使用mybatis提供的<selectKey />來單獨配置針對自增逐漸的處理。


1、Oracle Sequence 配置:

<sqlid='TABLE_NAME'>TEST_USER</sql>
<sqlid='TABLE_SEQUENCE'>SEQ_TEST_USER_ID.nextval</sql>
<!--注意這里需要先查詢自增主鍵值-->
<insertid="insert"parameterType="User">
<selectKeykeyProperty="id"resultType="int"order="BEFORE">
select<includerefid="TABLE_SEQUENCE"/>fromal
</selectKey>
insertinto<includerefid="TABLE_NAME"/>(ID,NAME,AGE)
values(#{id},#{name},#{age})
</insert>


當使用了<selectKey />後,在實際的插入操作時,mybatis會執行以下兩句SQL:

selectSEQ_TEST_USER_ID.nextvalfromal;//語句1
insertinto(ID,NAME,AGE)values(?,?,?);//語句2

在執行插入語句2之前,會先執行語句1以獲取當前的ID值,然後mybatis使用反射調用User對象的setId方法,將語句1查詢出的值保存在User對象中,然後才執行語句2這樣就保證了執行完插入後

Useruser=newUser();
user.setName("test");
user.setAge(24);
userMapper.insert(user);
System.out.println(user.id);//user.id不為空

user.id是有值的。


2、Mysql自增主鍵配置

針對於Mysql這種自己維護主鍵的資料庫,可以直接使用以下配置在插入後獲取插入主鍵,

<sqlid='TABLE_NAME'>TEST_USER</sql>
<insertid="insert"useGeneratedKeys="true"keyProperty="id"parameterType="User">
insertinto<includerefid="TABLE_NAME"/>(NAME,AGE)
values(#{name},#{age})
</insert>

當然,由於Mysql的自增主鍵可以通過SQL語句

selectLAST_INSERT_ID();

來獲取的。因此針對Mysql,Mybatis也可配置如下:

<sqlid='TABLE_NAME'>TEST_USER</sql>
<!--注意這里需要先查詢自增主鍵值-->
<insertid="insert"parameterType="User">
<selectKeykeyProperty="id"resultType="int"order="BEFORE">
SELECTLAST_INSERT_ID()
</selectKey>
insertinto<includerefid="TABLE_NAME"/>(ID,NAME,AGE)
values(#{id},#{name},#{age})
</insert>

只不過該中配置需要額外的一條查詢SQL


小結

當數據插入操作不關心插入後數據的主鍵(唯一標識),那麼建議使用不返回自增主鍵值的方式來配置插入語句,這樣可以避免額外的SQL開銷.

當執行插入操作後需要立即獲取插入的自增主鍵值,比如一次操作中保存一對多這種關系的數據,那麼就要使用插入後獲取自增主鍵值的方式配置.

C. mysql自動增長主鍵怎麼設置

解決方案:

首先我們用MySQL自帶的可視化管理工具MySQL WorkBench打開資料庫及表格,出現此問題的主要原因是主鍵已經有了名為「XXX」的那項,實際上我寫的代碼並沒有重復也會彈出此報錯,下面我們看一下我自己的解決方案。

雙擊紅框中選項,填好相應配置,進入後點擊如圖所示先創建資料庫(此操作必須在MySQL已經啟動情況下)左下角SCHEMAS底下就是你的資料庫名字,先雙擊拉出TABLE,在TABLE上右鍵創建新表。

D. 如何設置mysql 主鍵自動增長

如果你資料庫已經建立 用這個方法:

ALTER TABLE `test` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;

如果你資料庫沒有建立 就用CREATE :

如果你用的資料庫軟體 比如Navicat for MySQL。 那麼在設計表選項里有設置自動增長的,打上勾

E. MySql 設置ID主鍵自增,從0開始,請問怎麼設

就我所知這個好像無法實現,就算你自己編譯mysql恐怕也很難。因為last_insert_id()這個內置的函數返回最近一次插入的自增長ID,當沒有符合條件的ID時,它返回0,所以如果自增長從0開始的話,這個返回值就很難判定到底是插入了一條自增長ID為0的記錄還是沒有符合條件的記錄了。

F. 如何將一個mysql中的表的主鍵設置為自增長

如果指定了該列的值,則新插入的值不能和已有的值重復,而且必須大於其中最大的一個值;
也可以不指定該列的值,只將其他列的值插入,讓ID還是按照MySQL自增自己填;
具體:
1.創建資料庫
create table if not exists userInfo (
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(50) NOT NULL,
password varchar(50) NOT NULL
);1234512345

2.插入數據記錄
insert into userInfo values(1,'aaa','1212');11

當數據表中有自增長主鍵時,當用SQL插入語句中插入語句帶有ID列值記錄的時候;

如果指定了該列的值,則新插入的值不能和已有的值重復,而且必須大於其中最大的一個值;
也可以不指定該列的值,只將其他列的值插入,讓ID還是按照MySQL自增自己填;
這種情況在進行插入的時候,兩種解決方法:
①可以把id的值設置為null或者0,這樣子mysql都會自己做處

G. mysql怎麼設置自增主鍵

navicat裡面設置自增

H. mysql如何設置自增主鍵

1.主鍵語法
①創建時:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno) );
②修改時:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);
前提是原先沒有設置主鍵。
2.外鍵語法
①創建時:create table sc (
studentno int,
courseid int,
score int,
foreign key (courseid) );
②修改時:
ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[約束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;
3.使用組合主鍵
如果一列不能唯一區分一個表裡的記錄時,可以考慮多個列組合起來達到區分表記錄的唯一性,形式
①創建時:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno,courseid) );
②修改時:alter table tb_name add primary key (欄位1,欄位2,欄位3);
前提是原來表中沒有設置主鍵,若原先已有主鍵則會報錯。

I. mysql的設置主鍵自增

DROP TABLE IF EXISTS `messages`;
CREATE TABLE `messages` (
chatId int unsigned NOT NULL auto_increment,
toUserName varchar(50) DEFAULT NULL,
fromUserName` varchar(50) DEFAULT NULL,
message varchar(50) NOT NULL,
sendDate datetime DEFAULT NULL,
PRIMARY KEY (`chatId`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

J. 通過dbeaver創建mysql表時,如何設置主鍵和主鍵自增。不適用sql語句,僅通過dbeaver可視化操作來創建。

在創建表的時候可以設置,方法如下,用一下sql語句。

create table tableName(

id int identity(1,1) primary key,

data varchar(50))

解釋:其中identity(1,1)代表自增,第一個1代表從1開始計數,第二個1代表每次增長1。

(10)mysql主鍵自增如何配置擴展閱讀:

語言特點

1、一體化:SQL集數據定義DDL、數據操縱DML和數據控制DCL於一體,可以完成資料庫中的全部工作。

2、使用方式靈活:它具有兩種使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主語言中使用。

3、非過程化:只提操作要求,不必描述操作步驟,也不需要導航。使用時只需要告訴計算機「做什麼」,而不需要告訴它「怎麼做」。

4、語言簡潔,語法簡單,好學好用:在ANSI標准中,只包含了94個英文單詞,核心功能只用6個動詞,語法接近英語口語。