一、pgsql里面的数据类型不再介绍:https://www.runoob.com/postgresql/postgresql-data-type.html

二、常用基本语句

2.1、CREATE DATABASE dbname;   创建数据库

create database  Demo1;

          注意:createdb 命令位于 PostgreSQL安装目录/bin 下,执行创建数据库的命令:

  1.         $ cd /Library/PostgreSQL/11/bin/
  2.         $ createdb -h localhost -p 5432 -U postgres Demo1
  3.         password ******

2.2、DROP DATABASE [ IF EXISTS ] dbname;   删除数据库

drop database  Demo1;

注意: dropdb 名位于 PostgreSQL安装目录/bin 下,执行删除数据库的命令:

  1.           $ cd /Library/PostgreSQL/11/bin/
  2.           $ dropdb -h localhost -p 5432 -U postgres runoobdb
  3.           password ******

    2.3DROP TABLE 语句来删除表格,包含表格数据、规则、触发器
    DROP TABLE Demo1; 或者 drop table department, company;

    2.4PostgreSQL 模式(SCHEMA)可以看着是一个表的集合, 一个模式可以包含视图、索引、数据类型、函数和操作符

      相同的对象名称可以被用于不同的模式中而不会出现冲突,

      例如 schema1 和 myschema 都可以包含名为 mytable 的表。

      使用模式的优势:1、允许多个用户使用一个数据库并且不会互相干扰。

2、将数据库对象组织成逻辑组以便更容易管理。

3、第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。

2.4.1、 创建 语法:# create schema myschema;

# create table myschema.company(

                          ID INT NOT NULL,

                          NAME VARCHAR (20) NOT NULL,

                          AGE INT NOT NULL,

                          ADDRESS CHAR (25),

                          SALARY DECIMAL (18, 2),

                          PRIMARY KEY (ID)

                                 );

       2.4.2、删除语法:

        删除一个为空的模式(其中的所有对象已经被删除):

  1.           DROP SCHEMA myschema;

        删除一个模式以及其中包含的所有对象:

  1.           DROP SCHEMA myschema CASCADE;

  1. 2.5、插入语句:INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
    VALUES (value1, value2, value3,...valueN);

    所有字段插入值或者 INSERT INTO TABLE_NAME
    VALUES (value1,value2,value3,...valueN);
    案例:# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE)
               VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');

    所有字段插入值或者 INSERT INTO COMPANY
               VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');


    2.6、查询语句:SELECT column1, column2,...columnN FROM table_name;
    案例:SELECT * FROM company;
    SELECT * FROM COMPANY
    WHERE SALARY > 50000;
                                  =或!=或 >=、IS NOT NULL;
    案例2
            # SELECT (17 + 6) AS ADDITION ;
    # SELECT COUNT(*) AS "RECORDS" FROM COMPANY;

    PostgreSQL 还内置了一些数学函数,如:
            1avg() 返回一个表达式的平均值
            2sum() 返回指定字段的总和
            3count() 返回查询的记录总数

  1. 2.7、更新数据库表中数据
    语法:UPDATE table_name SET column1 = value1,
    column2 = value2...., columnN = valueN WHERE [condition];
    案例:# UPDATE COMPANY SET SALARY = 15000 WHERE ID = 3;

    2.8DELETE 语句来删除 PostgreSQL 表中的数据
    DELETE FROM table_name WHERE [condition];
    案例:DELETE FROM table_name WHERE [condition];

    2.9、查询数据 limit OFFSET
    案例:=# SELECT * FROM COMPANY LIMIT 4;
    偏移 offset
    # SELECT * FROM COMPANY LIMIT 3 OFFSET 2;

    2.10DISTINCT 关键字与 SELECT 语句一起使用,用于去除重复记录,只获取唯一的记录
    案例:SELECT DISTINCT name FROM COMPANY;


    2.11PostgreSQL 约束用于规定表中的数据规则。
    PostgreSQL 中常用的约束。
    1
    NOT NULL:指示某列不能存储 NULL 值。
    2UNIQUE:确保某列的值都是唯一的。
              3PRIMARY KeyNOT NULL UNIQUE 的结合。
    确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
    4FOREIGN Key 保证一个表中的数据匹配另一个表中的值的参照完整性。
    5CHECK 保证列中的值符合指定的条件。
    6EXCLUSION :排他约束,保证如果将任何两行的指定列或表达式使用指定操作符进行比较,
    至少其中一个操作符比较将会返回 false 或空值。
  1.           CREATE TABLE COMPANY3(
  2.           ID INT PRIMARY KEY NOT NULL,
  3.            NAME TEXT NOT NULL,
  4.            AGE INT NOT NULL UNIQUE,
  5.            ADDRESS CHAR(50),
  6.            SALARY REAL DEFAULT 50000.00
  7.            );

    2.12、删除约束
         ALTER TABLE table_name DROP CONSTRAINT some_name;

    三、PostgreSQL 高级
  1.  
  1. 3.1、别名

    SELECT C.ID, C.NAME, C.AGE, D.DEPT FROM COMPANY AS C, DEPARTMENT AS D WHERE C.ID = D.EMP_ID; 
  1. 3.2PostgreSQL 触发器是数据库的回调函数,它会在指定的数据库事件发生时自动执行/调用。

          PostgreSQL 触发器可以在下面几种情况下触发:

                      3.2.1、在执行操作之前(在检查约束并尝试插入、更新或删除之前)。

           3.2.2、 在执行操作之后(在检查约束并插入、更新或删除完成之后)。

                      3.2.3、更新操作(在对一个视图进行插入、更新、删除时)

