PostgresSQL数据库安装及操作
PostgreSQL介绍
PostgreSQL是⼀个功能强⼤的开源对象关系数据库管理系统(ORDBMS)。⽤于安全地存储数据; ⽀持最佳做法,并允许在处理请求时检索它们。PostgreSQL(也称为Post-gress-Q-L)由PostgreSQL全球开发集团(全球志愿者团队)开发。它不受任何公司或其他私⼈实体控制。它是开源的,其源代码是免费提供的。
PostgreSQL是跨平台的,可以在许多操作系统上运⾏,如Linux,FreeBSD,OS X,Solaris和Microsoft Windows等。
PostgreSQL的特点
PostgreSQL的特点如下 -
PostgreSQL可在所有主要操作系统(即Linux,UNIX(AIX,BSD,HP-UX,SGI IRIX,Mac OS X,Solaris,Tru64)和Windows等)上运⾏。
PostgreSQL⽀持⽂本,图像,声⾳和视频,并包括⽤于C/C++,Java,Perl,Python,Ruby,Tcl和开放数据库连接(ODBC)的编程接⼝。
PostgreSQL⽀持SQL的许多功能,例如复杂SQL查询,SQL⼦选择,外键,触发器,视图,事务,多进程并发控制(MVCC),流式复制(9.0),热备(9.0))。
在PostgreSQL中,表可以设置为从“⽗”表继承其特征。
可以安装多个扩展以向PostgreSQL添加附加功能。
PostgreSQL⼯具
有⼀些开放源码以及付费⼯具可⽤作PostgreSQL的前端⼯具。这⾥列出⼏个被⼴泛使⽤的⼯具:
1. psql:
sql数据库用什么软件打开它是⼀个命令⾏⼯具,也是管理PostgreSQL的主要⼯具。 pgAdmin是PostgreSQL的免费开源图形⽤户界⾯管理⼯具。
2. phpPgAdmin:
它是⽤PHP编写的PostgreSQL的基于Web的管理⼯具。它基于phpMyAdmin⼯具管理MySQL功能来开发。它可以⽤作PostgreSQL的前端⼯具。
3. pgFouine:
它是⼀个⽇志分析器,可以从PostgreSQL⽇志⽂件创建报告。专有⼯具有 -
Lightning Admin for PostgreSQL, Borland Kylix, DBOne, DBTools Manager PgManager, Rekall, Data Architect, SyBase Power Designer, Microsoft Access, eRWin, DeZign for Databases, PGExplorer, Case Studio 2, pgEdit, RazorSQL, MicroOLAP Database Designer, Aqua Data Studio, Tuples, EMS Database Management Tools for PostgreSQL, Navicat, SQL Maestro Group products for PostgreSQL, Datanamic DataDiff for PostgreSQL, Datanamic SchemaDiff for PostgreSQL, DB MultiRun PostgreSQL Edition, SQLPro, SQL Image Viewer, SQL Data Sets 等等。
PostgreSQL安装(Linux)
⾸先,安装PostgreSQL客户端。
sudo apt-get install postgresql-client
然后,安装PostgreSQL服务器。
sudo apt-get install postgresql
正常情况下,安装完成后,PostgreSQL服务器会⾃动在本机的5432端⼝开启。
如果还想安装图形管理界⾯,可以运⾏下⾯命令,但是本⽂不涉及这⽅⾯内容。
sudo apt-get install pgadmin3
添加新⽤户和新数据库
初次安装后,默认⽣成⼀个名为postgres的数据库和⼀个名为postgres的数据库⽤户。这⾥需要注意的是,同时还⽣成了⼀个名为postgres的Linux系统⽤户。
下⾯,我们使⽤postgres⽤户,来⽣成其他⽤户和新数据库。好⼏种⽅法可以达到这个⽬的,这⾥介绍两种。
第⼀种⽅法,使⽤PostgreSQL控制台。
⾸先,新建⼀个Linux新⽤户,可以取你想要的名字,这⾥为dbuser。
sudo adduser dbuser
然后,切换到postgres⽤户。
sudo su - postgres
下⼀步,使⽤psql命令登录PostgreSQL控制台。
psql
这时相当于系统⽤户postgres以同名数据库⽤户的⾝份,登录数据库,这是不⽤输⼊密码的。如果⼀切正常,系统提⽰符会变为"postgres=#",表⽰这时已经进⼊了数据库控制台。以下的命令都在控制台内完成。
第⼀件事是使⽤password命令,为postgres⽤户设置⼀个密码。
password postgres
第⼆件事是创建数据库⽤户dbuser(刚才创建的是Linux系统⽤户),并设置密码。
CREATE USER dbuser WITH PASSWORD ';password';;
第三件事是创建⽤户数据库,这⾥为exampledb,并指定所有者为dbuser。
CREATE DATABASE exampledb OWNER dbuser;
第四件事是将exampledb数据库的所有权限都赋予dbuser,否则dbuser只能登录控制台,没有任何数据库操作权限。
GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;
最后,使⽤q命令退出控制台(也可以直接按ctrl+D)。
q
第⼆种⽅法,使⽤shell命令⾏。
添加新⽤户和新数据库,除了在PostgreSQL控制台内,还可以在shell命令⾏下完成。这是因为PostgreSQL提供了命令⾏程序createuser和createdb。还是以新建⽤户dbuser和数据库exampledb为例。
⾸先,创建数据库⽤户dbuser,并指定其为超级⽤户。
sudo -u postgres createuser --superuser dbuser
然后,登录数据库控制台,设置dbuser⽤户的密码,完成后退出控制台。
sudo -u postgres psql
password dbuser
q
接着,在shell命令⾏下,创建数据库exampledb,并指定所有者为dbuser。
sudo -u postgres createdb -O dbuser exampledb
登录数据库
添加新⽤户和新数据库以后,就要以新⽤户的名义登录数据库,这时使⽤的是psql命令。
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
上⾯命令的参数含义如下:-U指定⽤户,-d指定数据库,-h指定服务器,-p指定端⼝。
输⼊上⾯命令以后,系统会提⽰输⼊dbuser⽤户的密码。输⼊正确,就可以登录控制台了。
psql命令存在简写形式。如果当前Linux系统⽤户,同时也是PostgreSQL⽤户,则可以省略⽤户名(-U
参数的部分)。举例来说,我的Linux系统⽤户名为ruanyf,且PostgreSQL数据库存在同名⽤户,则我以ruanyf⾝份登录Linux系统后,可以直接使⽤下⾯的命令登录数据库,且不需要密码。
psql exampledb
此时,如果PostgreSQL内部还存在与当前系统⽤户同名的数据库,则连数据库名都可以省略。⽐如,假定存在⼀个叫做ruanyf的数据库,则直接键⼊psql就可以登录该数据库。
psql
另外,如果要恢复外部数据,可以使⽤下⾯的命令。
psql exampledb < exampledb.sql
控制台命令
除了前⾯已经⽤到的password命令(设置密码)和q命令(退出)以外,控制台还提供⼀系列其他命令。
h:查看SQL命令的解释,⽐如h select。
:
查看psql命令列表。
l:列出所有数据库。
c [database_name]:连接其他数据库。
d:列出当前数据库的所有表格。
d [table_name]:列出某⼀张表格的结构。
du:列出所有⽤户。
e:打开⽂本编辑器。
conninfo:列出当前数据库和连接的信息。
PostgreSQL安装(Windows)
由于我的系统是 Windows 10 64位,所以选择以下对应的版本 -
PostgreSQL9.6.2
Windows x86-64
以管理员⾝份运⾏下载的Postgresql-9.来安装PostgreSQL。与安装其它软件⼀样,没有什么特别之处,选择安装⽬录等下⼀步就好。
选择要安装的位置。默认情况下,它安装在程序⽂件夹(C:\Program File)中。
选择⼀个⽬录来存储数据。默认情况下,它存储在PostgreSQL安装⽬录的data⽬录下,这⾥使⽤默认的就⾏ -
设置将要求您输⼊密码,因此请您输⼊密码,这⾥我输⼊的密码是:123456。
设置PostgreSQL服务器的端⼝,保持默认,点击下⼀步 -
这⼀步将要求选择“locale”,这⾥保持默认。然后开始安装 -
安装过程就绪。完成安装过程需要⼀些时间。完成安装过程后,您将看到以下屏幕 -
取消选中复选框按钮,然后单击完成按钮完成安装。
创建数据库
在PostgreSQL中,可以使⽤CREATE DATABASE命令创建数据库。
语法:
CREATE DATABASE database_name;
这⾥,database_name是指定要创建的数据库的名称。
PostgreSQL使⽤UI创建数据库
在您的系统中安装PostgreSQL后,打开开始菜单,然后单击pgAdmin。会得到⼀个这样的页⾯:
打开pgAdmin,第⼀次打开可能需要你输⼊密码,结果如下 -
右键单击PostgreSQL 9.6并将PostgreSQL连接到本地主机服务器。
右键单击数据库(Databases),转到新数据库,将出现⼀个弹出框,如下图所⽰ -
然后键⼊您要的数据库名称,这⾥创建的数据库名称是:yiibai_db,如下图所⽰ -
点击保存(Save)就可以了。
创建新的数据库(yiibai_db)如下图所⽰ -
PostgreSQL使⽤查询⼯具创建数据库
打开SQL Shell(psql),执⾏以下创建语句 -
create database testdb;
执⾏结果如下 -
查看数据库 -
postgres=# \l
数据库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
-----------+----------+----------+--------------------------------+--------------------------------+-----------------------
postgres | postgres | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 |
template0 | postgres | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 | =c/postgres +
| | | | | postgres=CTc/postgres
testdb | postgres | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 |
yiibai_db | postgres | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 |
(5 ⾏记录)
postgres=#
或者在 pgAdmin 的左侧中查看,结果如下 -
数据类型
数据类型指定要在表字段中存储哪种类型的数据。在创建表时,对于每列必须使⽤数据类型。
PotgreSQL中主要有三种类型的数据类型。此外,⽤户还可以使⽤CREATE TYPE SQL命令创建⾃⼰的⾃定义数据类型。以下是PostgreSQL中主要有三种类型的数据类型:
数值数据类型
字符串数据类型
⽇期/时间数据类型
数值数据类型
数字数据类型⽤于指定表中的数字数据。
名称描述存储⼤⼩范围
smallint存储整数,⼩范围2字节-32768 ⾄ +32767
integer存储整数。使⽤这个类型可存储典型的整数4字节-2147483648 ⾄ +2147483647
bigint存储整数,⼤范围。8字节-9223372036854775808 ⾄ 9223372036854775807 decimal⽤户指定的精度,精确变量⼩数点前最多为131072个数字; ⼩数点后最多为16383个数字。numeric⽤户指定的精度,精确变量⼩数点前最多为131072个数字; ⼩数点后最多为16383个数字。real可变精度,不精确4字节6位数字精度
double可变精度,不精确8字节15位数字精度
serial⾃动递增整数4字节 1 ⾄ 2147483647
bigserial⼤的⾃动递增整数8字节 1 ⾄ 9223372036854775807
字符串数据类型
String数据类型⽤于表⽰字符串类型值。
数据类型描述
char(size)这⾥size是要存储的字符数。固定长度字符串,右边的空格填充到相等⼤⼩的字符。
character(size)这⾥size是要存储的字符数。固定长度字符串。右边的空格填充到相等⼤⼩的字符。
varchar(size)这⾥size是要存储的字符数。可变长度字符串。
character varying(size)这⾥size是要存储的字符数。可变长度字符串。
text可变长度字符串。
⽇期/时间数据类型
⽇期/时间数据类型⽤于表⽰使⽤⽇期和时间值的列。
名称描述存储⼤⼩最⼩值最⼤值解析度timestamp [ (p) ] [不带时区 ]⽇期和时间(⽆时区)8字节4713 bc294276 ad1微秒/14位数timestamp [ (p) ]带时区包括⽇期和时间,带时区8字节4713 bc294276 ad
date⽇期(没有时间)4字节4713 bc5874897 ad1微秒/14位数
time [ (p) ] [ 不带时区 ]时间(⽆⽇期)8字节00:00:0024:00:001微秒/14位数time [ (p) ] 带时区仅限时间,带时区12字节00:00:00+145924:00:00-14591微秒/14位数interval [ fields ] [ (p) ]时间间隔12字节-178000000年178000000年1微秒/14位数名称描述存储⼤⼩最⼩值最⼤值解析度
名称描述存储⼤⼩
boolean它指定true或false的状态。1字节
名称描述存储⼤⼩范围
money货币⾦额8字节-92233720368547758.08 ⾄ +92233720368547758.07
名称存储⼤⼩表⽰描述
point16字节在⼀个平⾯上的点(x,y)
line32字节⽆限线(未完全实现)((x1,y1),(x2,y2))
lseg32字节有限线段((x1,y1),(x2,y2))
box32字节矩形框((x1,y1),(x2,y2))
path16+16n字节封闭路径(类似于多边形)((x1,y1),…)
polygon40+16n字节多边形(类似于封闭路径)((x1,y1),…)
circle24字节圆<(x,y),r>(中⼼点和半径)
⼀些其他数据类型
布尔类型:
货币类型:
⼏何类型:
⼏何数据类型表⽰⼆维空间对象。最根本的类型:点 - 形成所有其他类型的基础。
数据库操作
基本的数据库操作,就是使⽤⼀般的SQL语⾔。
# 创建新表
CREATE TABLE usertbl(name VARCHAR(20), signupdate DATE);
# 插⼊数据
INSERT INTO usertbl(name, signupdate) VALUES('张三', '2013-12-22');
# 选择记录
SELECT*FROM user_tbl;
# 更新数据
UPDATE user_tbl set name ='李四'WHERE name ='张三';
# 删除记录
DELETE FROM user_tbl WHERE name ='李四' ;
# 添加栏位
ALTER TABLE user_tbl ADD email VARCHAR(40);
# 更新结构
ALTER TABLE usertbl ALTER COLUMN signupdate SET NOT NULL;
# 更名栏位
ALTER TABLE usertbl RENAME COLUMN signupdate TO signup;
# 删除栏位
ALTER TABLE user_tbl DROP COLUMN email;
# 表格更名
ALTER TABLE usertbl RENAME TO backuptbl;
# 删除表格
DROP TABLE IF EXISTS backup_tbl;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论