建立一張mysql的表 已有了id 將id設定成 主鍵自動增

2021-03-20 09:49:08 字數 6937 閱讀 7727

1樓:_絕版溫柔

drop table if exists `user`;(user為你已經建好的名字)

create table `user` (

`id` int(11) not null auto_increment,(auto_increment控制主鍵自曾1)

`gid` int(11) default null,

`username` varchar(15) not null,

`password` varchar(15) not null,

primary key (`id`),--->設定主鍵

) engine=innodb default charset=gb2312;

或者這樣

alter table 表名 modify id int auto_increment primary key

2樓:匿名使用者

alter table abc add constraint p_m_k primary key(id) ;

alter table abc auto_increment=1;

1可以重新定義,為起始點,

3樓:匿名使用者

如果表中沒資料的話,最好是刪除了重新建,因為如果你開始有主鍵的話,再修改挺麻煩的

4樓:看下巴

僅試過mysql

設 要改變的列名為 id, 改變後 id 從1,2,3...... :

alter table tablename drop id;

alter table tablename add id int primary key auto_increment first;

mysql表已經建立完畢id是主鍵,現在想把id設定成自增,求高手指教啊

5樓:匿名使用者

alter table 表名 change id id int auto_increment;

修改表 id欄位 保留原名 字元型別為int 自增屬性

6樓:匿名使用者

rt 請指點,不重建表的情況下是否可以解決? 把自增欄位 的起始值 設高點就好了 ,saxkiw

7樓:匿名使用者

自增列必須是int型別。

具體的修改語句的話,前面的這位已經貼出來了。

alter table yourtablename change id id int auto_increment;

補充一點:修改對於之前已經插入的資料不起作用,對於修改後插入的資料起效。

我用mysql建立了乙個表,並且把id設定成了主鍵,和auto_increment,輸入不了資料

8樓:匿名使用者

在mysql中,如果你的insert語句中的**後面沒有加上指明的字段,資料庫會預設為你輸入的字段與**的字段安排完全匹配,也就是它把id列也算進來了,所以相當於它需要5個字段的資料,分別是userid,username,passwd,email,grade,這五個欄位的資料,但你後面的values括弧中只有四個欄位的資料,所以提示列數目不匹配,正確的做法是指明你需要的列,這也是個好習慣:

insert into users(username,passwd,email,grade) values(........)。敬請採納!

9樓:匿名使用者

nsert into users(這裡少欄位名) values('admin','admin','admin@sufu.***',1)

mysql資料庫如何為表中已有的主鍵字段增加自增屬性?sql語句怎麼寫

10樓:匿名使用者

你建立表的時候就應該建立id-->id int primary key auto_increment

如果應經建立成功

alter table `tablename`modify column `fieldname`varchar(14)

11樓:匿名使用者

alter table `category ` modify column `id` int(11) not null auto_increment first ,add primary key (`id`);

試試吧,應該是這樣子

12樓:乙個網際網路使用者

alter table category modify id int auto_increment primary key

13樓:匿名使用者

alter table `category` modify `id` int primary key auto_increment;

或者alter table `category` change `id` int primary key auto_increment;

mysql資料庫中,設定id為自動增加,向資料庫中插入資料時,sql語句怎麼寫?

14樓:摳腳小聖

在建立表的時候就將自增寫好:

比如:`id` int(11) not null auto_increment,就是讓id這個屬

性自增。

你需要在建立資料庫的語句最後寫這麼一句:auto_increment=1。表明自增數字從1開始。

之後插入資料的sql語句就正常寫就行了:insert into user values( ??);根據你的實際情況:

插入資料時只需要插入name和password就好,所以values中的「?」兩個就夠了

15樓:愛可生雲資料庫

隨著 mysql 8.0.16 的發布,我們為 mgr 新增了一些功能,以增強其高可用性。其中乙個功能是能夠在某些情況下啟用已離開組的成員自動重新加入,而無需使用者干預。

為了理解這個功能的好處以及如何使用它,我們將快速檢視它背後的概念以及它首先存在的動機。

介紹mgr 允許 mysql 使用者輕鬆管理高可用組,並完成保證系統高可用所需的所有特徵,例如容錯或故障檢測。

