PostgreSQL 中的 if 語句
if
語句通過返回真或假值來評估條件。我們可以使用它來執行基於條件的查詢。
本教程將教我們如何編寫 if
語句查詢,並瞭解條件語句在開發後端應用程式時如何幫助我們。
在 PostgreSQL 中使用 if
語句編寫查詢以執行不同的操作
-
使用以下命令登入 PostgreSQL 伺服器。在返回的提示中輸入密碼並回車。
david@david-HP-ProBook-6470b:~/Documents/work/upwork/jhinku-tutorials$ psql -U postgres Password for user postgres:
-
預設使用者
postgres
有一個名為postgres
的資料庫,我們需要建立我們的資料庫,我們將使用它來測試我們的if
語句查詢。postgres=#
-
使用以下命令建立一個新資料庫:
postgres=# create database if_statement_db; CREATE DATABASE
-
要從
postgres
資料庫轉移到if_statement_db
,請使用下面提供的命令並注意我們以使用者postgres
連線到新資料庫。postgres=# \c if_statement_db; You are now connected to database "if_statement_db" as user "postgres". if_statement_db=#
-
建立一個名為
phone
的表,其中包含欄位id
、phone_name
、phone_color
和phone_price
。使用下面提供的資料定義查詢。if_statement_db=# create table phone( if_statement_db(# id SERIAL UNIQUE NOT NULL, if_statement_db(# phone_name varchar(50), if_statement_db(# phone_type varchar(50), if_statement_db(# phone_price integer, if_statement_db(# PRIMARY KEY(id)); CREATE TABLE
-
在電話表中插入一些記錄。這些記錄將幫助我們執行條件 if 語句查詢。
if_statement_db=# insert into phone(phone_name, phone_type, phone_price) if_statement_db-# values('Sumsung A7', 'Refurbished',600); INSERT 0 1 if_statement_db=# insert into phone(phone_name, phone_type, phone_price) if_statement_db=# values('Motorola', 'new',800); INSERT 0 1 if_statement_db=# insert into phone(phone_name, phone_type, phone_price) if_statement_db=# values('Iphone 10', 'new',700); INSERT 0 1
-
在你的機器上建立一個檔案並將其命名為
data.sql
或你喜歡的任何名稱。編寫要針對此檔案中的電話表執行的if
語句查詢。示例(
data.sql
):DO $do$ BEGIN IF EXISTS(SELECT * FROM phone) THEN DELETE FROM phone; ELSE INSERT into phone(phone_name, phone_type, phone_price) VALUES('Sumsung A7', 'Refurbished',600); INSERT into phone(phone_name, phone_type, phone_price) VALUES('Motorola', 'new',800); INSERT into phone(phone_name, phone_type, phone_price) VALUES('Iphone 10', 'new',700); END IF; END $do$
我們的查詢將檢查表中是否存在任何記錄。如果存在記錄,這些記錄將從表中刪除。
如果表沒有任何記錄,則查詢插入新記錄。
-
使用以下命令執行
data.sql
檔案。由於我們的表包含一些值,我們應該期望執行刪除操作,因為if
條件將評估為真。if_statement_db=# \i /home/david/Documents/work/upwork/jhinku-tutorials/data.sql; DO
檢索資料庫中所有值的查詢返回零記錄。
if_statement_db=# select * from phone;
輸出:
id | phone_name | phone_type | phone_price ----+------------+------------+------------- (0 rows)
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub