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 7、http://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中预定义了许多不同类型的内置权限,如:SELECT、INSERT、UPDATE、DELETE、CREATE。 我们可以使用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; 模式有助于多用户使用一个数据库,而不会互相干扰。 |
15、INSERT语句
切换到指定的数据库 #INSERT INTO TABLE_NAME (column1,column2........columnN) VALUES (values1,values2...valuesN) |
16、SELECT语句
切换到指定的数据库 #SELECT “column1”,”column2”,”columnN” from “teble_name”; |
17、UPDATE语句
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; |
18、DEELETE语句
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