postgresql数据库常用命令(资源)

进入数据库


#su - postgres                             #切换用户,执行后提示符会变为 '-bash-4.2$'
#psql -U postgres                        #登录数据库,执行后提示符变为 'postgres=#'
#ALTER USER postgres WITH PASSWORD 'postgres'           #设置postgres用户密码为

#postgres=# \q                                      #退出数据库

\h   :   查看SQL命令的解释,比如\h select。
\?   :   查看psql命令列表。
\l   :   列出所有数据库。
\c [database_name]   :   连接其他数据库。
\d   :   列出当前数据库的所有表格。
\d [table_name]   :   列出某一张表格的结构。
\du   :  列出所有用户。
\e   :   打开文本编辑器。
\conninfo   :    列出当前数据库和连接的信息。
alter user postgres with password 'new password'             #更改postgres的密码

 

增加

进入到 PostgreSQL 的安装目录,并进入到 bin 目录,createdb 命令位于 PostgreSQL安装目录/bin 下,执行创建数据库的命令:

$ cd /Library/PostgreSQL/11/bin/
$ createdb -h localhost -p 5432 -U postgres runoobdb
password ******
CREATE DATABASE dbname;

 

选择数据库

使用 \l 用于查看已经存在的数据库:

postgres=# \l

使用 \c + 数据库名 来进入数据库:

postgres=# \c runoobdb

连接数据库后面添加数据库名来选择数据库:

$ psql -h localhost -p 5432 -U postgress testdb
Password for user postgress: ****

 

 

给定的数据库中创建一个新表