mgr 中提供的基本保證之一是該組呈現給使用者的是乙個不可分割的整體,這意味著一旦成員加入或離開該組,該更改將立即被其他成員得知。預設情況下,組內的資料本身最終是一致的,儘管可以被修改。為了實現這種保證,mgr 使用組成員服務,以及通過一致性演算法檢測有衝突的事務並中止它們。

mgr 的這一方面超出了本文的範圍,與成員自動重新加入功能並不完全相關,本文不作贅述。

組內新成員必須符合一些條件。其中新成員需要在事務方面趕上組進度(是通過選擇組內乙個成員來將已處理的事務流式傳輸給他,在 mgr 中稱為「捐贈」)。最後,只要在此「分布式恢復」過程中沒有遇到任何錯誤,組內新成員將被宣告為 online 狀態。

mgr 依靠組通訊層 (gcs) 來管理組。該層實現了用於解決衝突事務的一致性演算法,並強制執行一些通訊特性。對於實現前面提到的組的不可分割檢視,這些特性至關重要,如訊息的總順序、安全傳遞或檢視同步等。

gcs 需要能夠檢測組中哪些成員失效或看起來失效。一旦這些成員被檢測為失效,就將其從該組中移除,以便保持該組正常使用。為此 gcs 在每個成員中引入了乙個故障檢測器,用於分析組內交換的訊息。

如果它在一段時間內沒有收到來自指定成員的訊息,則故障檢測器將對該成員產生「懷疑」,並認為該成員可能已經失效。成員從「懷疑」到真正失效的等待時間是可以配置的。

重新加入成員存在的問題

我們已經了解 mgr 必須為了高可用提供的策略,以及它如何實現,接下來請看示例:

乙個小組由三個成員組成,其中乙個成員偶爾會遇到丟失資料報、斷連或者其它導致無法解決的錯誤情況的影響組內通訊。還要考慮這些錯誤持續時間超過 group_replication_member_expel_timeout的值。

其中乙個組員發生故障,小組的其他成員將決定踢出該成員。問題是,一旦該成員重新入組,他將被組驅逐加入失敗,需要通過手動干預。

如果該成員的驅逐超時屬性設定不為 0,則它將在被驅逐前等待滿足該時間量(將超時設定為 0 意味著他將永遠等待)。超時後成員將被驅逐並重新建立連線,並且無法重新加入舊組,需要再次手動干預。

於此,當存在網路故障時,顯然需要手動干預。

在 mysql 8.0.16 中,我們引入了自動重新加入組的功能,一旦成員被驅逐出組,它就會自動嘗試重新加入該組,直到達到預設的次數為止。有時每次重試之間至少等待5分鐘。

如何啟動自動重新加入?

可以通過將group_replication_autorejoin_tries設定為所需的重試次數來開啟並使用自動重新加入功能。

set global group_replication_autorejoin_tries = 3

預設值為 0,表示伺服器禁用自動重新加入。

如何驗證自動重新加入?

與 mysql 中的許多功能一樣,自動重新加入過程是可以監測的。自動重新加入的可檢測性依賴於效能模式基礎架構,階段式收集有關資料。

他們獲取以下資訊:

事件發生的執行緒id(thread_id)

活動名稱(event_name)

起止時間戳以及事件的總持續時間(timer_start,timer_end 和 timer_wait)

在事件停止之前完成的工作單位和預估工作單位(work_***pleted,work_estimated)

因此,當自動重新加入過程開始時,它將在performance schema中註冊乙個名為「stage / grouprpl / undergoing auto-rejoinprocedure」的事件。使用表performance_schema.events_stage_current,  performance_schema.

events_stages_summary_global_by_event_name和performance_schema.events_stages_history_long我們可以觀察到以下內容:

是否正在進行自動重新加入程式

到目前為止,已經減少重試的次數

直到下一次重試的估計剩餘時間

自動重新加入過程狀態

可以通過過濾包含「auto-rejoin」字串的活動事件來查詢自動重新加入過程狀態(即,是否正在進行):

select count(*) from performance_schema.events_stages_current

where event_name like '%auto-rejoin%';

count(*)

