postgreSQL 常用命令 二

时间:2023-02-15 08:18:36
  • 本次测试基与PostgreSQL 10.x版本

  • 创建用户

[postgres@rtm2 data]$ /opt/pgsql-10/bin/createuser rentaomin
[postgres@rtm2 data]$
  • 登陆psql查询创建的用户
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
rentaomin | | {} postgres=#
  • 创建数据库
[postgres@rtm2 data]$ /opt/pgsql-10/bin/createdb rmttest;
[postgres@rtm2 data]$
  • 查询创建的数据库
[postgres@rtm2 data]$ psql
psql (10.3)
Type "help" for help. postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
rmttest | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows) postgres=#
  • PostgreSQL 创建数据库名称第一个字符必须为 字母
postgres=# create database 12rt;
ERROR: syntax error at or near "12"
LINE 1: create database 12rt;
^
postgres=#
  • 数据库名称不能超过 63byte ,数据名称中间包含特殊字符,对于长于63字节的会 自动删除 多出的字节保留剩下的作为数据库名称
postgres=# create database qw12dd;
CREATE DATABASE
postgres=# create database rentaominrentaominrentaominrentamdsfsdfsdfsdfsdfsfsdfsdf;
CREATE DATABASE
postgres=# create database rentaominrentaominrentaominrentamdsfsdfsdfsdfsdfsfsdfsdfsdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffwewerwerwerwerewrewrwer;
NOTICE: identifier "rentaominrentaominrentaominrentamdsfsdfsdfsdfsdfsfsdfsdfsdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffwewerwerwerwerewrewrwer" will be truncated to "rentaominrentaominrentaominrentamdsfsdfsdfsdfsdfsfsdfsdfsdfffff"
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------------------------------------------------------------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
qw12dd | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
rentaominrentaominrentaominrentamdsfsdfsdfsdfsdfsfsdfsdf | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
rentaominrentaominrentaominrentamdsfsdfsdfsdfsdfsfsdfsdfsdfffff | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(6 rows) postgres=#
  • 查看系统版本
postgres=# select version();
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 10.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
(1 row) postgres=# ^C
postgres=#
  • psql命令行 CREATE TABLE,跨行时直接按 ENTER 键或者 \ 表示换行
