当前位置:   article > 正文

postgresql 常用速查

alter table tb owner to

中文资料
中文资料

  1. /**gp中的基本sql语法**/
  2. --删除表
  3. drop table testtb;
  4. --创建表
  5. CREATE TABLE testtb
  6. (
  7. id integer,
  8. "name" character varying(2)
  9. )
  10. WITH (
  11. OIDS=FALSE
  12. )
  13. DISTRIBUTED BY (id);
  14. ALTER TABLE testtb OWNER TO gpadmin;
  15. --WITH 用来说明表的存储属性,比如表的压缩
  16. --DISTRIBUTED BY 定义表的分布键,这个键最好唯一,如果表中没有唯一键字段,可以定义DISTRIBUTED RANDOMLY作为分布建。
  17. --表的创建
  18. create table testTBbak (like testTB) -- like 复制表结构
  19. create table testtbbak1 as select * from testtb distributed by (name) -- 数据保留,可以指定分布键。
  20. select * into testtbbak2 from testTB -- into 保留数据,不能指定分布键
  21. select * from testtbbak2
  22. /**分区表**/
  23. -- 按照时间分区
  24. --
  25. --创建视图
  26. create view v_testtb as select * from testtb
  27. -- 删除数据
  28. delete from testtb -- 速度慢,会写日志。
  29. truncate testtb -- 速度快,但不会写日期。
  30. /**序列的使用**/
  31. --删除序列
  32. drop sequence myseq
  33. --创建序列(1是开始值,可以根据实际情况改变)
  34. create sequence myseq start 1
  35. --序列的使用
  36. insert into testTB values(nextval('myseq'),'小明')
  37. --重新设置序列值
  38. select setval('myseq',1)
  39. --查询
  40. select id,name from testTB order by 1
  41. -- explain 用于查看sql执行计划
  42. explain select * from testtb
  43. /**字符串函数**/
  44. -- || 字符串连接
  45. select '胡' || '黄' || '腾'
  46. -- length 字符长度
  47. select length('89998')
  48. -- substring 字符串截取,从那位开始,截几位
  49. select substring('123456' from 2 for 3)
  50. -- trim去字符前后空格
  51. select trim(' 234 fds ')
  52. -- lowere 字符转小写
  53. select lower('RER')
  54. -- upper 字符转大写
  55. select upper('rer')
  56. -- replace 替换字符
  57. select replace('aabbddee','aa','mm')
  58. -- position 查找指定字符位置
  59. select position('de' in 'abdeaf')
  60. -- split_part 根据指定字符查找给定字符的位置
  61. select split_part('aaa|bbb|ccc|eee','|',2)
  62. /**时间的函数**/
  63. -- age求俩日期之差
  64. select age(timestamp '1987-12-03',timestamp '2015-06-17')
  65. -- age如果一个日期则和当前日期求差
  66. select age(timestamp '1987-12-03')
  67. -- current_date 当前日期
  68. select current_date
  69. -- current_time 当前时间
  70. select current_time
  71. -- current_timestamp 当前时间戳
  72. select current_timestamp
  73. -- now 当前时间
  74. select now()
  75. -- extract 获取指定时间的具体某个参数
  76. select extract(day from date '2015-06-18')
  77. select extract(day from now())
  78. -- 时间相加
  79. select '2015-04-2 10:00:52'::timestamp + interval '10 days 2 hours 10 seconds'
  80. -- 时间相减
  81. select current_date - interval '10 days'
  82. /**gp中其他函数**/
  83. -- greatest 取两值中的最大值
  84. select greatest(3,9)
  85. -- 列转行
  86. insert into testtb(id,name)values (1,'ha');
  87. insert into testtb(id,name)values (1,'he');
  88. insert into testtb(id,name)values (1,'hi');
  89. insert into testtb(id,name)values (2,'xb');
  90. insert into testtb(id,name)values (2,'xh');
  91. insert into testtb(id,name)values (2,'xm');
  92. select id,string_agg(name,'|' order by name) from testtb group by id;
  93. -- 行转列
  94. select id,regexp_split_to_table(string_agg,E'\\|') str from texttb_m
  95. /**开窗函数**/
  96. --建表
  97. create table empsalary
  98. (
  99. depname varchar(20),
  100. empno integer,
  101. salary integer
  102. )
  103. distributed by (empno)
  104. insert into empsalary values ('develop',9,4500);
  105. insert into empsalary values ('develop',1,3200);
  106. insert into empsalary values ('develop',4,1000);
  107. insert into empsalary values ('develop',2,9100);
  108. insert into empsalary values ('develop',6,1000);
  109. insert into empsalary values ('person1',5,3100);
  110. insert into empsalary values ('person1',7,4100);
  111. insert into empsalary values ('sales',3,2400);
  112. insert into empsalary values ('sales',8,1200);
  113. insert into empsalary values ('sales',10,5100);
  114. -- rank 及 row_number 函数的应用
  115. select depname
  116. ,empno
  117. ,salary
  118. ,rank() over (partition by depname order by salary desc)
  119. ,row_number() over (partition by depname order by salary desc)
  120. from empsalary
  121. -- rank 识别重复记录
  122. -- row_number 不识别重复记录
  123. select *
  124. ,sum(salary) over () sum1
  125. ,sum(salary) over (order by salary) sum2
  126. ,sum(salary) over (partition by depname) sum3
  127. ,sum(salary) over (partition by depname order by salary) sum4
  128. from empsalary
  129. -- grouping by 的使用(其实就是简化了union)
  130. select depname ,sum(empno)
  131. from empsalary
  132. group by depname
  133. union all
  134. select depname ,sum(salary)
  135. from empsalary
  136. group by depname
  137. --等效于
  138. select depname,sum(empno),sum(salary)
  139. from empsalary
  140. group by grouping sets(depname)

命令行

  1. 当我们费尽千辛万苦安装完数据库后,一定会迫不及待的想使用它。骚年,不要着急,且看我为您解析PostgreSQL的启动,登录,退出,关闭过程。
  2. 一 启动数据库服务器
  3. 1. 没有设置环境变量的情况下,postgresql用户下:
  4. /usr/local/pgsql/bin/postgres -D data >./data/logfile 2>&1 &
  5. 其中/usr/local/pgsql/bin目录中存放着数据库的执行命令,/data是数据库的数据存放目录。小伙伴们可
  6. 以根据自己实际的安装目录调整上面的命令。
  7. 如下命令查看数据库进程有没有成功启动,当看到有几个postgres的进程时,说明启动成功。
  8. ps aux | grep postgres
  9. 2. 设置环境变量的情况下
  10. 如果需要指定环境变量,请按如下方式:
  11. postgres@lgr-pc:~$ vi .bash_profile
  12. 添加如下内容:
  13. PGDATA=/usr/local/pgsql/data;
  14. PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin
  15. export PGDATA PATH
  16. 即指定pgdata和bin的目录,这里可以根据自己的实际目录指定。
  17. 编辑完环境变量文件后,运行如下命令使环境变量生效:
  18. postgres@lgr-pc:~$ . .bash_profile
  19. 设置完环境变量,运行如下命令启动服务器:
  20. postgres@lgr-pc:~$ pg_ctl start
  21. 二 登录服务器
  22. 当安装完数据库后,我们会有一个系统用户,一个数据库,一个数据库用户,他们默认的名称为:postgres
  23. 1. 如果没有设置bin目录的环境变量,那么
  24. postgres@lgr-pc:~$ /usr/local/pgsql/bin/psql
  25. 这样默认登录到postgres库中,当然也可以在psql后面加上库的名称,这样就可以登录到指定库中。如登录到test库:
  26. postgres@lgr-pc:~$ /usr/local/pgsql/bin/psql test
  27. 2. 如果您也像我一样设置了bin目录的环境变量,那么
  28. postgres@lgr-pc:~$ psql
  29. 这样默认的也是登录到postgres库中,同样的我们可以指定数据库名称,登录到指定库。
  30. postgres@lgr-pc:~$ psql test
  31. 三 退出登录
  32. 退出登录就很简单了,我们可以运行\q,或者ctrl+d
  33. postgres=# \q
  34. 四 关闭数据库服务器
  35. 关闭:
  36. postgres@lgr-pc:~$ pg_ctl stop
  37. 重启:
  38. postgres@lgr-pc:~$ pg_ctl restart

转载于:https://www.cnblogs.com/Frank99/p/9304544.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/922368
推荐阅读
相关标签
  

闽ICP备14008679号