postgresql学习记录

1、数据库安装mysql

centos系统自带的数据库版本比较低,咱们这里参照官网安装postgresql 11版本sql

一、安装存储库RPM:

$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

二、安装客户端软件包

yum install postgresql11

三、安装服务器包(可选)

yum install postgresql11-server

四、初始化而且启动数据库

/usr/pgsql-11/bin/postgresql-11-setup initdb
systemctl enable postgresql-11
systemctl start postgresql-11

五、登录数据库

$ su - postgres

$ -bash-4.2$ psql
psql (11.3)
输入 "help" 来获取帮助信息.

$ postgres=#

六、数据库默认数据存放目录

-bash-4.2$ pwd
/var/lib/pgsql/data

2、数据库的初始设置数据库

一、修改监听地址和端口

$ vim /var/lib/pgsql/11/data/postgresql.conf

listen_addresses = '*'        //默认是localhost,也就是127.0.0.1,没法从其余机器远程登录数据库

port = 5432                    //默认端口,若是有多个数据库实例,能够修改成不一样的端口

二、内存参数调整

shared_buffers =128M(默认)   // 共享内存大小,用于共享数据块,根据本身机器内存大小适当调节,大一些能够缓存更多数据,更高效的处理请求

work_mem = 4M       //单个SQL语句执行、排序、hash join使用内存,会自动释放

三、修改数据库log相关参数(同上面的配置参数)

logging_collector = on

log_directory = 'pg_log'

日志的切换和是否选择覆盖可使用以下几种方案(系统是默认保存一天的):

a、天天生成一个新的日志文件
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d  
log_rotation_size = 0

b、每当日志写满必定的大小(如100M),则切换一个新日志
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 0  
log_rotation_size = 100M

c、只保留7天的日志,进行循环覆盖
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = off
log_rotation_age = 7d  
log_rotation_size = 0

四、重启数据库

$ systemctl restart postgresql-11

3、数据库的基本操做vim

一、建立一个学生表

postgres=# CREATE TABLE score (student_name varchar(40),chinese_score int, test_date date);

postgres=# create table student(no int primary key,student_name varchar(40),age int);


postgres=# \d                                    // \d查看有哪些表

postgres=# \d+                                 //查看表的数据更详细

postgres=# \l                                     //查看有哪些数据库

                                List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

               关联列表
 架构模式 | 名称  |  类型  |  拥有者
----------+-------+--------+----------
 public   | score | 数据表 | postgres
(1 行记录)
    
postgres=# CREATE DATABASE testdb;      //建立数据库
CREATE DATABASE

postgres=# \c testdb ;                        //切换到指定数据库
You are now connected to database "testdb" as user "postgres".

postgres=# \d score    //查看表的结构

postgres=# DROP TABLE score;           //删除一张表

postgres=# insert into student values (1,'张三',18);     //插入一条数据到学生表

postgres=# select * from student;      //查询表里面全部的记录

postgres=# UPDATE student SET age = 15;    //修改某一列数据的值
                      

4、Psql工具使用centos

一、远程链接数据库
psql -h <hostname or ip> -p <端口> [数据库名称] [用户名称]

[root@test ~]# vim /var/lib/pgsql/11/data/pg_hba.conf

# IPv4 local connections:
host    all             all             180.76.118.22/24         trust

trust:表示信任,不须要密码既能够链接,远程来讲很是的不安全
md5:表示须要密码认证才能链接,能够给用户设置一个密码

二、给postgres数据库设置密码或者修改密码(先链接数据库)

postgres=# ALTER USER postgres WITH PASSWORD 'postgres';

>>>密码postgres要用引号引发来

三、显示SQL语句的执行时间

postgres=# select * from student;
 no | student_name | age 
----+--------------+-----
  1 | 张三         |  15
(1 row)

Time: 0.718 ms

四、postgres=# \dn      //列出全部的schema

五、postgres=# \db     //列出全部的表空间

六、postgres=# \encoding utf8;   //设置默认编码方式

连续两个tab键表示命令补全

5、逻辑结构缓存

一、表、索引,在pg中叫作Relation,其余数据库叫作Table

数据行,pg中叫作Tuple,其余数据库叫作Row

二、postgres=# ALTER database osdbadb CONNECTION LIMIT 10;    //修改数据的最大链接为10

三、postgres=# ALTER DATABASE osdbadb RENAME TO osdbadb01;   //修改数据库名称,不能在登陆的数据库修改本身名称,道理和大力士不能举起本身是同样的

四、模式:一个命名空间或目录,不一样模式下能够有相同名称的表、函数,只是为了便于管理,与mysql的database概念是相等的,

postgres=# create schema osdba;    //建立一个模式

postgres=# \dn                             //查看有哪些模式