zoukankan      html  css  js  c++  java
  • postgresql 常用命令

    查看用户

    root@fff52596cfa9:/# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    sys:x:3:3:sys:/dev:/usr/sbin/nologin
    sync:x:4:65534:sync:/bin:/bin/sync
    postgres:x:999:999::/home/postgres:/bin/sh
    Debian-exim:x:104:108::/var/spool/exim4:/bin/false

    进入sql

    选择数据库:\c databasename
    
    查看所有表:\dt schema_name.* 
    
    查看某个表的结构:\d schema_name.tablename

    常用命令

    连接数据库: psql -h ip -U usrname
    查看所有库: \l
    查看所有表: \dt
    查看某个表的结构: \d 表名
    查看数据库中所有的表: select * from pg_tables;
    查看表的详细信息包括注解信息: \dd 表名,\d+ 表名
    查看role 列表: \duser
    查看所有schema: \dns

    PostgreSQL本身大小写不敏感,如果你要新建一个大写字母的表,必须使用引号,同样如果你要查询也必须加引号。

    metastore=# select * from public.SORT_COLS;
    ERROR:  relation "public.sort_cols" does not exist
    LINE 1: select * from public.SORT_COLS;
                          ^
    metastore=# select * from public."SORT_COLS";
     SD_ID | COLUMN_NAME | ORDER | INTEGER_IDX 
    -------+-------------+-------+-------------
    (0 rows)
    
    metastore=# select * from public."TBLS";
     TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID |        TBL_NAME        |   TBL_TYPE    | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT | IS_REWRITE_ENABLED 
    --------+-------------+-------+------------------+-------+-----------+-------+------------------------+---------------+--------------------+--------------------+--------------------
          1 |  1639554701 |     1 |                0 | root  |         0 |     1 | bigtable               | MANAGED_TABLE |                    |                    | f
          2 |  1639556919 |     1 |                0 | root  |         0 |     2 | smalltable             | MANAGED_TABLE |                    |                    | f
          3 |  1639556961 |     1 |                0 | root  |         0 |     3 | jointable              | MANAGED_TABLE |                    |                    | f
          4 |  1639557365 |     1 |                0 | root  |         0 |     4 | pokes                  | MANAGED_TABLE |                    |                    | f

    标准的SQL是不区分大小写的。但是PostgreSQL对于数据库中对象的名字允许使用支持大小写区分的定义和引用方法。方式就是在DDL中用双引号把希望支持大小的对象名括起来。
    比如希望创建一个叫AAA的表。如果用CREATE TABLE AAA (…);的话,创建出来的表实际上是aaa。
    如果希望创建大写的AAA表的话,就需要用CREATE TABLE “AAA” (…);这种双引号的方式定义对象名。
    这样写的缺点是查询语句必须也使用双引号的方式引用对象名。比如SELECT * FROM “AAA”;否则PostgreSQL缺省会去找aaa这个对象,然后返回aaa不存在的错误。需要注意的是不仅仅是表可以这样定义和引用,对PostgreSQL中的任意对象(比如列名,索引名等)都有效。

    实际上传统的SQL都是不区分大小写的,所以只要DDL和DLL按照传统(不使用双引号)的方式操作数据库对象不会有任何问题。问题出在如果表是通过PostgreSQL的pgAdmin III 工具创建的话,缺省是按照有双引号的方式创建对象的,所以DLL里面必须也要按照有双引号的方式使用。但是这种写法不是标准的,如果是通过一些通用库函数访问数据库的话,会不被支持。

    建议:
    1.不推荐使用pgAdmin III这个工具创建数据库对象。还是应该手工编写DDL语句。
    2.不推荐在DDL里用双引号的方式创建区分大小写的对象。
    3.PostgreSQL给出的建议是SQL的key word用大写,其他的名称全部使用小写。

    大多数人都以为是才智成就了科学家,他们错了,是品格。---爱因斯坦
  • 相关阅读:
    451. Sort Characters By Frequency
    424. Longest Repeating Character Replacement
    68. Text Justification
    44. Wildcard Matching
    160. Intersection of Two Linked Lists
    24. Swap Nodes in Pairs
    93. 递归实现组合型枚举
    98. 分形之城
    97. 约数之和
    96. 奇怪的汉诺塔
  • 原文地址:https://www.cnblogs.com/wqbin/p/15714936.html
Copyright © 2011-2022 走看看