加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL 新手入门

发布时间:2020-12-13 16:56:00 所属栏目:百科 来源:网络整理
导读:PostgresQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。

PostgresQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。

有人说:自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选。

但目前我感觉还是使用 MySQL 的多一些;

有公司是使用PostgresQL 的小伙伴举个手!


概述

最近有小伙伴在群里提到CentOS下安装PostgreSQL的问题,我也亲自尝试一下。本文仅仅介绍PostgreSQL的安装和基本用法,供初次使用者上手。这只是我做为一个PostgreSQL 的初学者的学习记录,不是最佳实践。以下内容基于CentOS和Ubuntu 操作系统,其它操作系统实在没有精力兼顾,但是大部分内容应该普遍适用。

一、安装

CentOS

yum install postgresql-server
或
dnf install postgresql-server
Ubuntu
apt-get install postgresql-9.3
后面需要跟版本号

注:Ubuntu 本身默认是包含PostgreSQL 的;

CentOS 下安装完成后并不会自动启动,需要执行以下命令将其注册为系统服务,使其随系统启动:

service postgresql initdb
chkconfig postgresql on
Fedora 23 及其后续版本:

postgresql-setup initdb
systemctl enable postgresql.service systemctl start postgresql.service
CentOS 下使用yum 默认安装的是9.2版本。

PostgreSQL服务器默认使用本机的5432端口,可以通过以下命令查看:

ps aux | grep 5432

CentOS下需要先启动服务:

service postgresql start

二、创建用户和数据库

初次安装后,默认生成一个名为postgres的数据库和一个名为postgres的数据库用户。这里需要注意的是,同时还生成了一个名为postgres的Linux系统用户。

PostgreSQL的管理用户和系统的管理员不同。

创建数据库

createdb mydb
# createdb mydb
createdb: could not connect to database template1: FATAL:  role "root" does not exist
root 角色不存在,数据库中并没有root 这个用户,你的可能提示的不是root,是你当前登录的用户名。

官方文档提示直接跳到 21章,创建用户;但要创建数据库用户必须登录才行;

Ubuntu 下可以使用以下命令切换用户:

sudo su - postgres
但CentOS下就这样了。


解决方法参考:centos 切换用户显示bash-4.2$,不显示用户名路径的问题

需要注意的是:切换用户后显示 -bash-4.2$ 其实用户切换已经成功了,只是显示的内容不符合预期;我开始以为是出错了,根本没办法操作。有点傻了。

已经切换到 postgres 用户下了,接下来再执行:

createdb mydb
此命令创建一个名称为”mydb“的数据库

创建用户

postgres 用户下,使用以下命令登录 主数据库:

psql postgres

首先使用password命令,为postgres用户设置一个密码

password postgres
创建一个用户:

create user root superuser;
此命令创建一个名称为”root“的用户,权限为:superuser,超级管理员;

使用”q“命令退出 psql,切换到 root 用户下,再执行创建数据库命令,一个比较有意思的事情发生了:


创建数据库成功了!

刚刚创建的 root 用户没有设置密码,我们再次登录,为用户设置密码:

并没有验证用户密码,数据库也可以创建成功了。

PostgreSQL 是使用的系统的用户验证方式吗?但是我的系统用户 root 和数据库中的用户 root 使用的不是相同的密码。

使用q命令退出控制台

q

三、登录数据库

创建新用户和新数据库以后,就要以新用户的名义登录数据库,这时使用的是psql命令。

# psql -U root -d mydb -h 127.0.0.1 -p 5432
上面的命令你也可以这样写:

# psql -Uroot -dmydb -h127.0.0.1 -p5432
参数说明:

-U=数据库用户名,注意是大写的U;

-d=数据库名称;

-h=数据库服务器的IP;

-p=数据库服务器的端口号;

还有一种简单的写法(但是需要你的系统用户名同时也是PostgreSQL的用户):

# psql mydb
这只有在本机连接的时候可用,远程连接是不行的。

直接执行“psql”试试:

# psql
psql: FATAL:  database "root" does not exist
根据提示你能猜到什么?

如果你的系统用户名同时也是PostgreSQL的用户,而且同时存在一个同名的数据库,那么只需要执行“psql”就可以登录了。

四、控制台命令及帮助

执行“help”可以查看基本的帮助

# help
You are using psql,the command-line interface to PostgreSQL.
Type:  copyright for distribution terms
       h 查看SQL命令帮助
       ? 查看psql命令帮助
       g 或以分号终止执行查询
       q 退出
常用命令:

l:列出所有数据库
c [database_name]:连接其他数据库
d:列出当前数据库的所有表格
d [table_name]:列出某一张表格的结构
du:列出所有用户
数据库操作:

基本的数据库操作,就是使用标准的SQL语言。

# 创建新表 
CREATE TABLE table_name(id int,name varchar(20);
# 表格更名 
ALTER TABLE table_name RENAME TO new_table_name;
# 删除表格 
DROP TABLE IF EXISTS table_name;

# 插入数据 
INSERT INTO table_name(id,name) VALUES('1','张三');
# 选择记录 
SELECT * FROM table_name;
# 更新数据 
UPDATE table_name set name = '李四' WHERE name = '张三';
# 删除记录 
DELETE FROM table_name WHERE name = '李四' ;
# 添加栏位 
ALTER TABLE table_name ADD column_name varchar(40);
# 更新结构 
ALTER TABLE table_name ALTER COLUMN column_name SET NOT NULL;
# 更名栏位 
ALTER TABLE table_name RENAME COLUMN column_name TO signup;
# 删除栏位 
ALTER TABLE table_name DROP COLUMN column_name;
在使用 SSH 客户端工具如 XShell 连接 Linux 系统时,你可能会遇到以下错误:

ERROR: invalid byte sequence for encoding "UTF8": 0xd5 0xc5

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读