Posts

Showing posts with the label databases

Common PostgreSQL Statements

Image
Introduction This article covers several common statements used in PostgreSQL, which are highly fundamental and frequently applied in almost all projects utilizing a database. General Concepts In SQL generally and PostgreSQL specifically, the terms Statement, Query and Clause are used very frequently, yet they remain technically distinct with clear boundaries and hierarchies. A Statement is like a complete sentence in a text. It is a fully executable, independent unit within a database. It begins with an action keyword and typically ends with a semicolon ; in execution. Examples include INSERT INTO products (name) VALUES ('Product name'); or an entire SELECT... block. A Query is a question, regarded as a special type of statement. It is a special case of a statement because it is only used to read data, not modify it. It mainly refers to the SELECT statement, such as SELECT email FROM customers WHERE id = 1; A Clause is like a phrase or clause that constructs the senten...

Using IN and NOT IN

Image
Introduction The IN clause is usually used in two main cases: Literal Values : When you already know the exact values to filter and the number of elements is small (from a few elements to a few dozen elements). Note that when parsing, Postgres will treat each item in Literal Values as a single node to execute the Parse Tree, so if the number of items is too large, it will consume a lot of RAM and CPU to process By the time planning is executed, the Query Planner will have to traverse this Tree to process, so you should be careful not to query with too many Literal Values as it will significantly affect performance It can be rewritten with EXISTS but it will make the query more complex, so if using Literal Values , it is best to use IN to keep the query simple and easy to understand An example of usage is filtering out orders with statuses like processing or completed . Dynamic List : When the filter list depends on the data of another table. In most cases, it can be replaced by usin...