本文目錄一覽:
php程序讀取數據庫
你可以先把數據庫數據讀到一個數組裏面,比如下面的語句:
$sql=’select number from vote’;
$res=mysql_query($sql);
$i=1;
while(list($row[$i])=mysql_fetch_row($res)) $i++;
上面的語句執行之後,$row[1]是第一條數據,$row[2]是第二條數據,……下面的語句輸出網頁即可:
echo END
這裡放網頁的內容,{$row[1]}
直接按照html的語法進行書寫,{$row[2]}
把你各個{$row[3]}數值的位置用PHP數組引用即可。
END;
如何使用mysql的全文索引搜索
你有沒有想過如何使用搜索功能在所有整站中實現!互聯網博客和網站,大多數都採用MySQL數據庫。MySQL提供了一個美妙的方式實施一個小的搜索引擎,在您的網站(全文檢索)。所有您需要做的是擁有的MySQL 4.x及以上。MySQL提供全文檢索功能,我們可以用它來 ??實現搜索功能。
首先,讓我們為我們的例子中設置一個示例表。我們將創建一個名為第一個表。
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
在此表中還可以添加一些示例數據。執行後,插入查詢。
INSERT INTO articles (title,body) VALUES
(‘MySQL Tutorial’,’DBMS stands for DataBase …’),
(‘How To Use MySQL Well’,’After you went through a …’),
(‘Optimizing MySQL’,’In this tutorial we will show …’),
(‘1001 MySQL Tricks’,’1. Never run mysqld as root. 2. …’),
(‘MySQL vs. YourSQL’,’In the following database comparison …’),
(‘MySQL Security’,’When configured properly, MySQL …’);
一旦樣本數據是準備好,我們可以開始我們的全文檢索功能。
自然語言全文搜索
嘗試我們的示例表上執行下面的SELECT查詢。
SELECT * FROM articles
WHERE MATCH (title,body) AGAINST (‘database’);
你就能看到結果如下:
在下面的數據庫比較5 MySQL與YourSQL的…
MySQL教程DBMS 1代表數據庫…
我們在上面的SQL查詢(標題,正文)反對(「數據庫」)的比賽,選擇所有的記錄,列標題和正文進行全文搜索。
您可以修改該查詢,並創建您自己的版本,以自己的數據庫中執行全文搜索。
布爾全文搜索
它可能發生,你要指定某些關鍵字在您的搜索條件。此外,您可能要忽略某些關鍵字。布爾全文搜索可以用來執行這些要求的全文檢索。
檢查下面的SELECT查詢。
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST (‘+MySQL -YourSQL’ IN BOOLEAN MODE);
如果您發現上述選擇查詢,我們增加了布爾MODE反對()。這個查詢將獲取MySQL的關鍵字,但不YourSQL關鍵字的所有記錄。請注意+和-我們以前指定的關鍵字!
在執行此功能,MySQL使用什麼有時也被稱為布爾邏輯作為暗示,其中:+代表與-代表不是[無操作員]暗示或
以下是幾個例子布爾搜索條件。
「蘋果香蕉
查找行至少包含兩個詞之一。
「+蘋果+果汁」
尋找包含兩個單詞的行。
「+蘋果Macintosh
查找行包含「蘋果」,但排名的行,如果它們也包含「麥金塔」。
「+蘋果Macintosh的」
查找行包含「蘋果」這個詞,而不是「麥金塔」。
‘+蘋果Macintosh的「
查找包含單詞「蘋果」的行,但如果該行也包含單詞「麥金塔」,速度比如果行不低。這是「軟」比「+蘋果Macintosh電腦」,為「麥金塔」的存在,導致該行不能在所有返回的搜索。
‘+蘋果+(營業額餡餅)「
行包含「蘋果」和「營業額」,或「蘋果」和「餡餅」(任何順序)的話,但排名「蘋果的營業額」比「蘋果餡餅「。
限制
支持全文檢索的MyISAM表只。MySQL 4.1中,使用多個字符設置一個單一的表內的支持。然而,在一個FULLTEXT索引的所有列,必須使用相同的字符集和校對規則。MATCH()列列表必須匹配完全在一些列清單表的FULLTEXT索引定義,除非這場比賽()是在布爾模式。布爾模式搜索,可以做非索引列,雖然他們很可能是緩慢的。
如何用MySQL命令對數據庫進行導出/導入/技巧
info:
1.txt
zhangsan wuhan
lishi wuhan
把1.txt文件插入到mysql數據庫中
1.mysql -u root -p 數據庫名 /文件路徑(在bin下就直接加文件名)
2.mysqlimport的語法介紹:
mysqlimport位於mysql/bin目錄中,是mysql的一個載入(或者說導入)數據的一個非常有效的工具。這是一個命令行工具。有兩個參數以及大量的選項可供選擇。這個工具把一個文本文件(text file)導入到你指定的數據庫和表中。比方說我們要從文件Customers.txt中把數據導入到數據庫Meet_A_Geek中的表 Custermers中:
mysqlimport Meet_A_Geek Customers.txt
注意:這裡Customers.txt是我們要導入數據的文本文件,而Meet_A_Geek是我們要操作的數據庫,數據庫中的表名是Customers,這裡文本文件的數據格式必須與Customers表中的記錄格式一致,否則mysqlimport命令將會出錯。
其中表的名字是導入文件的第一個句號(.)前面文件字符串,另外一個例子:
mysqlimport Meet_A_Geek Cus.to.mers.txt
那麼我們將把文件中的內容導入到數據庫Meet_A_Geek 中的Cus表中。上面的例子中,都只用到兩個參數,並沒有用到更多的選項,下面介紹mysqlimport的選項:
選項 功能
-d or –delete 新數據導入數據表中之前刪除數據數據表中的所有信息
-f or –force 不管是否遇到錯誤,mysqlimport將強制繼續插入數據
-i or –ignore mysqlimport跳過或者忽略那些有相同唯一關鍵字的行, 導入文件中的數據將被忽略。
-l or -lock-tables 數據被插入之前鎖住表,這樣就防止了,你在更新數據庫時,用戶的查詢和更新受到影響。
-r or -replace 這個選項與-i選項的作用相反;此選項將替代表中有相同唯一關鍵字的記錄。
–fields-enclosed- by= char 指定文本文件中數據的記錄時以什麼括起的, 很多情況下數據以雙引號括起。 默認的情況下數據是沒有被字符括起的。
–fields-terminated- by=char 指定各個數據的值之間的分隔符,在句號分隔的文件中,分隔符是句號。您可以用此選項指定數據之間的分隔符。默認的分隔符是跳格符(Tab)
–lines-terminated- by=str 此選項指定文本文件中行與行之間數據的分隔字符串或者字符。 默認的情況下mysqlimport以newline為行分隔符。您可以選擇用一個字符串來替代一個單個的字符:一個新行或者一個回車。
mysqlimport命令常用的選項還有-v 顯示版本(version), -p 提示輸入密碼(password)等。
例子:導入一個以逗號為分隔符的文件文件中行的記錄格式是這樣的:
“1”, “ORD89876”, “1 Dozen Roses”, “19991226”
我們的任務是要把這個文件裏面的數據導入到數據庫Meet_A_Geek中的表格Orders中,我們使用這個命令:
bin/mysqlimport –prl –fields-enclosed-by=” –fields-terminated-by=, Meet_A_Geek Orders.txt
3.mysql數據庫常用導出導入命令的幾個用例
================================
幾個常用用例:
1.導出整個數據庫
mysqldump -u 用戶名 -p 數據庫名 導出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc wcnc.sql
2.導出一個表
mysqldump -u 用戶名 -p 數據庫名 表名 導出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users wcnc_users.sql
3.導出一個數據庫結構
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc d:\wcnc_db.sql
-d 沒有數據 –add-drop-table 在每個create語句之前增加一個drop table
4.導入數據庫
常用source 命令
進入mysql數據庫控制台,
如mysql -u root -p
mysqluse 數據庫
然後使用source命令,後面參數為腳本文件(如這裡用到的.sql)
mysqlsource d:\wcnc_db.sql
4.可參看 MySQL數據的導出和導入工具:mysqldump
====================================
批處理是一種非交互式運行mysql程序的方法,如同您在mysql中使用的命令一樣,你仍然將使用這些命令。為了實現批處理,您重定向一個文件到 mysql程序中,首先我們需要一個文本文件,這個文本文件包含有與我們在mysql中輸入的命令相同的文本。比如我們要插入一些數據,使用包含下面文本的文件(文件名為New_Data.sql,當然我們也可以取名為New_Data.txt及任何其他的合法名字,並不一定要以後綴sql結尾):
USE Meet_A_Geek;
INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, “Block”);
INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, “Newton”);
INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, “Simmons”);
注意上面的這些句子的語法都必須是正確的,並且每個句子以分號結束。上面的USE命令選擇數據庫,INSERT命令插入數據。
下面我們要把上面的文件導入到數據庫中,導入之前要確認數據庫已經在運行,即是mysqld進程(或者說服務,Windows NT下面稱為」服務「,unix下面為」進程「)已經在運行。然後運行下面的命令:
bin/mysql –p /home/mark/New_Data.sql
接着按提示輸入密碼,如果上面的文件中的語句沒有錯誤,那麼這些數據就被導入到了數據庫中。
命令行中使用LOAD DATA INFILE 從文件中導入數據到數據庫:
現在您可能會問自己,”究竟為什麼我要輸入所有的這些SQL語句到文件中,然後通過程序運行它們呢?」這樣看起來好像需要大量的工作。很好,你這樣想很可能就對了。但是假如你有從所有這些命令中產生的log記錄呢?現在這樣就很棒,嗯,大多數數據庫都會自動產生數據庫中的事件記錄的log。而大部分log 都包含有用過的原始的SQL命令。因此,如果您不能從您現在的數據庫中導出數據到新的mysql數據庫中使用,那麼您可以使用log和mysql的批處理特性,來快速且方便地導入您地數據。當然,這樣就省去了打字的麻煩。
LOAD DATA INFILE
這是我們要介紹的最後一個導入數據到MySQL數據庫中的方法。這個命令與mysqlimport非常相似,但這個方法可以在mysql命令行中使用。也就是說您可以在所有使用API的程序中使用這個命令。使用這種方法,您就可以在應用程序中導入您想要導入的數據。
使用這個命令之前,mysqld進程(服務)必須已經在運行。啟動mysql命令行:
bin/mysql –p
按提示輸入密碼,成功進入mysql命令行之後,輸入下面的命令:
USE Meet_A_Geek;
LOAD DATA INFILE “/home/mark/data.sql” INTO TABLE Orders;
簡單的講,這樣將會把文件data.sql中的內容導入到表Orders中,如mysqlimport工具一樣,這個命令也有一些可以選擇的參數。比如您需要把自己的電腦上的數據導入到遠程的數據庫服務器中,您可以使用下面的命令:
LOAD DATA LOCAL INFILE “C:\MyDocs\SQL.txt” INTO TABLE Orders;
上面的LOCAL參數表示文件是本地的文件,服務器是您所登陸的服務器。這樣就省去了使用ftp來上傳文件到服務器,MySQL替你完成了.
您也可以設置插入語句的優先級,如果您要把它標記為低優先級(LOW_PRIORITY),那麼MySQL將會等到沒有其他人讀這個表的時候,才把插入數據。可以使用如下的命令:
LOAD DATA LOW_PRIORITY INFILE “/home/mark/data.sql” INTO TABLE Orders;
您也可以指定是否在插入數據的時候,取代或者忽略文件與數據表中重複的鍵值。替代重複的鍵值的語法:
LOAD DATA LOW_PRIORITY INFILE “/home/mark/data.sql” REPLACE INTO TABLE Orders;
上面的句子看起來有點笨拙,但卻把關鍵字放在了讓您的剖析器可以理解的地方。
下面的一對選項描述了文件的記錄格式,這些選項也是在mysqlimport工具中可以用的。他們在這裡看起來有點不同。首先,要用到FIELDS關鍵字,如果用到這個關鍵字,MySQL剖析器希望看到至少有下面的一個選項:
TERMINATED BY character
ENCLOSED BY character
ESCAPED BY character
這些關鍵字與它們的參數跟mysqlimport中的用法是一樣的. The
TERMINATED BY 描述字段的分隔符,默認情況下是tab字符(\t)
ENCLOSED BY描述的是字段的括起字符。比方以引號括起每一個字段。
ESCAPED BY 描述的轉義字符。默認的是反些杠(backslash:\ ).
下面仍然使用前面的mysqlimport命令的例子,用LOAD DATA INFILE語句把同樣的文件導入到數據庫中:
LOAD DATA INFILE “/home/mark/Orders.txt” REPLACE INTO TABLE Orders FIELDS TERMINATED BY ‘,’
ENCLOSED BY ‘”‘;
LOAD DATA INFILE語句中有一個mysqlimport工具中沒有特點:LOAD DATA INFILE 可以按指定的列把文件導入到數據庫中。
當我們要把數據的一部分內容導入的時候,這個特點就很重要。比方說,我們要從Access數據庫升級到MySQL數據庫的時候,需要加入一些欄目(列/字段 /field)到MySQL數據庫中,以適應一些額外的需要。這個時候,我們的Access數據庫中的數據仍然是可用的,但是因為這些數據的欄目 (field)與MySQL中的不再匹配,因此而無法再使用mysqlimport工具。儘管如此,我們仍然可以使用LOAD DATA INFILE,下面的例子顯示了如何向指定的欄目(field)中導入數據:
LOAD DATA INFILE “/home/Order.txt” INTO TABLE Orders(Order_Number, Order_Date, Customer_ID);
如您所見,我們可以指定需要的欄目(fields)。這些指定的字段依然是以括號括起,由逗號分隔的,如果您遺漏了其中任何一個,MySQL將會提醒您^_^ 。
原創文章,作者:PU443,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/130571.html