DB——postgresql的安装与使用与备份

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37049781/article/details/82909367

安装
sudo apt-get install postgresql
此命令默认创建了一个名为 postgres 的linux用户,无密码。相当于mysql中无密码的root 用户。

默认客户端操作
登录客户端: sudo -u postgres psql
创建用户: create user 'username' with password 'password';
创建数据库(指定拥有者): create database 'databasename' owner 'username'
赋予权限: grant all privileges on database 'databasename' to 'username';

常规操作
登录数据库: psql -U dbuser -d databasename -h localhost -p 5432;
修改密码: alter user 'username' with password 'password';
删除密码: sudo -u 'username' psql -d 'databasename';
删除用户: DROP POLE 'username';
删除库: DROP DATABASE 'databasename';
删除表: DROP TABLE 'tablename';
创建表:

CREATE TABLE table_name(  
   column1 datatype,  
   column2 datatype,  
   column3 datatype,  
   .....  
   columnN datatype,  
   PRIMARY KEY( one or more columns )  
);

备份与恢复

表的备份与恢复
备份:pg_dump -U 'username' -t 'tablename' -d 'databasename' -h 'localhost' -p 'port' > back.sql
恢复:psql -U 'username' -t 'tablename' -d 'databasename' -h 'localhost' -p 'port' < back.sql

库的备份与恢复
备份:pg_dump -U 'username' -h 'localhost' -p 'port' 'databasename'> back.sql
恢复:psql -U 'username' -h 'localhost' -p 'port' 'databasename' < back.sql

数据导出

  • 客户端导出
    psql -U 'username' -d 'dbname' -h 'localhost' -o file.csv -c 'select 语句';
  • 服务端导出
    COPY tablename TO 'data.csv' WITH csv;:导出全表数据
    COPY 'select 语句' TO 'data.csv' WITH csv;:导出选择的数据
    -服务端导入
    COPY tablename from 'data.csv' WITH csv HEADER;
    若csv数据中含有标题,sql语句就添加HEADER,如果没有,就将HEADER除去

增删改查

插入:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)  VALUES (value1, value2, value3,...valueN);

查询:

SELECT "column1", "column2".."column" FROM "table_name";

更改:

UPDATE table_name  SET column1 = value1, column2 = value2...., columnN = valueN  WHERE [condition];

添加字段

ALTER TABLE 'table_name' ADD 'new_column' 'data_type';

更新字段类型

ALTER TABLE 'table_name' ALTER COLUMN 'column' SET 'NOT NULL 一些约束等'; 

更新字段名

ALTER TABLE 'table_name' ALTER COLUMN 'column' to 'new_column'; 

删除字段

ALTER TABLE 'table_name' DROP COLUMN 'column'; 

表名更改

ALTER TABLE 'table_name' RENAME TO 'new_table_name'; 

删除:

DELETE FROM table_name  WHERE [condition];

排序:

SELECT "column1", "column2".."column" FROM "table_name" ORDER BY column1 ASC;

跟在查询语句后。后接处理字段和规则,升序:ASC(默认) 降序:DESC

分组:

SELECT "column1", "column2".."column" FROM "table_name" GROUP BY 'column1';

跟在查询语句后。后接处理字段,可以将重复的数据合并,减少冗余。

条件满足:

SELECT "column1", "column2".."column" FROM "table_name" GROUP BY 'column1' having 'column2'>100;

跟在查询语句后。后接条件,达到筛选的效果。
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

条件语句:

  • AND 条件
  • OR 条件
  • AND & OR 条件
  • NOT 条件
  • LIKE 条件
  • IN 条件 在...里
  • NOT IN 条件
  • BETWEEN 条件 在 . 和 . 之间

连接查询

  • 内连接(INNER JOIN)
    此连接返回满足连接条件的多个表中的所有行。
SELECT table1.columns, table2.columns  
FROM table1  
INNER JOIN table2  
ON table1.common_filed = table2.common_field;
  • 左外连接(LEFT OUTER JOIN)
    左外连接返回从“ON”条件中指定的左侧表中的所有行,只返回满足条件的另一个表中的行。
SELECT table1.columns, table2.columns  
FROM table1  
LEFT OUTER JOIN table2  
ON table1.common_filed = table2.common_field;
  • 右外连接(RIGHT OUTER JOIN)
    右外连接返回从“ON”条件中指定的右侧表中的所有行,只返回满足条件的另一个表中的行。
SELECT table1.columns, table2.columns  
FROM table1  
RIGHT OUTER JOIN table2  
ON table1.common_filed = table2.common_field;
  • 全连接(FULL OUTER JOIN)
    全外连接从左表和左表中返回所有行。 它将NULL置于不满足连接条件的位置。
SELECT table1.columns, table2.columns  
FROM table1  
FULL OUTER JOIN table2  
ON table1.common_filed = table2.common_field;
  • 跨连接(CROSS JOIN)
    跨连接(CROSS JOIN)将第一个表的每一行与第二个表的每一行相匹配。 它也被称为笛卡尔积。 如果table1具有“x”行,而table2具有“y”行,则所得到的表将具有(x * y)行。
SELECT coloums   
FROM table1   
CROSS JOIN table2

猜你喜欢

转载自blog.csdn.net/qq_37049781/article/details/82909367