mysql之如何給大表加字段
mysql給大表加字段
方法1.
直接添加字段(在數(shù)據(jù)量比較小的情況下操作,可能會(huì)造成表死鎖)
ALTER TABLE 表名 ADD 字段名 字段屬性 DEFAULT '有默認(rèn)值或者允許為null' COMMENT '字段解釋' ;
方法適合十幾萬的數(shù)據(jù)量,可以直接進(jìn)行加字段操作,但是,線上的一張表如果數(shù)據(jù)量很大,執(zhí)行加字段操作就會(huì)鎖表,這個(gè)過程可能需要很長時(shí)間甚至導(dǎo)致服務(wù)崩潰(俗稱表鎖),那么這樣操作就有風(fēng)險(xiǎn)。
如果服務(wù)崩潰時(shí),可通過show PROCESSLIST找到對應(yīng)info列(之前執(zhí)行的SQL語句)以及state列為locked的id值,然后kill id對應(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 '編號', ?? ?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)文章
MySQL8.0安裝報(bào)錯(cuò)與密碼重置全流程實(shí)戰(zhàn)指南
在 Linux 服務(wù)器上部署 MySQL,本應(yīng)是一項(xiàng)標(biāo)準(zhǔn)化、可重復(fù)的運(yùn)維操作,但在實(shí)際安裝 MySQL 8.0.45 及以上版本時(shí),很多人都會(huì)遇到一條令人困惑的報(bào)錯(cuò),本文將系統(tǒng)梳理整個(gè)問題鏈條,完整講清每一個(gè)環(huán)節(jié)的底層邏輯與可執(zhí)行解決方案,需要的朋友可以參考下2026-02-02
數(shù)據(jù)從MySQL遷移到Oracle 需要注意什么
將數(shù)據(jù)從MySQL遷移到Oracle,大家需要注意什么?Oracle移植到mysql,又需要注意什么?如何有效解決移植過程的問題,為了數(shù)據(jù)庫的兼容性我們又該注意些什么?感興趣的小伙伴們可以參考一下2016-11-11
MySQL?數(shù)據(jù)庫范式化設(shè)計(jì)理論總結(jié)
這篇文章主要介紹了MySQL?數(shù)據(jù)庫范式設(shè)計(jì)理論總結(jié),數(shù)據(jù)庫的規(guī)劃化范式設(shè)計(jì),在邏輯結(jié)構(gòu)上可以讓結(jié)構(gòu)更加細(xì)粒度,容易理解,下文我們就來了解具體的內(nèi)容介紹吧2022-04-04

