始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

龙纹身女孩与她的SQL查询代码

发布时间:  2012/8/4 17:06:19

我喜欢大卫·芬奇(David Fincher)拍的电影《龙纹身女孩》,他成功的把小说《龙纹身女孩》搬上了荧幕,超出了我的预期。我本以为这又是一部肤浅的、愤世嫉俗的用来敛钱的好莱坞电影,事实情况却是,这是一部情节紧张,能引起共鸣的电影,只是里面的淫杀犯罪让人毛骨悚然。我最喜欢的一个情节是龙纹身女孩用SQL来查找40年前的凶杀案的过程。

龙纹身女孩

我们从电影里可以看到她使用笔记本电脑,轻而易举的进入瑞典警察局数据库,当她敲入像‘unsolved(未破案)’和‘decapitation(斩首)’等关键词时,屏幕上翻滚着绿色的检索出的信息,虽然我们看不清她使用的完整的查询语句:

sql2sql2

处于一种天生的好奇,我忍不住截取了这些镜头画面,用Photoshop拼接了一下,下面是我得到的结果:

完整sql

你马上能发现,这不是Oracle SQL——很显然 AS 关键字在Oracle里不能用在表假名上。事实上,如果我们回去看看她那个令人兴奋的查询结果输出时,你会看到 mysql 的提示符,而且还有 use [dbname] 连接数据库的语法,下面是一个更详细的画面:

全屏显示

我们实际上可以把她用的left join关键词表的SQL语句整理出来。

最终我们获得了一个全屏的输出结果信息:

详细输出图

下面就是我们Oracle“WTF研究会”部门重新构造出的她使用的SQL:

  1. SELECT DISTINCT v.fname, v.lname, i.year, i.location, i.report_file  
  2. FROM   Incident AS i  
  3.        LEFT JOIN V(ictim?)...  -- presumably v.incident_id = i.id  
  4.        LEFT JOIN Keyword AS k ON k.incident_id = i.id  
  5. WHERE  i.year BETWEEN 1947 AND 1966  
  6. AND    i.type = 'HOMICIDE' 
  7. AND    v.sex = 'F' 
  8. AND    i.status = 'UNSOLVED' 
  9. AND    ...  
  10.        OR v.fname IN ('Mari''Magda')  
  11.        OR SUBSTR ...  
  12. AND    (k.keyword IN ('rape''decapitation''dismemberment''fire''altar''priest''prostitute')  
  13.        ...  
  14.        AND SUBSTR(v.fname, 1, 1) = 'R' AND SUBSTR(v.lname, 1, 1) = 'L');  
  15.  
  16. +--------+---------+------+-----------+----------------------------------+  
  17. | fname  | name    | year | location  | report_file                      |  
  18. +--------+---------+------+-----------+----------------------------------+  
  19. | Anna   | Wedin   | 1956 | Mark      | FULL POLICE REPORT NOT DIGITIZED |  
  20. | Linda  | Janson  | 1955 | Mariestad | FULL POLICE REPORT NOT DIGITIZED |  
  21. | Simone | Grau    | 1958 | Goteborg  | FULL POLICE REPORT NOT DIGITIZED |  
  22. | Lea    | Persson | 1962 | Uddevalla | FULL POLICE REPORT NOT DIGITIZED |  
  23. | Kajsa  | Severin | 1962 | Dals-Ed   | FULL POLICE REPORT NOT DIGITIZED |  
  24. +--------+---------+------+-----------+----------------------------------+ 

你也许会很惊讶,很奇怪,这样一个顶级的黑客为什么要outer-join的方式连接Victims(被害人)表和Keywords(关键词)表呢,还使用这样的文字过滤方式,岂不知MySQL里是有 like语法的,更奇怪的是输出结果里根本没有姓和名分别以’R L’打头的受害人。


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线