【正文】
+++| name | birth |+++| Puffball | 199903。例如,這里是動(dòng)物生日,按日期排序: mysql SELECT name, birth FROM pet ORDER BY birth。ORDER BY 不能按 text、text 和 image 數(shù)據(jù)類型進(jìn)行排 序。+++++++| name | owner | species | sex | birth | death |+++++++| Claws | Gwen | cat | m | 19940317 | NULL || Buffy | Harold | dog | f | 19890513 | NULL |+++++++ 查詢排序使用 ORDER BY 子句對(duì)查詢返回的結(jié)果按一列或多列排序。+++++++| name | owner | species | sex | birth | death |+++++++| Chirpy | Gwen | bird | f | 19980911 | NULL || Whistler | Gwen | bird | NULL | 19971209 | NULL || Slim | Benny | snake | m | 19960429 | NULL |+++++++AND 和 OR 可以混用。+++++++| name | owner | species | sex | birth | death |+++++++| Chirpy | Gwen | bird | f | 19980911 | NULL || Puffball | Diane | hamster | f | 19990330 | NULL |+++++++你能組合條件,例如,找出雌性的狗: mysql SELECT * FROM pet WHERE species = dog AND sex = f。 你能在任何列上指定條件,不只是 name。+++++++| name | owner | species | sex | birth | death |+++++++| Bowser | Diane | dog | m | 19900831 | 19950729 |+++++++輸出證實(shí)出生年份現(xiàn)在正確記錄為 1990,而不是 1909。amp。請(qǐng)參閱附錄 一,那里給出了所有 MySQL 函數(shù)的清單??墒褂贸A俊⒈砹泻秃瘮?shù)來(lái)完成運(yùn)算。WHERE 子句中的表達(dá)式可使用表 11 中的算術(shù)運(yùn)算符、表 12 的比較運(yùn)算符和表 13 的邏輯運(yùn)算符。為了限制 SELECT 語(yǔ)句檢索出來(lái)的記錄集,可使用 WHERE 子句,它給出選擇行的條件。因此本小節(jié)緊介紹 WHERE 從句的使用, HAVING 從句的使用方法類似。為此你需要使用WHERE 或者 HAVING 從句。所以也可以這樣使用:mysqlselect (2+3*)/。例如,計(jì)算 Browser 生活的天數(shù):mysql SELECT deathbirth FROM pet WHERE name=Bowser。表達(dá)式可以簡(jiǎn)單也可以復(fù)雜。其結(jié)果為:+++| name | birth |+++| Claws | 19940317 |67 / 30| Chirpy | 19980911 || Whistler | 19971209 |+++? 進(jìn)行表達(dá)式計(jì)算前面的多數(shù)查詢通過(guò)從表中檢索值已經(jīng)產(chǎn)生了輸出結(jié)果。? 查詢特定列如果你不想要看到你的表的整個(gè)行,就命名你感興趣的列,用逗號(hào)分開(kāi)。例如,如果你想要驗(yàn)證你對(duì) Bowser 的出生日期所做的改變,像這樣精選 Bowser 的記錄: mysql SELECT * FROM pet WHERE name = Bowser。 普通查詢? SELECT 最簡(jiǎn)單的形式是從一張表中檢索每樣?xùn)|西: mysql SELECT * FROM pet。有的數(shù)據(jù)庫(kù)還需要 FROM 子句。例如,一個(gè) HAVING 子句必須跟在 GROUP BY 子句之后和 ORDER BY 子句之前。本節(jié)介紹Select 語(yǔ)句關(guān)于查詢的最基本功能。這就是 SELECT 語(yǔ)句的用途,即幫助取出數(shù)據(jù)。 總結(jié)為數(shù)據(jù)庫(kù)裝載數(shù)據(jù)是管理員的重要職責(zé)之一,正因?yàn)橹匾?MySQL 提供的方法也是非常繁多。這些序列被解釋為 ASCII 0(一個(gè)零值字節(jié))和 NULL。 對(duì)于輸入,如果 FIELDS ESCAPED BY 字符不是空的,該字符的出現(xiàn)被剝?nèi)ゲ⑶液罄m(xù)字符在字面上作為字段值的一個(gè)部分。而不是一個(gè)零值字節(jié)) 如果 FIELDS ESCAPED BY 字符是空的,沒(méi)有字符被轉(zhuǎn)義。如果 FIELDS ESCAPED BY 字符不是空的,它被用于前綴在輸出上的下列字符: FIELDS ESCAPED BY 字符 FIELDS [OPTIONALLY] ENCLOSED BY 字符 FIELDS TERMINATED BY 和 LINES TERMINATED BY 值的第一個(gè)字符 ASCII 0(實(shí)際上將后續(xù)轉(zhuǎn)義字符寫(xiě)成 ASCII39。例如,如果轉(zhuǎn)義字符為空,上面顯示的輸出顯示如下。對(duì)于這樣的輸出的一個(gè)例子(使用一個(gè)逗號(hào)作為字段分隔符 )顯示在下面: 1,a string,2,a string containing a , ma,3,a string containing a \ quote,4,a string containing a \, quote and ma,如果你指定 OPTIONALLY,ENCLOSED BY 字符僅被用于包圍 CHAR 和 VARCHAR 字段: 1,a string,2,a string containing a , ma,3,a string containing a \ quote,4,a string containing a \, quote and ma,注意,一個(gè)字段值中的 ENCLOSED BY 字符的出現(xiàn)通過(guò)用 ESCAPED BY 字符作為其前綴來(lái)轉(zhuǎn)義。 FIELDS [OPTIONALLY] ENCLOSED BY 控制字段的包圍字符。\r\n39。FIELDS TERMINATED BY 和LINES TERMINATED BY 值可以是超過(guò)一個(gè)字符。) 。任何字段或行處理選項(xiàng)可以指定一個(gè)空字符串(39。 LINES TERMINATED BY 39。 ENCLOSED BY 39。 INTO TABLE tbl_name FIELDS TERMINATED BY 39。如果文件中的行由換行符終止,下面顯示的命令說(shuō)明你將用來(lái)裝載文件的字段和行處理選項(xiàng): mysql LOAD DATA INFILE 39。 換句話說(shuō),缺省值導(dǎo)致讀取輸入時(shí),LOAD DATA INFILE 表現(xiàn)如下: ? 在換行符處尋找行邊界 ? 在定位符處將行分進(jìn)字段 ? 不要期望字段由任何引號(hào)字符封裝 ? 將由“\”開(kāi)頭的定位符、換行符或“\ ”解釋是字段值的部分字面字符 LOAD DATA INFILE 能被用來(lái)讀取從外部來(lái)源獲得的文件。如果你不指定一個(gè) LINES 子句,缺省值與如果你這樣寫(xiě)的相同: LINES TERMINATED BY 39。 ESCAPED BY 39。 ENCLOSED BY 39。 如果你不指定一個(gè) FIELDS 子句,缺省值與如果你這樣寫(xiě)的相同: FIELDS TERMINATED BY 39。mysql LOAD DATA INFILE ./ INTO TABLE 。注意這些規(guī)則意味著一個(gè)像“./”給出的文件是從服務(wù)器的數(shù)據(jù)目錄讀取,而作為“”給出的一個(gè)文件是從當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)目錄下讀取。 ? 如果給出一個(gè)有一個(gè)或多個(gè)前置部件的相對(duì)路徑名,服務(wù)器相對(duì)服務(wù)器的數(shù)據(jù)目錄搜索文件。 如果你使用 LOCAL 關(guān)鍵詞從一個(gè)本地文件裝載數(shù)據(jù),服務(wù)器沒(méi)有辦法在操作的當(dāng)中停止文件的傳輸,因此缺省的行為好像 IGNORE 被指定一樣。如果你指定 IGNORE,跳過(guò)有唯一鍵的現(xiàn)有行的重復(fù)行的輸入。REPLACE 和 IGNORE 關(guān)鍵詞控制對(duì)現(xiàn)有的唯一鍵記錄的重復(fù)的處理。另外,為了對(duì)服務(wù)器上文件使用 LOAD DATA INFILE,在服務(wù)器主機(jī)上你必須有 file 的權(quán)限。(LOCAL 在 或以后版本中可用。如果指定 LOCAL關(guān)鍵詞,從客戶主機(jī)讀文件。39。本節(jié)將介紹 SQL 語(yǔ)言級(jí)的解決方法。幸運(yùn)的是,MySQL 提供了一些方法用于批量錄入數(shù)據(jù),使得向表中添加數(shù)據(jù)變得容易了。 使用 LOAD 語(yǔ)句批量錄入數(shù)據(jù)本章的前面討論如何使用 SQL 向一個(gè)表中插入數(shù)據(jù)。REPLACE 語(yǔ)句也可以褐 SELECT 相配合,所以上兩小節(jié)的內(nèi)容完全適合 REPALCE.。當(dāng)使用子選擇子句時(shí),情況能很容易混淆) 使用 replace 、 replace…select 語(yǔ)句插入REPLACE 功能與 INSERT 完全一樣,除了如果在表中的一個(gè)老記錄具有在一個(gè)唯一索引上的新記錄有相同的值,在新記錄被插入之前,老記錄被刪除。 ? INSERT 語(yǔ)句的目的表不能出現(xiàn)在 SELECT 查詢部分的 FROM 子句,因?yàn)檫@在 ANSI SQL中被禁止讓從你正在插入的表中 SELECT。mysqlinsert into tbl_name1 select col3,col4 from tbl_name2。從其它表中錄入數(shù)據(jù),例如:mysqlinsert into tbl_name1(col1,col2) select col3,col4 from tbl_name2。 使用 INSERT…SELECT 語(yǔ)句插入從其他表選擇的行當(dāng)我們?cè)谏弦还?jié)學(xué)習(xí)創(chuàng)建表時(shí),知道可以使用 select 從其它表來(lái)直接創(chuàng)建表,甚至可以同時(shí)復(fù)制數(shù)據(jù)記錄。例如,你能這樣: mysql INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2)。使用這種形式的 INSERT 語(yǔ)句不能插入多行。例如:mysqlinsert into worker set name=’tom’。在列的列表中未給出名稱的列都將賦予缺省值。例如:mysqlinsert into worker (name) values (‘tom’)。? 可以給出要賦值的那個(gè)列,然后再列出值。Mysqlinsert into worker values(‘tom’,’’),(‘paul’,’’)。如果不能肯定的話,可使用 DESCRIBE tbl_name 來(lái)查看這個(gè)次序。) VALUES 表必須包含表中每列的值,并且按表中列的存放次序給出。 “INTO”一詞自 MySQL 以來(lái)是可選的。INSERT 語(yǔ)句具有幾種形式:? 可指定所有列的值:例如:shell mysql –u root –pmysql use mytest?;蛘撸部梢酝瑫r(shí)指定數(shù)據(jù)庫(kù)和表:mysqlDROP TABLE mytest. guestbook。 例如:mysqlUSE mytest。 用 DROP TABLE 語(yǔ)句刪除數(shù)據(jù)表DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...]DROP TABLE 刪除一個(gè)或多個(gè)數(shù)據(jù)庫(kù)表。? 給表更名alter table tbl_name rename new_tbl 例如,把 pet 表更名為 animalmysqlalter table pet rename animal。另一種方法是:alter table tbl_name change old_col_name col_name type例如:mysql alter table pet change weight weight samllint。61 / 30? 刪除列alter table tbl_name drop col_name 例如,刪除列 weight:mysqlalter table pet drop weight。 用 ALTER TABLE 語(yǔ)句修改表的結(jié)構(gòu)有時(shí)你可能需要改變一下現(xiàn)有表的結(jié)構(gòu),那么 Alter Table 語(yǔ)句將是你的合適選擇。假定表 t1 和 t2 兩者都具有列 c,而您希望創(chuàng)建一個(gè)來(lái)自兩個(gè)表中行的所有組合的表。如果某個(gè)列作為表達(dá)式的結(jié)果計(jì)算,則該列的“名稱”為表達(dá)式的文本。要?jiǎng)?chuàng)建一個(gè)作為自身的空拷貝的表,可以與 CREATE TEMPORARY ... SELECT 一起使用 WHERE 0 子句,例如:但創(chuàng)建空表時(shí)有幾點(diǎn)要注意。為了使用利用原表名的預(yù)先編寫(xiě)的腳本,不需要為引用不同的表而編輯這些腳本;只需在腳本的起始處增加 CREATE TEMPORARY TABLE 語(yǔ)句即可??山Y(jié)合使用 CREATE TEMPORARY TABLE 與 SELECT 來(lái)創(chuàng)建一個(gè)臨時(shí)表作為它自身的拷貝,如:這允許修改 my_tbl 的內(nèi)容而不影響原來(lái)的內(nèi)容。利用原表的空拷貝允許對(duì)特定的列和行分