postgresql学习记录

一、数据库安装

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

1、安装存储库RPM:

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

2、安装客户端软件包

yum install postgresql11

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

yum install postgresql11-server

4、初始化并且启动数据库

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

5、登陆数据库

$ su - postgres

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

$ postgres=#

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

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

二、数据库的初始设置

1、修改监听地址和端口

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

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

port = 5432                    //默认端口,如果有多个数据库实例,可以修改为不同的端口

2、内存参数调整

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

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

3、修改数据库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

4、重启数据库

$ systemctl restart postgresql-11

三、数据库的基本操作

1、创建一个学生表

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;    //修改某一列数据的值
                      

四、Psql工具使用

1、远程连接数据库
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:表示需要密码认证才能连接,可以给用户设置一个密码

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

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

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

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

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

Time: 0.718 ms

4、postgres=# \dn      //列出所有的schema

5、postgres=# \db     //列出所有的表空间

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

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

五、逻辑结构

1、表、索引,在pg中叫做Relation,其他数据库叫做Table

数据行,pg中叫做Tuple,其他数据库叫做Row

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

3、postgres=# ALTER DATABASE osdbadb RENAME TO osdbadb01;   //修改数据库名称,不能在登录的数据库修改自己名称,道理和大力士不能举起自己是一样的

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

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

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

  

  

  

  

 

posted @ 2019-06-12 18:51  北方莜蓝  阅读(420)  评论(0编辑  收藏  举报