来源:自学PHP网 时间:2015-04-17 15:08 作者: 阅读:次
[导读] PostgreSQL是一个强大开源的关系数据库系统.它经过了15年多的开发历程,一个经得起考验的体系结构,在可靠性、数据完整性和正确性方面赢得了极好的声誉.它运行在所有主要的操作系统上...
PostgreSQL是一个强大开源的关系数据库系统.它经过了15年多的开发历程,一个经得起考验的体系结构,在可靠性、数据完整性和正确性方面赢得了极好的声誉.它运行在所有主要的操作系统上,包括Linux、UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64)和Windows. 它是完全符合ACID原则,完全支持外键、联合、视图、触发器和存储过程(多种语言)。 它包含了SQL92和SQL99的大部分数据类型,包括INTEGER,NUMERIC,BOOLEAN,CHAR,VARCHAR,DATE,INTERVAL和TIMESTAMP.它也支持存储二进制巨型对象,包括图片、声音和视频.它有本地编程接口,C/C++、Java、.Net、Perl、Python、Ruby、Tcl、ODBC,其中还有特别的文档.PostgreSQL以执行标准为傲。 它强有力地实现了ANSI-SQL 92/99标准.它充分支持子查询(包括FROM子句的子选择) 、提交读(read-committed)、序列化事务隔离级别.虽然PostgreSQL有一个完全关系系统编目(catalog)它自己支持每数据库多重纲要(schema),它的编目也可以通过SQL标准定义的纲要信息(Information Schema)来存取.数据完整性功能包括(复合)主键、限制和级联更新/删除的外键、CHECK约束、UNIQUE约束和非空约束.它也有许多扩展和高级功能.其中有为了方便按顺序自动增加列值,LIMIT/OFFSET允许返回部分结果集.PostgreSQL支持符合、惟一、局部和函数索引,可以使用B-tree,R-tree,hash,或者GiST存储方法中的任一个。 安装 1.windows下:在官网(http://www.postgresql.org)下载windows下安装包,目前最新版本是8.3的,这里需要注意下,安装PostgreSQL时会在系统用户中添加一个postgres用户,而且在windows下的Postgresql密码自带有类似于安全策略的东西,设置密码是需要复杂度和长度的限制.安装好后,需要配置系统环境变量,把../PostgreSQL/bin添加到系统环境变量,这样的话,可以直接在cmd中执行psql(类似于mysql在windows下的mysql.exe)。 2.*nix下安装:可以到官网下载相应的安装包或者在线安装,安装过程不会出现设置密码这个步骤,默认密码是空,使用psql的时候需要切换postgres用户登录就可以了。 基本语法 既然是数据库当然遵循SQL语言,create、insert、update等被称为PL/PgSQL,但不是很明确,一个数据库的语法太多了,只说下对小黑们有用的几个语法。 1.注释、结束标记、连接符 2.自动匹配 3.连接PostgreSQL 默认情况下是不给外连的,如果想远程管理PostgreSQL数据库的话,需要修改../PostgreSQL/data/pg_bha.conf文件,请参考 PostgreSQL学习手册.PostgreSQL默认用户是postgres(类似于mysql的root),默认端口是5432,默认系统库是postgres。 使用psql -h ip -d dataname -p port -U username,这里注意-U参数是大写,如果是本机采用默认安装的话,直接使用psql -U postgres后会提示输入密码,正确输入密码后会出现postgres=#的字符(类似于mysql中的mysql>),就可以正常使用psql了。 ? 显示pgsql命令的说明 4.pgAdmin III和phpPgAdmin b.phpPgAdmin看名字就知道类似mysql的phpMyAdmin,是使用php开发的网页版数据库管理程序,功能非常强大,使用过phpMyAdmin的朋友 都知道phpMyAdmin的强大,phpPgAdmin针对PostgreSQL数据库一样强大。 注入PostgreSQL 既然PostgreSQL是RDBMS,所以系统中所有数据库的结构会保存系统库中,所以注入的时候就相对比较方便。由于注释方式和mysql是一样,如何判断是什么数据库?关于这点我也没有一个标准的答案,我想可以扫描5432端口(如何web和库没有分离的情况下),使用version()函数的返回结果来判断,直接使用查询语句如select * from pg_class/select * from pg_group的返回结果来判断数据库类型.由于PostgreSQL的目录页存在information_schema,我手上也没有PostgreSQL数据库的注射点,所以我也不知道能不能使用select schema_name from information_schema_schemata来判断,不好意思,关于使用information_schema只是我的想法,有条件的朋友验证下。 介绍下PostgreSQL中内置函数、表和视图在入侵的应用。 读文件 首先需要建立一个表,然后copy文件内容到表中,在读取表内容,思路是这样的 从PostgreSQL 8.2后加入了pg_file_read(text,text,bool)和pg_file_write(text,text,bool),看名字就应该知道是干什么用的吧,大家自己去挖掘吧! if(empty($_GET[action])) ?> if(!empty($_GET[action]))//连接postgresql |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com