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