语法:1、创建触发器时的基础语法如下

CREATE TRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF]

event_name ON table_name

[

-- 触发器逻辑....

];


  1. 案例:
    关键字 触发器名字
    # CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY FOR EACH ROW EXECUTE PROCEDURE auditlogfunc();
  1.  
  1. CREATE OR REPLACE FUNCTION auditlogfunc() RETURNS TRIGGER AS $example_table$
  2. BEGIN
  3. INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp);
  4. RETURN NEW;
  5. END;
  6. $example_table$ LANGUAGE plpgsql;

列出触发器:

  1.  

# SELECT * FROM pg_trigger;

  1.  

列举出特定表的触发器,语法如下:

  1.  
  1. # SELECT tgname FROM pg_trigger, pg_class WHERE tgrelid=pg_class.oid AND relname='company';

删除触发器

  1. # drop trigger example_trigger on company;
  1.  
  1.  
  1. 3.3、索引 # \d company 命令列出 COMPANY 表的所有索引:
    # CREATE INDEX salary_index ON COMPANY (salary);

使用索引时,需要考虑下列准则:

    1、索引不应该使用在较小的表上。

    2、索引不应该使用在有频繁的大批量的更新或插入操作的表上。

    3、索引不应该使用在含有大量的 NULL 值的列上。

4、索引不应该使用在频繁操作的列上。



  1. 3.4PostgreSQL 中,ALTER TABLE 命令用于添加,修改,删除一张已经存在表的列。

   3.4.1、用 ALTER TABLE 在一张已存在的表上添加列的语法如下:

  1.       ALTER TABLE table_name ADD column_name datatype;

    3.4.2、在一张已存在的表上 DROP COLUMN(删除列),语法如下:

  1.       ALTER TABLE table_name DROP COLUMN column_name;

   3.4.3、修改表中某列的 DATA TYPE(数据类型),语法如下:

  1.       ALTER TABLE table_name ALTER COLUMN column_name TYPE datatype;
  1. 案例:# ALTER TABLE COMPANY ADD GENDER char(1); 添加列
    # ALTER TABLE COMPANY DROP GENDER; 删除列

    3.5PostgreSQL TRUNCATE TABLE 用于删除表的数据,但不删除表结构。
    TRUNCATE TABLE DELETE 具有相同的效果,但是由于它实际上并不扫描表,所以速度更快。
    语法:TRUNCATE TABLE table_name;
    案例:TRUNCATE TABLE COMPANY;

    3.6PostgreSQL 视图是只读的,因此可能无法在视图上执行 DELETEINSERT UPDATE 语句。
    但是可以在视图上创建一个触发器,当尝试 DELETEINSERT UPDATE 视图时触发,需要做的动作在触发器内容中定义。

   3.6.1、用户或用户组认为更自然或直观查找结构数据的方式。

   3.6.2 、限制数据访问,用户只能看到有限的数据,而不是完整的表。

   3.6.3、汇总各种表中的数据,用于生成报告。

语法:

  1. CREATE [TEMP | TEMPORARY] VIEW view_name AS
  2. SELECT column1, column2.....
  3. FROM table_name
  4. WHERE [condition];

