zoukankan      html  css  js  c++  java
  • postgresql 常用速查

    中文资料
    中文资料

    /**gp中的基本sql语法**/
    --删除表
    drop table testtb;
    --创建表
    CREATE TABLE testtb
    (
      id integer,
      "name" character varying(2)
    )
    WITH (
      OIDS=FALSE
    )
    DISTRIBUTED BY (id);
    ALTER TABLE testtb OWNER TO gpadmin;
    --WITH 用来说明表的存储属性,比如表的压缩
    --DISTRIBUTED BY 定义表的分布键,这个键最好唯一,如果表中没有唯一键字段,可以定义DISTRIBUTED RANDOMLY作为分布建。
    
    --表的创建
    create table testTBbak (like testTB)                                  -- like 复制表结构
    create table testtbbak1 as select * from testtb distributed by (name) -- 数据保留,可以指定分布键。
    select * into testtbbak2 from testTB                                  -- into 保留数据,不能指定分布键
    select * from testtbbak2
    
    /**分区表**/
    -- 按照时间分区
    
    -- 
    
    --创建视图
    create view v_testtb as select * from testtb
    
    -- 删除数据
    delete from testtb -- 速度慢,会写日志。
    truncate testtb    -- 速度快,但不会写日期。
    
    /**序列的使用**/
    --删除序列
    drop sequence myseq
    --创建序列(1是开始值,可以根据实际情况改变)
    create sequence myseq start 1
    --序列的使用
    insert into testTB values(nextval('myseq'),'小明')
    --重新设置序列值
    select setval('myseq',1)
    --查询
    select id,name from testTB order by 1
    
    -- explain 用于查看sql执行计划
    explain select * from testtb 
    
    /**字符串函数**/
    -- || 字符串连接
    select '胡' || '黄' || '腾'
    -- length 字符长度
    select length('89998')
    -- substring 字符串截取,从那位开始,截几位
    select substring('123456' from 2 for 3)
    -- trim去字符前后空格
    select trim(' 234 fds   ')
    -- lowere 字符转小写
    select lower('RER')
    -- upper 字符转大写
    select upper('rer')
    -- replace 替换字符
    select replace('aabbddee','aa','mm')
    -- position 查找指定字符位置
    select position('de' in 'abdeaf')
    -- split_part 根据指定字符查找给定字符的位置
    select split_part('aaa|bbb|ccc|eee','|',2)
    
    /**时间的函数**/
    -- age求俩日期之差
    select age(timestamp '1987-12-03',timestamp '2015-06-17')
    -- age如果一个日期则和当前日期求差
    select age(timestamp '1987-12-03')
    -- current_date 当前日期
    select current_date
    -- current_time 当前时间
    select current_time
    -- current_timestamp 当前时间戳
    select current_timestamp
    -- now 当前时间
    select now()
    -- extract 获取指定时间的具体某个参数
    select extract(day from date '2015-06-18')
    select extract(day from now())
    -- 时间相加
    select '2015-04-2 10:00:52'::timestamp + interval '10 days 2 hours 10 seconds' 
    -- 时间相减
    select current_date - interval '10 days'
    
    
    
    /**gp中其他函数**/
    -- greatest 取两值中的最大值
    select greatest(3,9)
    -- 列转行
    insert into testtb(id,name)values (1,'ha');
    insert into testtb(id,name)values (1,'he');
    insert into testtb(id,name)values (1,'hi');
    insert into testtb(id,name)values (2,'xb');
    insert into testtb(id,name)values (2,'xh');
    insert into testtb(id,name)values (2,'xm');
    select id,string_agg(name,'|' order by name) from testtb group by id;
    -- 行转列
    select id,regexp_split_to_table(string_agg,E'\|') str from texttb_m
    
    /**开窗函数**/
    --建表
    create table empsalary
    (
      depname varchar(20),
      empno integer,
      salary integer
    ) 
    distributed by (empno)
    
    insert into empsalary values ('develop',9,4500);
    insert into empsalary values ('develop',1,3200);
    insert into empsalary values ('develop',4,1000);
    insert into empsalary values ('develop',2,9100);
    insert into empsalary values ('develop',6,1000);
    insert into empsalary values ('person1',5,3100);
    insert into empsalary values ('person1',7,4100);
    insert into empsalary values ('sales',3,2400);
    insert into empsalary values ('sales',8,1200);
    insert into empsalary values ('sales',10,5100);
    
    -- rank 及 row_number 函数的应用
    select depname
           ,empno
           ,salary
           ,rank() over (partition by depname order by salary desc)
           ,row_number() over (partition by depname order by salary desc)
    from empsalary
    -- rank 识别重复记录
    -- row_number 不识别重复记录
    
    select *
           ,sum(salary) over () sum1
           ,sum(salary) over (order by salary) sum2
           ,sum(salary) over (partition by depname) sum3
           ,sum(salary) over (partition by depname order by salary) sum4
     from empsalary
    
    -- grouping by 的使用(其实就是简化了union)
    select depname ,sum(empno)
    from empsalary
    group by depname
    union all
    select depname ,sum(salary)
    from empsalary
    group by depname
    
    --等效于
    select depname,sum(empno),sum(salary)
    from empsalary 
    group by grouping sets(depname)
    

    命令行

    当我们费尽千辛万苦安装完数据库后,一定会迫不及待的想使用它。骚年,不要着急,且看我为您解析PostgreSQL的启动,登录,退出,关闭过程。
    
    一 启动数据库服务器
    
    1. 没有设置环境变量的情况下,postgresql用户下:
    
    
    /usr/local/pgsql/bin/postgres -D data >./data/logfile 2>&1 &
    
    
    
    其中/usr/local/pgsql/bin目录中存放着数据库的执行命令,/data是数据库的数据存放目录。小伙伴们可
    
    以根据自己实际的安装目录调整上面的命令。
    
    
    
    如下命令查看数据库进程有没有成功启动,当看到有几个postgres的进程时,说明启动成功。
    
    ps aux | grep postgres
    
    
    
    
    2. 设置环境变量的情况下
    
    如果需要指定环境变量,请按如下方式:
    
    postgres@lgr-pc:~$ vi .bash_profile
    
    添加如下内容:
    
    PGDATA=/usr/local/pgsql/data;
    
    PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin
    
    export PGDATA PATH
    
    即指定pgdata和bin的目录,这里可以根据自己的实际目录指定。
    
    编辑完环境变量文件后,运行如下命令使环境变量生效:
    
    postgres@lgr-pc:~$ . .bash_profile
    
    设置完环境变量,运行如下命令启动服务器:
    
    postgres@lgr-pc:~$ pg_ctl start
    
    
    二 登录服务器
    
    当安装完数据库后,我们会有一个系统用户,一个数据库,一个数据库用户,他们默认的名称为:postgres
    
    1. 如果没有设置bin目录的环境变量,那么
    
    postgres@lgr-pc:~$ /usr/local/pgsql/bin/psql
    
    这样默认登录到postgres库中,当然也可以在psql后面加上库的名称,这样就可以登录到指定库中。如登录到test库:
    
    postgres@lgr-pc:~$ /usr/local/pgsql/bin/psql test
    
    
    
    2. 如果您也像我一样设置了bin目录的环境变量,那么
    
    postgres@lgr-pc:~$ psql
    
    这样默认的也是登录到postgres库中,同样的我们可以指定数据库名称,登录到指定库。
    
    postgres@lgr-pc:~$ psql test
    
    
    三 退出登录
    
    退出登录就很简单了,我们可以运行q,或者ctrl+d
    
    postgres=# q
    
    
    四 关闭数据库服务器
    
    关闭:
    
    postgres@lgr-pc:~$ pg_ctl stop
    
    重启:
    
    postgres@lgr-pc:~$ pg_ctl restart
    
    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    关于亮剑,文化大革命的一点感想
    iOS -- block
    runtime -- 方法交换的坑自定义方法不执行
    iOS-UITableViewCell
    iOS debug模式
    iOS 将storybord中的视图与viewcontroller相关联
    gitignore的编写规则
    使用cocopods安装Alamofire后各种报错
    ReactNative--坑--'React/RCTBridgeModule.h' file not found
    12-2描点 学完路径可以对整个工具条做个概括 绘图类已完成
  • 原文地址:https://www.cnblogs.com/Frank99/p/9304544.html
Copyright © 2011-2022 走看看