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)