大连某公司机试POSTGRESQL题目,个人回来后总结的答案
2014-02-28 21:27
621 查看
机试失败了,给的是window 2003server的机器,postgresql 9.3,现在都习惯用ubuntu了自家笔记本都是ubuntu,以后面试不知道怎么办,回来参考postgresql官方文档一小时不到就全解决了,说实在的我真没接触过postgresql的存储过程,要我看着别人的代码模仿写真痛苦,尤其是没一点pgsql的语法基础,废话不说上题目和答案(说的是招聘JAVA结果全面的postgresql汗颜。。。)
环境ubuntu,postgresql 9.3
1.恢复pg_dump的输出文件
psql
create user mianshi superuser login createdb password 'mianshi'
create tablespace mianshi_ts owner mianshi location '/windows/data/pgdata'
create database mianshi owner=mianshi tablespace=mianshi_ts
\q
psql -h localhost -U mianshi
\i mianshi.bak
2.postgresql 递归实现
create table tb_tree(id int,pid int ,name varchar(8000));
insert into tb_tree values(1,null,'祖父'),(2,1,'父亲'),(3,2,'本人'),(4,2,'弟弟');
with RECURSIVE t(id,pid,name) as (select * from tb_tree where name='本人' union all select tb_tree.* from tb_tree,t where tb_tree.id=t.pid) select * from t;
3.计算一个时间的年龄
select age(timestamp '1985-05-15 5:5:5');
4.计算两个时间距离的天数
select current_date - (timestamp '2014-2-27 1:1:1')::date;
5.计算两个时间间隔的秒数
select extract(epoch from current_timestamp - (timestamp '2014-2-27 1:1:1')::date);
6.创建存储过程使用for遍历某个表
create or replace function mianshi_func01() returns void as $$
declare
--l_id tb_tree.id%type;
--l_pid tb_tree.pid%type;
--l_name tb_tree.name%type;
l_record RECORD;
begin
for l_record in select * from tb_tree loop
raise info 'ID%,父ID%,名称%',l_record.id,l_record.pid,l_record.name;
end loop;
end;
$$ language plpgsql;
7.使用游标遍历某个表
create or replace function mianshi_func02() returns void as $$
declare
l_id tb_tree.id%type;
l_pid tb_tree.pid%type;
l_name tb_tree.name%type;
l_cursor cursor for select * from tb_tree;
begin
open l_cursor;
fetch l_cursor into l_id,l_pid,l_name;
while found loop
raise info 'ID%,父ID%,名称%',l_id,l_pid,l_name;
fetch l_cursor into l_id,l_pid,l_name;
end loop;
close l_cursor;
end;
$$ language plpgsql;
8.备份数据库完成后删除数据库
pg_dump -f another.bak mianshi
drop database mianshi;
相关文章推荐
- php redis 接口说明
- SQL<一>--游标使用
- mysql列属性auto(mysql笔记四)
- mysql修改密码 导入导出
- 数据库操作类util
- 获取MS SqlServer 2000中字段的备注信息
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- SQLite入门与分析(二)---设计与概念
- sqlplus登录报错TNS-12547: TNS:lost contact
- 数据库的操作步骤
- 数据库索引
- mysql表结构导出
- 优化---利用pl/sql执行计划评估SQL语句的性能简析
- sqlserver2008的使用问题
- mysql数据库优化总结
- SQLite入门与分析(一)---简介
- ORACLE面试题
- Oracle体系结构概述
- PL/SQL基础