案例:

  1. CREATE VIEW COMPANY_VIEW AS
  2. SELECT ID, NAME, AGE
  3. FROM COMPANY; --创建

  1. DROP VIEW view_name;--删除
  1. 3.7TRANSACTION(事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
    事务具有以下四个标准属性,通常根据首字母缩写为 ACID
  • 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
  • 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
  • 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
  • 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。
  1.  
  1. BEGIN TRANSACTION:开始一个事务。
  2. COMMIT:事务确认,或者可以使用 END TRANSACTION 命令。
  3. ROLLBACK:事务回滚。

  4. 回滚:
  5. # BEGIN;
  6. DELETE FROM COMPANY WHERE AGE = 25;
  7. ROLLBACK;


  8. 提交:
  9. # BEGIN;
  10. DELETE FROM COMPANY WHERE AGE = 25;
  11. COMMIT;
  1.  
  1. 3.8、子查询
  1. SELECT * FROM COMPANY WHERE ID IN (SELECT ID FROM COMPANY WHERE SALARY > 45000) ;
  1.  

3.9、权限

https://www.runoob.com/postgresql/postgresql-privileges.html

3.10、常用函数

  1. https://www.runoob.com/postgresql/postgresql-functions.html

PGSQL基础语句汇总的更多相关文章

  1. SQL基础语句汇总

    连接数据库 1 mysql -h10.20.66.32 -uroot -p123456 -h后面是mysqlServer所在地址,-u后面是用户名,-p后面是密码 查看数据库 1 show datab ...

  2. Oracle知识梳理(三)操作篇:SQL基础操作汇总

    Oracle知识梳理(三)操作篇:SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式:       CREATE TABLE  table_name ( col_ ...

  3. SQL基础操作汇总

    SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式:    CREATE TABLE  table_name ( col_name    datatype, -- ...

  4. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  5. ORACLE| ORACLE基础语法汇总

    创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库]   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  6. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  7. jquery基础知识汇总

    jquery基础知识汇总 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQu ...

  8. MySQL基础语句与其在Python中的使用

    一.MySQL基础语句 $ mysql -u root -p (有密码时) $ mysql -u root     (无密码时) QUIT (or \q)  退出 查看当前所有数据库 show dat ...

  9. T——SQL基础语句(定义变量,赋值,取值,分支,循环,存储过程)

    T--SQL基础语句 1.定义变量: declare @变量名 数据类型 ; declare @a int ; declare @b  nvarchar(10) ; 2.赋值: 法1:set @变量名 ...

随机推荐

  1. 「题解」HDU-4015 Mario and Mushrooms

    本文将同步发布于: 洛谷博客: csdn: 博客园: 简书: 题目 题目链接:HDU-4015 Mario and Mushrooms.Vjudge HDU-4015. 题意简述 马里奥初始只有 \( ...

  2. 为什么Mongodb索引用B树,而Mysql用B+树?

    引言 好久没写文章了,今天回来重操旧业. 今天讲的这个主题,是<面试官:谈谈你对mysql索引的认识>,里头提到的一个坑. 也就是说,如果面试官问的是,为什么Mysql中Innodb的索引 ...

  3. 【题解】Luogu p2014 选课 树型dp

    题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分,每门课有一 ...

  4. winform/WPF 多语言的实现

    WPF实现起来非常现代化,可以参考 https://www.cnblogs.com/yang-fei/p/4854460.html winform主要说一下实现过程和注意点,实现参考AutoUpdat ...

  5. 循序渐进BootstrapVue,开发公司门户网站(4)--- 使用b-carousel-slide组件实现图片轮播以及vue-awesome-swiper实现图片滑动展示

    在BootstrapVue组件库里面,提供了很多对Bootstrap同等类似的组件封装,其中图片轮播可以采用b-carousel-slide组件实现,而有一些小的图片,如客户/合作伙伴Logo或者友情 ...

  6. 我对SpringMVC的浅见

    之前在学校没接触框架这东西之前只接触过MVC的model1和model2,而真正接触SpringMVC的时候是在一年前,在学习过程中,我这才意识到SpringMVC大大简化了以前的开发工程,到了社会上 ...

  7. 基于SpringBoot 、AOP与自定义注解转义字典值

    一直以来,前端展示字典一般以中文展示为主,若在表中存字典值中文,当字典表更改字典值对应的中文,会造成数据不一致,为此设置冗余字段并非最优方案,若由前端自己写死转义,不够灵活,若在业务代码转义,臃肿也不 ...

  8. Linux-ansible批量管理

    1.ansible批量管理服务概念 (1)是基于Python语言开发的自动化软件工具 (2)是基于SSH远程管理服务实现远程主机批量管理 2.ansible批量管理服务意义 (1)提高工作的效率 (2 ...

  9. 一分钟了解JDBC的构成和原理

    JDBC(一组接口组成) : 形式如下: 1:JDBC-ODBC桥接技术(100%不用) 在Windows中有ODBC技术,ODBC指的是开放数据库链接 是由微软提供的数据库连接应用,而Java可以利 ...

  10. Docker:Linux离线安装docker

    docker离线下载路径 docker所有版本:https://download.docker.com/linux/static/stable/ 离线安装 1.解压 #解压tar包 tar -xvf ...