日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php面试编程题_PHP程序员面试题(经典汇总,mysql为主)

發(fā)布時間:2023/12/10 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php面试编程题_PHP程序员面试题(经典汇总,mysql为主) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以下是本節(jié)php面試題的全部內(nèi)容。

1.表單中 get與post提交方法的區(qū)別?

答:get是發(fā)送請求HTTP協(xié)議通過url參數(shù)傳遞進行接收,而post是實體數(shù)據(jù),可以通過表單提交大量信息.

2.session與cookie的區(qū)別?

答:session:儲存用戶訪問的全局唯一變量,存儲在服務(wù)器上的php指定的目錄中的(session_dir)的位置進行的存放.

cookie:用來存儲連續(xù)訪問一個頁面時所使用,是存儲在客戶端,對于Cookie來說是存儲在用戶WIN的Temp目錄中的。

兩者都可通過時間來設(shè)置時間長短.

3.數(shù)據(jù)庫中的事務(wù)是什么?

答:事務(wù)(transaction)是作為一個單元的一組有序的數(shù)據(jù)庫操作。如果組中的所有操作都成功,則認為事務(wù)成功,即使只有一個操作失敗,事務(wù)也不成功。如果所有操作完成,事務(wù)則提交,其修改將作用于所有其他數(shù)據(jù)庫進程。如果一個操作失敗,則事務(wù)將回滾,該事務(wù)所有操作的影響都將取消。

4、能夠使HTML和PHP分離開使用的模板?

答:

Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

5、優(yōu)化MYSQL數(shù)據(jù)庫的方法?

答:

1)、選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設(shè)置NOT NULL,例如'省份,性別',最好設(shè)置為ENUM

2)、使用連接(JOIN)來代替子查詢:

a.刪除沒有任何訂單客戶:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)

b.提取所有沒有訂單客戶:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)

c.提高b的速度優(yōu)化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid

WHERE orderinfo.customerid IS NULL

3)、使用聯(lián)合(UNION)來代替手動創(chuàng)建的臨時表

a.創(chuàng)建臨時表:

SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`

4)、事務(wù)處理:

a.保證數(shù)據(jù)完整性,例如添加和修改同時,兩者成立則都執(zhí)行,一者失敗都失敗

復(fù)制代碼 代碼示例:

mysql_query("BEGIN");

mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";

mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");

mysql_query("COMMIT");

5)、鎖定表,優(yōu)化事務(wù)處理:

a.我們用一個 SELECT 語句取出初始數(shù)據(jù),通過一些計算,用 UPDATE 語句將新值更新到表中。

包含有 WRITE 關(guān)鍵字的 LOCK TABLE 語句可以保證在 UNLOCK TABLES 命令被執(zhí)行之前,

不會有其它的訪問來對 inventory 進行插入、更新或者刪除的操作

mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");

mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);

mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where customerid=".$id);

mysql_query("UNLOCK TABLES");

6)、使用外鍵,優(yōu)化鎖定表

a.把customerinfo里的customerid映射到orderinfo里的customerid,

任何一條沒有合法的customerid的記錄不會寫到orderinfo里

CREATE TABLE customerinfo

(

customerid INT NOT NULL,

PRIMARY KEY(customerid)

)TYPE = INNODB;

CREATE TABLE orderinfo

(

orderid INT NOT NULL,

customerid INT NOT NULL,

PRIMARY KEY(customerid,orderid),

FOREIGN KEY (customerid) REFERENCES customerinfo

(customerid) ON DELETE CASCADE

)TYPE = INNODB;

注意:'ON DELETE CASCADE',該參數(shù)保證當customerinfo表中的一條記錄刪除的話同時也會刪除order

表中的該用戶的所有記錄,注意使用外鍵要定義事務(wù)安全類型為INNODB;

7)、建立索引:

a.格式:

(普通索引)->

創(chuàng)建:CREATE INDEX ON tablename (索引字段)

修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)

創(chuàng)表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))

(唯一索引)->

創(chuàng)建:CREATE UNIQUE ON tablename (索引字段)

修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)

創(chuàng)表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))

(主鍵)->

它是唯一索引,一般在創(chuàng)建表是建立,格式為:

CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])

8)、優(yōu)化查詢語句

a.最好在相同字段進行比較操作,在建立好的索引字段上盡量減少函數(shù)操作

例子1:

SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)

SELECT * FROM order WHERE orderDate

例子2:

SELECT * FROM order WHERE addtime/7<24;(慢)

SELECT * FROM order WHERE addtime<24*7;(快)

例子3:

SELECT * FROM order WHERE title like "%good%";

SELECT * FROM order WHERE title>="good" and name

6、MYSQL取得當前時間的函數(shù)是?,格式化日期的函數(shù)是(2分)

答:now(),dateformat()

這份php面試題,重點考核了mysql性能優(yōu)化方面的內(nèi)容,看著像是招會php編程的mysql數(shù)據(jù)庫的DBA,哈~~

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的php面试编程题_PHP程序员面试题(经典汇总,mysql为主)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。