zoukankan      html  css  js  c++  java
  • 基于Docker安装关系型数据库PostgrelSQL替代Mysql

    基于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

    https://segmentfault.com/a/1190000002787641

  • 相关阅读:
    【Cocos2d-X游戏实战开发】捕鱼达人之游戏场景的创建(六)
    WPF-24:绘制正多边形
    长假引起的系统审批流的变更的思考
    Linux shell编程02 shell程序的执行 及文件权限
    poj2787 算24
    REVERSE关键字之REVERSE索引
    设计模式读书笔记-----备忘录模式
    乔布斯的基本原则 (斯卡利访谈录 )
    MediaInfo源代码分析 1:整体结构
    Python 入门教程 9 ---- A Day at the Supermarket
  • 原文地址:https://www.cnblogs.com/tjw-bk/p/14213124.html
Copyright © 2011-2022 走看看