帮助:数据库查询
此帮助页面需要更新。 (2013年12月14日) |
目前数据库查询功能已经禁止,但您可以请求一个Toolserver用户为您进行数据库查询,详见tswiki:Query service。
下面是一些查询数据库的实例。
限定查询数量
编辑使用limit命令:
SELECT ... LIMIT 20
这个命令返回20条记录。
SELECT ... LIMIT 100, 20
这个命令返回从101条记录开始的20条记录。
查询新用户
编辑- SELECT user_name, COUNT(*) FROM user, cur WHERE user_id=cur_user GROUP BY user_id ORDER BY user_id DESC LIMIT 20
这个语句返回最近创建的最多20个用户的用户名,并显示这些用户所编辑的条目数。这条语句显示的编辑的条目数不包括被其他用户修改的条目。
- SELECT user_name, COUNT(*) FROM user, old WHERE user_id=old_user GROUP BY user_id ORDER BY user_id DESC LIMIT 20
这个语句返回被其他用户修改过的条目数量。
查询短条目
编辑- SELECT cur_title FROM cur WHERE cur_is_redirect=0 AND LENGTH(cur_text)<50 AND cur_text LIKE '%see%'
这个语句返回小于50个字符的所有页面。
查询不适当的链接
编辑- SELECT l_from,l_to,cb.cur_text AS rt,cb.cur_title AS ti FROM links,cur AS ca, cur AS cb WHERE ca.cur_is_redirect=1 AND cb.cur_is_redirect=1 AND l_to=cb.cur_id AND l_from=ca.cur_title LIMIT 250
这个语句返回有双重重定向的页面
- SELECT cur_title FROM cur WHERE cur_text LIKE "%http://%.jpg%" AND cur_namespace=0
这个语句返回链接有外部的jpg图像的条目。
- SELECT cur_title FROM cur,links WHERE cur_is_redirect=0 AND cur_namespace=0 AND l_from=cur_title AND l_to=cur_id LIMIT 20
这个语句返回有自我链接的页面。
- SELECT cur_title FROM cur,brokenlinks WHERE bl_from=cur_id AND cur_is_redirect=1
这个语句返回重定向到不存在的页面。
查询有特殊标记的页面
编辑- SELECT cur_title FROM cur WHERE cur_namespace=0 AND cur_is_redirect=0 AND cur_text NOT LIKE "%'''%" AND cur_text NOT LIKE "%<b>%" LIMIT 50
这个语句返回不包含粗体标记的页面。
- SELECT cur_title FROM cur WHERE cur_namespace=0 AND cur_is_redirect=0 AND cur_text NOT LIKE "%'''%" AND cur_text NOT LIKE "%<b>%" AND cur_text NOT LIKE "%disambiguation%" LIMIT 50
这个语句返回不包含粗体标记的页面,其中不包括消含糊页。
- SELECT cur_title FROM cur WHERE cur_namespace=0 and cur_title like "%/%" and cur_is_redirect=0
这个语句返回含有“/”符号的页面。
- SELECT CONCAT("Wikipedia:",cur_title) AS cur_title FROM cur WHERE cur_namespace=4 AND cur_is_redirect=0 ORDER BY cur_title
这个语句返回标题含有Wikipedia:的条目。
查询一些统计数据
编辑- SELECT COUNT(*) FROM cur WHERE LENGTH(cur_text)>1500 AND cur_namespace=0
这个语句返回字符个数大于1500的条目数量。
- SELECT DISTINCT ipb_address, COUNT(*) AS times, MIN(ipb_reason) AS reason, user_name AS blocker, DATE_FORMAT(MIN(ipb_timestamp), '%b %e %Y %k:%i') AS date FROM ipblocks, user WHERE user_id=ipb_by GROUP BY ipb_address ORDER BY ipb_timestamp
这个语句返回被禁封的用户。
- SELECT CONCAT("*[[User:",user_name,"|",user_name,"]]") from user where user_rights != "" ORDER BY user_name LIMIT 100
这个语句返回站长和开发者的信息。
- SELECT COUNT(rc_title) FROM recentchanges WHERE rc_timestamp LIKE '20030623%'
这个语句返回20030623这一天所作的所有改变的数量。
- SELECT old_title, count(old_timestamp) AS count FROM old GROUP BY old_title ORDER BY count DESC
这个语句返回各个条目的编辑次数.
- SELECT rc_title, count(rc_timestamp) AS count FROM recentchanges GROUP BY rc_title ORDER BY count DESC LIMIT 100
这个语句返回最近编辑过的条目的编辑次数。
- SELECT rc_title, cur_counter FROM cur,recentchanges where rc_title like cur_title GROUP BY rc_title ORDER BY cur_counter DESC LIMIT 200
这个语句返回最近浏览次数最多的100条条目,用于首页的热点条目。
- SELECT cur_title,cur_is_new,cur_counter FROM cur where cur_is_new=1 GROUP BY cur_title ORDER BY cur_counter DESC LIMIT 100
这个语句返回按浏览次数排序的前100条新建条目。
- SELECT cur_title,cur_is_new,cur_timestamp,cur_counter FROM cur where cur_is_new=1 GROUP BY cur_title ORDER BY cur_timestamp DESC LIMIT 100
这个语句返回按建立时间的前100条新建条目。
- SELECT cur_id,cur_title,cur_timestamp,cur_counter FROM cur GROUP BY cur_title ORDER BY cur_id DESC LIMIT 100
这个语句返回按建立顺序排列的前100条条目。
- SELECT rc_title,rc_new,cur_counter FROM cur,recentchanges where rc_new=1 AND cur_title LIKE rc_title GROUP BY rc_title ORDER BY cur_counter DESC LIMIT 100
这个语句返回按浏览次数排序的最近新增条目。
- SELECT rc_title,rc_new,count(rc_timestamp) as count FROM recentchanges where rc_new=1 GROUP BY rc_title ORDER BY count DESC LIMIT 100
这个语句返回按编辑次数排序的最近新增条目.
- SELECT rc_title,rc_new,LENGTH(cur_text) as count FROM cur,recentchanges where rc_new=1 and rc_title like cur_title GROUP BY rc_title ORDER BY count DESC LIMIT 100
这个语句返回按文章长度排序的最近新增条目,用于首页的新增条目统计。
- SELECT cur_title,cur_counter FROM cur WHERE LENGTH(cur_text)=0 GROUP BY cur_title ORDER BY cur_counter DESC LIMIT 100
这个语句返回按浏览次数排序的文本长度为0的条目,用于首页的待撰条目统计.
- SELECT bl_to,count(cur_title) as count FROM cur,brokenlinks WHERE bl_from=cur_id AND cur_is_redirect=0 GROUP BY bl_to ORDER BY count DESC LIMIT 100
查询待撰条目。
- SELECT cur_title,count(cur_title) as count FROM cur, brokenlinks where cur_text LIKE "%Wikipedia:寻找并修理兔尾巴%" and bl_from=cur_id AND cur_is_redirect=0 GROUP BY cur_title ORDER BY count DESC LIMIT 100
查询兔尾巴。
日志
编辑- 日志文件记录了最近几个月来的所有的查询纪录。
详细的数据库字段的描述请看SCHEMA.DOC。