站长工具搜一搜,长沙网站设计培训,网页游戏排行榜前十名2023,做seo需要投入的成本目录
一、使用表别名
二、使用不同类型的联结
1.自联结
2.自然联结
3.外部联结
3.使用带聚集函数的联结
4.使用联结和联结条件 一、使用表别名
别名除了用于列名和计算字段外#xff0c;SQL还允许给表名起别名。
起别名有两个好处#xff1a;
一个是缩短SQL语句SQL还允许给表名起别名。
起别名有两个好处
一个是缩短SQL语句一个是允许在单条select语句中多次使用相同的表。
示例
输入select prod_name,prod_desc from products as p,vendors as v where p.vend_id v.vend_id and prod_price 4.5;
输出 from子句中两个表都有别名products AS p建立p作为products的别名等等。这使得能使用省写的p而不是全名products。在此例子中表别名只用于where子句。但是表别名不仅能用于where子句它还可以用于select的列表、order by子句以及子句的其他部分。 注意表别名只在查询执行中使用。与列别名不一样表别名不反悔到客户机。 二、使用不同类型的联结
1.自联结
当在相同的一张表中查询且该表的表名要出现2次在select语句中时使用自联结。即自己和自己联结。
使用子查询
输入select prod_id,prod_name from products where vend_id (select vend_id from products where prod_id 2);
使用自联结
输入 select p1.prod_id,p2.prod_name from products as p1,products as p2 where p1.vend_id p2.vend_id and p2.prod_id 2;
输出 products第一次出现为别名p1第二次出现为别名p2。select语句使用p1前缀明确的给出所需列的全名如果不这样MySQL将返回错误的数据。 自联结和子查询都可以进行在相同的表中进行查询返回的结果是相同的但是自联结更快一些。 2.自然联结
自然联结排除多次出现使每个列只返回一次。
示例
输入
select c.*,o.order_num,o.order_date from customers as c,orders as o where c.cust_id o.cust_id and prod_id 3;
在这个例子中通配符只对第一个表使用所有其他列明确列出所以没有重复的列被检索出来。
3.外部联结
许多联结将一个表的行与另一个表中的行进行联结但有时候会需要包含没有关联行的那些行。
联结包含了那些在相关表中没有关联行的行。这种类型的联结被称为外部联结。
示例
输入select customers,cust_id,orders.order_num from customers inner join orders on customers.cust_id orders.cust_id; 此处的inner join用来指定表只不过要用on进行联结而不是where传递出给on的实际条件与传递给where的相同。 输入select customers.cust_id,orders.order_num from customers left outer join orders on customers.cust_id orders_id;
以上两个查询语句返回的结果是相同的。
第二条select语句采用了outer join来指定联结的类型代替where。但是与内部联结关联两个表中的行不同的是外部联结还包括没有关联的行。在使用outer join语法时必须使用right或left关键字指定包括其所有行的表right指出的是outer join右边的表left则相反。left outer join则是选择from子句中左边的表customers表中选择所有行right outer join 则是选择orders表中的所有行。 注意在外部联结中可通过颠倒from或where子句中的表的顺序转换为右外部联结。因此两种类型的外部联结都可以互换使用。 3.使用带聚集函数的联结
聚集函数用来汇总数据。这些函数也可以和联结一起使用。
4.使用联结和联结条件 注意所使用的联结类型。一般使用内部联结但使用外部联结也是有效的保证使用正确的联结条件否则将返回不正确的数据应该总是提供联结条件否则会得出笛卡儿积在一个联结中可以包含多个表甚至对于每个联结可以采用不同的联结类型。但应该在测试它们之前分别测试每个联结。这将使故障排除更为方便。