postgresql语句

1创建数据库

[postgres@database2019030517 ~]$ CREATE DATABASE database_name;

2删除数据库

[postgres@database2019030517 ~]$ drop database database_name;

3连接指定数据库

1[postgres@database2019030517 ~]$ psql mydb

psql (10.5)

Type "help" for help.

mydb=#

2、psql

#l   查看数据库

#c database_name;   连接数据库

4创建表。两个划线(--”)引入注释。

mydb=# CREATE TABLE weather (

city            varchar(80),

temp_lo         int,           -- 最低温度

temp_hi         int,           -- 最高温度

prcp              real,          -- 湿度

date             date);

5删除表

mydb=# DROP TABLE cities;   

1、删除A库下的B表。

#c A;

#drop table B;

6在表中增加行

INSTERT语句向表中添加行

mydb=# insert into weather values ('San Francisco',46,50,0.25,'1994-11-27');

INSERT 0 1

插入数据时候明确的指出列

mydb=# insert into weather (city,temp_lo,temp_hi,prcp,date)

mydb-# values ('chines',45,66,0.65,'1994-12-1');

INSERT 0 1

忽略某些列, 比如说,我们不知道降水量:

mydb=# insert into weather (date,city,temp_hi,temp_lo)

values ('1996-11-2','japan',44,33);

INSERT 0 1

查询一个表

mydb=# select * from weather;

     city      | temp_lo | temp_hi | prcp |    date    

---------------+---------+---------+------+------------

San Francisco |      46 |      50 | 0.25 | 1994-11-27

chines        |      45 |      66 | 0.65 | 1994-12-01

japan         |      33 |      44 |     | 1996-11-02

查询指定值

mydb=# select city,date from weather;

    city      |    date    

 ---------------+------------

San Francisco | 1994-11-27

chines        | 1994-12-01

japan         | 1996-11-02

