谁在用 postgresql 对比测试

用户名: @
密&&码:&&&|
密&&码:&|
密&&码:&|
您的位置: &
Oracle和MySQL、PostgreSQL特性对比
作者:作者Sean Hull 编译 吕广娟&&
内容导航:
&&& 【IT168技术分析】&&&& 编者按:将Mysql、PostgreSQL二个开源数据库和Oracle放在一起对比,多少显得有些不公平,后者是有强大厂商及上千技术人员支持和维护的商用数据库,而前者是开源和免费的产品。但是,这种对比,有助于我们在架构自己的业务和应用时,做出理性的选择。&&& 随着现代数据库可用特征集的迅速增加,很难区分孰好孰坏。例如Oracle里就有许多你可能从来都不需要的高级数据仓库特征。此外也可能有一些其它不可或缺的特征比如ACID事务特性。我们来看一看主要的一些特征,比如过程,视图,快照,表数据类型和事务等等。同时我们分析一下Postgresql,MySQL和Oracle这几个数据库,然后找出哪个能够满足你的需求。 存储过程 &&& 数据库里的存储应用程序肯定会有它的拥护者和贬低者。在这个问题上我还不清楚自己属于哪一类,所以我尽量对这两个方面都讨论。当你开始在数据库里放置应用程序代码时,你就处于了彻底不可移植的境地。你把应用程序移植到另一个数据库时,那段代码将不得不被重写。但是它对原来数据库的高度专一性意味着它可以利用那个引擎,和那个引擎紧紧捆绑在一起。有时候数据库里的存储代码要明显快得多。在对数据做了修改之后,你不得不更新一百万行的某些数据块。 &&& 在存储过程里,数据的读入、操纵和更新是一步完成的。然而你要在中间层应用程序中做同样事情的话,你就不得不通过发送数据集,完成数据操纵,然后将它发送回来。这不但使任务的速度变慢,而且竞争同一数据的其他事务有可能不得不等待,因为它需要的数据正处于传送和操纵状态。存储代码也可以用来密封特定的请求,这对简化你整体的应用程序是很重要的。这三个数据库都支持存储过程和函数。Oracle还支持包,或者说是存储过程的集合以及几乎没有人用过的各种面向对象特征的集合。还要说明一点,一个数据库引擎实际上是在存储代码和嵌入在里面的SQL代码之间关联转换。Oracle 9i版本引入了成批绑定技术,所以你能够对许多行进行处理,并且能够一次性更新它们,而不是单个循环迭代。这个特征大幅度改善了性能。 视图 &&& 视图基本上是存储查询,正因为如此执行起来才不会过度复杂。然而当用于查询时,他们必然会使查询复杂化。所以很明显,数据库在视图可用之前一定要支持子查询。Oracle很早就已经有视图了。从5.0版本开始,MySQL也已经支持视图。跟Oracle一样,MySQL也支持UPDATEABLE视图,但是有一些限制。Postgres也支持视图和UPDATEABLE视图。更详细的解释见Complex SQL部分。 1
【内容导航】
&版权所有。未经许可,不得转载。
[责任编辑:]
相关论坛贴
itpub.net All Right Reserved.&&&&E-mail:
北京皓辰广域网络信息技术有限公司.&版权所有&&&&&&&&&&《老何的1001夜》,Qunar小伙伴们都懂的1.问题的提出我们wrapper里头有个表叫 rtr,用于保存抽取出来的线路,其中有个字段,是 cities,用于保存对应线路抽取出来的途径的城市,为了便于开发和数据交流,这个字段保存的是符号分隔的城市字串,准确说,就是用 0x03 分隔的,中文城市列表,现在有个这样的需求:我们希望统计一下这个途径城市相同的线路有多少。2.问题的分析这个问题看似简单,其实还是挺费劲的,我们可以利用的机制有:PostgreSQL 里有个函数 string_to_array() 是可以把符号分隔的字串变成数组来使用的PostgreSQL 的数组是可以用等于号(=)进行比较的PostgreSQL 要求相同的数组必须顺序相同我们面临的困难:抽取的过程输出的城市列表是无序的,比如,会有“北京,上海,广州&,和”上海,北京,广州&的区别0x03 是不可见字符3.问题的解决思考了下,解决思路是这样的:把 0x03 替换成标准分隔符,比如逗号(,)把逗号分隔的字串通过某种方法生成排序的数组,保证顺序相同比较最后生成的有序数组这个解法比较难的是第二步,这里我们要利用下面几个条件:PostgreSQL 有个 unnest() 函数可以把数组展开成数据行数据行是可以排序的这个表里头有主键,因此我们可以按照主键排序并最后重组对应的城市列表数组写出来的查询是下面这个样子:select rid, array_agg(city) as cities from (select rid, unnest(string_to_array(replace(cities, E'\x03', ','), ',')) city from rtr order by rid, city limit 10)这样输出来的 cities,就是有序的数组,可以进行任意比较了,比如,group by cities,就可以看看有多少分组,并且 order by之后,还可以看看分组之间的差异有多大。4.改进思考了一下,感觉那个 replace() 的调用是多余的,所以可以直接这样:select rid, array_agg(city) as cities from (select rid, unnest(string_to_array(cities, E'\x03')) city from rtr order by rid, city limit 10)何伟平 去哪儿网/旅游度假事业部搜索技术研究人员和数据库研究人员,PostgreSQL 中文手册第一个版本的译者和 Programming Perl 第三版的译者。长期关注在搜索技术、分布式技术、数据库技术和集群设计组织管理行业。曾在雅虎中国负责网页搜索技术部门。在IT圈有着接近18年的从业经验。2010年加入Qunar,先后创建和开发去哪儿攻略搜索频道、去哪儿团购频道,现负责
度假业务部门。文章转自公司wiki《老何的1001夜》,Qunar小伙伴可以登录wiki查看更多文章点击“阅读原文”,查看历史文章。Qunar技术沙龙(QunarTL) 
 文章为作者独立观点,不代表微头条立场