test=# create table s (
test(# id serial,
test(# age int ,
test(# date timestamp default now()
test(# );
CREATE TABLE
test=# \d+ s
Table "public.s"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+-----------------------------+-----------+----------+-------------------------------+---------+--------------+-------------
id | integer | | not null | nextval('s_id_seq'::regclass) | plain | |
age | integer | | | | plain | |
date | timestamp without time zone | | | now() | plain | | test=#
  • psql 中的 real 数据类型,用于存储单精度的浮点数(32位浮点数)

  • psql 除支持标准的sql数据类型外,还可以自定义任意数量的数据类型,类型名称不能为关键字,除非要求支持sql标准的特殊情况。

  • 数据类型为 point

test=# create table s (
test(# id serial,
test(# age int ,
test(# date timestamp default now()
test(# );
CREATE TABLE
  • 插入数据,坐标必须用 单括号 包起来
test=# insert into cities values ('北京','(-192.0,53.0)');
INSERT 0 1
test=# select * from cities ;
name | location
------+-----------
北京 | (-192,53)
(1 row) test=#
  • character varying(80) 数据类型与varchar(80) 相同,postgreSQL 默认创建的表名为 小写

  • 外键约束

test=# create table city (
test(# cityName varchar(80) primary key,
test(# location point
test(# );
CREATE TABLE test=# create table weather (
city varchar(80) references city (cityName),
temp_lo int ,
temp_hi int , -- hight temratory
prcp real ,
date date
);
CREATE TABLE
  • 若直接向 weather 插入数据,则会报错
test=# insert into weather values('湖南',13,34,0.12345678,'2018-05-20');
ERROR: insert or update on table "weather" violates foreign key constraint "weather_city_fkey"
DETAIL: Key (city)=(湖南) is not present in table "city".
  • 必须先 city 表插入数据,才能向 weather 插入数据
test=# insert into city values ('湖南','(-192.0,45)');
INSERT 0 1
test=# select * from city;
cityname | location
----------+-----------
湖南 | (-192,45)
(1 row) test=# insert into weather values('湖南',13,34,0.12345678,'2018-05-20');
INSERT 0 1
test=# select * from weather ;
city | temp_lo | temp_hi | prcp | date
------+---------+---------+----------+------------
湖南 | 13 | 34 | 0.123457 | 2018-05-20
(1 row) test=#
  • 注意 ,此处在插入的数据类型为real的数据实际为0.12345678,但是在表中实际的数据为0.1234567,是由于 real为单精度浮点数类型(32位浮点数)

  • 显示声明事务块

BEGIN; UPDATE accounts SET balance = balance - 100.00    WHERE name = 'Alice'; -- etc etc COMMIT;
  • 同时删除多张表
test=# \d+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+-----------+----------+----------+------------+-------------
public | cities | table | postgres | 8192 bytes |
public | city | table | postgres | 8192 bytes |
public | p | table | postgres | 16 kB |
public | p_id_seq | sequence | postgres | 8192 bytes |
public | s | table | postgres | 0 bytes |
public | s_id_seq | sequence | postgres | 8192 bytes |
public | t | table | postgres | 8192 bytes |
public | t2 | table | postgres | 0 bytes |
public | t2_id_seq | sequence | postgres | 8192 bytes |
public | t_id_seq | sequence | postgres | 8192 bytes |
public | userinfo | view | postgres | 0 bytes |
public | weather | table | postgres | 8192 bytes |
(12 rows)
test=# drop table cities, t2, t;
DROP TABLE
  • 创建继承表,PostgreSQL 中表可以 继承多张表
test=# create table person (id serial ,name varchar(80),age int );
CREATE TABLE
test=# create table sex (state char(1)) inherits (person);
CREATE TABLE test=# insert into sex (name,age,state) values ('张三',22,1);
INSERT 0 1
test=# insert into sex (name,age,state) values ('李四',23,0);
INSERT 0 1 test=# insert into sex (name,age,state) values ('成杰',23,0);
INSERT 0 1
test=# insert into sex (name,age,state) values ('李文杰',23,0);
INSERT 0 1
test=# insert into sex (name,age,state) values ('王麻子',25,1);
INSERT 0 1
  • 查询表,其中 Only支持SELECT,UPDATE,DELETE;
test=# select * from sex ;
id | name | age | state
----+--------+-----+-------
5 | 成杰 | 23 | 0
6 | 李文杰 | 23 | 0
7 | 王麻子 | 25 | 1
(3 rows) test=# select * from person;
id | name | age
----+--------+-----
1 | 张三 | 22
2 | 李四 | 23
5 | 成杰 | 23
6 | 李文杰 | 23
7 | 王麻子 | 25
(5 rows) test=# select * from only person;
id | name | age
----+------+-----
1 | 张三 | 22
2 | 李四 | 23
(2 rows) test=#
  • zlib 包用于支持 pg_dump and pg_restore.

postgreSQL 常用命令 二的更多相关文章

  1. [转] postgresql常用命令

    PS: 数据库安装后,里面的每个数据库有自己的用户密码,需要dump的时候,指定用户pg_dump -U xxx <数据库>  > 某个地址 最近一直在学习Postgresql,下面 ...

  2. linux初学 &colon;linux 常用命令&lpar;二&rpar;

    压缩和解压命令 gzip/guzip   zip/unzip   tar gzip和gunzip一般可用参数是-r,例: gzip test.txt 压缩文件 gzip -r test 压缩所有tes ...

  3. Git的基本原理与常用命令&lbrack;二&rsqb;

    标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 git 的四个区域 四种状态 常用命令 git add #加入暂存(索引区) git ...

  4. linux常用命令二

    linux常用命令一 常用指令 ls        显示文件或目录 -l           列出文件详细信息l(list) -a          列出当前目录下所有文件及目录,包括隐藏的a(all ...

  5. linux(三)之linux常用命令二

    今天就是星期五了,又可以休息两天了.有点小激动,开心.不过还是要加油,因为还有很多东西等着我去学习呢! 七.chmod 作用:修改文件的权限 7.1.命令格式:chmod mode filename ...

  6. postgresql常用命令

    1.createdb 数据库名称 产生数据库2.dropdb 数据库名称 删除数据库 3.CREATE USER 用户名称 创建用户4.drop User 用户名称 删除用户 5.SELECT use ...

  7. postgresql 常用命令

    普通用法: sudo su - postgres 切换到postgres用户下: psql -U user -d dbname 连接数据库, 默认的用户和数据库是postgres \c dbname ...

  8. Linux学习之常用命令&lpar;二&rpar;

    1.上次介绍了一些常用的系统命令,这次又总结了一些小命令,故分享一下: 网卡地址查询的命令: ifconfig #不同于Windows系统,它的是ifconfig而不是ipconfig ip -a # ...

  9. Linux Linux常用命令二

    whoami 我是谁命令 --该命令用户查看当前系统当前账号的用户名 --由于系统管理员通常需要使用多种身份登录系统,李儒通常使用普通用户登录系统,然后再以su命令切换到root身份对系统进行灌篮.这 ...

随机推荐

  1. idea fect

    idea facet 昨天从svn检查一个项目后,部署至tomcat服务器,启动成功,但实际代码其实没有进去, 因为该项目不是maven项目, artifacats是自己配的, 应该是这里弄错的. 最 ...

  2. 内置对象(Session、Application、ViewState)

    内置对象:为了跨页面传值和状态保持.→HTTP的无状态性 [4.]Session:每一台电脑访问服务器,都会是独立的一套session,key值都一样,但是内容都是不一样的 以上所有内容,都跟cook ...

  3. 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(二)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<In-Memory OLTP – Comm ...

  4. JMeter学习参数化User Defined Variables与User Parameters

    偶然发现JMeter中有两个元件(User Defined Variables与User Parameters)很相近,刚开始时我也没注意,两者有什么不同.使用时却发现两者使用场景有些不同,现在小结一 ...

  5. Error in invoking target &&num;39&semi;agent nmhs&&num;39&semi; of makefile

    安装Oracle11g报错:Error in invoking target 'agent nmhs' of makefile  解决方法:cd $ORACLE_HOME/sysman/libvi i ...

  6. Dynamics 365创建电子邮箱字段包含值的联系人同时更改负责人的方法。

    摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复267或者20171129可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...

  7. 学习 Kubernetes 的 Why 和 How - 每天5分钟玩转 Docker 容器技术(114)

    这是一个系统学习 Kubernetes 的教程,有下面两个特点: 系统讲解当前最流行的容器编排引擎 Kubernetes包括了安装部署.应用管理.网络.存储.监控.日志管理等多各个方面. 重实践并兼顾 ...

  8. 关系型数据库工作原理-SQL重写&lpar;翻译自Coding-Geek文章&rpar;

    本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...

  9. ThemeableBrowser在IOS中按钮图片的使用

    1. 首先确保图片的名称为 ***@1x.png, ***@2x.png 或 ***@3x.png iPhone —— iPhone3GS ***@1x.png iPhone —— iPhone6 * ...

  10. nginx&plus;uwsgi&plus;flask 服务器配置

    注:每个机器,软件版本可能不一样,虽然网上有很多类似的帖子,但是我在搭建的时候遇到了不少的坑,此文仅供参考. 请求流程: 1.安装uwsgi uwsgi是一个应用服务器,非静态文件的网络请求就必须通过 ...