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