(3 rows

选择列表中写任意表达式,而不仅仅是列的列表。比如:

mydb=# select city,(temp_lo+temp_hi)/2 as temp_avg,date from weather;

    city      | temp_avg |    date    

---------------+----------+------------

San Francisco |       48 | 1994-11-27

chines        |       55 | 1994-12-01

japan         |       38 | 1996-11-02

指定条件

mydb=# select * from weather where city='chines' and prcp>0;

  city  | temp_lo | temp_hi | prcp |    date    

--------+---------+---------+------+------------

chines |      45 |      66 | 0.65 | 1994-12-01

(1 row)

排序查看

mydb=# select * from weather order by temp_hi;

    city      | temp_lo | temp_hi | prcp |    date    

---------------+---------+---------+------+------------

japan         |      33 |      44 |      | 1996-11-02

San Francisco |      46 |      50 | 0.25 | 1994-11-27

chines        |      45 |      66 | 0.65 | 1994-12-01

chines        |      45 |      66 | 0.65 | 1994-12-01

(4 rows)

消除重复行排序查看

mydb=# select distinct * from weather order by temp_hi;

     city      | temp_lo | temp_hi | prcp |    date    

---------------+---------+---------+------+------------

japan         |      33 |      44 |      | 1996-11-02

San Francisco |      46 |      50 | 0.25 | 1994-11-27

chines        |      45 |      66 | 0.65 | 1994-12-01

(3 rows)

7、创建新用户访问pg

[postgres@database2019030517 home]$ psql

1、创建数据库新用户如dbuser

postgres=# create user dbuser with password 'Ysm_12$%';

2、创建用户数据库,exampledb

postgres=# create database exampledb owner dbuser;

3、将exampledb数据库的所有权限都赋予dbuser

postgres=# grant select,update,insert,delete,create on database exampledb to dbuser;

postgres=# grant all privileges on database exampledb to dbuser;

4使用命令 q 退出psql

postgres=# q

5、创建Linux普通用户,与刚才新建的数据库用户同名,如 dbuser

[root@database2019030517 ~]# adduser dbuser

[root@database2019030517 ~]# passwd dbuser

6、以dbuser用户连接exampledb数据库

[root@database2019030517 ~]# su - dbuser

[dbuser@database2019030517 ~]$ psql -d exampledb

7http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html

8、创建pg用户

create user user_name;

alter user user_namewith password 'Ysm_12$%';

alter user user_namewith CONNECTION LIMIT  20;#连接数限制

drop user user_name; --删除用户

alter user user_name password '123456'; --修改密码

9、给用户授权权限

PostgreSQL中预定义了许多不同类型的内置权限,如:SELECTINSERTUPDATEDELETECREATE

我们可以使用GRANT命令来赋予权限,如:

GRANT SELECT, UPDATE, INSERT ON wea TO joe;

对于上面的命令,其含义为将mytable表的增改查权限赋予admin角色。

要撤销权限,使用合适的REVOKE命令:

REVOKE SELECT, UPDATE, INSERT ON wea FROM joe;

创建测试用户

CREATE USER joe WITH PASSWORD 'Ysm_12$%';

创建测试表

CREATE TABLE wea (

city            varchar(80),

temp_lo         int,           -- 最低温度

temp_hi         int,           -- 最高温度

prcp              real,          -- 湿度

date             date

 );

授权

GRANT SELECT, UPDATE, INSERT ON wea TO joe;

验证

[postgres@database2019030517 home]$ psql -U joe -d postgres -h 127.0.0.1 -p 5432

postgres=> insert into wea values ('San Francisco',46,50,0.25,'1994-11-27');

postgres=> select * from wea;

会看到数据

[postgres@database2019030517 home]$  psql -U postgres

postgres=# REVOKE SELECT, UPDATE, INSERT ON wea FROM joe;

postgres=> select * from wea;

权限拒绝

10、数据恢复

导入数据  -U用户  -d数据库  -p端口 -f备份文件  

给张君用户的test库恢复public数据

[postgres@database2019030517 ~]$ psql -U zhangjun -d test -p 20402 -f public.sql

11、必须知道的语句

h:查看SQL命令的解释,比如h select

?:查看psql命令列表。

l:列出所有数据库。

c [database_name]:连接其他数据库。

d:列出当前数据库的所有表格。

d [table_name]:列出某一张表格的结构。

du:列出所有用户。

e:打开文本编辑器。

conninfo:列出当前数据库和连接的信息。

12、更改用户密码

ALTER USER postgres WITH PASSWORD 'Ysm_12$%';

ALTER USER oe_liuhaoran WITH PASSWORD 'Ysm_12$%';

13、对于数据库实例可见性权限

public的权限全部收回

#使普通用户看不到数据库liuhaoran1里面内容,只能看到有这个库,什么都操作不来

revoke all on database liuhaoran1 from public;

#让所有普通用户可以看到这个库。可以操作对其授权的操作

grant all on database liuhaoran1 to public;

#授予普通用户对实例liuhaoran1的连接权限

grant connect on database liuhaoran1 to public;

#将数据库liuhaoran授予test2角色连接权限

grant connect on database liuhaoran1 to test2;

#让角色可以连接数据库

grant connect on database postgres to public;

14、创建模式

CREATE SCHEMA schema_name;

模式有助于多用户使用一个数据库,而不会互相干扰。

15INSERT语句

切换到指定的数据库

#INSERT INTO TABLE_NAME (column1,column2........columnN) VALUES (values1,values2...valuesN)

16SELECT语句

切换到指定的数据库

#SELECT “column1”,”column2”,”columnN” from “teble_name”;

17UPDATE语句

UPDATE语句用于修改表中现有的记录,使用UPDTE时候必须使用where子句,否则将更新所有行

UPDATE table_name SET column1=values1, column2=values2, ...., columnN=valuesN WHERE [condition];  

UPDATE mytable SET age=20, aslary=1000 WHERE id=1;

18DEELETE语句

DELETE语句用来删除表中的记录,WHERE子句用于指定删除记录的条件,如果不指定会将删除表中的所有记录

DELETE FROM table_name WHERE [condition];

DELETE FROM EMPLOYEES WHERE id=1;

19、未完待续。。。

https://www.yiibai.com/postgresql/postgresql-order-by-clause.html#article-start

原文地址:https://www.cnblogs.com/charon2/p/11314936.html