標籤:不能 sele insert 必須 set 解釋 run 計算 排序
MySQL-資料操作語言(DML)
1、資料插入(添加資料)
(1)有3種形式
①形式1:
insert into 表名(欄位名1,欄位名2,....) values (值a1,值a2, .....), (值b1,值b2, .....),..... ;
②形式2:
insert into 表名1(欄位名1,欄位名2,....)select 欄位名1,欄位名2,.... from 表名2;
③形式3:
insert into 表名 set 欄位名1=值1,欄位名2=值2, ..... ;
(2)解釋說明:
①形式1和形式2,可以一次插入多條資料;
②不管哪種形式,在“欄位”和“值”之間,都有“一一對應”關係。
③值的形式,通常是這樣:數字直接寫,字串和時間加單引號,但如果是函數值,則不能加引號
④觀念問題:不管那種形式,都要理解為:插入資料的單位是“行”;
⑤有的欄位通常無需插入資料,此時不應該出現該欄位名:auto_increment, timestamp,
(3)其他類似插入資料的語句:
①載入外部“形式整齊”的資料:
load data infile ‘檔案完整名(含路徑)’ into table 表名;
②複製一個表的結構和資料:
create table 表名1 select * from 表名2;
2、刪除資料
1、基本文法形式:
delete from 表名 [where條件] [order排序] [limit限定];
2、解釋說明:
①觀念問題:刪除也是應該以理解為“以行為單位”進行的。
②刪除語句中,where條件通常都要寫上,因為如果不寫,則就刪除了所有資料,應用中極少如此。
③order排序子句和limit限定子句,應用中通常不需要。
③.①order排序子句用於設定刪除資料的先後順序。
③.②limit限定子句用於限定在設定的順序情況下刪除指定的某些行。
3、類似刪除語句truncate:
truncate [table] 表名;用於直接刪除整個表(結構)並重新建立該表。
①刪除整個表(資料和結構都沒有了)
②重新建立該表(全新表)。
③跟delete 語句不帶where條件,有什麼區別?
主要影響的是類似:auto_increment這種類型的欄位值:
truncate結果會重新計算,delete還能繼續增長。
3、修改資料
(1)基本文法:
update 表名 set 欄位名1=值運算式1,欄位名2=值運算式2,....[where條件] [order排序] [limit限定];
(2)文法說明
①觀念問題:仍然要理解為更新是以“行”為單位進行的,雖然可以指定只更新其中的部分欄位。
② where條件子句,在應用中,同樣幾乎都必須有,否則很可能就失去意義,類似delete
③order排序子句通常不需要,用於將要更新的資料指定更新的順序。
④limit限定子句通常不需要,用於將要更新的資料的指定順序去更新部分(局部)資料,比如:前500行。
⑤欄位的值可以是運算式,或直接值,或函數,如果是直接值,同樣遵循insert語句中的值的寫法。
4、一個問題:複製表
(1)複製表方法1:
create table tab2 like tab1; //複製結構了
insert into tab2 select * from tab1; //複製資料
這種方法可以比較完整。
(2)複製表方法2:
create table tab2 select * from tab1; //同時複製結構和資料
這種方法可能會丟一些結構資訊,比如:索引,約束,自增長屬性
MySQL-資料操作語言(DML)