学习态度

查询之order by,group by和having的使用 (转)

上一篇 / 下一篇  2009-10-31 16:49:55 / 个人分类:测试感慨

(1)order by51Testing软件测试网JA$H [8f1O
51Testing软件测试网#|Fy;okJb
 ORDER BY子句的语法为:
f G7F/T;y2Y%h29231451Testing软件测试网!q\1R/Y^z Z5Y
SELECT column1, SUM(column2) FROM "list-of-tables"
a4lE2t$Iy:`z4\292314
6XK:Eg2C Q{292314ORDER BY "column-list" [ASC | DESC];
?5wZM|29231451Testing软件测试网9k&Lg$V|Q
[ ] = optional
:r'~NvLcgT29231451Testing软件测试网D0NcFT&s/q0h}
ORDER BY是一个可选的子句,它允许你根据指定要order by的列来以上升或者下降的顺序来显示查询的结果。例如:51Testing软件测试网-Y8~"o.T kWL(|

{&xY%f7i x NU292314ASC = Ascending Order – 这个是缺省的
~[.K~ I)sq F292314
] Yh:q9klt292314DESC = Descending Order51Testing软件测试网(uF+? P%otfEk K

9x0N&s#@kAn292314下面举个例子:
]@\3M$wK292314
X(SL6^0iw H/]292314SELECT employee_id, dept, name, age, salary
`_%`"x x29231451Testing软件测试网A;p2n-W9` hKEQ|
FROM employee_info51Testing软件测试网es(~#R0VX
51Testing软件测试网\D ?g7Sqw
WHERE dept = 'Sales'
zU!sy'By1M%D,V292314
y {h.T(j292314ORDER BY salary;51Testing软件测试网8D1Pu#M$d ]tN L
51Testing软件测试网X!YUZ {(]3I6l[
这条SQL语句将从employee_info表中列dept等于'Sales'选择employee_id,、dept、 name、 age和 salary,并且根据他们的salary按升序的顺序来列出检索结果。
`^9bd ~ q7AI _[292314
QWGg.o/a!E292314如果你想对多列排序的话,那么在列与列之间要加上逗号,比如 :51Testing软件测试网YaNR(u.x
51Testing软件测试网*Q9i,_]-gj
SELECT employee_id, dept, name, age, salary
4H8L7b%y,_Z]29231451Testing软件测试网k"rR"pI.n^#kQ4V
FROM employee_info51Testing软件测试网gd4j NM;~&cq
51Testing软件测试网Bi2aFL
WHERE dept = 'Sales'51Testing软件测试网.Ja$Z$SZ1tM|
51Testing软件测试网H*gb!zV4E3L
ORDER BY salary, age DESC;
0kAaa8HB6]L/i292314
\&FG(R4G4g292314(2)group by51Testing软件测试网%|"uH5V$xf
51Testing软件测试网Vl"t.O;R{
一、首先讲讲GROUP BY 子句语法:
DEjQo'w29231451Testing软件测试网 G8Qjws&e$?
SELECT column1, SUM(column2) FROM "list-of-tables"51Testing软件测试网1TY*rB,m:t

Pn2B&r Qz|292314GROUP BY "column-list";51Testing软件测试网1Y+LS0lm$O

N T#\Y K292314这个GROUP BY子句将集中所有的行在一起,它包含了指定列的数据以及允许合计函数来计算一个或者多个列。当然最好解释的方法是给出一个例子啦:
(x"vU `,}w8A ~$\o29231451Testing软件测试网V*VS6k!WF-|
假设我们将从employee表中搜索工资最高的列,可以使用以下的SQL语句:51Testing软件测试网c2e"^ HJ;G

1\+S9O7Qm4le292314SELECT max(salary), dept51Testing软件测试网4XK n2z `K4x B

dZ*k'VM nz$fM c292314FROM employee51Testing软件测试网H8@uPa&t
51Testing软件测试网 IW6P1gxE a
GROUP BY dept;
T G+Js As o29231451Testing软件测试网5aKt c,gr6bP%`
这条语句将在每一个单独的部门中选择工资最高的工资。结果他们的salary和dept将被返回。
~ m W.]+L(NC29231451Testing软件测试网&i,Xz_7x%dUAo
二、group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
wJ$j7Vf jh:F`~._292314 51Testing软件测试网E"b3R%ontOxjo
什么是“聚合函数”?51Testing软件测试网1sK"xF?
  像sum()、count()、avg()等都是“聚合函数”51Testing软件测试网O.pfb `B}5ApI
  使用group by 的目的就是要将数据分类汇总。
7BbT6Qd29231451Testing软件测试网\!ToPYp+a
  一般如:51Testing软件测试网 W%kdT:x/?k
    select 单位名称,count(职工id),sum(职工工资) form. [某表]
"w dP$sD8OjZ292314    group by 单位名称
R2YG"cJ4o(W W292314    这样的运行结果就是以“单位名称”为分类标志统计各单位的职工人数和工资总额。51Testing软件测试网[H:q-CUTYj0{1R

P,S?/Pa1wTvS-M292314  在sql命令格式使用的先后顺序上,group by 先于 order by。51Testing软件测试网)n5f+}xR u
 
,tZ?4T;vy292314  select 命令的标准格式如下:
*V)bH K;r?'P(R292314 
p0xo/QZ zZl~4X/w292314   SELECT select_list51Testing软件测试网Jo C5{t rS+{4k
   [ INTO new_table ]51Testing软件测试网?p/R0G A_Cc-yIP
   FROM table_source51Testing软件测试网 TZo_y#c E k
   [ WHERE search_condition ]51Testing软件测试网OHpx1O1d
   [ GROUP BY group_by_expression ]
C7a%ba[i292314   [HAVINGsearch_condition ]
-N1I3_%L3V292314   [ ORDER BY order_expression [ ASC | DESC ] ]
-F.WV:w+w3t{._\S292314
I[S.vo\gC'j,Y292314三、理解group by:51Testing软件测试网 sa#X`m:A'G
51Testing软件测试网H:\.g5b#A"o{[P~
表1:51Testing软件测试网8X d;B {D+l4I+C mk
51Testing软件测试网/` t sz e)T;f)e
 type
?6n!op?3o292314   51Testing软件测试网3iWxWM&~P)@Z"S
 udate
v,Ln9vc%[u292314
B4u{g#@7i292314 mp3
8J,sv [:n292314   51Testing软件测试网O1Oj7T3I"m2l6S
 2006-3-251Testing软件测试网5Se!e.xdL5n
51Testing软件测试网\,PJa0o/|:NX
 flash  51Testing软件测试网'I:g5o}6rA
51Testing软件测试网Z,N|8EZ5]
 2006-1-251Testing软件测试网L8_&R|A/S

-K8`3ZID)B q292314 mp3
3cZ7}K*[292314   51Testing软件测试网{N5|J!Y$s
 2006-2-2
ri i7Tm!C292314 
7e[+] ua ]s5VB292314在表1中,假设要取出最后更新的某一类型(type)产品的日期51Testing软件测试网L,_\Go c
那么就要使用group by type的方式
A,d2i7t;L5Y}c292314select type from 表1 group by type
A7Ks{$tP-h292314但这样就无法读到udate
oq3T/\H(a292314 51Testing软件测试网D3e7td x
再来
0Y KQ!Pvl v292314select type,udate from 表1 group by type51Testing软件测试网i@Ephl*k6?
这种写法是错误的。51Testing软件测试网+K} hu5]G7`
原因是type和udate 不是一对一的关系。就是说一种type有几个udate
\ E2tf+o:b \292314所以
9v8\S{;R/ez)e"T/`L292314selct ** group by ** 之后没办法组织形成新的表,不知道要取哪个udate51Testing软件测试网 S@s)BYx7w*@
 51Testing软件测试网g?$u z.V%N
再来51Testing软件测试网n#m*K L9A2h ^
select type,max(udate) from 表1 group by type
4DSS&_K#sx8T292314这样就正确了。51Testing软件测试网^9n-e"t ^mie
取的是最大的udate ,一对一成立。
8o`xv \~M'j.wA t29231451Testing软件测试网 {6XeH-VN ^8qo
四、GROUP BY... 被附加于SQL 是因为聚会函数 (如 SUM) 每次都返回所有列值的合计,没有GROUP BY函数是不可能找到列值的单个分组的合计数。51Testing软件测试网,|!bP;DN IZB

V"SME(C,G[)F292314语法
(A3r2})G/H4@r!sp-rd29231451Testing软件测试网-}v c.Bn5D8~&[M
SELECT column,SUM(column) FROM table GROUP BY column
4v;eg[.K&qBa29231451Testing软件测试网4Tzl6cD
-----------------------------------------------
5~ {WK3L0MVh$k292314GROUP BY 示例51Testing软件测试网]\$gp ?!g
这个 "Sales" 表:51Testing软件测试网`5@ T^`%f4JU@
51Testing软件测试网_!O9e_+qJm@
Company     Amount51Testing软件测试网 m#X0nc b5i\
W3Schools     550051Testing软件测试网J&Ge1cX7I+hn
IBM    450051Testing软件测试网7H hjWxD v0g
W3Schools     7100
*S9blo-_8xU&j5K29231451Testing软件测试网/A@ CZ ^#W`8p
和这个SQL语句:
V y7V1NY?*H292314
G)zLMSY~,B|292314SELECT Company, SUM(Amount) FROM Sales51Testing软件测试网(M| X6TE|
51Testing软件测试网;y3`;[2J9^/R
返回这个结果:
)T[.V_G*WR292314
`8}r.?"lkz292314Company     SUM(Amount)
$E)y H2f ^6~292314W3Schools     1710051Testing软件测试网 p/jssJ.Fh S.H
IBM     17100
6CX/X&oC r292314W3Schools     1710051Testing软件测试网9E voCjaUPB
51Testing软件测试网y.zx1x]9Xa"I0`}&U
上面的代码是不正确的,因为被返回的列不是部分合计。GROUP BY 子句将解决这个问题。51Testing软件测试网xgb K8O#}v

"l^O;b\6B.d(J292314SELECT Company,SUM(Amount) FROM Sales            GROUP BY Company
K~O_$x292314
hKUy D1a X292314返回结果:
(~-pzl YY5EzV29231451Testing软件测试网7uKkf$_"o
Company     SUM(Amount)51Testing软件测试网dxS^"|{,P
W3Schools     12600
%N~hv mRe;v292314IBM     450051Testing软件测试网IQ;y%i0\xt.oxxk

5X7t\(N}292314五、
"T0v |,i|j0v(MbP%J292314SQL Group by学习及相关应注意的地方51Testing软件测试网2G Q&ULR!k
 
n#y"dA"cm292314    在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle按照group by 子句中指定的表达式的值分组查询结果。51Testing软件测试网&aM8e@1N
51Testing软件测试网NF!R? w[6b0f
   在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数51Testing软件测试网8t i,J4v2hZ z
51Testing软件测试网4wj X7P$qr&~
   select max(sal),job emp group by job;
N-R7?MdqQ292314   (注意max(sal),job的job并非一定要出现,但有意义)51Testing软件测试网.Ir] gT)aw

m3t7\'@'m;x292314   查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。
/S Fly7M E\"nn29231451Testing软件测试网-@*^7{.yct
  select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;51Testing软件测试网J8fc:U|'r1{%`o

'I8Wjm&B d~TSAOn292314  当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件51Testing软件测试网}$N4T X@2G
 
5o2S,A F@0i.u_292314  where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
0||+xU!`Q^[-Kg292314  having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
M#]/m9i0Cv9cx*n29231451Testing软件测试网*Xi-A@;i _Xz#f3n
  查询每个部门的每种职位的雇员数51Testing软件测试网I9AsQEPP(vQ
  select deptno,job,count(*) from emp group by deptno,job;51Testing软件测试网lcZQ{Z$u
51Testing软件测试网O8_)AEN5u'A k
注意:
6yUoA7h `292314
l7o,k+uI-^+r292314        group by 不能对别名进行分组排序.举例如下:
Dm~-AP9V29231451Testing软件测试网JWM:bvr
错误SQL:
5V\e \/NA,oAu(sY1f292314
B;o3YeV6q292314SELECT to_char(BASICROLL.ROLLDATE,'yyyy-mm') AS YEARDATE,
M&JGUz292314
O7tz'\I0UO%Tj5i292314   DEPTDICT.CNNAME DEPTNAME,
W4XmWzqKf292314    COUNT(BASICROLL.ID) AS PROJCOUNT51Testing软件测试网i(U*{Sdxj
51Testing软件测试网XS+xGMV'~O
FROM BASICROLL LEFT JOIN DEPTDICT ON BASICROLL.ARRDEPTDICTID=DEPTDICT.ID
JY4bv/}'y9j[@292314
?YK~ l1r#ii:r292314WHERE DEPTDICT.CNNAME <> '无'51Testing软件测试网\$C_nK4JS
51Testing软件测试网F }`i9W
GROUP BY YEARDATE, DEPTDICT.CNNAME                      1
rLP^6V,US292314ORDER BY YEARDATE DESC                                                  251Testing软件测试网2["Yo$C3@ dD?
51Testing软件测试网5L{Ka3J/T&s
 作者原意是将记录按年月,部门进行分组.并倒序排序.但上面的GROUP BY因为用了别名,所以会提示SQL语法错误.如果将上面1,2二句改成:   51Testing软件测试网|G IkQZjS

hc TY+X,k4b292314GROUP BY BASICROLL.ROLLDATE, DEPTDICT.CNNAME                      3
;UT`^ ~ qf*XL%g*a29231451Testing软件测试网p+_EO$w$sv1ep
ORDER BY BASICROLL.ROLLDATE  DESC                                                4
.A8c5{$fP29231451Testing软件测试网? b3N1za h8w8EmT
如上3,4二句,又会不合原意,因为BASICROLL.ROLLDATE  包括了年月日.这样分组得出的是按年月日来分组,而不是单纯的年月了.所以正确的SQL应该是这样的.51Testing软件测试网6VF9mF{"S5n~

uZZ cA2q m292314正确的SQL
T pG\6dx,G ~7sL29231451Testing软件测试网GXv IZ|v
SELECT to_char(BASICROLL.ROLLDATE,'yyyy-mm') AS YEARDATE,51Testing软件测试网*b*j3lFvn}
51Testing软件测试网`/G)`7H&F| K
   DEPTDICT.CNNAME DEPTNAME,
BO-ae2y"eY|292314    COUNT(BASICROLL.ID) AS PROJCOUNT51Testing软件测试网#l{w$]Z4^__8a
51Testing软件测试网 nq-L(XQ8q"P
FROM BASICROLL LEFT JOIN DEPTDICT ON BASICROLL.ARRDEPTDICTID=DEPTDICT.ID
5s9UIj0M0f.e~29231451Testing软件测试网'c(PU3~7~ d/bj
WHERE DEPTDICT.CNNAME <> '无'51Testing软件测试网 l!b#M _1\~#g vvG
51Testing软件测试网 E&_ U7Q[([f
GROUP BY to_char(BASICROLL.ROLLDATE,'yyyy-mm'), DEPTDICT.CNNAME                     51Testing软件测试网Du6[ k IYG,[8{eN4t

Wb'I m*i+Z(~292314ORDER BY to_char(BASICROLL.ROLLDATE,'yyyy-mm') DESC                                                 
Y'Z)M!P't`EU)m292314以上的注意部分为本人在项目开发过程中经验所得.51Testing软件测试网7d%C1b0g9|O4Z{&Hp

}A$Q*n@^ \hg&e292314来自:http://gyapollo.yculblog.com/post.1116750.html51Testing软件测试网 fp+VCn+Gm

i t*Z(a!?#mn292314六、例子51Testing软件测试网m.v R _F.oP
51Testing软件测试网5X5vrk(U
1> select * from bank_info51Testing软件测试网2]6z4\ ]0?0xr
2> go
b{"t0S,t)BU292314 bankno acctround
&O&ks I%I292314 ------ ---------51Testing软件测试网v&rqwj.k4j
 123456 1        51Testing软件测试网?Ywdd%gw
 123456 2       
N+}:uY9]1Xl4s8iwJ29231451Testing软件测试网x Vi K#aC y&{0w;p3Q x
(2 rows affected)
l2LU/u(BK@R2923141> select * from bank_info where acctround='1' group by bankno order by bankno51Testing软件测试网2T/E%[?1T1PN)I:gc
2> go51Testing软件测试网 G,y^7IE!Z$m
 bankno acctround
iWI2J5{pI292314 ------ ---------
a4O"^;m;hb|s)`292314 123456 1        
/HH/CSI;a7l292314 123456 2        
(w)rUJ*rQ292314
qu7|o q;X4Fi kSS292314(2 rows affected)51Testing软件测试网 K4CC'k \K7J0z
1> select * from bank_info where acctround='1' order by bankno
1T+P reA F4G2923142> go51Testing软件测试网T+c*n!wB_ e#x
 bankno acctround51Testing软件测试网O `\r4UC
 ------ ---------
Nyg,T&`292314 123456 1        51Testing软件测试网V9f9{~^,]Qx
51Testing软件测试网 AZ3D$_Z7}
(1 row affected)
T8r)lK V2923141> select * from bank_info51Testing软件测试网};tu]k`
2> go51Testing软件测试网!L8C&D3j9Sa$N
 bankno acctround51Testing软件测试网v"HZ { _1bv {'W
 ------ ---------
Tp U-w E!D292314 123456 1        51Testing软件测试网2Q,^9R8l Jh*[/F
 123456 2        
-A fpF vC(X29231451Testing软件测试网7I O6m6`6C&_Z
(2 rows affected)
|#^8O:| w$v1}jB2923141> select * from bank_info where acctround='1' group by bankno,acctround order by bankno51Testing软件测试网 sL~#p$aiu&PrO
2> go51Testing软件测试网g T%A C0zs
 bankno acctround51Testing软件测试网']z;nv }T
 ------ ---------
9k*LOK*E292314 123456 1        
V8g~r9Q(H;D1y29231451Testing软件测试网J9m%Lc V3a
(1 row affected)
Ln"a,u{fkCJ292314
%S3ZR5R!bU C(|292314group by bankno,acctround的意思是找出bankno,acctround两列完全相同的不同行作为一组.那上面的数据就分成两组了,因为 acctround不同,而结果需要acctround='1'的组.所以只有一行结果.如果是group by bankno,那么两行会合成一行.它并没有先通过where分析出只有一行符合结果集,再group就只有一行结果了.这里的问题是where和 group谁先谁后分析的问题?在这个问题的上下文中,本来的group by bankno就没有任何意义.其实是这样的:
@-q5[qAm29231451Testing软件测试网`3BW^4dO np`
或者是:
m'Gp#a$CY292314
(WZkB['kt9r:J[l292314select bankno,sum(money) from bankdiff group by bankno;51Testing软件测试网V~"\&H*s
51Testing软件测试网 n-hB8u{ B eq/j"@
又或者是:51Testing软件测试网9pg8b b hn

V|8G!_#@,w/Z292314select bankno,acctround,sum(money) from bankdiff where acctround='1' group by bankno,acctround;51Testing软件测试网%O\)fcQ6`#Y
 51Testing软件测试网!q9G,g L:S^ENW
不可能指定acctround又不把它放在groub by中的.
'R(UXH#}+PrzR`;y292314
`%\r:`UM2923141> select * from bank_info group by bankno51Testing软件测试网!i9e%d;}vGMZw
2> go
Ae1^+T!CuM:JX292314 bankno acctround
3zJOL"?3|:s292314 ------ ---------51Testing软件测试网5ziS uy#xgVZ$Q
 123456 1        51Testing软件测试网E)S bi(wS`J
 123456 251Testing软件测试网$a;Lt `T!SUo0b
51Testing软件测试网3L hw0P)oPx#^+M2Hr
可见这个group by没有意义.因为它有select *,而acctround不一样,就不能只显示一行出来.把select * 改成 select bankno就只有一行结果了.51Testing软件测试网*koTs4`@~BqI8]&k%}
51Testing软件测试网/sm tI J*[H3i
总结:使用group by必需明确你分组的意义,是否有必要这一个列或几个列来确定一个有意义的组,而需要显示的结果行的列是否和group by子句中的列名相冲突.一般不在group by子句中的列名都不会直接在select中显示出来.因为它们要分成一组来或者做些运算再显示.如sum(money)等.
cJ+o7R.H&Q!p&V1G29231451Testing软件测试网%\Rbv)X.F6D:a)FA
(3)having
$uS#{p+fCO:C T;]29231451Testing软件测试网)y#f4jIL[0_2`P/i1C
一、下面先给出HAVING子句的语法:
ZC(S'k] j~"qc292314
1TZ8{V [Y'N292314SELECT column1, SUM(column2) FROM "list-of-tables"51Testing软件测试网qx~&bs C8p_n9v
51Testing软件测试网M m5b4Q8i
GROUP BY "column-list"
#QBJRk@yn292314
0z|(BD4s7U292314HAVING "condition";
:IYP D'\fl1f29231451Testing软件测试网3C9z|?]!u5Rw P
这个HAVING子句允许你为每一个组指定条件,换句话说,可以根据你指定的条件来选择行。如果你想使用HAVING子句的话,它应该处再GROUP BY子句之后。51Testing软件测试网!j6e Ief q;Onf8zD

B1w&^:PFR292314下面将以一个例子来解释HAVING子句。假设我们的employee表中包含雇员的name、departmen、salary和age。如果你想为每个部门中每个雇员选择平均工资的话,你可以使用下面的SQL语句:51Testing软件测试网)@8RN!s!j#@8B{

|$r ]L;GB q292314SELECT dept, avg(salary)
(e;o;JIg C1~C1z292314
+utT+r'p!v y292314FROM employee
Am H&o3ts2|~29231451Testing软件测试网M)D7k[#_ o
GROUP BY dept;
1O {'CS.X X292314
xU0qU}/q#A ~s2@/}292314当然,如果你还想只计算和显示salary大于20000的平均工资的话,你还可以加上HAVING子句:51Testing软件测试网3i(G"bZz dP[i p
51Testing软件测试网ZB@#^a q"zP
SELECT dept, avg(salary)
)k/ecO g29231451Testing软件测试网@hd!F8_B1s
FROM employee
7?^S+YW!Ut3p292314
3W8l#P N5kxK3~|1~2n292314GROUP BY dept
ba%l9B I"}c29231451Testing软件测试网#[(Im$O3N
HAVING avg(salary) > 20000;
7D3\-\0}2p4m"tO(s292314
7L@wu^292314二、HAVING... 被附加到SQL语句是因为WHER关键字不能被用于聚会函数 (如 SUM),并且没有HAVING...它将不可能测试结果条件。51Testing软件测试网s]6c4Q:h!mr [.j
51Testing软件测试网QAF2dR _;I p%J2G
语法:
{0BZkV29231451Testing软件测试网b4ESNlaOv
SELECT column,SUM(column) FROM table            GROUP BY column            HAVING SUM(column) condition value
W(pj8Q9Z292314
+XjLl,r*z292314这个 "Sales" 表:51Testing软件测试网[iC{{v x:TCA P#g

|,^$DT:^Tftt292314Company     Amount
Y\3`!` { o @292314W3Schools     550051Testing软件测试网sXWyp0M;gB
IBM     4500
B9z%N@n ]7Kt292314W3Schools     710051Testing软件测试网+B xO,?U

2X X[5]$hy292314和这个SQL语句:51Testing软件测试网UR LY7_&`e
51Testing软件测试网[2@e*d9zU
SELECT Company,SUM(Amount) FROM Sales            GROUP BY Company            HAVING SUM(Amount)>1000051Testing软件测试网NVPYd'v_-f(H8_

R0e-a3O&x#Q9Ew1eA$C292314返回这个结果51Testing软件测试网s!Q_/JSlO9i6P

]Wm |(A _`292314Company     SUM(Amount)
6eH*^wdz6W292314W3Schools     12600

TAG: 数据库

 

评分:0

我来说两句

日历

« 2024-03-21  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 22294
  • 日志数: 40
  • 图片数: 1
  • 文件数: 1
  • 建立时间: 2009-09-30
  • 更新时间: 2009-11-26

RSS订阅

Open Toolbar