目录
0.环境
windows11 + pgAdmin4 8.10
1.相关知识点
占位符如何理解?
SQL语句中的占位符是一种用于代表参数的特殊符号,通常以"?"或":"开头。它们被用来构建可重用的SQL语句,通过在运行时绑定实际的参数值,以生成具体的SQL语句。
举例:以下sql查询中的【:v1】就是占位符,在命令行输入执行sql语句的命令时,需要给v1传参,如【v1=1】,在执行时,就会把1这个数值传给sql语句中v1的位置再查询。
SELECT t.id, t.name
FROM test t
WHERE id = :v1
2.举例
一个简单的查询,但是要求某个参数需要从命令行输入,如
我有一张表如下,我想查询【id为1的行】
正常查询语句非常简单
SELECT t.id, t.name
FROM test t
WHERE id=1
但是现在【id=1】这个条件,我不想在sql语句中输入,我希望使用psql命令行执行sql语句,并且在输入的命令行中使用占位符,将【id=1】这个条件传入,改如何做呢?
答:
将【id=1】这个条件,用占位符替换,改为【id = :v1】
然后在执行命令psql命令语句时,用【v1=1】代替 id=1来使用
3.详细操作
1)在pgAdmin界面中,找到执行psql的位置,在菜单栏 - Tools - PSQL Tool 中,下面称为【psql命令行环境】
2)修改sql语句,使用占位符替换想要在命令行输入的变量
SELECT t.id, t.name
FROM test t
WHERE id=:v1
3)将sql语句放入一个文本文件,并改名为【test.sql】,我就直接放D盘下了,好找,一会我们用psql命令行来执行这个test.sql文件。
4)在psql命令行环境中,输入命令执行这个【test.sql】
输入命令如下:
psql -h localhost -p 5432 -d postgres -U postgres -v v1=1 -f "D:\test.sql"
对应参数含义:
参数 | 含义 |
-h | 参数后面跟的是数据库服务器的主机名或IP地址 |
-p | 参数用于指定数据库服务器的端口号 |
-d | 参数后面跟的是要连接的数据库的名称(我的数据库交postgres) |
-U | 参数后面跟的是用于连接数据库的用户名(我的用户名为postgres) |
-v | 参数用于设置 psql 变量,即占位符 |
-f | 参数后面跟的是要执行的 SQL 脚本文件的路径 |
刚打开的psql命令行界面是这样的,输入命令后会发现没有报错也没有返回
是因为运行环境(postgres=#)不对,此时我们需要使用命令【\q】退出当前环境
可以看到 \q 之后,进入了一个新运行环境,如下图
然后我们再执行【test.sql】,就会发现有筛选的结果了
此时我们用【v1=1】代替了【test.sql】中的【id=1】
至此,占位符的使用分享完了
--END--