PostgreSQL 中的 if 語句

David Mbochi Njonge 2022年5月14日
PostgreSQL 中的 if 語句

if 語句通過返回真或假值來評估條件。我們可以使用它來執行基於條件的查詢。

本教程將教我們如何編寫 if 語句查詢,並瞭解條件語句在開發後端應用程式時如何幫助我們。

在 PostgreSQL 中使用 if 語句編寫查詢以執行不同的操作

  1. 使用以下命令登入 PostgreSQL 伺服器。在返回的提示中輸入密碼並回車。

    david@david-HP-ProBook-6470b:~/Documents/work/upwork/jhinku-tutorials$ psql -U postgres
    Password for user postgres:
    
  2. 預設使用者 postgres 有一個名為 postgres 的資料庫,我們需要建立我們的資料庫,我們將使用它來測試我們的 if 語句查詢。

    postgres=#
    
  3. 使用以下命令建立一個新資料庫:

    postgres=# create database if_statement_db;
    CREATE DATABASE
    
  4. 要從 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=#
    
  5. 建立一個名為 phone 的表,其中包含欄位 idphone_namephone_colorphone_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
    
  6. 在電話表中插入一些記錄。這些記錄將幫助我們執行條件 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
    
  7. 在你的機器上建立一個檔案並將其命名為 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$
    

    我們的查詢將檢查表中是否存在任何記錄。如果存在記錄,這些記錄將從表中刪除。

    如果表沒有任何記錄,則查詢插入新記錄。

  8. 使用以下命令執行 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 Mbochi Njonge avatar David Mbochi Njonge avatar

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