【正文】
? (字符)串值 ? 串是諸如 “ Madison, Wi s c o n s i n”或 “ patient shows improvement”這樣的值。 +12 和 都是合法的科學(xué)表示法表示的數(shù)。 ? 浮點數(shù)由一個阿拉伯?dāng)?shù)字序列、一個小數(shù)點和另一個阿拉伯?dāng)?shù)字序列組成。以十六進(jìn)制形式表示的整數(shù)由 “ 0 x”后跟一個或多個十六進(jìn)制數(shù)字( ” 0”到 “ 9”及 “ a”到 “ f”)組成。 用 MySQL 處理數(shù)據(jù) ? 數(shù)值值 ? 數(shù)值是諸如 48 或 這樣的值。在創(chuàng)建表時,重要的是要了解怎樣為自己的目的選擇最好的類型,以及在幾種類型都可以用于想要存儲的值時選擇一種類型。 ■ 特殊數(shù)據(jù)類型,以及描述每種列類型的屬性。在錄入一行并發(fā)現(xiàn)錯誤時,這是非常方便的;您可以在按Enter 鍵前,在行內(nèi)退格并進(jìn)行修正。 ■ 以批方式運行 m y s q l。當(dāng)然, mysql 自身并不關(guān)心某個查詢是否分成多行,但是長的查詢很不好鍵入。有的外殼程序還允許利用上箭頭和下箭頭鍵(或許是 CtrlP 和 C t r l N)在歷史列表中上下移動。 與 mysql 交互的技巧 ? 在 Windows 下,選項文件的內(nèi)容是相同的,但其名稱不同( c : \ m y. c n f),而且不調(diào)用 chmod 命令。在連接到服務(wù)器時,用指定的主機(jī)名、用戶名和口令替換 serverhost、 yourname 和yourpass。這也表示在使用這些程序時,選項文件減少了鍵入工作。 ? ■ 利用外殼程序的別名或腳本定義 mysql 命令行快捷鍵。 與 mysql 交互的技巧 ? 在激活 mysql 時,有可能需要指定諸如主機(jī)名、用戶名或口令這樣的連接參數(shù)。 下面的語句將更新 Jerome 的電子郵件和通信地址: Update member set =??, street=?123 elm?, city=?Anytown?, state=?NY?, zip=?01003? where last_name=?york? and first_name=?Jerome?。這類似于SELECT 語句中的 WHERE 子句 Delete from president where state = “OH”。它是可選的,但是如果不選的話,將會刪除所有的記錄。(當(dāng)然,如果愿意的話,可以兩者都顯示。此查詢與前一個查詢的差別在于: ■ student 表被增加到了 FROM 子句中,因為除了 event 表和 score 表外還用到了它。它們是: ? ■ FROM 子句給出了不止一個表名,因為我們要檢索的數(shù)據(jù)來自不止一個表: from event, score ? ■ WHERE 子句說明 event 和 score 表是由每個表中的 event_id 值的匹配連接起來的: where … event,event_id = 從多個表中檢索信息 ? 此查詢中的其他列( d a t e、 s c o r e、 t y p e)可單獨使用而不用表名限定符,因為它們在表中只出現(xiàn)一次,從而不會出現(xiàn)含混。這是因為需要將一個表中的信息與其他表中的信息相連接來得出查詢結(jié)果。 ? 除了 COUNT( ) 外還有許多匯總函數(shù)。 生成匯總 ? 如果不想用 LIMIT 子句來限制查詢輸出,而是利用查找特定的COUNT( ) 值來達(dá)到這個目的,可使用 H AVING 子句。 ? 如果增加、刪除或重新排序輸出列,必須注意檢查 O R D E RBY 子句,并且如果列號改變后還得記住它。例如,如果想得到各州產(chǎn)生的總統(tǒng)人數(shù),并按產(chǎn)生人數(shù)最多的州優(yōu)先排出,可以如下使用ORDER BY 子句: ? Select state,count(*) as count from president group by state order by count desc。 ■ 用單一查詢就可以得出所有結(jié)果,因此可以對結(jié)果進(jìn)行排序。 ? 可以利用單個查詢對一個列中不同的值進(jìn)行計數(shù)。 生成匯總 ? 可以根據(jù)匯總列中單獨的值對計數(shù)值進(jìn)行分解。 ? COUNT(*) 對選中的行進(jìn)行計數(shù)。如果一個查詢無 WHERE 子句, COUNT(*) 將給出表中的行數(shù)。利用 DISTINCT 關(guān)鍵字來刪除結(jié)果中的重復(fù)行。 ? 下列模式匹配只含有四個字符的姓: ? Select last_name, first_name from prisident where last_name like “____”。為了進(jìn)行模式匹配運算,可使用特殊的運算符( LIKE 和 NOT LIKE),并且指定一個包含通配符的串。 ? 使用 D ATE_ADD( ) 或 D ATE_SUB( ) 從一個日期計算另一個日期。為了查找每年的今天出生的總統(tǒng),只要將他們的生日與 C U R R E N T _ D ATE 進(jìn)行比較即可 ? 可從一個日期減去另一個日期。例如,可通過查找月份值為 3 的日期,找出出生在相同月份(三月)的總統(tǒng) : ? Select last_name, first_name,birth from president where month(birth)=3 ? 此查詢也可以按月的名稱寫出 ? Select last_name, first_name,birth from president where monthname(birth)=“March”。 ? ■ 計算日期的差??梢詫θ掌谶M(jìn)行的一些運算如下: ? ■ 按日期排序。 ? 如果列的別名包含空格,需要用雙引號括起來。在利用表達(dá)式來計算列值時,此表達(dá)式被用作列標(biāo)題。表達(dá)式可以簡單也可以復(fù)雜。 ? 自 MySQL 以來,可按照一個公式來排序查詢結(jié)果。為了做到這一點,必須指定兩個值。 ? 查詢結(jié)果可在多個列上進(jìn)行排序,而每個列的升序或降序可以互相獨立。)缺省時,如果選擇了行,服務(wù)器對返回行的次序不作任何保證。 對查詢結(jié)果進(jìn)行排序 ? 有時我們注意到,在一個表裝入初始數(shù)據(jù)后,對其發(fā)布一條 SELECT * FROM tbl_name查詢,檢索出的行與這些行被插入的順序是相同的。 null ? 為了進(jìn)行 NULL 值的搜索,必須采用特殊的語法。 ? SELECT 語句的一般形式為: SELECT 要選擇的東西 FROM 一個或多個表 WHERE 數(shù)據(jù)必須滿足的條件 ? FROM 子句一般都要給出,但是如果不從表中選擇數(shù)據(jù),也可不給出 ? 數(shù)據(jù)庫和表名有可能區(qū)分大小寫的;這有取決服務(wù)器主機(jī)上使用的文件系統(tǒng)。對于如像 與 這樣的文件名, mysqlimport 將會認(rèn)為相應(yīng)的表名為member1 和 member2。正如使用 mysql 一樣,如果您需要指定連接參數(shù),可在命令行上數(shù)據(jù)庫名前指定它們。也有可能需要讀取其他格式的文件,或者指定不同的列次序。如果您的 MySQL 版本低于 3 . 2 2 . 1 5,則 LOAD DATA LOCAL 不起作用,因為那時從客戶機(jī)讀取數(shù)據(jù)的能力是在 LOAD DATA 上的。可以用LOAD DATA 語句或用 mysqlimport 實用程序來裝入記錄。 ? Insert into tbl_name set col_name1=value1,col_name2=value2,… . ? Insert into member set last_name=“Stein”,first_name=“Waldo”。 ? INSERT INTO tbl_name(col_name,col_name2,… .) VALUES(value1,values,… ) ? Sample: insert into member(last_name,first_name) values(“Stein”,”Waldo”)。如果不能肯定的話,可使用 DESCRIBE tbl_name 來查看這個次序。 ? “I N TO”一詞自 MySQL 以來是可選的。 ? 還可以通過從某個文件讀取它們來增加記錄,在這個文件中,記錄既可以是利用 L O A D ? D ATA 語句或 mysqlimport 實用程序裝入的原始數(shù)據(jù)值,也可以是預(yù)先寫成可饋入 mysql 的 ? I N S E RT 語句的形式。它對于了解 MySQL 存儲表行中列的次序也很有用。如果想了解不需要終結(jié)符的語句有哪些,可發(fā)布 HELP 語句。 MySQL簡介 ? 在創(chuàng)建表以及對這些表進(jìn)行各種操作之前,必須先創(chuàng)建 samp_db 數(shù)據(jù)庫。 3) 對表進(jìn)行數(shù)據(jù)插入、檢索、修改或刪除。這里用后綴為 “ . s q l”來表示該文件含有 SQL 語句。 ? 如果在查詢中調(diào)用一個函數(shù),在函數(shù)名和后跟的圓括號中間不允許有空格 ? 如果已經(jīng)開始鍵入一個多行的查詢,而又不想立即執(zhí)行它,可鍵入‘ \ c? 來跳過(放棄)它。這是 UNIX 標(biāo)準(zhǔn)提示符之一;另一個為 “ $”。愿意讀哪個音都可以,不過在您對別人讀的時候,他可能會用他認(rèn)為是 “ 正確 ” 的發(fā)音對您進(jìn)行糾正。關(guān)于發(fā)音, MySQL 的發(fā)音為 “ m y e s s q u e u e e l l”。SQL 是當(dāng)今的標(biāo)準(zhǔn)數(shù)據(jù)庫語言,所有主要的數(shù)據(jù)庫系統(tǒng)都使用它。 管理系統(tǒng)( “ M S”)是允許通過插入、檢索、修改或刪除記錄來使用數(shù)據(jù)的軟件。所謂關(guān)系數(shù)據(jù)庫管理系統(tǒng)的含義如下: 數(shù)據(jù)庫( RDBMS 中的 “ D B”)是存儲信息的倉庫,以一種簡單的、規(guī)則的方式進(jìn)行組織: 數(shù)據(jù)庫中的數(shù)據(jù)集組織為表。 ? 在數(shù)據(jù)庫世界中, MySQL 歸類為關(guān)系數(shù)據(jù)庫管理系統(tǒng)( R D B M S)。 記錄可包含幾段信息;表中每一列對應(yīng)這些信息中的一段。 MySQL簡介 MySQL簡介 ? M y S Q L使用一種稱為 S Q L( Structured Query Language)的語言。它們的發(fā)音都是相同的,但可通過不同的大小寫字符和字體來區(qū)分。我不認(rèn)為哪個發(fā)音更好一些。命令如下: ? % mysql options ? 其中的 “ %”在本書中代表外殼程序提示符。 MySQL簡介 ? 大部分情況下,用大寫字符、小寫字符或大小寫字符混合鍵入查詢沒什么關(guān)系。例如,如果在文件 中存放有查詢,可如下執(zhí)行這些查詢: Mysql ? 可用這種辦法調(diào)用任何所需的文件。 2) 創(chuàng)建數(shù)據(jù)庫中的表。較少使用的操作是創(chuàng)建表的操作,而最不常用的操作是創(chuàng)建數(shù)據(jù)庫。 HELP 是另一個不需要終結(jié)符的語句。例如,下列兩個命令使我們能連接到在本地主機(jī)和 p i t v i p e 上的 samp_db 數(shù)據(jù)庫上: ? DESCRIBE 在您忘了表中的列名、需要知道列的類型、了解列有多寬等的時候很有用??赏ㄟ^發(fā)布 I N S E RT 語句手工將記錄插入某個表中。 INSERT INTO VALUES(“199393”,”Q”,NULL)。(一般,這就是創(chuàng)建表時列的定義次序。這對于希望建立只有幾個列需要初始設(shè)置的記錄是很有用的。 Insert ? 自 MySQL .10 以來,可以 col_name = value 的形式給出列和值。 LOAD DATA ? 將記錄裝到表中的另一種方法是直接從文件讀取數(shù)據(jù)值。 ? 該語句讀取位于客戶機(jī)上當(dāng)前目錄中數(shù)據(jù)文件 m e m b e 的內(nèi)容,并將其發(fā)送到服務(wù)器裝入 member 表。還假定各個值是按列在表中的存放次序給出的。如果您的 MySQL 版本低于 3 . 2 2 . 1 5,這個實用程序不起作用,因為 local 選項需要 L O A D D ATA LOCAL。如果您有多個需要裝入單個表的文件,應(yīng)仔細(xì)地選擇文件名,否則mysqlimport 將不能使用正確的表名。每個子句都可簡單、可復(fù)雜,從而 SELECT 作為一個總的語句也繁簡皆宜。 ? MySQL 允許您一次從多個表中選擇列。 ? Select last_name,first_name from student where id = null。(刪除記錄在表中留下了未使用的 “ 空位 ” , MySQL 在以后插入新記錄時將會試圖對其填補。在對可能包含 NULL 值的列進(jìn)行排序時,如果是升序排序, NULL 值出現(xiàn)在最前面,如果是按降序排序, NULL 值出現(xiàn)在最后。 ? LIMIT 也可以從查詢結(jié)果中取出中間部分。下面的查詢類似于前面那個查詢,但只顯示從第 11 行開始的5 個記錄 : ? Select last_name, first_name,birth from president order by birth limit 10,5。 MySQL 還允許作為一個公式的結(jié)果來計算輸出列的值。 ? 此查詢把名和姓連接起來,中間間隔一個空格,將總統(tǒng)名形成一個單一字符串,而且將出生城市和州連接在一起,中間隔一個逗號,形成出生地。這樣的名稱為列別名。 MySQL 提供了幾種對日期進(jìn)行處理的方法。 ? ■ 提取日期值的組成部分,如年、月或日。 ? 為了測試或檢索日期的成分,可使用諸如 YEAR(