- Learning PostgreSQL 11
- Salahaldin Juba Andrey Volkov
- 567字
- 2021-07-02 13:11:39
The SELECT and PROJECT operations
SELECT is used to restrict tuples from the relation. SELECT always returns a unique set of tuples; that is inherited from entity integrity constraint. For example, the query give me the customer information where the customer_id equals 2 is written as follows:
The selection, as mentioned earlier, is commutative; the query give me all customers where the customer's email is known, and the customer's first name is kim is written in three different ways, as follows:
The selection predicates are certainly determined by the data types. For numeric data types, the comparison operator might be ≠, =, <, >, ≥, or ≤. The predicate expression can also contain complex expressions and functions. The equivalent SQL statement for the SELECT operator is the SELECT * statement, and the predicate is defined in the WHERE clause.
The following SELECT statement is equivalent to the relational algebra expression σcustomer_id =2 customer:
SELECT * FROM customer WHERE customer_id = 2;
The PROJECT operation could be visualized as a vertical slicing of the table. The query give me the customer names is written in relational algebra as follows:
The following is the result of projection expression:

Duplicate tuples are not allowed in the formal relational model; the number of tuples returned from the PROJECT operator is always equal to or less than the number of total tuples in the relation. If a PROJECT operator's attribute list contains a primary key, then the resultant relation has the same number of tuples as the projected relation.
The projection operator also can be optimized, for example, cascading projections could be optimized as the following expression:
The SQL equivalent for the PROJECT operator is SELECT DISTINCT. The DISTINCT keyword is used to eliminate duplicates. To get the result shown in the preceding expression, one could execute the following SQL statement:
SELECT DISTINCT first_name, last_name FROM customers;
The sequence of the execution of the PROJECT and SELECT operations can be interchangeable in some cases. The query give me the name of the customer with customer_id equal to 2 could be written as follows:
In other cases, the PROJECT and SELECT operators must have an explicit order, as shown in the following example; otherwise, it will lead to an incorrect expression. The query give me the last name of the customers where the first name is kim could be written in the following way:
- Raspberry Pi for Python Programmers Cookbook(Second Edition)
- PyTorch自然語言處理入門與實戰(zhàn)
- Julia機器學(xué)習(xí)核心編程:人人可用的高性能科學(xué)計算
- Spring實戰(zhàn)(第5版)
- FLL+WRO樂高機器人競賽教程:機械、巡線與PID
- Functional Kotlin
- PhoneGap:Beginner's Guide(Third Edition)
- Python應(yīng)用與實戰(zhàn)
- 3ds Max 2018從入門到精通
- 編寫高質(zhì)量代碼之Java(套裝共2冊)
- Python Business Intelligence Cookbook
- 零基礎(chǔ)學(xué)西門子PLC編程:入門、提高、應(yīng)用、實例
- Java程序設(shè)計
- Java Web應(yīng)用設(shè)計及實戰(zhàn)
- Python架構(gòu)模式:精通基于Python的API設(shè)計、事件驅(qū)動架構(gòu)和包管理