4.4.4修改字段排列位置
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比沁源網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式沁源網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋沁源地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
語句格式:ALTER TABLE 表名 MODIFY 字段名?數(shù)據(jù)類型FIRST|AFTER 字段名2;
此語句從格式上看比上面的修改字段數(shù)據(jù)類型語句多了一個(gè)參數(shù),即在上面的修改字段數(shù)據(jù)類型語句的最后增加了一個(gè)字段位置參數(shù),這個(gè)字段位置參數(shù)可以選擇“FIRST”或“AFTER 字段名2”中的一個(gè)。當(dāng)選擇“FIRST”參數(shù)時(shí)表示將指定字段調(diào)至第一個(gè)字段;當(dāng)選擇“AFTER 字段名2”時(shí)表示將指定字段調(diào)至“字段名2”所指字段的后面。
下面截圖中的“ALTER TABLE”語句將t_dept表中l(wèi)oc字段的位置由原來第三的位置調(diào)至了第一。
4.4
MySQL數(shù)據(jù)表的修改
在MySQL中,允許對創(chuàng)建好的數(shù)據(jù)表進(jìn)行修改,修改時(shí)可以有以下幾種形式:修改表名、修改字段名、修改字段類型、修改字段排列位置、添加字段、刪除字段、添加字段約束、刪除約束等,它們一般都是使用“Alter table表名”命令,但后跟的具體參數(shù)不同,下面分別介紹其語句格式。
4.4.1修改表名
語句格式一:Alter table表名RENAME [TO] 新表名;
語句格式二:RENAME TABLE 表名 TO 新表名;
在上面語句格式中,“表名”為要更名的表,“新表名”為要更改成的表名,格式一中參數(shù)“TO”可以省略。
下面截圖中的“ALTER TABLE”語句將dept更名為t_dept。
一、修改表
二、復(fù)制表
三、表字段的數(shù)據(jù)類型
存儲引擎決定了表的類型,而表內(nèi)存放的數(shù)據(jù)也要有不同的類型,每種數(shù)據(jù)類型都有自己的寬度,但寬度是可選的。
mysql常用數(shù)據(jù)類型有:
數(shù)值類型
1、整數(shù)類型
TINYINT SMALLINT MEDIUMINT INT BIGINT
作用:存儲年齡,等級,id,各種號碼等
注意:為該類型指定寬度時(shí),僅僅只是指定查詢結(jié)果的顯示寬度,與存儲范圍無關(guān),存儲范圍如下
其實(shí)我們完全沒必要為整數(shù)類型指定顯示寬度,使用默認(rèn)的就可以了
默認(rèn)的顯示寬度,都是在最大值的基礎(chǔ)上加1
2、浮點(diǎn)型
定點(diǎn)數(shù)類型 DEC等同于DECIMAL
浮點(diǎn)類型:FLOAT DOUBLE
作用:存儲薪資、身高、體重、體質(zhì)參數(shù)等
3、日期類型
DATE TIME DATETIME TIMESTAMP YEAR
作用:存儲用戶注冊時(shí)間,文章發(fā)布時(shí)間,員工入職時(shí)間,出生時(shí)間,過期時(shí)間等
datatime與timestamp的區(qū)別
4、字符串類型
總結(jié):
單從數(shù)據(jù)類型的實(shí)現(xiàn)機(jī)制去考慮,char數(shù)據(jù)類型的處理速度更快,有時(shí)甚至可以超出varchar處理速度的50%。
但對于InnoDB數(shù)據(jù)表,內(nèi)部的行存儲格式?jīng)]有區(qū)分固定長度和可變長度列(所有數(shù)據(jù)行都使用指向數(shù)據(jù)列值的頭指針),因此在本質(zhì)上,使用固定長度的CHAR列不一定比使用可變長度VARCHAR列性能要好。因而,主要的性能因素是數(shù)據(jù)行使用的存儲總量。由于CHAR平均占用的空間多于VARCHAR,因此使用VARCHAR來最小化需要處理的數(shù)據(jù)行的存儲總量和磁盤I/O是比較好的。
5、枚舉類型和集合類型
字段的值只能在給定范圍中選擇,如單選框,多選框
enum 單選 只能在給定的范圍內(nèi)選一個(gè)值,如性別 sex 男male/女female
set 多選 在給定的范圍內(nèi)可以選擇一個(gè)或一個(gè)以上的值(愛好1,愛好2,愛好3...)
1. 修改表的名字
alter table table_name rename table_new_name;
其中,table_name是舊表名,table_new_name是新表名。
2.修改字段的數(shù)據(jù)類型
語法: alter table 表名 modify 字段名 數(shù)據(jù)類型
3.修改字段名
語法: alter table 表名 change 舊字段名 新字段名 新數(shù)據(jù)類型
4.4.3修改字段類型
語句格式:ALTER TABLE 表名 MODIFY 字段名?數(shù)據(jù)類型;
在上面語句格式中,“表名”指定要修改的是哪個(gè)表,“MODIFY”表示要修改表中字段數(shù)據(jù)類型,“字段名”指定要修改表中哪個(gè)字段(的數(shù)據(jù)類型),“數(shù)據(jù)類型”指定表中字段要修改成的新數(shù)據(jù)類型。
下面截圖中的“ALTER TABLE”語句將t_dept表中deptno字段數(shù)據(jù)類型由原來的 int(10)修改為varchar(20)。
本期我們用 MySQL 提供的 DBUG 工具來研究 MySQL 的 SQL 處理流程。
起手先造個(gè)實(shí)例
這里得稍微改一下實(shí)例的啟動文件 start,將 CUSTOM_MYSQLD 改為 mysqld-debug:
重啟一下實(shí)例,加上 debug 參數(shù):
我們來做一兩個(gè)實(shí)驗(yàn),說明 DBUG 包的作用:
先設(shè)置一個(gè)簡單的調(diào)試規(guī)則,我們設(shè)置了兩個(gè)調(diào)試選項(xiàng):
d:開啟各個(gè)調(diào)試點(diǎn)的輸出
O,/tmp/mysqld.trace:將調(diào)試結(jié)果輸出到指定文件
請點(diǎn)擊輸入圖片描述
然后我們創(chuàng)建了一張表,來看一下調(diào)試的輸出結(jié)果:
請點(diǎn)擊輸入圖片描述
可以看到 create table 的過程中,MySQL 的一些細(xì)節(jié)操作,比如分配內(nèi)存 alloc_root 等
這樣看還不夠直觀,我們增加一些信息:
請點(diǎn)擊輸入圖片描述
來看看效果:
請點(diǎn)擊輸入圖片描述
可以看到輸出變成了調(diào)用樹的形式,現(xiàn)在就可以分辨出 alloc_root 分配的內(nèi)存,是為了解析 SQL 時(shí)用的(mysql_parse)
我們再增加一些有用的信息:
請點(diǎn)擊輸入圖片描述
可以看到結(jié)果中增加了文件名和行號:
請點(diǎn)擊輸入圖片描述
現(xiàn)在我們可以在輸出中找一下統(tǒng)計(jì)表相關(guān)的信息:
請點(diǎn)擊輸入圖片描述
可以看到 MySQL 在這里非常機(jī)智,直接執(zhí)行了一個(gè)內(nèi)置的存儲過程來更新統(tǒng)計(jì)表。
沿著 que_eval_sql,可以找到其他類似的統(tǒng)計(jì)表,比如下面這些:
請點(diǎn)擊輸入圖片描述
請點(diǎn)擊輸入圖片描述
本次實(shí)驗(yàn)中,我們借助了 MySQL 的 DBUG 包,來讓 MySQL 將處理過程暴露出來。MySQL 中類似的技術(shù)還有不少,比如 performance_schema,OPTIMIZER_TRACE 等等。
這些技術(shù)將 MySQL 的不同方向的信息暴露出來,方便大家理解其中機(jī)制。