HOWTO · Postgres
PostgreSQL 中的 if 語句
本教程向讀者展示如何編寫包含 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)