CREATE TABLE table_name(  
   column1 datatype,  
   column2 datatype,  
   column3 datatype,  
   .....  
   columnN datatype,  
   PRIMARY KEY( one or more columns )  
);
CREATE TABLE public.student2
(
  id integer NOT NULL,
  name character(100),
  subjects character(1),
  CONSTRAINT student2_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public.student2
  OWNER TO postgres;
COMMENT ON TABLE public.student2
  IS '这是一个学生信息表2';
CREATE TABLE myschema.tb_test
(
  id integer,
  name character(254)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE myschema.tb_test
  OWNER TO postgres;

 

创建模式

通过SQL命令行直接创建 -

CREATE SCHEMA myschema;

创建了一个表,表名为 COMPANY 表格,主键为 IDNOT NULL 表示字段不允许包含 NULL 值:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

 

 

 

删除

使用SQL删除数据库

postgres=# drop database testdb;
DROP DATABASE
postgres=# drop table student2;

 

 

插入数据(INSERT语句)

语法:

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

 

注意:column1, column2, column3,...columnN是要插入数据的表中的列的名称。

INSERT INTO EMPLOYEES(  ID, NAME, AGE, ADDRESS, SALARY)  
VALUES
 (1, 'Maxsu', 25, '海口市人民大道2880号', 109990.00 ), 
(2, 'minsu', 25, '广州中山大道 ', 125000.00 ), 
(3, '李洋', 21, '北京市朝阳区', 185000.00),   
(4, 'Manisha', 24, 'Mumbai', 65000.00), 
(5, 'Larry', 21, 'Paris', 85000.00);


 

查询数据(SELECT语句)

SELECT语句用于从数据库表中检索数据。 数据以结果表格的形式返回。

语法:

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

这里,column1,column2,.. columnN指定检索哪些数据的列。 如果要从表中检索所有字段,则必须使用以下语法:

SELECT * FROM "table_name";

 

执行以下查询从表中检索指定字段:

SELECT id,name FROM EMPLOYEES;

或者

SELECT ID, NAME, AGE, SALARY  FROM EMPLOYEES;


 

更新数据(UPDATE语句)

UPDATE语句用于修改表中现有的记录。 要更新所选行,您必须使用WHERE子句,否则将更新所有行。

语法:

以下是update语句的基本语法:

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


删除数据(DELETE语句)

WHERE”子句用于指定删除所选记录的条件,如是不指定条件则将删除所有记录。

语法:

以下是DELETE语句的基本语法:

DELETE FROM table_name  
WHERE [condition];

 

ORDER BY子句

ORDER BY子句用于按升序或降序对数据进行排序。数据在一列或多列的基础上进行排序。

语法:

SELECT column-list  
FROM table_name  
[WHERE condition]  
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

参数说明:

  • column_list:它指定要检索的列或计算。
  • table_name:它指定要从中检索记录的表。FROM子句中必须至少有一个表。
  • WHERE conditions:可选。 它规定必须满足条件才能检索记录。
  • ASC:也是可选的。它通过表达式按升序排序结果集(默认,如果没有修饰符是提供者)。
  • DESC:也是可选的。 它通过表达式按顺序对结果集进行排序。

 

升序排序 - ORDER BY [field] ASC

执行以下查询以按升序ORDER BY AGE数据记录:

SELECT *   
FROM EMPLOYEES  
ORDER BY AGE ASC;

按照 age 字段升序排序

降序排序 - ORDER BY [field] DESC

执行以下查询以按降序ORDER BY name DESC数据的记录:

SELECT *   
FROM EMPLOYEES 
ORDER BY name DESC;

按照 name 字段降序排序

 

GROUP BY子句

GROUP BY子句用于将具有相同数据的表中的这些行分组在一起。 它与SELECT语句一起使用。

GROUP BY子句通过多个记录收集数据,并将结果分组到一个或多个列。 它也用于减少输出中的冗余。

语法:

SELECT column-list  
FROM table_name  
WHERE [conditions ]  
GROUP BY column1, column2....columnN  
ORDER BY column1, column2....columnN

 

注意:在GROUP BY多个列的情况下,您使用的任何列进行分组时,要确保这些列应在列表中可用。

执行以下查询:

SELECT NAME, SUM(SALARY)   
FROM EMPLOYEES   
GROUP BY NAME;

 

如何减少冗余数据:

再来看看下面这个例子:

我们在“EMPLOYEES”表中插入一些重复的记录。添加以下数据:

INSERT INTO EMPLOYEES VALUES (6, '李洋', 24, '深圳市福田区中山路', 135000);  
INSERT INTO EMPLOYEES VALUES (7, 'Manisha', 19, 'Noida', 125000);  
INSERT INTO EMPLOYEES VALUES (8, 'Larry', 45, 'Texas', 165000);

执行以下查询以消除冗余:

SELECT NAME, SUM(SALARY)   
FROM EMPLOYEES   
GROUP BY NAME;

      使用GROUP BY NAME时,可以看到重复的名字数据记录被合并。 它指定GROUP BY减少冗余。

 

 

Having子句

HAVING子句与GROUP BY子句组合使用,用于选择函数结果满足某些条件的特定行。

语法:

SELECT column1, column2  
FROM table1, table2  
WHERE [ conditions ]  
GROUP BY column1, column2  
HAVING [ conditions ]  
ORDER BY column1, column2

HAVING子句与GROUP BY子句组合使用,用于选择函数结果满足某些条件的特定行。

语法:

SELECT column1, column2  
FROM table1, table2  
WHERE [ conditions ]  
GROUP BY column1, column2  
HAVING [ conditions ]  
ORDER BY column1, column2

在“EMPLOYEES”表中插入一些重复的记录,首先添加以下数据:

INSERT INTO EMPLOYEES VALUES (7, 'Minsu', 24, 'Delhi', 135000);  
INSERT INTO EMPLOYEES VALUES (8, 'Manisha', 19, 'Noida', 125000);

执行以下查询表“EMPLOYEES”中name字段值计数大于1的名称。

SELECT NAME,COUNT (NAME) 
FROM EMPLOYEES  
GROUP BY NAME HAVING COUNT (NAME) > 1;


 

PostgreSQL条件查询

Having子句

HAVING子句与GROUP BY子句组合使用,用于选择函数结果满足某些条件的特定行。

语法:

SELECT column1, column2  
FROM table1, table2  
WHERE [ conditions ]  
GROUP BY column1, column2  
HAVING [ conditions ]  
ORDER BY column1, column2

将显示名称(name)数量小于2的记录。

执行以下查询:

SELECT NAME   
FROM EMPLOYEES  
GROUP BY NAME HAVING COUNT (NAME) < 2;

在“EMPLOYEES”表中插入一些重复的记录,首先添加以下数据:

INSERT INTO EMPLOYEES VALUES (7, 'Minsu', 24, 'Delhi', 135000);  
INSERT INTO EMPLOYEES VALUES (8, 'Manisha', 19, 'Noida', 125000);

查询表“EMPLOYEES”中name字段值计数大于1的名称。

SELECT NAME,COUNT (NAME) 
FROM EMPLOYEES  
GROUP BY NAME HAVING COUNT (NAME) > 1;

 

AND条件

AND条件与WHERE子句一起使用,以从表中的多个列中选择唯一的数据。

语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]    
AND [search_condition];

查询所有ID小于4并且薪水大于120000的员工数据信息,执行以下查询语句:

SELECT *  
FROM EMPLOYEES  
WHERE SALARY > 120000  
AND ID <= 4;


 

OR条件

OR条件与WHERE子句一起使用,以从表中的一列或多列列中选择唯一数据。

语法

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]    
OR [search_condition];