的最新文章
一般来说,需要架构重构的系统,基本上都是因为各种历史原因和历史问题没有及时处理,遗留下来逐渐积累,然后到了一个临界点,各种问题开始互相作用,集中爆发!通过简单的20行代码的改变对于A/B测试是如何工作的,你今天就可以实现这一点,你可以做的比A/B测试更加好,2到3倍的好。Dubbo是Alibaba开源的一款很棒的SOA框架,被国内很多公司所采用。去哪儿网也早在2011年就开始采用Dubbo作为我们服务化拆分的基础,并且在Dubbo停止维护后自己fork了分支继续维护,也在Dubbo上投入了大量的精力。“守护进程”(daemon)就是一直在后台运行的进程(daemon)。
本文介绍如何将一个 Web 应用,启动为守护进程。《老何的1001夜》,Qunar小伙伴们都懂的现在是时候认真考虑提高你的编程技能了!如何在 Linux 系统和类 Unix 的操作系统中使用带正则表达式的 grep 命令呢?给应届生同学的~~可视化编程工具虽然看似美好,但无法适应企业背景下的工作环境。作为一种可替代方法,各大公司在使用许多开源程序语言以使其分析工作的效率实现持续加速,并通过投资于训练技术经验较少的用户,以及使用良好的协作和知识管理工具以使现有工作变得更加容易。几个分布式基础算法2015以来,移动互联网继续迅猛发展。以艺龙为例,一季度核心业务酒店的移动订单量在总酒店客房间夜中所占比例达到65%,半年前还只是48%,移动业务的快速增长,对于前端框架有了更高的要求。摘要:移动端的以图搜图是一代又一代的图像人,搜索人的梦想。从90年代开始,学术界,工业界做了很多的努力和尝试希望我的这些追求最大化命令行效率的努力成果也能给其他喜欢使用bash的朋友们带来一些帮助。我更大的期望是我的这种行为能引起其他朋友的互动——给我提建议、提出更好的bash技巧。在淘宝,如何从十亿的商品中,挑选出用户今天喜欢的商品,是个巨大的挑战。 本次我们介绍排序学习在手机淘宝中的应用,其中包括:解决了哪些问题,遇到了哪些挑战,以及做了哪些改进。Snapdeal是一家类似于京东和阿里巴巴结合体的电商平台。对于只有不到10个工程师的团队构建一个可伸缩的大型Web系统(web-scale)是困难的,使用正确的技术也许比你的团队成员数量多少更加重要。快的打车从2013年年底到2014年下半年,系统访问量迅速膨胀,很多复杂的问题要在短时间内解决,且不能影响线上业务,这是比较大的挑战,本文将会阐述快的打车架构演变过程遇到的一些有代表性的问题和解决方案。具备一定运营技能;要有运营意识;主动性要强;学习能力要跟得上。睁大你自己的双眼,不要指望别人会帮助你。就像棒球投手Satchel Page所说的那样:“别回头,别人随时有可能赶上你”。先把眼前的问题解决掉,解决好,再考虑将来的扩展问题。
先写出可用的代码,反复推敲,再考虑是否需要重用的问题。
先写出可用,简单,明显没有bug的代码,再考虑测试的问题。从Node.js到C++,看他们的发明者是如何评价他们的语言的未来。机器学习系统特有的带来技术债的能力,这种债务很难被察觉,因为它存在于系统而非代码层面从Node.js到C++,看他们的发明者是如何评价他们的语言的未来。机器学习系统特有的带来技术债的能力,这种债务很难被察觉,因为它存在于系统而非代码层面Stay Hungry,Stay Foolish~睁大你自己的双眼,不要指望别人会帮助你。就像棒球投手Satchel Page所说的那样:“别回头,别人随时有可能赶上你”。基于 Quora 网站上的一个关于“程序员职业生涯中最难的事”的讨论帖,国外开发者 Phil Johnson 10 月中旬在 ITworld 发了一个投票,其结果有点让他意外。今天给大家推一篇架构相关的好文先把眼前的问题解决掉,解决好,再考虑将来的扩展问题。
先写出可用的代码,反复推敲,再考虑是否需要重用的问题。
先写出可用,简单,明显没有bug的代码,再考虑测试的问题。编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋。作者希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路。一个前端大拿把过去十年()时间所经历的一些事情的总结当公司开始使用docker,到官方的docker hub上下载(pull)镜像,由于网络环境的限制,显然很不切合实际,本文我们将分享如何实战构建企业级的Docker Registry Server接周日篇,继续聊聊分布式今天发一篇公司同事在INFOQ上发表的原创文章这两天我们聊聊分布式计算~Linux kernel 成功的两个原因:
灵活的架构设计使得大量的志愿开发者能够很容易加入到开发过程中;
每个子系统(尤其是那些需要改进的)都具备良好的可扩展性。
正是这两个原因使得Linux kernel可以不断进化和改进。系统先天架构设计至关重要。本文深入讨论兼容性设计、黑名单防御、封闭设计等6个误区,以帮助研发人员设计出更安全健壮的架构。文章很长,但句句干货。文章第一部分是概要介绍;第二部分介绍几种典型的“性能恶化模式”;第三部分是文章重点,阐述典型的“性能优化模式”,这些模式或者可以使服务远离“恶化模式”,或者直接对服务性能进行优化;最后一部分是总结和展望。本文这6个Python库既可以快速解决眼前的棘手问题,同时也能够作为大型项目的基础。程序员就像工匠,若想高效地编写出漂亮的代码,就得要有一把好”锤子”——好的开发工具。本文就讲讲那些工程师用出情怀的高效工具们。在软件开发的领域中,这个有害的编程习惯基本上都是由不良的编码习惯造成的,只有能改变这些不良习惯,你的工作起来会更轻松更有效率。"相较于其它方式,我一直热衷于推崇围绕数据设计代码,我想这也是Git能够如此成功的一大原因[…]在我看来,区今天给大家推荐一篇阿里的海量数据架构设计相关文章~~WEB开发本身涵盖了许多领域的许多技术,那么,有哪些是WEB开发者必备的技能呢?今天,我们讲Docker......Jonathan Mugan写了两篇博文来解释计算机如何理解我们在社交媒体平台上使用的语言,以及能理解到何种程度。本文是其中的第二篇。今天给大家分享下开源的爬虫框架的优缺点~~今天,给同学们带来包建强同学著作《APP研发录》竞品分析章节中最后一部分——竞品技术十瞥:版本策略与App彩蛋
十天来,分享的这十篇文章,客户端的小伙伴们一定好好学习下呦~~~今天,给同学们带来包建强同学著作《APP研发录》竞品分析章节中——竞品技术九瞥:这些第三方SDK你使用了吗?今天,给同学们带来包建强同学著作《APP研发录》竞品分析章节中——竞品技术八瞥:模块化拆分今天,给同学们带来包建强同学著作《APP研发录》竞品分析章节中——竞品技术七瞥:逼出来的奇思妙想今天,给同学们带来包建强同学著作《APP研发录》竞品分析章节中——竞品技术六瞥:性能优化QunarTLQunar技术沙龙是去哪儿网工程师小伙伴以及业界小伙伴们的学习交流平台。我们会分享Qunar和业界最前沿的热门技术趋势和话题,为中高端技术同学提供一个自由的技术交流和学习分享平台。热门文章最新文章QunarTLQunar技术沙龙是去哪儿网工程师小伙伴以及业界小伙伴们的学习交流平台。我们会分享Qunar和业界最前沿的热门技术趋势和话题,为中高端技术同学提供一个自由的技术交流和学习分享平台。PostgreSQLl三种圆整函数对比
三种圆整函数:
ceil(val):取val向上圆整的整数,不是是否大于.5,即1.2--&2,
1.8--&2,ceil有屋顶,天花板意思
floor(val): 取val向下圆整的整数,不是是否大于.5,即1.2--&1,
1.8--&1,floor有地板意思
round(val,dig):取保留dig位小数的圆整,dig为0则是4舍5入的取整,即1.2--&1,
pgsql#select
ceil(0.2),ceil(0.6),ceil(-0.2),ceil(-0.8),ceil(-1.8)
结果:1 | 1 | 0 | 0 | -1
pgsql#select floor(0.2),floor(0.6),floor(-0.2),
floor(-0.8),floor(-1.68)
结果:0 | 0 | -1 | -1 | -2
pgsql#select round(0.2),round(0.6),round(-0.2),
round(-0.8),round(1.63678,2)
结果:0 | 1 | 0 | -1 | 1.64
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。ostgreSQL是现在比较流行的数据库之一,这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。据我了解国内四大国产数据库,其中三个都是基于PostgreSQL开发的。并且,因为许可证的灵活,任何人都可以以任何目的免费使用,修改,和分发PostgreSQL,不管是私用,商用,还是学术研究使用。本文只是简单介绍一下postgresql的安装和简单的使用,语法方面涉及的比较少,以方便新手上路为目的。1.系统环境和安装方法;PostgreSQL的安装方法比较灵活,可以用源码包安装,也可以用您使用的发行版所带的软件包来安装,还可以采用在线安装……1.1系统环境:UbuntuLinux7.04;Fedora;Slackware;1.2安装;Ubuntu下安装软件其实很简单,用新立得软件包管理器搜索psql便能查到postgresql-client-8.2(同时可以搜到8.1版本,哪一个都可以),选中-应用即可。或者在终端下输入xxx@localhost$sudoapt-getinstallpostgresql-8.2Slackware下安装:请到linuxpackages.net上查找您所用系统的对应版本,用pkginstall来安装,或您安装slap-get工具,在线自动安装;要用到root权限,可以通用sudo。关于su和sudo的参考;《Linux系统中的超级权限的控制》安装postgresql的软件包,可用下面的办法;xxx@localhost#pkginstallpost*.tgz或xxx@localhost#slapt-get--installpostgresql-8.2.4在Fedora中,您可以用软件包在线安装工具来安装注:这样就安装好了PostgreSQL8.2了,该安装将自动创建一个缺省的数据库集群(pgsqldb.org中的译法)“main”,且生成一个数据库超级用户postgres。2.启动PostgreSQL数据库服务器;2.1在流行Linux发行版的启动方法;在Ubuntu系统中,服务器启动脚本放在/etc/init.d目录中,您可以用下面的方法来启动,对于Fedora和Gentoo也是类似的;xxx@localhost~#/etc/init.d/postgresql-8.2start注:启动;xxx@localhost~#/etc/init.d/postgresql-8.2restart注:重启;xxx@localhost~#/etc/init.d/postgresql-8.2stop注:停止;xxx@localhost~#/etc/init.d/postgresql-8.2status注:查看状态;在Slackware中,PostgreSQL的启动脚本放在/etc/rc.d目录中,如果您用从linuxpackages.net上下载的软件包或在线安装的软件包;xxx@localhost~#/etc/rc.d/rc.postgresstart如果您用源码包编译安装,启动PostgreSQL,请查看PostgreSQL官方文档;2.2关于PostgreSQL启动和存储目录;启动PostgreSQL服务器时,一般是以postgres用户来启动的,自编译安装的除外;对于数据库的存储一般是放在/var/lib中的相关目录,比如/var/lib/pgsql或/var/lib/postgresql/8.2/main/目录等;不同的发行版可能不太一样,不过还是大同小异,您可以通过修改数据存储位置把数据库存在其它地方;3.创建用户添加用户命令格式。createuser是SQL命令CREATEUSER的封装。命令:createuser[-a][-A][-d][-D][-e][-P][-h主机名][-pport]用户名参数说明:[-a]:允许创建其他用户,相当于创建一个超级用户;[-A]:不允许此用户创建其他用户;[-d]:允许此用户创建数据库;[-D]:不允许此用户创建数据库;[-e]:将执行过程显示到Shell上;[-P]:创建用户时,同时设置密码;[-h主机名]:为某个主机上的Postgres创建用户;[-pport]:与-h参数一同使用,指定主机的端口。3.1添加用户;3.1.1不带参数的创建用户;xxx@localhost~$createusertestuserShallthenewuserbeallowedtocreatedatabases?(y/n)n--------是否可以创建数据库:否Shallthenewuserbeallowedtocreatemorenewusers?(y/n)n---------是否可以创建新用户:否CREATEUSER注:不带参数创建用户时,Postgres会询问此用户的权限,上面的例子创建了一个普通用户;3.1.2为指定的主机和端口上创建用户;xxx@localhost~$createuser-h172.28.18.51-p5000-D-A-etestuserCREATEUSERjoeNOCREATEDBNOCREATEUSER;CREATEUSER注:这个命令为主机172.28.18.51的5000端口创建用户testuser,此用户不可以创建数据库和其他用户。3.1.3创建超级用户;xxx@localhost~$createuser-P-d-a-etestuserEnterpasswordfornewuser:testuserEnteritagain:testuserCREATEUSERjoePASSWORD'testuser'CREATEDBCREATEUSER;CREATEUSER注:这个命令在本地创建一个超级用户(-a),可以创建数据库(-d),同时要求设置密码。3.2删除用户:命令:dropuser[-i][-h][-p][-e]用户名参数说明:[-i]:删除用户前,要求确认;[-h主机名]:删除某个主机上的Postgres用户;[-pport]:与-h参数一同使用,指定主机的端口;[-e]:将执行过程显示到Shell上。3.2.1删除本地的Postgres用户;xxx@localhost~$dropusertestuserDROPUSER3.2.2删除远程Postgres服务器上的用户;xxx@localhost~$dropuser-p.18.51-i-etestuserUser"testuser"andanyowneddatabaseswillbepermanentlydeleted.Areyousure?(y/n)yDROPUSER"testuser"DROPUSER注:此命令删除主机172.28.18.51(-h)的5000端口(-p)的用户testuser,并且需要确认(-i);4.创建和删除数据库;4.1创建数据库看看您能否访问数据库服务器的第一个例子就是试着创建一个数据库;要创建一个新的数据库,在我们这个例子里叫mydb,您可以使用下面的命令:xxx@localhost~$createdbmydb它应该生成下面这样的响应:CREATEDATABASE如果这样,那么这一步就成功了,如果您看到类似下面这样的信息createdb:commandnotfound那么就是PostgreSQL没有安装好,要么是就根本没装上;您还可以用其它名字创建数据库。PostgreSQL允许您在一个节点上创建任意数量的数据库。数据库名必须是以字母开头并且小于63个字符长。一个方便的做法是创建和您当前用户名同名的数据库。许多工具假设该数据库名为缺省数据库名,所以这样可以节省您的敲键。要创建这样的数据库,只需要键入:xxx@localhost~$createdb4.2删除数据库如果您再也不想使用您的数据库了,那么您可以删除它。比如,如果您是数据库mydb的所有人(创建人),那么您就可以用下面的命令删除它:xxx@localhost~$dropdbmydb注:(对于这条命令而言,数据库名不是缺省的用户名。这样您就必须声明它。)这个动作物理上将所有与该数据库相关的文件都删除并且不可取消,因此做这件事之前一定要想清楚;5.访问数据库一旦您创建了数据库,您就可以访问它,您可以运行PostgreSQL交互的终端程序,叫psql,它允许您交互地输入,编辑,和执行SQL命令。(图形化登录请参见6.Postgresql图形化管理工具pgAdmin3)5.1激活数据库您需要启动psql,试验刚才的例子。您可以用下面的命令为mydb数据库激活它:xxx@localhost~$psqlmydb如果您省略了数据库名字,那么它缺省就是您的用户账号名字。Welcometopsql8.2.4,thePostgreSQLinteractiveterminal.Type:\copyrightfordistributionterms\hforhelpwithSQLcommands\?forhelpwithpsqlcommands\gorterminatewithsemicolontoexecutequery\qtoquitmydb=#注:最后一行mydb=#,这个提示符意味着您是数据库超级用户。5.2帮助和退出数据库psql程序有一些不属于SQL命令的内部命令。它们以反斜杠开头,""。有些这种命令在欢迎信息中列出。比如,您可以用下面的命令获取各种PostgreSQLSQL命令的帮助语法:mydb=&\h要退出psql,键入mydb=&\q然后psql就会退出并且给您返回到命令行(要获取更多有关内部命令的信息,您可以在psql提示符上键入\?。)6.Postgresql图形化管理工具pgAdmin3;版本:Version1.4.36.1安装;6.1.1Ubuntu安装;有两种方法:1.在新立得软件包管理器中搜索pgadmin3,找到pgadmin3--应用2.终端下输入命令:xxx@xxx-laptop:~$sudoapt-getinstallpgadmin36.1.2其它系统的安装;您可以参考其它系统正常的软件的安装方法,起本类似,这里就不多做介绍了;6.2pgAdmin3的简单使用;图形化管理系统相对比较直观,您可以在命令行下操作,然后在pgAdmin3下查看效果;6.2.1pgAdmin3的启动您可以在应用程序---系统工具中找到pgAdmin3的启动项;也可以在命令行下输入:xxx@xxx-laptop:~$/usr/bin/pgadmin3start6.2.2连接已创建的数据库点击档案-----新增服务器,然后在跳出的窗口下输入:地址:localhost描述:服务器名称(随意填写)维护数据库:postgres用户名:自己创建一个(详情参见创建用户)密码:和用户名对应(创建用户时自己创建)点击确定后大家便可以查看postsql已有的数据库了;注:pgAdmin3的数据库和终端下创建的数据库是完全同步的(可以用刷新查看效果),pgAdmin3是比较方便的图形化管理工具,它可以创建图表,管理数据库等,有关pgAdmin3的详细介绍我们在以后讨论,本文主要介绍命令行下的操作。图形化管理工具能做到的命令行都可以做到,您可以在命令行下创建表,在pgAdmin3上查看是否同步:7.创建和删除表;7.1创建新表;创建完数据库之后,您就可以创建新表了,可以通过声明表的名字和所有字段的名字及其类型来创建表,例如:mydb#CREATETABLEweather(cityvarchar(80),temp_loint,--最低气温temp_hiint,--最高气温prcpreal,--降水量datedate);注:您可以在psql里连换行符一起键入这些东西。psql可以识别该命令直到分号才结束,不要忘记“;”您可以在SQL命令中自由使用空白(也就是空格,tab,和换行符)。这就意味着您可以用和上面不同的对齐方式键入命令。两个划线("--")引入注释。任何跟在它后面的东西直到该行的结尾都被忽略。SQL是对关键字和标识符大小写不敏感的语言,只有在标识符用双引号包围时才能保留它们的大小写属性。7.2数据类型;上面例子中的varchar(80)声明一个可以存储最长80个字符的任意字符串的数据类型。int是普通的整数类型。real是一种用于存储单精度浮点数的类型。date类型应该可以自解释。PostgresSQL支持标准的SQL类型int,smallint,real,doubleprecision,char(N),varchar(N),date,time,timestamp和interval,还支持其他的通用类型和丰富的几何类型。PostgreSQL可以客户化为定制任意的用户定义的数据类型,您可以参考PostgreSQL的中文文档来查询;7.3删除表;如果您不再需要某个表,或者您想创建一个不同的表,那么您可以用下面的命令删除它:mydb#DROPTABLEtablename8.向表中添加行;8.1INSERT;INSERT用于向表中添加行,您可以输入(在数据库中操作):mydb#INSERTINTOweatherVALUES('SanFrancisco',46,50,0.25,'');注:所有数据类型都使用了相当明了的输入格式。那些不是简单数字值的常量必需用单引号(')包围,就象在例子里一样。8.2point类型输入;point类型要求一个座标对作为输入,如下:mydb#INSERTINTOcitiesVALUES('SanFrancisco','(-194.0,53.0)');8.3COPY;您还可以使用COPY从文本文件中装载大量数据。这么干通常更快,因为COPY命令就是为这类应用优化的,只是比INSERT少一些灵活性.比如:mydb#COPYweatherFROM'/home/user/weather.txt';注:weather.txt是您提前写好的符合格式标准的表格内容文档;9.查询一个表;9.1SELECT;要从一个表中检索数据就是查询这个表。SQL的SELECT就是做这个用途的。该语句分为选择列表(列出要返回的字段部分),表列表(列出从中检索数据的表的部分),以及可选的条件(声明任意限制的部分)。比如,要检索表weather的所有行,键入:SELECT*FROM&code&输出结果:&code&city|temp_lo|temp_hi|prcp|date---------------+---------+---------+------+------------SanFrancisco|46|50|0.25|SanFrancisco|43|57|0|Hayward|37|54||(3rows)您可以在选择列表中写任意表达式,而不仅仅是字段列表。比如,您可以:SELECTcity,(temp_hi+temp_lo)/2AStemp_avg,dateFROM这样应该得出:city|temp_avg|date---------------+----------+------------SanFrancisco|48|SanFrancisco|50|Hayward|45|(3rows)请注意这里的AS子句是如何给输出字段重新命名的。(AS子句是可选的。)9.2WHERE;一个查询可以使用WHERE子句"修饰",声明需要哪些行。WHERE子句包含一个布尔(真值)表达式,只有那些布尔表达式为真的行才会被返回。允许您在条件中使用常用的布尔操作符(AND,OR,和NOT)。比如,下面的查询检索旧金山的下雨天的天气:mydb#SELECT*FROMweatherWHEREcity='SanFrancisco'ANDprcp&0.0;结果:city|temp_lo|temp_hi|prcp|date---------------+---------+---------+------+------------SanFrancisco|46|50|0.25|(1row)9.3排序;您可以要求返回的查询是排好序的:mydb#SELECT*FROMweatherORDERBY得出结果:city|temp_lo|temp_hi|prcp|date---------------+---------+---------+------+------------Hayward|37|54||SanFrancisco|43|57|0|SanFrancisco|46|50|0.25|在这个例子里,排序的顺序并非绝对清晰的,因此您可能看到SanFrancisco行随机的排序。但是如果您使用下面的语句,那么就总是会得到上面的结果SELECT*FROMweatherORDERBYcity,temp_您可以要求查询的结果按照某种顺序排序,并且消除重复的行输出:mydb#SELECTDISTINCTcityFROM得出结果:city---------------HaywardSanFrancisco(2rows)再次声明,结果行的顺序可能是随机的。10.视图;假设您的应用对天气记录和城市位置的组合列表特别感兴趣,而您又不想每次键入这些查询。那么您可以在这个查询上创建一个视图,它给这个查询一个名字,您可以像普通表那样引用它。进入数据库后输入:mydb#CREATEVIEWmyviewASSELECTcity,temp_lo,temp_hi,prcp,date,locationFROMweather,citiesWHEREcity=建立视图;然后选择建好的视图:SELECT*FROM结果如下:city|temp_lo|temp_hi|prcp|date|location---------------+---------+---------+------+------------+-----------SanFrancisco|46|50|0.25||(-194,53)SanFrancisco|43|57|0||(-194,53)(2rows)11.更新行;您可以用UPDATE命令更新现有的行。假设您发现所有11月28日的温度计数都低了两度,那么您就可以用下面的方式更新数据:mydb#UPDATEweatherSETtemp_hi=temp_hi-2,temp_lo=temp_lo-2WHEREdate&'';看看数据的新状态:SELECT*FROM结果为:city|temp_lo|temp_hi|prcp|date---------------+---------+---------+------+------------SanFrancisco|46|50|0.25|SanFrancisco|41|55|0|Hayward|35|52||(3rows)12.删除行;数据行可以用DELETE命令从表中删除。假设您对Hayward的天气不再感兴趣,那么您可以用下面的方法把那些行从表中删除:mydb#DELETEFROMweatherWHEREcity='Hayward';我们用下面形式的语句的时候一定要小心DELETEFROM如果没有条件,DELETE将从指定表中删除所有行,把它清空。做这些之前系统不会请求您确认!
更多信息请查看
更多信息请查看
易贤网手机网站地址:
【】&&&&&【点此处查询各地各类考试咨询QQ号码及交流群】
由于各方面情况的不断调整与变化,易贤网所提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
云南各地招聘
&nbsp&nbsp&nbsp &nbsp&nbsp&nbsp会员注册
本站不参与评论,(&&点此深度交流 )
自觉遵守:爱国、守法、自律、真实、文明的原则
尊重网上道德,遵守中华人民共和国各项有关法律法规
严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的评论
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
您在本站发表的评论,本站有权保留、转载、引用或者删除
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 postgresql 查看用户 的文章

 

随机推荐