zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    filter, map, reduce, zip函数
    schwartzian sort
    各种排序
    MVVM
    js/jquery学习笔记(附百度统计初探??)
    由一句需求引发的mysql崩溃说起
    高效前端优化工具Fiddler入门教程
    由一次很有意思的购物体验想到的
    个人电脑文件目录变更日志小程序
    浅谈COOKIE和SESSION关系和区别等
  • 原文地址:https://www.cnblogs.com/charon2/p/11314936.html
Copyright © 2011-2022 走看看