编写脚本
参数是 v1,使用方式:冒号:+参数v1
select m.movieid,r.rating
from users u join ratings r ON u.userid =r.userid
join movies m
on r.movieid =m.movieid
where u.userid =:v1;
使用第一种方式就行,第二种目前对我有问题,并且还不知道能不能传参。
(1)不登陆psql
postgresql的自带的数据库管理工具是psql,该工具十分稳定,可靠,Windows和Linux系统都有,因此,是运行SQL脚本的首选。
set client_encoding to 'utf8';如果执行脚本报编码问题,在脚本中加入该命令,因为客户端是gbk编码
psql -U username -d myDataBase -f “C:\Users\70201\Desktop\新建文件夹 (2)\作业2.sql”
##username是登陆用户名,mydatabase是要登陆哪个数据库,-f后接脚本绝对路径
1.进入PostgreSQL的bin目录,从此处进入cmd
2.执行脚本 -u是用户名 -v是传参
(2)登陆psql
1.搜索sql shell
2.登录
直接回车进入默认库postgres
口令输入用户密码,我的是123456
\l ##列举数据库
\c 数据库名称 ##切换数据库
\encoding 显示字符集:
\d 表名 查看某个库中的某个表结构
\dn 查看模式
查看模式下的表,模式.表名。如果不加则报错:关系“表名”不存在。因为默认是在模式public下
切换模式a,因为默认是在public模式下(我这里没有是我删除public了,但是pg还是会在public下找表)
\dt 查看表
查看表数据
\i 脚本名 ##绝对路径,执行这个脚本
我这里访问受限,等以后再解决
退出psgl:\q
报错:关系“表名”不存在。
错误原因:postgres数据库,使用程序连接默认进入的是public的schema。此处我选择在public下建表,如果以后需要切换模式,到时再用下面方法
解决方法:切换模式schema。
SET search_path=test_schema;