码迷,mamicode.com
首页 > 数据库 > 详细

基于Docker安装关系型数据库PostgrelSQL替代Mysql

时间:2021-01-04 10:58:21      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:替代   tab   pytho   alt   tool   with   创建数据库   实现   bin   

基于Docker安装关系型数据库PostgrelSQL替代Mysql


PostgreSQL相对于MySQL的优势

1、在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨;
2、存储过程的功能支持要比MySQL好,具备本地缓存执行计划的能力;
3、对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强;
4、PG主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量。
5、PG的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。
6、MySQL的存储引擎插件化机制,存在锁机制复杂影响并发的问题,而PG不存在。

\(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\)

PostgreSQL安装

第一步安装Docker 详情可参考博客: win10系统下把玩折腾DockerToolBox以及更换国内镜像源(各种神坑)

安装Docker成功之后我们可以拉取镜像了

拉取镜像

docker pull postgres:11.1	#我们拉取的镜像是11.1版本的

拉取成功后,输入命令查看镜像

docker images

启动命令:

docker run -d --name dev-postgres -e POSTGRES_PASSWORD=root -p 6432:5432 postgres:11.1

解释:

  • run,创建并运行一个容器;
  • --name,指定创建的容器的名字;
  • -e POSTGRES_PASSWORD=root,设置环境变量,指定数据库的登录口令为root;
  • -p 6432:5432,端口映射将容器的5432端口映射到外部机器的6432端口;
  • -d postgres:11.1,指定使用postgres:11.1作为镜像。

这里POSTGRES_PASSWORD是PostgrelSQL的用户密码,自己制定一个就可以了,默认端口号是5432,由于笔者的宿主机上已经安装好一个PostgrelSQL服务端,所以这里通过端口映射改成了6432。

PostgreSQL数据库其他内容查看博客:https://v3u.cn/a_id_171

\(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\)

PostgreSQL基本命令

一、建立数据库连接

接入PostgreSQL数据库: psql -h IP地址 -p 端口 -U 数据库名

之后会要求输入数据库密码

\(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\)

二、访问数据库

1、列举数据库:\l
2、选择数据库:\c 数据库名
3、查看该某个库中的所有表:\dt
4、切换数据库:\c interface
5、查看某个库中的某个表结构:\d 表名
6、查看某个库中某个表的记录:select * from apps limit 1;
7、显示字符集:\encoding
8、退出psgl:\q

9、获取命令帮助: psql --help

10、\help // 获取SQL命令的帮助,同 \h

11、 \dt // 显示当前数据库中的所有表

12、 select version(); // 获取版本信息

13、\d [table_name] // 显示当前数据库的指定表的表结构

14、 \c [database_name] // 切换到指定数据库,相当于use

15、 \di // 查看索引(要建立关联)

16、 \encoding [字元编码名称] // 显示或设定用户端字元编码

\(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\)

三、 SQL命令通用

*创建数据库:
create database [数据库名];

*删除数据库:
drop database [数据库名];

*创建表:
create table ([字段名1] [类型1] ;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;);

*在表中插入数据:
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);

*显示表内容:
select * from student;

*重命名一个表:
alter table [表名A] rename to [表名B];

*删除一个表:
drop table [表名];

*在已有的表里添加字段:
alter table [表名] add column [字段名] [类型];

*删除表中的字段:
alter table [表名] drop column [字段名];

*重命名一个字段:
alter table [表名] rename column [字段名A] to [字段名B];

*给一个字段设置缺省值:
alter table [表名] alter column [字段名] set default [新的默认值];

*去除缺省值:
alter table [表名] alter column [字段名] drop default;

*修改表中的某行某列的数据:
update [表名] set [目标字段名]=[目标值] where [该行特征];

*删除表中某行数据:
delete from [表名] where [该行特征];
delete from [表名]; // 删空整个表

*可以使用pg_dump和pg_dumpall来完成。比如备份sales数据库:
pg_dump drupal>/opt/Postgresql/backup/1.bak

\(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\)

阮一峰的网络日志PostgreSQL新手入门:http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html

刘悦的技术博客:https://v3u.cn/a_id_171

其他参考:https://www.cnblogs.com/zhoujie/p/pgsql.html

基于Docker安装关系型数据库PostgrelSQL替代Mysql

标签:替代   tab   pytho   alt   tool   with   创建数据库   实现   bin   

原文地址:https://www.cnblogs.com/tjw-bk/p/14213124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!