mysql之如何給大表加字段
mysql給大表加字段
方法1.
直接添加字段(在數(shù)據(jù)量比較小的情況下操作,可能會(huì)造成表死鎖)
ALTER TABLE 表名 ADD 字段名 字段屬性 DEFAULT '有默認(rèn)值或者允許為null' COMMENT '字段解釋' ;
方法適合十幾萬的數(shù)據(jù)量,可以直接進(jìn)行加字段操作,但是,線上的一張表如果數(shù)據(jù)量很大,執(zhí)行加字段操作就會(huì)鎖表,這個(gè)過程可能需要很長(zhǎng)時(shí)間甚至導(dǎo)致服務(wù)崩潰(俗稱表鎖),那么這樣操作就有風(fēng)險(xiǎn)。
如果服務(wù)崩潰時(shí),可通過show PROCESSLIST找到對(duì)應(yīng)info列(之前執(zhí)行的SQL語句)以及state列為locked的id值,然后kill id對(duì)應(yīng)的值就可以了
方法2.
創(chuàng)建一張臨時(shí)的新表
3. ① 創(chuàng)建一個(gè)臨時(shí)的新表,首先復(fù)制舊表的結(jié)構(gòu)(包含索引);
create table 臨時(shí)表 like 舊表;
② 給新表加上新增的字段
alter table student_log1 add zyp int(11) null DEFAULT 0
注:新增字段要么有為空,要么有默認(rèn),否則后續(xù)復(fù)制表報(bào)錯(cuò)
③ 復(fù)制舊表數(shù)據(jù)到新表,注意此時(shí)新表是空表,加字段很快;
INSERT INTO student_log1 ( id, NAME, sno, ip, url, operation, excute_time ) SELECT id, NAME, sno, ip, url, operation, excute_time? FROM ?? ?student_log
注:復(fù)制表數(shù)據(jù)最好在業(yè)務(wù)低峰期操作,避免數(shù)據(jù)丟失
④ 刪除舊表(可以先把舊表重命名,不建議立即刪除,方便后續(xù)的數(shù)據(jù)恢復(fù),如果確保復(fù)制表數(shù)據(jù)成功,可以刪除舊表),重命名新表的名字為舊表的名字
alter table student_log1 rename to student_log;
mysql給表和字段添加注釋
在MySQL中,給表和字段添加注釋使用COMMENT關(guān)鍵字。
1、添加表和字段的注釋
創(chuàng)建數(shù)據(jù)表的同時(shí),給表和字段添加注釋。
-- 創(chuàng)建用戶信息表 CREATE TABLE tb_user ( ?? ?id INT AUTO_INCREMENT PRIMARY KEY COMMENT '編號(hào)', ?? ?name VARCHAR(30) COMMENT '姓名' )COMMENT = '用戶信息表';
2、修改表注釋
ALTER TABLE tb_user COMMENT '用戶信息表2';
3、修改字段注釋
修改字段備注,其實(shí)就是修改字段的定義。
ALTER TABLE tb_user MODIFY COLUMN name VARCHAR(30) NOT NULL COMMENT '姓名2';
**注意:**修改時(shí)要把該字段的完整定義寫上,如字段類型、屬性等。
千萬不要因?yàn)橹皇菫榱诵薷囊粋€(gè)注釋,而把該字段定義的其它屬性給覆蓋掉了。
4、查詢字段信息
SHOW FULL COLUMNS FROM tb_user;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
數(shù)據(jù)庫Sql實(shí)現(xiàn)截取時(shí)間段和日期實(shí)例(SQL時(shí)間截取)
在許多情況下你也許只想得到日期和時(shí)間的一部分,而不是完整的日期和時(shí)間,下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫Sql實(shí)現(xiàn)截取時(shí)間段和日期(SQL時(shí)間截取)的相關(guān)資料,需要的朋友可以參考下2023-05-05在MySQL中如何存取List<String>數(shù)據(jù)
這篇文章主要介紹了在MySQL中如何存取List<String>數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07mysql中sum float類型使用小數(shù)點(diǎn)的方法
使用sum示和時(shí)如果是float類型的數(shù)據(jù)就會(huì)出現(xiàn)小數(shù)點(diǎn)了,那么要如何解決這個(gè)問題,下面介紹二種方法2013-11-11MySQL通過login_path登錄數(shù)據(jù)庫的實(shí)現(xiàn)示例
login_path是MySQL5.6開始支持的新特性,本文主要介紹了MySQL通過login_path登錄數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02MySQL數(shù)據(jù)庫優(yōu)化技術(shù)之索引使用技巧總結(jié)
這篇文章主要介紹了MySQL數(shù)據(jù)庫優(yōu)化技術(shù)之索引使用方法,結(jié)合實(shí)例形式總結(jié)分析了MySQL表的優(yōu)化、索引設(shè)置、SQL優(yōu)化等相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2016-07-07MySQL存儲(chǔ)過程相互調(diào)用并獲得錯(cuò)誤碼示例
這篇文章主要介紹了MySQL存儲(chǔ)過程相互調(diào)用并獲得錯(cuò)誤碼,需要的朋友可以參考下2014-03-03mysql如何對(duì)String類型的數(shù)字值排序
這篇文章主要介紹了mysql如何對(duì)String類型的數(shù)字值排序問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08