postgresql 常用操作
登录
Linux 终端可直接访问本机的 PostgreSQL
切换到Linux用户postgres,然后执行psql:
1root@lenovo-e47-1no6e7d:~# su - postgres
2postgres@lenovo-e47-1no6e7d:~$ psql
3psql (15.4)
4Type "help" for help.
5
6postgres=#
此时就在数据库postgres中了。
说明:完整地登录postgresql的命令为:
psql -h hostname -U username -d dbname -p port
上面命令的参数含义如下:
-U 指定用户
-d 指定数据库
-h 指定服务器
-p 指定端口
例如:psql -h 192.168.196.16 -U zc -d test -p 5432
常用命令(必须先在终端登录)
1\password:设置密码
2\q:退出
3\h:查看SQL命令的解释,比如\h select。
4
5\?:查看psql命令列表。
6\l:列出所有数据库。
7
8\c [database_name]:连接其他数据库。
9\d:列出当前数据库的所有表格。
10
11\d [table_name]:列出某一张表格的结构。
12
13\du:列出所有用户。
14\e:打开文本编辑器。
15\dn: 查看当前的多模式简略信息
16\dn+: 查看当前的多模式详细信息
17\conninfo:列出当前数据库和连接的信息。
关于 schema
介绍:https://blog.csdn.net/hmxz2nn/article/details/82715192
PostgreSQL 模式(SCHEMA)可以看着是一个表的集合。
一个模式可以包含视图、索引、数据类型、函数和操作符等。
相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schemaA 和 schemaB 都可以包含名为 mytable 的表。
使用模式的优势:
允许多个用户使用一个数据库并且不会互相干扰。
将数据库对象组织成逻辑组以便更容易管理。
第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。
模式类似于操作系统层的目录,但是模式不能嵌套。
示例:创建模式 basedata,并在该模式下创建表 company
1zhangcong@DESKTOP-A13UN6S D:\dev\pgsql\bin
2# psql -h 192.168.196.16 -U zc -d test
3psql (15.4)
4输入 "help" 来获取帮助信息.
5
6
7
8test=# create schema basedata;
9CREATE SCHEMA
10
11
12test=#
13test=# create table basedata.company(
14test(# ID INT NOT NULL,
15test(# NAME VARCHAR (20) NOT NULL,
16test(# AGE INT NOT NULL,
17test(# ADDRESS CHAR (25),
18test(# SALARY DECIMAL (18, 2),
19test(# PRIMARY KEY (ID)
20test(# );
21CREATE TABLE
如果创建表时不指定模式,默认将表放到public模式下。
因为每当我们创建一个新的数据库时,postgresql都会自动创建一个名为“public”的模式。
修改模式
ALTER SCHEMA 表示修改一个模式的定义。
要使用ALTER SCHEMA,你必须是该模式的所有者(超级用户自动拥有全部权限)。
修改模式 名称:ALTER SCHEMA name RENAME TO new_name;
修改模式 的所有者:ALTER SCHEMA name OWNER TO new_owner;
要给一个模式重命名(RENAME),你必须在该数据库上有CREATE权限。
要修改所有者(OWNER),你还必须是新的所有角色的直接或间接成员, 并且该成员必须在此数据库上有CREATE权限。
删除模式(模式只能被它的所有者或者超级用户删除)
1
2删除空模式
3
4DROP SCHEMA myschema;
5删除模式及其包含对象
6
7DROP SCHEMA myschema CASCADE;
模式搜索路径
全称的名字写起来非常费劲,并且我们最好不要在应用里直接写上特定的模式名。
因此,表通常都是用未修饰的名字引用的,这样的名字里只有表名字。
系统通过查找一个搜索路径来判断一个表究竟是哪个表,这个路径是一个需要查找的模式列表。
在搜索路径里找到的第一个表将被当作选定的表。
如果在搜索路径中没有匹配表,那么就报告一个错误,即使匹配表的名字在数据库其它的模式中存在也如此。
查看当前搜索路径,使用命令:
SHOW search_path;
在缺省的设置中,返回下面的东西:
1 test=# SHOW search_path;
2 search_path
3-----------------
4 "$user", public
5(1 row)
结果显示的是search_path的默认设置,从这个默认设置可以看到“public”模式总是在搜索路径中。
第一个模式是$user,表示将要搜索一个和当前用户同名的模式。 因为还没有这样的模式存在,所以这条记录被忽略。
第二个元素指向public模式。
所以一般情况下,若创建的表默认没有指定模式,那都会在“public”模式下。
把新创建的模式 myschema 放到路径中来:
1test=# SET search_path TO "$user",myschema,public;
2SET
3test=# SHOW search_path;
4 search_path
5---------------------------
6 "$user", myschema, public
7(1 row)
评论