五、ALTER語句

一、基本語句

ALTER TABLE table_name

ADD COLUMN column_name VARCHAR(30)?

AFTER column_name1;

① 對于新增加行的順序,可以用FIRST、SECOND、TIRED、LAST和AFTER某列、BEFORE某列等語句來確定;


二、用ALTER語句修改表

CHANGE 可以改變列的名稱和數(shù)據(jù)類型

MODIFY 改變列的數(shù)據(jù)類型和位置(位置)

ADD 新增列,可自選類型

DROP 刪除某列?

1、 用 'RENAME TO' 更改表名

ALTER TABLE table_name

RENAME TO ?Xintable_name


2、 用 'CHANGE COLUMN' 改變原列的名稱和和數(shù)據(jù)類型

ALTER TABLE Xintable_name

CHANGE COLUMN column_name Xincolumn_name INT NOT NULL ANTO_INCREMENT

CHANGE COLUMN column_name1 Xincolumn_name1 CHAR(10),

CHANGE COLUMN column_name2 Xincolumn_name2 VARCHAR(100),

ADD PRIMARY KEY (Xincolumn_name);

① 可以用一條ALTER語句更改多個(gè)列的名稱和數(shù)據(jù)類型;

② 更改的數(shù)據(jù)類型和原數(shù)據(jù)類型不兼容,命令不會執(zhí)行,如果兼容,則可能發(fā)生更慘的事,例如數(shù)據(jù)被截?cái)啵簭腣ARCHAR(10)改為CHAR(1),數(shù)據(jù)' banana ' 將被改成' b ',同理,數(shù)字也可能出現(xiàn)此情景;因此更改數(shù)據(jù)類型前需用DESC TABLE 觀察每列數(shù)據(jù)類型。


3、'MODIFY' 修改數(shù)據(jù)類型

ALTER TABLE Xintable_name

MODIFY COLUMN Xincolumn_name1 CHAR(20);

把上一節(jié)定義的Xincolumn_name1 CHAR(10)改為Xincolumn_name1 CHAR(20)

注意:在列中已有數(shù)據(jù)的情況下,最好不要更改列的位置

原因:位置更改的原理是 ?復(fù)制列的內(nèi)容到臨時(shí)表中——刪除原列——用ALTER創(chuàng)建和原列同名的空列放在指定位置——最后把臨時(shí)表中的內(nèi)容復(fù)制到空列里

這背后的操作比較復(fù)雜,容易出現(xiàn)問題。


4、'ADD' 增加列

ALTER TABLE Xintable_name

ADD COLUMN Xincolumn_name3 CHAR(4),

ADD COLUMN Xincolumn_name4 INT(18),

ADD COLUMN Xincolumn_name5 DEC(6,2);


5、' DROP '=刪除列

ALTER TABLE Xintable_name

DROP COLUMN Xincolumn_name3;

使用DROP COLUMN后,原本存在該列中的所有數(shù)據(jù)都會被刪除

① 移除主鍵

ALTER TABLE Xintable_name

DROP PRIMARY KEY;

② 刪除 'ANTO_INCREMENT'

ALTER TABLE Xintable_name

CHANGE? MY_ID MY_ID INT NOT NULL;

③ 更換 'ANTO_INCREMENT' 的列

ALTER TABLE Xintable_name

CHANGE? MY_ID MY_ID1 INT NOT NULL ANTO_INCREMENT;

注意:每個(gè)表中只有一列能有ANTO_INCREMENT,該列數(shù)據(jù)類型必須為整數(shù)型而且不能有NULL


三、在SQL語句中使用字符串(string)函數(shù)

1、 LFET函數(shù)RIGHT函數(shù)

SELECT LEFT(column_name,4) FROM table_name

SELECT RIGHT(column_name1,4) FROM table_name

函數(shù)里的數(shù)據(jù)位置使用的是列名


2、 SUBSTRING_INDEX

這個(gè)函數(shù)會找出指定字符或字符串前的所有內(nèi)容

SUBSTRING_INDEX(column_name,',',1)

第一參數(shù)是列名

第二參數(shù)是要查到的字符或字符串

第三參數(shù)是指查找第幾個(gè)第二參數(shù),‘1’表示找第一個(gè)逗號,‘2’表示找第二個(gè)


其他一些字符串函數(shù)

SUBSTRING(my_string,start_position,length)

第一參數(shù) 文本是什么

第二參數(shù) 起始位置

第三參數(shù) 抓取的文本長度

SELECT SUBSTRING('liuyu',4,2)

UPEER(my_string)和LOWER(my_string) 把字符串改大小寫

UPEER('liuyu')

REVESER(my_string)反轉(zhuǎn)字符串里的字符排序

LTDIM(my_string)RTDIM(my_string) 清楚左側(cè)多余的空格和右側(cè)多余的空格

SELECT LTDIM(' ? ?liuyu'); ??返回的數(shù)據(jù)會把空格去掉

重要:字符串函數(shù)不會改變存儲在表中的內(nèi)容,他只是把字符串修改后的模樣當(dāng)做查詢結(jié)果返回


3、SUBSTR

UPDATE table_name?

SET column_name=SUBSTR(column_name1,length)

此函數(shù)返回原始字符串(第一參數(shù))的一部分:

第一參數(shù)即原始字符串;

第二參數(shù)是一個(gè)數(shù)值,表示從左起切除多少個(gè)字符;

即根據(jù)第二參數(shù)的數(shù)字,從左起切除X個(gè)字符,并返回剩余的字符串。


4、用字符串函數(shù)UPDATE數(shù)據(jù)

UPDATE table_name

SET column_name2=RIGHT(column_name1,2)

會更改列名是column_name1里的所有數(shù)據(jù)并賦值到column_name2里

字符串函數(shù)可以和SELECT DELETE UPDATE使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SQL SELECT 語句 一、查詢SQL SELECT 語法 (1)SELECT 列名稱 FROM 表名稱 (2...
    有錢且幸福閱讀 5,992評論 0 33
  • 什么是數(shù)據(jù)庫? 數(shù)據(jù)庫是存儲數(shù)據(jù)的集合的單獨(dú)的應(yīng)用程序。每個(gè)數(shù)據(jù)庫具有一個(gè)或多個(gè)不同的API,用于創(chuàng)建,訪問,管理...
    chen_000閱讀 4,124評論 0 19
  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語閱讀 4,021評論 0 7
  • 兩個(gè)不同類中出現(xiàn)了同名函數(shù),一般c語言函數(shù)重名會出現(xiàn)這個(gè)錯(cuò)誤。
    知本集閱讀 289評論 0 0
  • 營銷理念意味著一個(gè)機(jī)構(gòu)傾盡全力來滿足它的顧客-目的是為了利潤。 營銷理念是一個(gè)非常簡單而又極其重要的想法。 在營銷...
    Msf閱讀 538評論 0 0

友情鏈接更多精彩內(nèi)容