首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

用Python解释SQL话语执行过程

2013-09-28 
用Python解释SQL语句执行过程SQL 语句看上去挺酷,但在数据库内部,它是如何被解释执行的呢?本文试图用最小

用Python解释SQL语句执行过程

SQL 语句看上去挺酷,但在数据库内部,它是如何被解释执行的呢?

本文试图用最小的篇幅,解释这个问题.

作者水平有限,内容难免有失偏颇,望请海涵.

首先,一张学生表:

《Inside Microsoft SQL Server 2005:T-SQL Programminy》

抱歉,推荐一本SQL Server的书籍。只看第一章就好。

源代码:

姓名,年龄,班级 = range(3)张三 = ('张三', 18, '软件一班')李四 = ('李四', 19, '软件一班')王五 = ('王五', 19, '软件二班')学生 = {张三, 李四, 王五}姓名,学科, 分数 = range(3)成绩1 = ('张三', '数学', 60)成绩2 = ('张三', 'C语言', 70)成绩3 = ('李四', '数学', 61)成绩4 = ('王五', '数学', 62)成绩5 = ('王五', 'C语言', 63)成绩 = {成绩1, 成绩2, 成绩3, 成绩4, 成绩5}# select  姓名, 年龄, 班级 from 学生 where 姓名 = '张三'for x in 学生:    if(x[姓名] == '张三'):        print(x)        结果 = [ s for s in 学生 if  s[姓名] == '张三']print("简单查询结果:",结果)#select 学生.姓名, 成绩.学科, 成绩.分数 from 学生 left join 成绩 on 学生.姓名 = 成绩.姓名 where 学生.姓名 = '张三'#step one,对两个表做笛卡尔积笛卡尔积 = { (x,y) for x in 学生 for y in 成绩}print("笛卡尔积结果:",sorted(笛卡尔积))#为了显示美观,特意加了一个排序学生表,成绩表 = range(2)#step two,增加过滤条件最终结果= { (x[学生表][姓名], x[成绩表][学科], x[成绩表][分数]) for x in 笛卡尔积 if x[学生表][姓名] == x[成绩表][姓名] and x[学生表][姓名] == '张三'}print('结果:', 最终结果)




热点排行