1. 概述
PostgreSQL是一个免费的关系型数据库服务器(ORDBMS)
2. 登录数据库
以用户的名义登录数据库,这时使用的是psql命令
psql -h 127.0.0.1 -U dbuser -p 5832 -d database
上面的命令的参数含义如下:
- -h 指定服务器
- -p 指定端口
- -U 指定用户
- -d 指定数据库
输入上面的命令以后,系统会提示输入dbuser用户的密码。输入正确,就可以登录控制台了。
3. 控制台命令
操作 | 命令 |
设置密码 |
password dbuser |
退出控制台 | q |
查看SQL命令的解释 | h command ,如h select |
查看psql命令列表 | ? |
列出所有数据库 | l |
进入其他数据库 | c [database_name] |
列出当前数据库的所有表格 | d |
列出某一张表的结构 | d [table_name] |
列出所有用户 | du |
打开文本编辑器 | e |
列出当前数据库和连接的信息 | conninfo |
4. PSQL数据库操作命令
操作 | 命令 |
创建数据库 | create database [db_name]; |
删除数据库 | drop database [db_name]; |
查询所有数据库 | select datname from PG_DATABASE; / select * from PG_DATABASE; |
查询某一数据库的所有表 | select table_name FROM information_schema.tables where table_schema = 'public'; |
创建表 |
create table if not exists ke_p_role ( |
插入表数据 | insert into ke_p_role values ('1', 'Administrator', '1', 'Have all permissions'), ('2', 'Devs', '2', 'Own add or delete'), ('3', 'Tourist', '3', 'Only viewer') |
根据字段,不存在则插入,存在则更新 |
create table if not exists ke_topic_rank ( insert into ke_topic_rank values ('test1','test2','test3', 7) on conflict (cluster,topic,tkey) do update set tvalue=excluded.tvalue; |
查询记录 | select * from user_tbl; |
查询记录,带limit和offset偏移量 | select * from ke_consumer_group_summary where cluster='cluster1' limit 2 offset 0; |
递归查询 |
with recursive summary as ( |
查询,coalesce判断是否为空 如果a.logsize为空,则返回右边的0 |
select coalesce(sum(a.logsize),0) from (select logsize from ke_logsize where cluster='cluster1' and topic in ('phone') and tm='20200615' order by timespan desc limit 1) a |
查询,ifnull,为空则返回0 |
select ifnull(lag,0) from ke_consumer_bscreen where cluster='cluster1' and tm='20200713' and "group"='consumer' and topic='topic1' order by timespan desc limit 1 |
更新数据 | update user_tbl set name = '李四' where name = '张三'; |
删除数据 | delete from user_tbl where name = '李四' ; |
添加表字段 | alter table user_tbl add email varchar(40); |
更新表字段 | alter table user_tbl alter column signupdate set not null; |
重命名表字段 | alter table user_tbl rename column signupdate to signup; |
删除表字段 | alter table user_tbl drop column email; |
重命名表名 | alter table user_tbl rename to backup_tbl; |
删除表名 | drop table if exists backup_tbl; |
清空表数据 | truncate table ke_alarm_config; |
查询postgres当前的连接数 | select * from pg_stat_activity; |
postgres的最大连接数 | show max_connections; |
5. 总结
【参考资料】
https://pg.sjk66.com/postgresql/create-table.html PostgreSQL 创建表 CREATE TABLE
https://www.alibabacloud.com/help/zh/doc-detail/52951.htm PostgreSQL UPSERT的功能与用法
https://blog.csdn.net/u011402596/article/details/38510547 postgresql的show databases、show tables、describe table操作
https://yanbin.blog/postgresql-unnest-batch-crud-merge/ PostgreSQL 批量插入, 更新和合并操作
https://blog.csdn.net/qq_43639296/article/details/90667860 postgresql中类似IFNULL用法
https://www.cnblogs.com/Paul-watermelon/p/10401344.html PostgreSQL入门教程(命令行)