捌玖网络工作室's Archiver

admin 发表于 2008-4-17 14:44

[Zend权威认证试题讲解]第九章 - PHP与数据库

如果你需要开发动态内容的网站,那么就肯定要用到数据库。尽管现代网站离不开数据库,但很多开发者对它的工作原理仍然知之甚少。g)`'gN Ci.o
PHP支持许多种类的数据库,可PHP认证只和PHP能力有关,所以本章的题目不会专门针对某个特定的数据库管理系统。另外,大多数商业DBMS,比如MySQL AB,都有它们自己的认证课程。U&w6DCf)?
本章考察你对数据库原理及数据库编程的相关知识——与特定的DBMS无关。
!DPf&}(H#MT sMKF.u3I$n8Bo0{

YE:GVs 问题
f8K0m%o,y{F /^JI-s f%C$hDk9F
1.考虑如下SQL语句。哪个选项能对返回记录的条数进行限制?(双选)
7ei;jq4x;g*_
T P2F"Q{4Y f SELECT * FROM MY_TABLE
pc4_{O/b
:C+A"eI[ T0l:j H A.如果可能,用把查询转换成存储例程
M7oC a$nzA ^ B.如果程序允许,给查询指定返回记录的范围j,L cCc E {@8Rk X
C.如果可能,添加where条件
FW#XEE:t+p8Ka D.如果DBMS允许,把查询转换成视图
:B Eip*Q5Hnn(O[ E.如果DBMS允许,使用事先准备好的语句
3ZFCJT{brn t ecr,[ l.Q
$F3s bl*V3f T
2.可以用添加______条件的方式对查询返回的数据集进行过滤?l`*Ri^}$K

'v}{)hx2e:~ 答案:____________
(EJo\0n'i+\
z5t/I%u+L5qU 6p yAm9sM X8Z:JAc
3.内关联(inner join)是用来做什么的?[.g3hK3J)c7j+Sl8B4K

[$P^XN_ y8V A.把两个表通过相同字段关联入一张持久的表中
@f.L-r y@m2c } B.创建基于两个表中相同相同行的结果集
"ND:?J)N/_i(hqq C.创建基于一个表中的记录的数据集
7K&o,aus D.创建一个包含两个表中相同记录和一个表中全部记录的结果集
f~1K-j }z E.以上都不对.S"wCu[/s
-{w|8H.O D F
'OB1d/p\ t
4.以下哪个DBMS没有PHP扩展库?'f;Q WJ C)In

1@%Y,m2~+HUp A.MySQL
,I7|5SE(S(@'[n` B.IBM DB/2
1QV f.k8YF!v])m C.PostgreSQLHx}2Xj3Q.^
D.Microsoft SQL Server]$x:nBX7Wii \
E.以上都不对
'W)F Sft*J}S
mSR*ly $d4Y`.Z-i5\xX
5.考虑如下脚本。假设mysql_query函数将一个未过滤的查询语句送入一个已经打开的数据库连接,以下哪个选项是对的?(双选)
^[e)fU[
ko2B%k)I z <?php
N*a.`9aL $r = mysql_query ('DELETE FROM MYTABLE WHERE ID=' . $_GET['ID']);6L:@`h(a K#J?`)s Je
?>G9a { i CA+l
h3O&l+w.Is1qY v4`0_G
A.MYTABLE表中的记录超过1条/n _^;k*B2B:Z
B.用户输入的数据需要经过适当的转义和过滤v;d3rzf9i$O
C.调用该函数将产生一个包含了其他记录条数的记录
.u(ZfA)tX#~v HU D.给URL传递ID=0+OR+1将导致MYTABLE中的所有表被删除3n*N5t&`(?9H rJ'd
E.查询语句中应该包含数据库名7` I-i~X
2z"`?%bX)fD8n

8B/sO!@@*n@$Qe 6.______语句能用来向已存在的表中添加新的记录。
Yr,W+W6N WKT4? P+k5j*a.m1]K A&z3z
答案:____________
;pk+m S}7W ru S$X(W]wV&h&T

