MySQL程式設計技巧 MySQL程式設計中的6個實用技巧

2021-10-17 17:25:27 字數 2624 閱讀 7441

每一行命令都是用分號(;)作為結束

對於mysql,第一件你必須牢記的是它的每一行命令都是用分號(;)作為結束的,但當一行mysql被插入在php**中時,最好把後面的分號省略掉,例如:

mysql_query("insert into tablename(first_name,last_name)values('$first_name',$last_name')");

這是因為php也是以分號作為一行的結束的,額外的分號有時會讓php的語法分析器搞不明白,所以還是省略掉的好。在這種情況下,雖然省略了分號,但是php在執行mysql命令時會自動的幫你加上的。

採用關聯陣列訪問查詢結果

看下面的例子:

[code]

$connection=mysql_connect("localhost","albert","shhh");

mysql_select_db("winestore",$connection);

$result=mysql_query("select cust_id,surname,

firstname from customer",$connection);

while($row=mysql_fetch_array($result))

echo"id:tn";

echo"surnametn";

echo"first name:tnn";

函式mysql_fetch_array()把查詢結果的一行放入陣列,可以同時用兩種方式引用,例如cust_id可以同時用下面兩種方式:$row[「cust_id」]或者$row[0]。顯然,前者的可讀性要比後者好多了。

在多表連查中,如果兩個列名字一樣,最好用別名分開:

select winery.name as wname,region.name as rname,from winery,region where winery.region_id=region.region_id;

列名的引用為:$row[「wname」]和$row[「rname」]

在指定表名和列名的情況下,只引用列名:

select winery.region_id

from winery

列名的引用為:$row[「region_id」]

聚集函式的引用就是引用名:

select count(*)

from customer;

列名的引用為:$row[「count(*)」]

text、date、和set資料型別

mysql資料表的字段必須有定義乙個資料型別。這有大約25種選擇,大部分都是直接明了的,就不多費口舌了。但有幾個有必要提一下。

text不是一種資料型別,雖然可能有些書上是這麼說的。它實際上應該是「long varchar」或者「mediumtext」。

$age=($current_date-$birthdate);

集合set是乙個有用的資料型別,它和列舉enum有點相似,只不過是set能夠儲存多個值而enum只能儲存乙個值而已。而且,set型別最多隻能夠有64個預定的值,而enum型別卻能夠處理最多65,535個預定義的值。而如果需要有大於64個值的集合,該怎麼辦呢,這時就需要定義多個集合來一起解決這個問題了。

用mysql_unbuffered_query()開發快速的指令碼

這個函式能用來替換mysql_query()函式,主要的區別就是mysql_unbuffered_query()執行完查詢後馬上返回,不需要等待或者對資料庫加鎖。但是返回的行數不能用mysql_num_rows()函式來檢查,因為輸出的結果集大小未知。

萬用字元sql的萬用字元有兩種:「*」和「%」。分別用在不同的情況下。例如:如果你想看到資料庫的所有內容,可以像這樣來查詢:

select*from dbname where user_id like'%';

這裡,兩個萬用字元都被用上了。他們表示相同的意思??都是用來匹配任何的字串,但是他們用在不同的上下文中。「*」用來匹配欄位名,而「%」用來匹配字段值。另外乙個不容易引起注意的地方是「%」萬用字元需要和like關鍵字一起使用。還有乙個萬用字元,就是下劃線「_」,它代表的意思和上面不同,是用來匹配任何單個的字元的。

not null和空記錄

如果使用者在沒有填任何東西的情況下按了submit按鈕,會怎樣呢?如果你確實需要乙個值,那麼可以用客戶端指令碼或者伺服器端指令碼來進行資料驗證。但是,在資料庫中卻是允許一些欄位被空出來什麼也不填。對此類紀錄,mysql將要為之執行一些事情:插入值null,即預設的操作。

如果你在字段定義中為之宣告了not null(在建立或者修改這個欄位的時候),mysql將把這個欄位空出來什麼東西也不填。對於乙個enum列舉型別的字段,如果你為之宣告了not null,mysql將把列舉集的第乙個值插入到字段中。也就是說,mysql把列舉集的第乙個值作為這個列舉型別的預設值。

乙個值為null的紀錄和乙個空紀錄是有一些區別的。%萬用字元可以匹配空紀錄,但是卻不能匹配null紀錄。在某些時候,這種區別會造成一些意想不到的後果。就我的經驗而言,任何欄位都應該宣告為not null。這樣許多的select查詢語句就能夠正常運轉了。注意在搜尋null時,必須用「is」關鍵字,而like是不會正常工作的。在最後要提到的是,如果你在加入或者修改乙個新的字段之前,資料庫中已經有了一些記錄了,這時新加入的字段在原來的紀錄中的值,可能是null,也可能為空。這也算是mysql的乙個bug吧,所以在這種情況下,使用select查詢要特別的小心。

mysql技巧 MySQL技巧

一 儲存引擎 儲存引擎是mysql資料庫的核心 心臟 發動機,它決定了資料如何儲存,查詢的時候如何搜尋資料,索引如何建立等等 是對於資料庫檔案的一種訪問機制,如何實現儲存資料,如何為儲存的資料建立索引以及如何更新,查詢資料等技術實現的方法。常用儲存引擎 innodb 1.事務處理 回滾 崩潰修復能力...

MySQL程式設計技巧 MySQL程式設計中的6個實用技巧

每一行命令都是用分號 作為結束 對於mysql,第一件你必須牢記的是它的每一行命令都是用分號 作為結束的,但當一行mysql被插入在php 中時,最好把後面的分號省略掉,例如 複製 如下 mysql query insert into tablename first name,last name v...

mysql自動編號步進值 MySQL 自動編號

為什麼要設定自動編號 如上圖所示,類別編號如果不設定自動編號的話,則需要人為的進行編輯和插入。設定表的屬性值自動增加 語法規則 列名 資料型別 auto increment 注 auto increment約束的字段可以是任何整數型別 tinyint,smallint,int等 例子 建立自動編號表...