久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

MySQL數(shù)據(jù)庫技術(shù)(06)

 Ralf_Jones 2006-07-19
破釜沉舟 http://www.


文章類別:MySQL  發(fā)表日期:2005-09-23      閱讀次數(shù): 157

 

1.5 與mysql 交互的技巧
    本節(jié)介紹怎樣更有效地且鍵入工作量較小地與mysql 客戶機(jī)程序進(jìn)行交互。介紹怎樣更簡單地與服務(wù)器連接,,以及怎樣不用每次都從頭開始鍵入查詢,。
    1.5.1 簡化連接過程
    在激活mysql 時(shí),有可能需要指定諸如主機(jī)名,、用戶名或口令這樣的連接參數(shù),。運(yùn)行一個(gè)程序需要做很多輸入工作,,這很快就會(huì)讓人厭煩。有幾種方法可最小化所做的鍵入工作,,使連接更為容易,,它們分別為:
    ■ 利用選項(xiàng)文件存儲(chǔ)連接參數(shù)。
    ■ 利用外殼程序的命令歷史重復(fù)命令,。
    ■ 利用外殼程序的別名或腳本定義mysql 命令行快捷鍵,。
    1. 利用選項(xiàng)文件
    自版本3.22 以來,MySQL 允許在一個(gè)選項(xiàng)文件中存儲(chǔ)連接參數(shù),。然后在運(yùn)行mysql 時(shí)就不用重復(fù)鍵入這些參數(shù)了,;僅當(dāng)您曾經(jīng)在命令行上鍵入過它們時(shí)可以使用。這些參數(shù)也可以為其他MySQL 客戶機(jī)所用,,如為mysqlimport 所用,。這也表示在使用這些程序時(shí),選項(xiàng)文件減少了鍵入工作,。為了利用選項(xiàng)文件方法指定連接參數(shù),,可建立一個(gè)名為~ / . m y.cnf (即主目錄中的一個(gè)名為. m y.cnf 的文件)。選項(xiàng)文件是一個(gè)無格式的文本文件,,因此可用任何文本編輯器來創(chuàng)建它,。文件的內(nèi)容所下所示:

    [client] 行標(biāo)記客戶機(jī)選項(xiàng)組的開始;它后跟的所有行都是為MySQL 客戶機(jī)程序獲得選項(xiàng)值準(zhǔn)備的,,這些行一直沿續(xù)到文件的結(jié)尾或另一不同的參數(shù)組的開始,。在連接到服務(wù)器時(shí),用指定的主機(jī)名,、用戶名和口令替換s e r v e r h o s t,、yourname 和y o u r p a s s,。對(duì)于筆者來說,,. m y.cnf 如下所示:

   只有[client] 行是必須的。定義參數(shù)值的行都是可選的,;可以僅指定那些所需要的參數(shù),。例如,如果您的MySQL 用戶名與UNIX 的登錄名相同,,則不需要包括user 行,。在創(chuàng)建了. m y.cnf 文件后,設(shè)置其訪問方式為某個(gè)限定值以保證別人不能讀取它:

    在Windows 下,,選項(xiàng)文件的內(nèi)容是相同的,,但其名稱不同( c : \ m y. c n f),而且不調(diào)用chmod 命令,。因?yàn)檫x項(xiàng)文件在版本3.22 前未加到M y S Q L,,所以更早的版本不能使用它們,。特別是在Windows 下,您不能與共享MySQL 分發(fā)包一起得到的客戶機(jī)使用選項(xiàng)文件,,因?yàn)樗腔贛ySQL 3.21 的,。選項(xiàng)文件在注冊(cè)過的MySQL 的Windows 版本下工作得很好,否則可以從MySQL Web 站點(diǎn)取得更新的支持選項(xiàng)文件的客戶機(jī),。關(guān)于選項(xiàng)文件的詳細(xì)內(nèi)容可參閱附錄E“MySQL 程序參考”,。
    2. 利用外殼程序的命令歷史諸如c s h、tcsh 和bash 這樣的外殼程序會(huì)在一個(gè)歷史列表中記下您的命令,,并允許重復(fù)該列表中的命令,。如果采用的是這樣的外殼程序,其歷史列表可幫助免除完整命令的鍵入,。例如,,如果最近調(diào)用了m y s q l,可按如下命令再次執(zhí)行它:% !my 其中“,!”告訴外殼程序搜索整個(gè)命令歷史找到最近以“ m y”開頭的命令,,并像您打入的一樣發(fā)布它。有的外殼程序還允許利用上箭頭和下箭頭鍵(或許是Ctrl-P 和C t r l - N)在歷史列表中上下移動(dòng),??捎眠@種方法選擇想要的命令,然后按Enter 執(zhí)行它,。tcsh 和bash 有這種功能,,而其他外殼程序也可能有??蓞㈤喯鄳?yīng)的外殼程序以找到更多使用歷史列表的內(nèi)容,。
    3. 利用外殼程序的別名或腳本如果使用的外殼程序提供別名功能,那么可以設(shè)置允許通過鍵入簡短名調(diào)用長命令的命令快捷鍵,。例如,,在csh 或tcsh 中,可利用alias 命令設(shè)置名為samp_db 的別名,,如下所示:

    而bash 中的語法稍有不同:

   可以定義一個(gè)別名使這兩個(gè)命令等價(jià):

    顯然,,第一個(gè)比第二個(gè)更好鍵入。為了使這些別名在每次登錄時(shí)都起作用,,可將在外殼程序設(shè)置文件中放入一個(gè)alias 命令(如,,csh 放入. c s h r c,而bash 放入. b a s h _ p r o f i l e),??旖萱I的其他形式是建立利用適當(dāng)?shù)倪x項(xiàng)執(zhí)行mysql 的外殼程序腳本。在UNIX 中,,等價(jià)于samp_db 別名的腳本文件如下所示:

    如果筆者命名此腳本為samp_db 并使其可執(zhí)行(用chmod +x samp_db),,那么可以鍵入samp_db 運(yùn)行mysql 并連接到筆者的數(shù)據(jù)庫中,。在Windows 下,可用批命令文件來完成相同的工作,。命名文件s a m p _ d b . b a t,,并在其中放入如下的行:

    此批命令文件可通過在DOS 控制臺(tái)提示符下鍵入samp_db 來執(zhí)行,也可以雙擊它的Windows 圖標(biāo)來執(zhí)行,。如果訪問多個(gè)數(shù)據(jù)庫或連接到多個(gè)主機(jī),,則可以定義幾個(gè)別名或腳本,每一個(gè)都用不同的選項(xiàng)調(diào)用m y s q l,。
    1.5.2 以較少的鍵入發(fā)布查詢
    mysql 是一個(gè)與數(shù)據(jù)庫進(jìn)行交互的極為有用的程序,,但是其界面最適合于簡短的、單行的查詢,。當(dāng)然,, mysql 自身并不關(guān)心某個(gè)查詢是否分成多行,但是長的查詢很不好鍵入,。輸入一條查詢也不是很有趣的事,,即使是一條較短的查詢也是如此,除非發(fā)現(xiàn)有錯(cuò)誤才愿意重新鍵入它,。
    有幾種可用來避免不必要的鍵入或重新鍵入的技巧:
    ■ 利用mysql 的輸入行編輯功能,。
    ■ 利用拷貝和粘貼。
    ■ 以批方式運(yùn)行m y s q l,。
    ■ 利用現(xiàn)有數(shù)據(jù)來創(chuàng)建新記錄以避免鍵入I N S E RT 語句,。
    1. 利用mysql 的輸入行編輯器
    mysql 具有內(nèi)建的GNU Readline 庫,允許對(duì)輸入行進(jìn)行編輯,??梢詫?duì)當(dāng)前錄入的行進(jìn)行處理,或調(diào)出以前輸入的行并重新執(zhí)行它們(原樣執(zhí)行或做進(jìn)一步的修改后執(zhí)行),。在錄入一行并發(fā)現(xiàn)錯(cuò)誤時(shí),,這是非常方便的;您可以在按Enter 鍵前,,在行內(nèi)退格并進(jìn)行修正,。如果錄入了一個(gè)有錯(cuò)的查詢,,那么可以調(diào)用該查詢并對(duì)其進(jìn)行編輯以解決問題,,然后再重新提交它。(如果您在一行上鍵入了整個(gè)查詢,,這是最容易的方法,。)表1-4 中列出了一些非常有用的編輯序列,除了此表中給出的以外,,還有許多輸入編輯命令,。利用因特網(wǎng)搜索引擎,,應(yīng)該能夠找到R e a d l i n e手冊(cè)的聯(lián)機(jī)版本。此手冊(cè)也包含在Readline 分發(fā)包中,,可在h t t p : / / w w w.gnu. org/ 的GN U Web 站點(diǎn)得到,。

    下面的例子描述了輸入編輯的一個(gè)簡單的使用。假定用mysql 輸入了下列查詢:

    如果在按Enter 前,,已經(jīng)注意到將“ p r e s i d e n t”錯(cuò)拼成了“ p e r s i d e n t”,則可按左箭頭或Ctrl-B 多次移動(dòng)光標(biāo)到“s”的左邊,。然后按Delete 兩次刪除“ e r”,,鍵入“r e”改正錯(cuò)誤,,并按Enter 發(fā)布此查詢,。如果沒注意到錯(cuò)拼就按了E n t e r,,也不會(huì)有問題。在mysql 顯示了錯(cuò)誤消息后,,按上箭頭或Ctrl-P 調(diào)出該行,然后對(duì)其進(jìn)行編輯,。
    輸入行編輯在mysql 的Windows 版中不起作用,,但是可從MySQL Web 站點(diǎn)取得免費(fèi)的cygwin_32 客戶機(jī)分發(fā)包,。在該分發(fā)包中的mysqlc 程序與mysql 一樣,,但它支持輸入行編輯命令,。
    2. 利用拷貝和粘貼發(fā)布查詢
    如果是在窗口環(huán)境下工作,,可將認(rèn)為有用的查詢文本保存在一個(gè)文件中并利用拷貝和粘貼操作很容易地發(fā)布這些命令,。其工作過程如下:
    1) 在Te l n e t窗口或DOS 控制窗口中激活m y s q l,。
    2) 在一個(gè)文檔窗口打開包含查詢的文件,。(如筆者在Mac OS 下使用B B E d i t,,在U N I X中使用X Window System 下的xterm 窗口中的v i,。)
    3) 為了執(zhí)行存放在文件中的某個(gè)查詢,選擇并拷貝它,。然后切換到Telnet 窗口或DOS 控制臺(tái),,并將該查詢粘貼到m y s q l,。這個(gè)過程寫起來似乎有點(diǎn)令人討厭,但它是一個(gè)快速錄入查詢的很容易的方法,,實(shí)際使用時(shí)不用鍵入查詢。這個(gè)方法也允許在文檔窗口中對(duì)查詢進(jìn)行編輯,,而且它允許拷貝和粘貼現(xiàn)有查詢來構(gòu)造一個(gè)新的查詢,。例如,如果您經(jīng)常從某個(gè)特定的表中選擇行,,但是喜歡查看以不同方式存放的輸出結(jié)果,則可以在文檔窗口中保存一個(gè)不同的ORDER BY 子句的列表,,然后為任意的特定查詢拷貝和粘貼想使用的那個(gè)子句,。也可按其他方向拷貝和粘貼(從Telnet 到查詢文件)。在mysql 中錄入行時(shí),,它們被保存在您的主目錄中的名為.mysql_history 的文件中,。如果您手工錄入了一個(gè)希望保存起來今后使用的查詢,可退出m y s q l,,在某個(gè)編輯器中打開. m y s q l _ h i s t o r y,然后從.mysql_history 拷貝和粘貼此查詢到您的查詢文件,。
    3. 以批方式運(yùn)行mysql不一定必須交互式地運(yùn)行m y s q l。mysql 能夠以非交互式(批)方式從某個(gè)文件中讀取輸入,。這對(duì)于定期運(yùn)行的查詢是很有用的,,因?yàn)槟欢ú幌M看芜\(yùn)行此查詢時(shí)都要重新鍵入它。只要一次性地將其放入一個(gè)文件,,然后讓mysql 在需要時(shí)執(zhí)行該文件的內(nèi)容即可,。假定有一個(gè)查詢查找member 表的interests 列,,以找出那些對(duì)美國歷史的某個(gè)方面感興趣的歷史同盟會(huì)員。如查找對(duì)大蕭條期有興趣的會(huì)員,,可編寫此查詢?nèi)缦拢ㄗ⒁饨Y(jié)尾處有一個(gè)分號(hào),,從而mysql 能夠知道查詢語句在何處結(jié)束):

    為了使用此查詢來找出對(duì)Thomas Jefferson 感興趣的會(huì)員,,可以編輯此查詢文件將depression 更改為Je fferson 并再次運(yùn)行m y s q l。只要不很經(jīng)常使用此查詢,,它工作得很好,。如果經(jīng)常使用,,則需要更好的方法,。使用此查詢更為靈活的一種方法是將其放入一個(gè)外殼程序腳本中,此腳本從腳本命令行取一個(gè)參數(shù)并利用它來更改查詢的文本,。這樣確定查詢的參數(shù),,使得能夠在運(yùn)行腳本時(shí)指定令人感興趣的關(guān)鍵字,。為了了解這如何起作用,,按如下編寫一個(gè)較小的外殼程序腳本i n t e r e s t s . s h:

    其中第二行保證在命令行上有一個(gè)關(guān)鍵字,;它顯示一條簡短的消息,,或者退出,。在< < Q U E RY_INPUT 和最后的Q U E RY_INPUT 之間的所有內(nèi)容成為mysql 的輸入,。在查詢文本中,,外殼程序用來自命令行的關(guān)鍵字替換$ 1。(在外殼程序腳本中,, $ 1,、$ 2 . . .為命令參數(shù),。)這使相應(yīng)的查詢反映了執(zhí)行此腳本時(shí)在命令行上指定的關(guān)鍵字。在能夠運(yùn)行此腳本前,必須使其可執(zhí)行:

    現(xiàn)在不需要在每次運(yùn)行腳本時(shí)對(duì)其進(jìn)行編輯了,。只要在命令行上告訴它需要查找什么就行了,。如下所示:

    4. 利用現(xiàn)有數(shù)據(jù)來創(chuàng)建新記錄
    可以用I N S E RT 語句每次一行地將新記錄追加到表中,,但是在通過手工鍵入I N S E RT 語句建立幾個(gè)新記錄后,多數(shù)人都會(huì)意識(shí)到應(yīng)該有更好的追加記錄的方法,。一種選擇是利用僅含有數(shù)據(jù)值的文件,然后利用LOAD DATA 語句或mysqlimport 實(shí)用程序從該文件中裝入記錄,。通常,,可利用已經(jīng)以某種格式存在的數(shù)據(jù)來建立數(shù)據(jù)文件。這些數(shù)據(jù)信息可能包含在電子表中,,或許在某個(gè)其他數(shù)據(jù)庫中,,應(yīng)該將它們轉(zhuǎn)換到MySQL,。為了介紹起來簡單,,我們假定這些數(shù)據(jù)是在桌面微計(jì)算機(jī)的電子表中。要將電子表數(shù)據(jù)從桌面微計(jì)算機(jī)中轉(zhuǎn)換到您的UNIX 賬號(hào)下的某個(gè)文件中,,可結(jié)合Telnet 利用拷貝和粘貼,。具體工作如下所示:1) 打開UNIX 賬號(hào)的一個(gè)Telnet 連接,。在Mac OS 下,可利用諸如Better Telnet 或N CSA Telnet 這樣的應(yīng)用程序,。在Windows 下,,可使用標(biāo)準(zhǔn)的Telnet 程序,。
    2) 打開電子表,選擇想轉(zhuǎn)換的數(shù)據(jù)塊,,拷貝它。
    3) 在Telnet 窗中,,鍵入下列命令開始獲取數(shù)據(jù)到文件data.txt。

   cat 命令等待輸入,。
   4) 將從電子表拷貝來的數(shù)據(jù)粘貼到Telnet 窗口,。cat 認(rèn)為您正在鍵入信息并忠實(shí)地將它寫入到data.txt 文件,。
   5) 在所有粘貼數(shù)據(jù)已經(jīng)寫入該文件后,,如果光標(biāo)停止在數(shù)據(jù)行的結(jié)尾處而不是停止在新行的開始,,按Enter,。然后,,按Ctrl-D 以指示“文件結(jié)束”,。cat 停止輸入等待并關(guān)閉data.txt文件?,F(xiàn)在已經(jīng)得到了包含有電子表中選擇的數(shù)據(jù)塊的data.txt 文件,,此文件已作好由LOAD DATA mysqlimport 加載到數(shù)據(jù)庫的準(zhǔn)備,。
   拷貝和粘貼是一種將數(shù)據(jù)傳入U(xiǎn)NIX 文件的快速且簡易的方法,,但它最適合較小的數(shù)據(jù)集,。量較大的數(shù)據(jù)可能會(huì)超出系統(tǒng)拷貝緩沖區(qū),。在這樣的情況下,,最好是以無格式文本(制表符分隔)的形式保存電子表,。然后可利用FTP 將相應(yīng)文件從微機(jī)上傳送到UNIX 賬號(hào),。轉(zhuǎn)換文本模式(非二進(jìn)制或影像模式)的文件以便行結(jié)束符轉(zhuǎn)換為UNIX 的行結(jié)束符,。(U N I X利用換行符、Mac OS 利用回車換行符,、Windows 利用回車換行符/換行符對(duì)作為行結(jié)束符,。)可告訴LOAD DATA 或mysqlimport 尋找什么換行符,,但是在UNIX 下,對(duì)含換行符的文件處理要更容易一些,。
   在轉(zhuǎn)換了文件之后,,應(yīng)該檢查一下在結(jié)尾處是否具空白行,。如果有,應(yīng)該將它們刪除,,否則在將該文件裝載到數(shù)據(jù)庫時(shí),,這些空白行將會(huì)轉(zhuǎn)換為空白或畸形的記錄。來自電子表格以無格式文本保存的文件,,或具有能括住包含空格的值的括號(hào),。為了在將該文件裝入數(shù)據(jù)庫時(shí)去掉這些括號(hào),,可利用LOAD DATA 的FIELDS ENCLOSED BY 子句,或利用mysqlimport 的--fields - enclosed - by 選項(xiàng),。更詳細(xì)的信息請(qǐng)參看附錄D 中LOAD DATA 的相應(yīng)項(xiàng),。
   1.6 向何處去
   現(xiàn)在我們已經(jīng)介紹了許多使用MySQL 的知識(shí),。您已經(jīng)知道了怎樣設(shè)置數(shù)據(jù)庫并創(chuàng)建表,。能夠?qū)⒂涗浄湃脒@些表中,,并以各種方式對(duì)其進(jìn)行檢索,更改或刪除。但是要掌握M y S Q L仍然有許多知識(shí)要學(xué),,本章中的教程僅僅給出了一些淺顯的東西。通過考察我們的樣例數(shù)據(jù)庫就會(huì)明白這一點(diǎn),。我們創(chuàng)建了樣例數(shù)據(jù)庫及其表,,并用一些初始的數(shù)據(jù)對(duì)其進(jìn)行了填充。在這個(gè)工作過程中,,我們明白了怎樣編寫查詢,,回答關(guān)于數(shù)據(jù)庫中信息的某些問題,,但是還有許多工作要做,。
     例如,我們沒有方便的交互方式來輸入學(xué)分保存方案的新學(xué)分記錄,,或輸入歷史同盟地址名錄的會(huì)員條目,。還沒有方便的方法來編輯現(xiàn)有記錄,而且我們?nèi)匀徊荒苌捎∷⒒蚵?lián)機(jī)形式的同盟地址名錄,。這些任務(wù)以及一些其他的任務(wù)將在以后的各章中陸續(xù)地進(jìn)行介紹,,特別是在第7章“Perl DBI API”和第8 章“PHP API”中將要進(jìn)行詳細(xì)地介紹,。
     下一步將閱讀本書中哪部分取決于您對(duì)什么內(nèi)容感興趣,。如果希望了解怎樣完成已經(jīng)以
歷史同盟和學(xué)分保存方案開始的工作,,可看第一部分有關(guān)MySQL 程序設(shè)計(jì)的內(nèi)容,。如果打算成為某個(gè)站點(diǎn)的MySQL 管理員,,本書的第三部分將對(duì)管理工作做較多的介紹。但是,,筆者建議通過閱讀第一部分中的其余各章,,首先獲得使用MySQL 的一般背景知識(shí)。
     這些章節(jié)討論了MySQL 怎樣處理數(shù)據(jù),,進(jìn)一步提供有關(guān)語法和查詢語句的用途,,并且說明了怎樣使查詢運(yùn)行得更快,。不管您在什么環(huán)境中使用M y S Q L,不管是運(yùn)行mysql 還是編寫自己的程序,,
還是作為數(shù)據(jù)庫管理員,,用這些內(nèi)容打下一個(gè)良好的基礎(chǔ)將有助于您站在一個(gè)較高的起點(diǎn)上,。


破釜沉舟 http://www.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多