php大型网站开发视频教程,coding wordpress 升级,孝感网站建设xgsh,一次性筷子网站建设1.单表查询#xff1a;根据WHERE条件过滤表中的记录#xff0c;形成中间表#xff08;这个中间表对用户是不可见的#xff09;#xff1b;然后根据SELECT的选择列选择相应的列进行返回最终结果。 1)简单的单表查询 SELECT 字段 FROM 表名 WHERE 条件表达式 那它们是按什么…1.单表查询根据WHERE条件过滤表中的记录形成中间表这个中间表对用户是不可见的然后根据SELECT的选择列选择相应的列进行返回最终结果。 1)简单的单表查询 SELECT 字段 FROM 表名 WHERE 条件表达式 那它们是按什么顺序执行呢分析器会先看语句的第一个词当它发现第一个词是SELECT关键字的时候它会跳到FROM关键字然后通过FROM关键字找到表名并把表装入内存。接着是找WHERE关键字如果找不到则返回到SELECT找字段解析如果找到WHERE则分析其中的条件完成后再回到SELECT分析字段。最后形成一张我们要的虚表。WHERE关键字后面的是条件表达式。如果学过C语言等编程语言就会知道条件表达式计算完成后会有一个返回值即非0或0非0即为真(true)0即为假(false)。同理WHERE后面的条件也有一个返回值真或假来确定接下来执不执行SELECT。 例: SELECT * FROM STUDENT WHERE SNO 1; 分析器先找到关键字SELECT然后跳到FROM关键字将STUDENT表导入内存并通过指针p1找到第一条记录接着找到WHERE关键字计算它的条件表达式如果为真那么把这条记录装到一个虚表当中p1再指向下一条记录。如果为假那么p1直接指向下一条记录而不进行其它操作。一直检索完整个表并把虚表返回给用户。 再说EXISTS谓词EXISTS谓词也是条件表达式的一部分。当然它也有一个返回值(true或false)。 例: SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE SC.Sno Student.Sno AND SC.Cno 1); 这是一个SQL语句的嵌套使用但和上面说的SQL语句的执行过程也是相同的。嵌套的意思也就是说当分析主SQL语句(外面的那个SELECT)到WHERE关键字的时候又进入了另一个SQL语句中。那么也就是说分析器先找到表Student并装入内存一个指针(例如p1)指向Student表中的第一条记录。然后进入WHERE里分析里面的SQL语句再把SC表装入内存另一个指针(例如p2)指向SC表中的第一条记录分析WHERE后面的条件表达式依次进行分析最后分析出一个虚表2也就变成 SELECT Sname FROM Student WHERE EXISTS 虚表2 如果虚表为空表EXISTS 虚表2 也就为false不返回到SELECT而p1指向下一条记录。如果虚表2不为空也就是有记录那么EXISTS 虚表2 为true同返回到SELECT并把p1指向的记录添加到主SQL语句的虚表1当中。这也是为什么嵌套的SQL语句SELECT 后面为一般为*的原因因为它EXISTS返回的只是真或假字段的名没有意义用*就行当然用别的也不会错。 注意这里虽然嵌套的SQL语句分析完了但主SQL语句只执行了一遍也就是说p1指向Student的第一条记录p1还要再指向Student表的下一条记录并分析这样又进入了嵌套中的SQL语句同上面说的一样分析。当p1也到了Student表的结尾整个SQL语句结束。返回虚表1Sname这一列。 嵌套就像: for(int i 0,i n, i) for(int j 0, j n, j) 2两表连接查询对两表求积笛卡尔积并用ON条件和连接连接类型进行过滤形成中间表然后根据WHERE条件过滤中间表的记录并根据SELECT指定的列返回查询结果。 3.多表连接查询先对第一个和第二个表按照两表连接做查询然后用查询结果和第三个表做连接查询以此类推直到所有的表都连接上为止最终形成一个中间的结果表然后根据WHERE条件过滤中间表的记录并根据SELECT指定的列返回查询结果. 4.不同类型的连接查询什么时候用 查两表关联列相等的数据用内连接。左表的连接列是右表的子集时用右外连接。右表的连接列是左表的子集时用左外连接。左表的连接列和右表的连接列彼此有交集但彼此互不为子集时候用全外。求差操作的时候用联合查询。多个表查询的时候这些不同的连接类型可以写到一块。ON只进行连接操作WHERE只过滤中间表的记录 转自http://blog.csdn.net/chenjian198819/article/details/6794316转载于:https://www.cnblogs.com/winkey4986/p/4136033.html