1查詢結果存在,證明伺服器上執行了自動重新加入過程。

到目前為止的重試次數

如果正在進行自動重新加入程式,我們可以通過選擇階段事件上的工作單元數來檢查到目前為止嘗試的重試次數:

select work_***pleted from performance_schema.events_stages_current where

event_name like '%auto-rejoin%';

work_***pleted

1在這個例子中,到目前為止只有一次嘗試。

預計到下次重試的剩餘時間

select (300.0 - ((timer_wait*10e-12) - 300.0 * num_retries)) as time_remaining from

(select count(*) - 1 as num_retries from

performance_schema.events_stages_current where event_name like '%auto-rejoin%') as t,

performance_schema.events_stages_current where event_name like '%auto-rejoin%';

time_remaining

30.0

所以在這個例子中,在下一次重新加入之前還有 30 秒。注意效能模式表中的所有時間記帳都以微秒精度保持,因此我們將 timer_wait 縮放為秒。

使用自動重新加入與驅逐超時的權衡

到目前為止,在這篇文章中我們只關注自動重新加入。實際上,有兩種不同的方法可以實現離開組的成員的重新加入:

設定自動重新加入嘗試次數來實現自動重新加入

設定該成員的驅逐超時時間然後配合手動干預

能有延緩刪除組內可疑成員,並且如果配置為足夠長的驅逐超時時間,則增加了重新建立連線的機會,再次與組進行互動。

雖然這兩個功能實現了相同的目標,但它們的工作方式是不同的,並且需要權衡。通過使用驅逐超時,您可以維護組中可疑的成員,其缺點是您無法新增或刪除成員或選擇新的主機。如果通過使用自動重新加入,該成員將不再是該組的正常組員,將保持在 superreadonly 模式,直到重新加入該組。

但在此期間,重新加入成員的同步舊資料的可能性將增加。自動重新加入過程可監控,而驅逐超時不是真正可監控的。

所以,總結一下:

驅逐超時的優點

- 該成員一直在該組內

- 可能更適合足夠小的網路故障

驅逐超時的缺點

- 在懷疑某個成員時,無法在該組上新增/刪除成員

- 在懷疑某個成員時,無法選擇新的主機

- 您無法監控此過程

自動重新加入的優點

- 該組將在沒有重新加入成員的情況下執行,您可以新增/刪除成員並選擇新的主機

- 您可以監控該過程

自動重新加入的缺點

- 您增加了重新加入成員上過時讀取的可能性

- 可能不適合足夠小的網路故障

總而言之,我從啟用自動重新加入中獲得了什麼?

通過啟用自動重新加入,您可以減少對mysql例項的手動干預的需要。您的系統

更加適應瞬間網路故障,同時滿足對容錯性和高可用的保證。

摘要我們引入了乙個名為group_replication_autorejoin_tries的新系統變數,允許使用者設定 mgr 成員在被驅逐或與組的大多數人失去聯絡後嘗試重新加入組的次數。

預設情況下,此自動重新加入過程處於關閉狀態。它能幫助使用者在面對瞬間網路故障時避免對 mgr 成員進行手動干預。

在oracle中建立一張表在哪可以看到

oracle中有乙個系統檢視 select from user tables可以檢視你所登入的使用者下的所有表和一些表的資訊還有一張全域性的檢視 select from dba tables這個檢視查的是所有使用者下的所有表 在你的建立使用者中看到 也可以檢視user tables等 你可以用pl ...

SQL根據現有表一張表,想一張表,的這張表結構要

看你用的什麼資料庫 sql server select into table new from table old 複製結構和資料 select into table new from table old where 1 2 只複製結構 oracle create table table new a...

我已有了一張工商銀行信用卡了,在另一工商銀行再辦理一張信用卡,額度還會共享嗎

甭管你在哪申請,只要還是工行,那額度肯定共享。不會,和你提供的資料資訊有關係,和他們銀行也有關係 我有一張工商銀行信用卡剛用三個月,還能夠申請工商銀行信用卡嗎,如果申請額度是不是共享 可以申請,而且很容易下卡。不過,額度是共享的,不是需要特定主題的,那就沒有意義。你在申請10張也同乙個額度,全都共享...