这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会会给调用者。如果没有在查询中指定某一个子句,将跳过相应的步骤。...9、 DISTINCT:将重复的行从 VT8 中删除,产品 VT9。 10、 ORDER BY:将 VT9 中的行按 ORDER BY 子句中的列列表顺序,生成一个游标(VC10)。...三、SQL 之连接查询(左连接和右连接的区别) 外连接: 左连接(左外连接):以左表作为基准进行查询,左表数据会全部显示出来,右表如果和左表匹配的数据则显示相应字段的数据,如果不匹配则显示为 null。...右连接(右外连接):以右表作为基准进行查询,右表数据会全部显示出来,左表如果和右表匹配的数据则显示相应字段的数据,如果不匹配则显示为 null。 全连接:先以左表进行左外连接,再以右表进行右外连接。...内连接:显示表之间有连接匹配的所有行。 四、SQL 之 sql 注入 通过在 Web 表单中输入(恶意)SQL 语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行 SQL 语句。
这10个具体步骤是: 1.FROM: from子句中的两个表首先进行交叉连接(笛卡尔积), 生成虚拟表VT1。 2.ON: on条件作用在VT1上, 将条件为True的行生成VT2。...3.OUTER: 如果outer join被指定, 则根据外连接条件, 将左表or右表or多表的未出现在VT2查询结果中的行加入到VT2后生成VT3。...应用ON筛选器以orderid为条件内连接,生成虚拟表VT2, 3.对上一步返回的虚拟表中的所有行应用where筛选器返回满足条件c.country='USA'的虚拟表VT3, 4.应用group by...Sales.Customers别名为c和表Sales.Orders别名为o应用ON筛选器以custid为条件左外连接,生成虚拟表VT1, 2.添加外部行,外部行中非保留表中的属性被赋值为NULL,生成虚拟表...Sales.Customers别名为c和表Sales.Orders别名为o应用ON筛选器以custid和o.orderdate='2007-2-12'为条件左外连接,生成虚拟表VT1, 2.添加外部行,
join_condition>的行才被插入虚拟表VT2中 JOIN:如果指定了OUTER JOIN(如LEFT OUTER JOIN ,RIGTH OUTER JOIN),那么保留表中未匹配的行作为外部行添加到虚拟表...,产生虚拟表VT9 ORDER BY:将虚拟表VT9中的记录按照进行排序操作,产生虚拟表VT10 LIMIT:取出指定行的数据,产生虚拟表VT11,并返回给查询用户 准备的数据如下...3 添加外部行 这一步只有在连接类型为OUTER JOIN时才发生,如LEFT OUTER JOIN,RIGHT OUTER JOIN,FULL OUTER JOIN。...虽然在大多数时候我们可以省略OUTER关键词,但OUTER代表的就是外部行。...c LEFT JOIN orders o 顾客有赞在VT2表中由于没有订单而被过滤,因此有赞作为外部行被添加到虚拟表VT2中,将非保留表中的数据赋值为NULL SELECT c.customer_id
union(或称为联合)的作用是将多个结果合并在一起显示出来。...外连接: 左连接(左外连接Left Join):以左表作为基准进行查询,左表数据会全部显示出来,右表如果和左表匹配的数据则显示相应字段的数据,如果不匹配则显示为 null。...右连接(右外连接 Right Join):以右表作为基准进行查询,右表数据会全部显示出来,左表如果和右表匹配的数据则显示相应字段的数据,如果不匹配则显示为 null。...全连接:先以左表进行左外连接,再以右表进行右外连接。 内连接( Inner Join): 显示表之间有连接匹配的所有行。...这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会会给调用者。如果没有在查询中指定某一个子句,将跳过相应的步骤。 4、常用的SQL 聚合函数?
SQL 查询中嵌套使用的查询,将内部查询的结果作为外部查询的数据源之一。...子查询的结果就好像是一个临时的虚拟表,可以被外部查询引用和操作。 通过子查询,我们可以实现更灵活、更精细的数据查询和操作,从而满足复杂的业务需求。...左外连接(Left Outer Join):左外连接会返回左表中所有的行,并且和右表中满足连接条件的行进行连接,如果右表中没有匹配的行,则会用 NULL 值填充。...右外连接(Right Outer Join):右外连接会返回右表中所有的行,并且和左表中满足连接条件的行进行连接,如果左表中没有匹配的行,则会用 NULL 值填充。...左外连接将返回左表 websites 中的所有行,同时匹配右表 access_log 中的行。
3.2 分组与Having子句 在SQL中,GROUP BY子句用于将结果集按一列或多列进行分组,而HAVING子句则用于在分组的基础上对分组进行过滤。...(LEFT JOIN) 左连接返回左表中所有行,以及右表中与左表中匹配行的交集。...(RIGHT JOIN) 右连接返回右表中所有行,以及左表中与右表中匹配行的交集。...如果左表中没有匹配的行,结果集中左表的列将包含 NULL 值。 基本语法如下: SELECT column1, column2, ......Tip:视图并不存储实际的数据,而是基于查询结果生成虚拟表。在某些数据库管理系统中,视图也可以用于实现安全性控制,只允许用户访问特定列或行。
自连接: 自连接通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。 笛卡尔积连接: 两张表中的每一条记录进行笛卡尔积组合,然后根据WHERE条件过滤虚拟结果集中的记录。...通过设置表别名,将一张表虚拟成多张表。...而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。...左连接是按照连接条件,返回两张表中满足条件的记录,以及左表中的所有记录,右表匹配不到显示为NULL。 ? SELECT [,......按照连接条件,返回两张表中满足条件的记录,以及右表中的所有记录,左表匹配不到显示为NULL ?
说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。 2....HAVING 3.1 基本使用 [在这里插入图片描述] 过滤分组:HAVING子句 行已经被分组。 使用了聚合函数。 满足HAVING 子句中条件的分组将被显示。...,每个步骤都会产生一个虚拟表,然后将这个虚拟表传入下一个步骤中作为输入。...-1 的基础上进行筛选,得到虚拟表 vt1-2; 添加外部行。...如果我们使用的是左连接、右链接或者全连接,就会涉及到外部行,也就是在虚拟表 vt1-2 的基础上增加外部行,得到虚拟表 vt1-3。
(1)特点 查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果没有匹配的则显示null。...(2)按结果集的行列 标量子查询(单行子查询):结果集为一行一列 列子查询(多行子查询):结果集为多行一列 行子查询:结果集为多行多列 表子查询:结果集为多行多列 【注】:子查询的分类较多,在使用的时候...tips:这个案例很好的展示了一种情况,子查询得到的结果,也可以直接放在select语句后面,作为查询列表被直接显示出来。 四、from后面 1、特点 将子查询结果充当一张表,要求必须起别名。...tips:在上面的案例中,我们总共分为两步进行查询,第一步查询出每个部门的平均工资之后,mysql中会产生一个虚拟表格,我们需要对这个虚拟表格起一个别名,这样才能够在后续添加连接条件的时候使用到此虚拟表...三、特点 (1)limit语句放在查询语句的最后 (2)公式 假如要显示的页数为page,每一页条目数为size,那么起始索引为: offset=(page-1)*size 四、示例 #案例:有奖金的员工信息
连接类型: 交叉联接 得到所连接表的所有组合 (笛卡儿集)cross join 内联接得到连接表的满足条件的记录组合inner join on 外联接(左、右)得到一个表的所有行,及其余表满 足连接条件的行...内联接 仅显示两个联接表中的匹配行的联接。(这是查询设计器中的默认联接类型。)...Sales.Customers别名为c和表Sales.Orders别名为o应用ON筛选器以custid和o.orderdate='2007-2-12'为条件左外连接,生成虚拟表VT1, 2.添加外部行,...外部行中非保留表中的属性被赋值为NULL,生成虚拟表VT2 3.处理select列表,从虚拟表VT2中查找出c.custid,c.companyname,o.orderid,o.orderdate生成虚拟表...Sales.Customers别名为c和表Sales.Orders别名为o应用ON筛选器以custid为条件左外连接,生成虚拟表VT1, 2.添加外部行,外部行中非保留表中的属性被赋值为NULL,生成虚拟表
2.ON 应用ON过滤器 对虚拟表VT1 应用ON筛选器,ON 中的逻辑表达式将应用到虚拟表 VT1中的各个行,筛选出满足ON 逻辑表达式的行,生成虚拟表 VT2 。...3.JOIN 添加外部行 如果指定了OUTER JOIN保留表中未找到匹配的行将作为外部行添加到虚拟表 VT2,生成虚拟表 VT3。...5.GROUP BY 分组 按GROUP BY子句中的列/列表将虚拟表 VT4中的行唯一的值组合成为一组,生成虚拟表VT5。...10.DISTINCT 行去重 将重复的行从虚拟表 VT8中移除,产生虚拟表 VT9。DISTINCT用来删除重复行,只保留唯一的。...同时,ORDER BY子句的执行顺序为从左到右排序,是非常消耗资源的。 12.LIMIT/OFFSET 指定返回行 从VC10的开始处选择指定数量行,生成虚拟表 VT11,并返回调用者。
d.使用主键和外键越多越好 复用原则,通过主键和外键的使用来增强数据表之间的复用率。因为一个主键可以理解为一张表的代表。键设置的越多,证明它们之间的利用率越高。...,每个步骤都会产生一个虚拟表,然后将这个虚拟表传入下一个步骤中作为输入。...,得到虚拟表vt1-2; 添加外部行。...如果我们使用的是左连接,右连接或者全连接,就会涉及到外部行,也就是在虚拟表vt1-2的基础上增加外部行,得到虚拟表vt1-3; 当然,如果我们操作的是两张表以上的表,还会重复上面的步骤,直到所有表都被处理完为止...然后进入第三步和第四步,也就是group和having阶段。在这个阶段中,时间上是在虚拟表vt2的基础上进行分组和分组过滤,得到中间的虚拟表vt3和vt4。
说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。...HAVING 3. 1 基本使用 过滤分组:HAVING子句 行已经被分组。 使用了聚合函数。 满足HAVING 子句中条件的分组将被显示。...,每个步骤都会产生一个虚拟表,然后将这个虚拟表传入下一个步 骤中作为输入。...-1 的基础上进行筛选,得到虚拟表 vt1-2; 添加外部行。...如果我们使用的是左连接、右链接或者全连接,就会涉及到外部行,也就是在虚拟表 vt1-2 的基础上增加外部行,得到虚拟表 vt1-3。
JOIN 连接 第三步,如果是 OUTER JOIN(left join、right join) ,那么这一步就将添加外部行,如果是 left join 就把 ON 过滤条件的左表添加进来,如果是 right...先条件查询后连接则用 ON,先连接后条件查询则用 WHERE; GROUP BY 根据 group by 字句中的列,会对 VT4 中的记录进行分组操作,产生虚拟机表 VT5。...事实上如果应用了 group by 子句那么 distinct 是多余的,原因同样在于,分组的时候是将列中唯一的值分成一组,同时只为每一组返回一行记录,那么所以的记录都将是不相同的。...JOIN) 、右外连接(RIGHT OUTER JOIN 或 RIGHT JOIN) 、全外连接(FULL OUTER JOIN 或 FULL JOIN) 左外连接:又称为左连接,这种连接方式会显示左表不符合条件的数据行...右外连接:也被称为右连接,他与左连接相对,这种连接方式会显示右表不 符合条件的数据行,左表不符合条件的数据行直接显示 NULL ?
SQL的整个解析、执行过程原理、SQL行转列?...每个操作都会产生一个虚拟表,该虚拟表作为一个处理的输入,看下执行顺序: (1) FROM:对FROM子句中的左表和右表执行笛卡儿积,产生虚拟表VT1;...(2) ON: 对虚拟表VT1进行ON筛选,只有那些符合的行才被插入虚拟表VT2; (3) JOIN: 如果指定了OUTER JOIN(如LEFT OUTER JOIN...、RIGHT OUTER JOIN),那么保留表中未匹配的行作为外部行添加到虚拟表VT2,产生虚拟表VT3。...如果FROM子句包含两个以上的表,则对上一个连接生成的结果表VT3和下一个表重复执行步骤1~步骤3,直到处理完所有的表; (4) WHERE: 对虚拟表VT3应用WHERE过滤条件
一.Nested Loopsb Join 1.定义 Nested Loops也称为嵌套迭代,它将一个联接输入用作外部输入表(显示为图形执行计划中的顶端输入),将另一个联接输入用作内部(底端)输入表。...外部循环逐行消耗外部输入表。内部循环为每个外部行执行,在内部输入表中搜索匹配行。最简单的情况是,搜索时扫描整个表或索引;这称为单纯嵌套循环联接。如果搜索时使用索引,则称为索引嵌套循环联接。...(内部联接)、Left Outer Join(左外部联接)、Left Semi Join(左半部联接)和Left Anti Semi Join(左反半部联接)逻辑操作。...(内部联接)、Left Outer Join(左外部联接)、Left Semi Join(左半部联接)、Left Anti Semi Join(左反半部联接)、Right Outer Join(右外部联接...=100是非连接谓词(对连接列的限制),salary=10000是单行谓词(对非连接列的限制)) 2.外连接时,一定是用显示的行数比较多的那个表作为驱动表。
文章目录 T-SQL基础技术 基本语法格式 代码准备:(可以按照我的实例自行建立数据库) 1、投影查询 a、投影指定的列 b、投影全部列 c、修改查询结果的列标题 d、去掉重复行 2、选择查询 a.表达式比较...、投影指定的列 b、投影全部列 c、修改查询结果的列标题 d、去掉重复行 此部分比较简单,直接上代码 -- 打开数据库 use sixstardb go -- 1、【投影查询数据】 -- 查询输出指定字段...a.连接谓词 在SELECT语句的WHERE子句中使用比较运算符给出连接条件对表进行连接,将这种表示形式称为连接谓词表示形式。...外连接的结果表不但包含满足连接条件的行,还包括相应表中的所有行。...外连接有以下3种: ●左外连接(LEFT OUTER JOIN):结果表中除了包括满足连接条件的行外,还包括左表的所有行; ●右外连接(RIGHT OUTER JOIN):结果表中除了包括满足连接条件的行外
【文字常用样式】 .display-{1到4} 标题类,显示更大的字号,值为1-4,display-1字号最大。 .small 更小、颜色更浅的字号。...设定文本小写 .text-uppercase 设定文本大写 .text-capitalize 设定单词首字母大写 .initialism 显示在 元素中的文本以小号字体展示,且可以将小写字母转换为大写字...将所有列表项放置同一行 .pre-scrollable 使 元素可滚动,代码块区域最大高度为340px,一旦超出这个高度,就会在Y轴出现滚动条 【文字颜色样式】 .text-muted 柔和的文本...默认是左对齐 .dropdown-header 下拉菜单标题 .dropdown-item 下拉菜单列表项目 .dropdown-divider 在下拉菜单中创建一个水平的分割线 .active 启用指定下拉菜单列表项目...链接类 .active 当前项 【列表: ul/ol/dl】列表默认样式为垂直样式,一个项目占据一行。
case_value WHEN when_value THEN statement_list ELSE statement_list END CASE; */ # 查询员工工资,要求部门号=30的显示的工资为...1.1倍 # 部门号为40的,显示的工资为1.2倍,其他部门原价显示 SELECT last_name, department_id, salary 工资, CASE department_id...`job_id` ; # 等值查询后可以进行模糊查询等,用AND语句连接即可 # 非等值连接 # 相较于等值查询的主要区别就是替换了查询语句的等于为其他判断符号 # 自连接 # 本质就是只在自己表内部的等值连接...,则显示null 左外连接,left左边的是主表 右外连接,left右边的是主表 左外和右外交换顺序,可以达到相同的效果 */ # 左外连接 SELECT b.name,boy.* FROM beauty....* FROM beauty b CROSS JOIN boys boy; 外连接 子查询 含义: 出现在其他语句中的select语句,称为子查询或内查询 外部出现的查询语句,称为主查或外查询 分类:
如果有匹配行,则子查询返回一个使外部查询包含 scores 表中的当前行的子查询。 ...略 full join 全连接 full join 略 left semi join 左半连接 只显示左表中的记录。...左半连接与左外连接的区别是,左半连接将返回左表中符合 join 条件的记录,而左外连接将返回左表所有的记录,匹配不上 join 条件的记录将返回 null 值。...与内连接功能相同,返回两表中满足 where 条件的结果集,但不用 join 显示指定连接条件 select student_info.name, course_info.courseName from...SUBQUERY 一个子查询的结果不能被缓存,必须重新评估外连接的第一行 table 显示这一行的数据是关于哪张表的 type 访问类型,all, index, rane, ref, eq_red,
领取专属 10元无门槛券
手把手带您无忧上云