分類: MySQL
資料庫存取筆數限制的語法
發表於 2008-04-21 11:15:53
參考 How can I limit the number of rows in Oracle 這頁的說法,各種資料庫的筆數限制語法如下:
// mysql select col from tbl limit 20; // Oracle select col from tbl where rownum<=20; // Microsoft SQL select top 20 col from tbl;
亂馬 1/2
發表於 2005-11-25 12:06:07
最近研究 MySQL 5 覺得有信心可以把網站的資料庫改版,於是決定今天上午來進行資料庫升級的動作。
遠端登入網站電腦後,很謹慎地先擬好升級流程,還寫成程序文件供自己參考,以防止有遺漏任何步驟。接著,改寫 httpd.conf 把 url_rewrite 的網頁對應全部改到服務暫停宣告網頁上,重啟 Apache,利用 MySQL Administrator 備份資料庫,卸除舊版 MySQL 4.0.26,安裝 MySQL 5.0.14,還原資料庫,用遠端直接網頁連線測試結果。哇~一片問號亂碼。 用 phpMyAdmin 檢視資料庫內容,正常啊沒問題。先卸除 MySQL 5,安裝 MySQL 4.1,再一次,哇~一片問號亂碼依舊。抓抓腦袋瓜,將 MySQL 4.1 和 MySQL 5 的 Service Name 分別設定後,再下載並安裝 MySQL 4.0.26,測試結果一切正常。
媽的我這個蠢人,當初就是因為問號亂碼的緣故,所以才沒有升級 MySQL 4.1 ,怎麼會忘記了這件事情。搞了半晌,結果還是回到 4.0.26。
不死心,昨天有把資料庫抓回到公司電腦上測試 MySQL 5,再以網站程式開啟來看,果然也是亂碼一片。哎~看來有得 debug 了。
這裡宣告:資料庫升級計畫,失敗。
-----
找到問題的解決方案了,原來是要在資料庫連結後加入以下三行:
mb_internal_encoding('utf-8');
$mysql->query('SET CHARACTER SET utf8;');
$mysql->query('SET NAMES utf8;');
這裡的 $mysql 是我的資料庫連結物件,經過測試,應該可以正確顯示中文資料。好吧,等晚上回家再來升級資料庫一次。
遠端登入網站電腦後,很謹慎地先擬好升級流程,還寫成程序文件供自己參考,以防止有遺漏任何步驟。接著,改寫 httpd.conf 把 url_rewrite 的網頁對應全部改到服務暫停宣告網頁上,重啟 Apache,利用 MySQL Administrator 備份資料庫,卸除舊版 MySQL 4.0.26,安裝 MySQL 5.0.14,還原資料庫,用遠端直接網頁連線測試結果。哇~一片問號亂碼。 用 phpMyAdmin 檢視資料庫內容,正常啊沒問題。先卸除 MySQL 5,安裝 MySQL 4.1,再一次,哇~一片問號亂碼依舊。抓抓腦袋瓜,將 MySQL 4.1 和 MySQL 5 的 Service Name 分別設定後,再下載並安裝 MySQL 4.0.26,測試結果一切正常。
媽的我這個蠢人,當初就是因為問號亂碼的緣故,所以才沒有升級 MySQL 4.1 ,怎麼會忘記了這件事情。搞了半晌,結果還是回到 4.0.26。
不死心,昨天有把資料庫抓回到公司電腦上測試 MySQL 5,再以網站程式開啟來看,果然也是亂碼一片。哎~看來有得 debug 了。
這裡宣告:資料庫升級計畫,失敗。
-----
找到問題的解決方案了,原來是要在資料庫連結後加入以下三行:
mb_internal_encoding('utf-8');
$mysql->query('SET CHARACTER SET utf8;');
$mysql->query('SET NAMES utf8;');
這裡的 $mysql 是我的資料庫連結物件,經過測試,應該可以正確顯示中文資料。好吧,等晚上回家再來升級資料庫一次。
MySQL 5 Released
發表於 2005-11-22 10:58:03
從大概五年前第一次接觸 Linux + Apache + PHP + MySQL 開始,就一直在 web application 的領域中打轉。想來,我也算是這些 Open Source project 的最大受惠者和擁護者之一。
MySQL 向來秉持免費資料庫的開源(Open Source)精神,雖然近年為了生存與營運,要求商業使用須付授權費用,但對於個人與非商業用途始終提供絕佳的版本更新。唯一為人詬病者,就是 MySQL 實在很簡單,除了基本 SQL 查詢語言與 Authentication 之外,大部分商業資料庫的功能 MySQL 幾乎都沒有。尤其大型系統非常倚賴的 Transaction, Stored Procedure, Trigger, View 等等,在 MySQL 這個提倡簡易化以增進效能的資料庫中完全闕如。
在眾人頻頻提出請求之後,MySQL 終於開始研究如何納入這些功能,以符合商業系統的所需。從 MySQL 4.x 版本開始提供了 Transaction,但 Stored Procedure, Trigger 卻一直只聞樓梯響不見人下來。偶爾去 www.mysql.com 東瞧西望,只看到 MySQL 5.x 一直處於開發階段。等啊等啊等啊,終於等到 MySQL 5.x 對外發佈了。
MySQL 因為免費且容易使用,大部分個人網站或研究的系統都願意採用。這也難怪在 MySQL 網站首頁上膽敢宣稱是史上最重要的一次發佈(The most important release ever.)以忠實使用者的立場,這句話我絕對舉雙手贊成。
MySQL 向來秉持免費資料庫的開源(Open Source)精神,雖然近年為了生存與營運,要求商業使用須付授權費用,但對於個人與非商業用途始終提供絕佳的版本更新。唯一為人詬病者,就是 MySQL 實在很簡單,除了基本 SQL 查詢語言與 Authentication 之外,大部分商業資料庫的功能 MySQL 幾乎都沒有。尤其大型系統非常倚賴的 Transaction, Stored Procedure, Trigger, View 等等,在 MySQL 這個提倡簡易化以增進效能的資料庫中完全闕如。
在眾人頻頻提出請求之後,MySQL 終於開始研究如何納入這些功能,以符合商業系統的所需。從 MySQL 4.x 版本開始提供了 Transaction,但 Stored Procedure, Trigger 卻一直只聞樓梯響不見人下來。偶爾去 www.mysql.com 東瞧西望,只看到 MySQL 5.x 一直處於開發階段。等啊等啊等啊,終於等到 MySQL 5.x 對外發佈了。
MySQL 因為免費且容易使用,大部分個人網站或研究的系統都願意採用。這也難怪在 MySQL 網站首頁上膽敢宣稱是史上最重要的一次發佈(The most important release ever.)以忠實使用者的立場,這句話我絕對舉雙手贊成。
找出某欄位有重複值的記錄
發表於 2005-01-09 13:38:46
瘟神問我:要如何用一個 SQL command 檢索(Query)出某個欄位(字節)有重複值的記錄?
問了 DBA 高手,答案如下:
1. 假設 table_1 有 id, name 兩欄位(字節),id 是 Primary Index。
2. 查詢 MySQL 資料庫。
3. SQL command 為:
問了 DBA 高手,答案如下:
1. 假設 table_1 有 id, name 兩欄位(字節),id 是 Primary Index。
2. 查詢 MySQL 資料庫。
3. SQL command 為:
SELECT * FROM table_1 A, table_1 B WHERE A.name=B.name AND A.id != B.id
| #1 |
