本实验旨在深入理解并熟练运用openGauss数据库系统进行单表查询,包括但不限于简单查询、模糊查询、聚集函数、分组统计、排序、去重、空值处理、表别名以及自身连接等操作。实验内容涵盖了数据库查询的多个核心方面。
在openGauss中,单表查询的基础是SELECT语句,用于从单一表中检索数据。简单单表查询主要涉及选取特定列,如查询顾客表中的顾客号、顾客名和信用卡额度。这可以通过指定列名和表名完成,如`SELECT customer_id, name, credit_limit FROM customer`。
模糊查询允许使用通配符,例如`LIKE`关键字,来查找部分匹配的记录。在查询中,可以使用`%`表示任意数量的字符,`_`表示单个字符。例如,要查找产品名中包含“Kingston”的产品,可以使用`SELECT product_name FROM products WHERE product_name LIKE '%Kingston%'`。
聚集函数如COUNT(), SUM(), AVG(), MAX()和MIN()用于对一组值进行计算。例如,`SELECT COUNT(*) FROM orders`会返回订单表中的记录总数。而`GROUP BY`子句用于将数据按一个或多个列进行分组,`HAVING`短语则在分组后对结果进行过滤,与`WHERE`子句的区别在于它作用于分组后的结果而非原始数据。
`ORDER BY`用于对查询结果进行排序,如`SELECT order_id, customer_id, status, order_date FROM orders ORDER BY order_date DESC`将按照订单日期降序排列结果。
`DISTINCT`关键字用于去除查询结果中的重复行,如`SELECT DISTINCT product_id, quantity FROM order_items`将确保返回的每条产品和数量组合都是唯一的。
对于NULL值的处理,NULL在SQL中表示未知或未定义。在查询时,需要考虑其在比较和运算中的特殊性。例如,`NULL`不等于任何值,包括`NULL`自身,所以`WHERE column = NULL`这样的条件不会返回任何结果。
表别名的使用可以简化查询语句,提高可读性,如`SELECT c.customer_id, c.name FROM customer AS c`。自身连接常用于处理具有自引用关系的表,例如在一个员工表中找出每个人的直接上级。
最后,查询还可以包含计算字段和列重命名,如`SELECT product_name, (list_price - standard_cost) AS gross_profit FROM products ORDER BY gross_profit DESC`,这将显示产品名和计算出的毛利,并按毛利降序排列。
通过这些实验步骤,学习者将能够全面掌握openGauss的单表查询能力,从而能够根据实际需求设计和执行复杂的SQL查询。