中山php|最優網絡 :中山做網站 中山php建站
最優良人
Category Page for: 數據庫
mysql STRICT_TRANS_TABLES嚴格模式下提示Field 'id' doesn't have a default value
2012/09/26 at 11:42 » Comments (431)
在別的服務器運行我的網站程序的時候,出現了Field 'id' doesn't have a default value 的提示,意思是這個值我沒有提交數據,并且數據庫結構沒有設置默認值,由于對方的mysql服務器開啟了STRICT_TRANS_TABLES嚴格模式,所以報錯了 解決方法是: 如果自己的服務器,有權限修改my.ini的話,打開my.ini,查找 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改為 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 然后重啟MYSQL 在別人的虛擬空間上當然不可能實現,所以根本的解決方法還是修改自己的數據結構,把非空的字段加上默認值,以后設計數據庫要注意這一點,方便程序的移植 more »移植方便的php數據庫操作類,建表增刪改查
2012/05/30 at 17:46 » Comments (3)
<?php /** * * 數據操作類 * @author Xiaoqiang * @link // * @copyright Xiaoqiang * @version Svn $Id$ * @package */ class Db { var $links; // 構造函數,初始化數據庫(主機,用戶名,密碼,數據庫名) function __construct() { $this->links = mysql_connect(DB_HOST, DB_USER, DB_PWD); if(DEBUG){ mysql_select_db(DB_NAME) or die('ERROR:'.mysql_error()); } else{ mysql_select_db(DB_NAME); } $char_sql = "SET NAMES '" . CHARSET ...more »mysql字符串替換函數replace
2011/08/27 at 23:07 » Comments (323)
mysql替換字符串函數replace可以實現把某字段的某些字符串替換成其他字符串,例如 update dede_addonarticle set body=replace(body,'news/uploads/allimg/c110826','news/uploads/blank.gif?') 可以把dedecms的文章內容表所有的圖片鏈接替換成空白圖片,這樣就可以去把已經上傳的大量圖片刪除以節省空間了,在對采集回來的數據尤其有用。 more »phpmyadmin里MySQL字符集:cp1252 West European (latin1) ,解決亂碼問題
2011/08/26 at 14:54 » Comments (296)
使用虛擬主機空間上的phpmyadmin操作數據庫的時候,如果看到phpmyadmin首頁上顯示的MySQL 字符集為cp1252 West European (latin1),當我們導入數據時就會出現亂碼,解決的方法是: 在phpmyadmin首頁的右邊有個Language選項,把默認的中文 - Chinese simplified-gb2312改成 中文 - Chinese simplified,則左邊的MySQL 字符集會變成UTF-8 Unicode (utf8) ,亂碼問題得到解決! more »phpmyadmin 默認數據庫引擎修改為myisam
2011/08/25 at 12:24 » Comments (356)
phpmyadmin 默認創建的數據庫默認的數據庫引擎為innodb,如果希望修改為靈活性更高的myisam 在my.ini找到default-storage-engine=innodb,修改為myisam more »Mysql查詢數據表中某字段重復出現的次數,并按照次數排序
2011/08/14 at 02:29 » Comments (419)
利用Mysql中的 的聚合函數 count(*) 可以實現這個功能,例如需要查詢data表中name出現次數最多的記錄,可以先按照group by name分組,用count算出分組里的條數,再按照count排序: select name,count(*) from data group by name order by count(*) DESC limit 1 不加limit限制將返回按照name重復次數排列的數據 more »Mysql Having的用法:對group by之后的分組加限制條件
2011/08/14 at 02:27 » Comments (683)
在使用聚合函數之前,我們可以通過where對查詢加限制條件,那么如果在group by之后我們要對分組里面的數據再加限制條件怎么辦呢?答案是having。 HAVING子句可以讓我們篩選成組后的各組數據. WHERE子句在聚合前先篩選記錄.也就是說作用在GROUP BY 子句和HAVING子句前. 而 HAVING子句在聚合后對組記錄進行篩選。 having子句出現的數據必須在group by 之后,order by 之后 例如在上一篇中對name按照出現次數排序之后,我們還想只查出名字里面含有lin的數據,可以這樣寫: select name ,count(*) from data group by name having name like '%lin%' order by couny(*) DESC more »Mysql 子查詢的用法
2011/08/14 at 01:00 » Comments (337)
一,子選擇基本用法 1,子選擇的定義 子迭擇允許把一個查詢嵌套在另一個查詢當中。比如說:一個考試記分項目把考試事件分為考試(T)和測驗(Q)兩種情形。下面這個查詢就能只找出學生們的考試成績 select * from score where event_id in (select event_id from event where type='T'); 2,子選擇的用法(3種) ? 用子選擇來生成一個參考值 在這種情況下,用內層的查詢語句來檢索出一個數據值,然后把這個數據值用在外層查詢語句的比較操作中。比如說,如果要查詢表中學生們在某一天的測驗成績,就應該使用一個內層查詢先找到這一天的測驗的事件號,然后在外層查詢語句中用這個事件號在成績表里面找到學生們的分數記錄。具體語句為: select * from score where id=(select event_id from event where date='2002-03-21' and type='Q'); 需要注意的是:在應用這種內層查詢的結果主要是用來進行比較操作的分法時,內層查詢應該只有一個輸出結果才對。看例子,如果想知道哪個美國總統的生日最小,構造下列查詢 select * from president where birth=min(birth) 這個查詢是錯的!因為MySQL不允許在子句里面使用統計函數!min()函數應該有一個確定的參數才能工作!所以我們改用子選擇: select ...more »mysql數據庫的優化
2011/08/14 at 00:58 » Comments (293)
影響數據庫性能的根源: 1,磁盤I/O讀取 2,CPU使用率 3,資源競爭 優化的方式: 1,設計優化 2,操作優化 3,使用其他優化技術 1)設計優化: 分類拆分數據量大的表; 選取最適用的字段屬性; 索引設計,為經常查詢用到的字段建立索引,避免查詢時查找其他重復無用的數據,避免了大范圍掃描; 2)操作優化: 鎖表操作; 盡量避免子查詢,將子查詢轉化成連接查詢; where子句查詢條件盡量少使用運算操作; A>2與A>=3的效果有很大的區別了,因為A>2時數據庫會先找出為2的記錄索引再進行比較,而A>=3時ORACLE則直接找到=3的記錄索引; ...more »mysql操作符in between
2011/08/14 at 00:57 » Comments (331)
以下三條sql語句的效果是等效的: SELECT * FROM `logs` WHERE id = 1 or id = 2 or id = 3 SELECT * FROM `logs` WHERE id between 1 and 3 SELECT * FROM `logs` WHERE id ...more »