5] R FduYN6d2N+K 7.以下哪个说法正确?
0b'D:f+g1}lE
$qC t.F\l0?w A.使用索引能加快插入数据的速度
l'MXm_y~de7K B.良好的索引策略有助于防止跨站攻击
]4A(ju*z#P%|!dI C.应当根据数据库的实际应用按理设计索引b_3H1L6Iu
D.删除一条记录将导致整个表的索引被破坏
4s[!O%O3uP6v'T(Y\ E.只有数字记录行需要索引
dRjQ nB
H3S6sG:A 7yqxxLdT
8.join能否被嵌套?'_1o%JJ/T;iy#R@

[/N(VrEGRk n A.能
0}KY!m*E @ B.不能 yL I8cZ3K.T Ih^ S

1bJ4N+BFdG&[
!M9G wn0_-QU 9.考虑如下数据表和查询。如何添加索引能提高查询速度?
` |&u@C`3bT n)Nk7m ng
CREATE TABLE MYTABLE (
T t5Y m3rT[9{ ID INT,,^6G| N X,jI*EL
NAME VARCHAR (100),lFa8NL.FK?
ADDRESS1 VARCHAR (100),
;S] \GU ~+ak\)y ADDRESS2 VARCHAR (100),
B,O5O(f(a X^o.w ZIPCODE VARCHAR (10),-Xq1DLZ
CITY VARCHAR (50),qDQ&^7~e'uv6I
PROVINCE VARCHAR (2)"c nP0GL?"ph
)6_Ahp K
SELECT ID, VARCHAR8M)C#qRGP6|!\ Q)S
FROM MYTABLE
#}"vG0?l WHERE ID BETWEEN 0 AND 100
-a!{HA4CC-tZmG&t ORDER BY NAME, ZIPCODE:D(~p4w,x!M3r
D(NOYn
A.给ID添加索引:z+xP~ ` n+Y}c
B.给NAME和ADDRESS1添加索引
E!X'F5a A2e#Fcn C.给ID添加索引,然后给NAME和ZIPCODE分别添加索引
#_G*s5U8eDWk D.给ZIPCODE和NAME添加索引johLz.A j
E.给ZIPCODE添加全文检索
'{Lth1AN"v(E
/k;]Ohy'B 4M4gp0u2H5T6}_n
10.执行以下SQL语句后将发生什么?
V4Ve\o v.a3ydF({o9R'M.Ek
BEGIN TRANSACTION
i!h+@0`rmC.u} DELETE FROM MYTABLE WHERE ID=1
,um)gW/JPl)R&O DELETE FROM OTHERTABLE$Z |DCx?2@9I+j _
ROLLBACK TRANSACTIONny%kGfz]
thK9q1W;H0a:Q
A.OTHERTABLE中的内容将被删除
{AJ`+s&zU4ZW B.OTHERTABLE和MYTABLE中的内容都会被删除WGi2|4@ o
C.OTHERTABLE中的内容将被删除,MYTABLE中ID是1的内容将被删除&O`p2Y:x
D.数据库对于执行这个语句的用户以外的起来用户来说,没有变化
J$Txw*R.PRw E.数据库没用变化
~)I i%W%t
k U tg/Eg
n?Z|xn 11.DESC在这个查询中起什么作用?
U/Q-{M+Q c|!p6B4Rh
SELECT *
k`q^&~ FROM MY_TABLE yp:PxVe;^x0o1R5Kt
WHERE ID > 0
6|ZQ_[lv ORDER BY ID, NAME DESC
$q"\#y/d|E/O@ .R~lV5Q
A.返回的数据集倒序排列Y,UF `!y
B.ID相同的记录按NAME升序排列
r;p7s Y`mld C.ID相同的记录按NAME倒序排列c(n?rU5Nf%Q
D.返回的记录先按NAME排序,再安ID排序
+a6V0\]k,\)S|)j E.结果集中包含对NAME字段的描述
i0o+m Qf(qn0T -b|i5yy%ts]6r
!E4\P3H@$G
12.以下哪个不是SQL函数?
8G0Mxn1IpZFS
_9nk+]~UA Z7G%D A.AVG
*l^2t/q8nS nt B.SUM
@;y:O-Q] Gf5ZYDk'or%l C.MIN!`)KG {.BX5KLQ[
D.MAX
%{u;l!V)T E.CURRENT_DATE()
R.C!O cX .p'Q{%@8k3|'sc;gK
[ Jb+S6R Q
13.如果一个字段能被一个包含GROUP BY的条件的查询语句读出,以下哪个选项的描述正确?Z9{"c$]!Bw1_

xHb4jaT$JL A.该字段必须有索引
4p;u&^hF(v#p B.该字段必须包括在GROUP BY条件中Ue4O*}7zY
C.该字段必须包含一个累积值D(Mk?h
D.该字段必须是主键
;L#qn/v)U E.该字段必须不能包含NULL值hyO7gCmN.d,h(u
!\ |J~ }u

D&S? K9V!M'a8p 14.以下查询输出什么?
W'\tip'V#s 6L;?&s1{r(GO
SELECT COUNT(*) FROM TABLE1 INNER JOIN TABLE2&^2F.KnS4\m/On4@8Aim
ON TABLE1.ID <> TABLE2.ID
xUa%LI&[:| F+[ i.]3X]/|.e
A.TABLE1和TABLE2不相同的记录
[c)n9Fo/N4eyf$f B.两个表中相同的记录
6Y#mI?8x\4`1l C.TABLE1中的记录条数乘以TABLE2中的记录条数再减去两表中相同的记录条数
K7br)]U[,due g D.两表中不同记录的条数rn5JRL _3_%O
E.数字2f#I;B~x8SdC
*g(x/C le

s+J%P TE-C-|+n+] 15.______能保证一组SQL语句不受干扰的运行?
D$A*U@!f
$BO V8ZG 答案:____________
$FW}.tlR zY
LUu/c["F;Y;m*b ^_g}gci&|0|J
'Z`\?4tT-{
答案速查:I*i:qs/{xw
1:BC
!et2lT#d 2:WHERE
2~#r-[M%b^ 3:BnG%^,A f-U hE
4:E*S4Y5l.w-L_.]
5:BD
#^d#^,PYn H-{ 6:INSERT
f7p2h%VC 7:C!zL md?L&uw,]Is
8:A
.y:y:I(Yx/Q 9:C`&D@Nr[.v
10:E
i6Wj.eNS 11:C\7ahQl7Y
12:E_Vji7i:H
13:BC
5dP)Nu.G"i 14:C
ms?:m!}&WY-p7?&G$} 15:事务e(PxG(gNy D%xi

L/He0]_U"_ZTf
8ew)BEr}L (imV&|I
答案详解~J!]+VVi5m

3nP*v,dU@2d"m 1.有两个方法能限制返回记录的条数——使用where条件和指定查询返回的记录的范围。通常情况下,如果没有特殊需要,尽量不要用select *,这会浪费大量的数据缓存。答案是B和C。+ZtX!}]+}2TKW
6S;C#pxg9r
2.有很多种方式能过滤查询返回的数据,但这题描述的显然是where条件。
H1v+w/V1J7Z+P
,qsq8X;k\ 3.答案是B。内关联(inner join)把两个表通过一个特定字段关联起来,并创建该字段相同的所有记录的数据集。
6H.P!ye/Gy$g "PW4N0_)u7Kj
4.答案是E。PHP有PostgreSQL和MySQL扩展库。访问DB/2可以用ODBC,访问Microsoft SQL Server可以用TDS和mssql扩展。这题考验你对PHP的兼容性的了解——在决定开发小组要使用什么数据库时会用得上。
S['k6W%Zy C!\o`-@%FcAM
5.答案是B和D。用户输入未经过滤就直接送往了数据库,这非常危险。如果URL包含ID=0+OR+1这样的参数时,实际的查询为DELETE FROM MYTABLE WHERE ID = 0 OR 1,数据库将删除表中所有的记录。
(PzKo'VN-]*a9G c ;}#Cm6fl#w|;i,l%l
6.答案显然是INSERT。lg6i(yWR[
"\v+g9M(BZ4N
7.答案是C。创建合理的索引需要分析数据库的实际用途并找出它的弱点。优化脚本中的冗余查询同样也能提高数据库效率。
Am}Wd [nsH
+HX@ph.C!Z 8.能。你可以嵌套任意数量的join条件,但最终的结果可能并不是你想要的。y@ QP v"Ej;t2q(FX

m|$@5aQAe|#~] 9.答案是C。给ID字段设置索引能提高where条件执行的效率,给NAME和ZIPCODE设索引则能使排序更快。
l"?$|:auWKX ;a?q0fl{Xx$~2S
10.这个查询是一个事务,并且这个事务的最后有回滚,数据库不会有变化,因此答案是E。
$l'G @YW3uL L&XG!@ Ov@]
11.答案是C。DESC能反转默认的排序机制。因此在本题中,数据将先按ID升序排列,再按NAME降序排列。7_ w#M}+E H

a&\4q;rALb 12.CURRENT_DATE函数不是标准SQL中的函数(但某些特定的数据库平台可能包含了这个函数)。
0{Q@C_NiQ F A0? I Q;z"~@
13.答案B和C正确。在标准SQL中,如果出现GROUP BY,结果集中所有的字段都必须是聚集值,或者是GROUP BY结构本身的一部分。某些DBMS——比如MySQL——允许你打破这种规则,但它不按标准的方式执行,并且在其他数据库系统上无效。
.TRj0uBo+g(v
FTx| d$i 14.本题描述了一种在使用join时常犯的概念性错误。很多人可能觉得这个查询将返回两个表中非共有记录。但实际上数据库却认为是“读出所有ID非共有的记录”。DBMS将读取读取左边表中所有的记录加上右边表中ID非共有的记录。因此,该查询将读取TABLE1中的每条记录乘以TABLE2中的每条记录再减去两表中相同的记录条数。
yO!@RU+qU1V
z6cs;o!j'AZ 15.事务能实现这个功能。事务能将任意个SQL语句组合起来一起执行,或者一起回滚。

页: [1]
【捌玖网络】已经运行:


Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.