别名

可以在 SELECT 语句的 FROM 子句中将别名指定给表,以使多表查询更节省时间,可读性更高。每当要使用表名时,就可以使用别名,例如:在其他子句中作为列名的前缀。

图: 查询

SELECT s.stock_num, s.manu_code, s.description, 
          s.unit_price, c.catalog_num, 
          c.cat_advert, m.lead_time
          FROM stock s, catalog c, manufact m
          WHERE s.stock_num = c.stock_num
          AND s.manu_code = c.manu_code
          AND s.manu_code = m.manu_code
          AND s.manu_code IN ('HRO', 'HSK')
          AND s.stock_num BETWEEN 100 AND 301
          ORDER BY catalog_num; 
SELECT 语句的相关特性允许您在定义别名之前使用别名。在此查询中,stock 表的别名是 scatalog 表的别名是 cmanufact 表的别名是 m,它们分别在 FROM 子句中指定。并在整个 SELECT 和 WHERE 子句中用作列前缀。
图 1 的长度与下列查询比较,后者不使用别名。

图: 查询

SELECT stock.stock_num, stock.manu_code, stock.description,
          stock.unit_price, catalog.catalog_num, 
          catalog.cat_advert, 
          manufact.lead_time
          FROM stock, catalog, manufact
          WHERE stock.stock_num = catalog.stock_num
          AND stock.manu_code = catalog.manu_code
          AND stock.manu_code = manufact.manu_code
          AND stock.manu_code IN ('HRO', 'HSK')
          AND stock.stock_num BETWEEN 100 AND 301
          ORDER BY catalog_num; 
图 1图 2 是等价的且都检索到以下查询显示的数据。

图: 查询结果

stock_num    110
          manu_code    HRO
          description  helmet
          unit_price   $260.00
          catalog_num  10033
          cat_advert   Lightweight Plastic with Vents Assures Cool 
          Comfort Without Sacrificing Protection
          lead_time       4 
          
          stock_num    110
          manu_code    HSK
          description  helmet
          unit_price   $308.00
          catalog_num  10034
          cat_advert   Teardrop Design Used by Yellow Jerseys; You 
          Can Time the Difference
          lead_time       5
          ⋮

不能将 ORDER BY 子句用于 TEXT 列 cat_descr 或 BYTE 列 cat_picture

可以使用别名来缩短对不在当前数据库中的表的查询时间。

下列查询连接驻留在不同数据库和系统(均不是当前数据库或系统)中的 2 个表中的列。

图: 查询

SELECT order_num, lname, fname, phone
          FROM masterdb@central:customer c, sales@western:orders o
          WHERE c.customer_num = o.customer_num
          AND order_num <= 1010; 
通过分别将 c 和 o 指定给长 database@system:table 名称 masterdb@central:customersales@western:orders,您可以使用别名来缩短 WHERE 子句中的表达式并检索数据,如下所示。

图: 查询结果

order_num lname           fname           phone
          
          1001 Higgins         Anthony         415-368-1100
          1002 Pauli           Ludwig          408-789-8075
          1003 Higgins         Anthony         415-368-1100
          1004 Watson          George          415-389-8789
          1005 Parmelee        Jean            415-534-8822
          1006 Lawson          Margaret        415-887-7235
          1007 Sipes           Arnold          415-245-4578
          1008 Jaeger          Roy             415-743-3611
          1009 Keyes           Frances         408-277-7245
          1010 Grant           Alfred          415-356-1123

有关如何访问不在当前数据库中的表的更多信息,请参阅访问其他数据库服务器GBase 8s SQL 指南:语法

还可以使用同义词作为不在当前数据库中的表以及当前表和视图的长名称的简写引用,有关如何创建和使用同义词的详细信息,请参阅 GBase 8s 数据库设计和实现指南