查询名字是Minsu或者地址为Noida员工信息,执行以下查询:

SELECT *  
FROM  EMPLOYEES 
WHERE NAME = 'Minsu'  
OR ADDRESS = 'Noida';

 

AND & OR条件

AND&OR条件在仅一个查询中提供了ANDOR条件的优点。

语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]  AND [search_condition]     
OR [search_condition];

查询名字的值为Minsu和地址的值为’Delhi‘,或者ID值大于等8的记录信息,执行以下查询:

SELECT *  
FROM EMPLOYEES  
WHERE (NAME = 'Minsu' AND ADDRESS = 'Delhi')  
OR (ID>= 8);

 

NOT条件

NOT条件与WHERE子句一起使用以否定查询中的条件。

语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] NOT [condition];

查询那些地址不为NULL的记录信息,执行以下查询:

SELECT *  
FROM EMPLOYEES  
WHERE address IS NOT NULL ;

查询那些年龄不是2124的所有记录,执行以下查询:

SELECT *  
FROM EMPLOYEES  
WHERE age NOT IN(21,24) ;

 

LIKE条件

LIKE条件与WHERE子句一起用于从指定条件满足LIKE条件的表中获取数据。

语法

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] LIKE [condition];

示例1

查询名字以Ma开头的数据记录,如下查询语句:

SELECT *   
FROM EMPLOYEES   
WHERE NAME LIKE 'Ma%';

示例2
查询名字以su结尾的数据记录,如下查询语句:

SELECT *   
FROM EMPLOYEES   
WHERE NAME LIKE '%su';

示例3
查询地址中含有大道的数据记录,如下查询语句:

SELECT *   
FROM EMPLOYEES   
WHERE address LIKE '%大道%';

 

IN条件

IN条件与WHERE子句一起使用,从指定条件满足IN条件的表中获取数据。

语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] IN [condition];

查询employee表中那些年龄为1921的员工信息,执行以下查询:

SELECT *  
FROM EMPLOYEES  
WHERE AGE IN (19, 21);

 

NOT IN条件

NOT IN条件与WHERE子句一起使用,以从指定条件否定IN条件的表中获取数据。

语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] NOT IN [condition];

查询那些年龄不是1925的数据,执行以下查询:

SELECT *  
FROM EMPLOYEES  
WHERE AGE NOT IN (19, 25);

查询那些名字不是MinsuMaxsu的数据信息,执行以下查询:

SELECT *  
FROM EMPLOYEES  
WHERE name NOT IN ('Maxsu', 'Minsu');

 

BETWEEN条件

BETWEEN条件与WHERE子句一起使用,以从两个指定条件之间的表中获取数据。

语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] BETWEEN [condition];

查询employees表中年龄在24~27之间(含2427)的数据信息,执行以下查询:

SELECT *   
FROM EMPLOYEES   
WHERE AGE BETWEEN 24 AND 27;

 

安装PostgreSQL

1

2

sudo apt-get update

sudo apt-get install postgresql postgresql-contrib

 

卸载PostgreSQL

1

2

sudo apt-get purge 'postgresql-*'

sudo apt-get autoremove 'postgresql-*'

 

CentOS卸载旧版本postgresql

1、$ yum remove postgresql*

2、删除相关目录文件:

       rm -rf  /var/lib/pgsql

   rm -rf  /usr/pgsql*

       rm -r /etc/postgresql/

       rm -r /etc/postgresql-common/

       rm -r /var/lib/postgresql/

3、删除pg相关用户组/用户

  userdel -r postgres
  groupdel postgres

4、

 

 

参考链接:

原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/postgresql/postgresql-between-condition.html
 

链接 : 

PostgreSQL安装详细步骤(linux) : https://www.cnblogs.com/qiyebao/p/4562557.html

源码postgresql安装及常见错误处理 :https://blog.csdn.net/zhu_xun/article/details/21234663

centos7 在线安装新版postgresql10 :https://www.jianshu.com/p/4e88071ed09a

Centos7 安装Postgresql10.5和PostGIS : https://blog.csdn.net/u010430471/article/details/81663248

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3803405/blog/3101434

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值