亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PostgreSQL數(shù)據庫事務插入刪除及更新操作示例

 更新時間:2022年04月11日 12:00:28   作者:_jym  
這篇文章主要為大家介紹了PostgreSQL事務的插入刪除及更新操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

INSERT

使用INSERT語句可以向表中插入數(shù)據。

創(chuàng)建一個表:

CREATE TABLE ProductIns
(product_id      CHAR(4)      NOT NULL,
 product_name    VARCHAR(100) NOT NULL,
 product_type    VARCHAR(32)  NOT NULL,
 sale_price      INTEGER      DEFAULT 0,
 purchase_price  INTEGER      ,
 regist_date     DATE         ,
 PRIMARY KEY (product_id));

向表中插入數(shù)據:

INSERT語句格式:

里面的(列1,列2,…)稱為列清單;(值1,值2,…)稱為值清單。列清單和值清單個數(shù)要保持一致。

INSERT INTO <表名> (列1,列2,...) VALUES (值1,值2,...);
INSERT INTO ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0001', 'T恤' ,'衣服', 1000, 500, '2222-09-20');

對表的所有列進行INSERT時,可省略列清單。從左到右將值清單里面數(shù)據賦給每一列。

INSERT INTO ProductIns VALUES ('0005', '鐵鍋', '廚房用具', 6800, 5000, '2222-01-15');

插入NULL,直接在值清單里面寫NULL就行,前提是插入NULL的列不能設置NOT NULL約束。

INSERT INTO ProductIns VALUES ('0006', '勺子', '廚房用具', 500, NULL, '2222-09-20');

插入默認值:

前面創(chuàng)建ProductIns表設置sale_price默認值為0。在創(chuàng)建表的時候,設定了默認值,使用INSERT語句插入默認值的方法如下。

--顯式方法設置默認值
INSERT INTO ProductIns VALUES ('0007', '筷子', '廚房用具', DEFAULT, 790, '2222-04-28');

隱式方法設置默認值,在列清單和值清單里面,省略設置為默認值的列。

如果省略未設置為默認值的列,該列的值將被置為NULL。這一列如果是NOT NULL約束,將報錯。

--隱式方法設置默認值
INSERT INTO ProductIns (product_id, product_name, product_type, purchase_price, regist_date) VALUES ('0007', '筷子', '廚房用具', 790, '2222-04-28');

從其他表中復制數(shù)據:

創(chuàng)建一張和Product結構相同的表。

CREATE TABLE ProductCopy
(product_id      CHAR(4)      NOT NULL,
 product_name    VARCHAR(100) NOT NULL,
 product_type    VARCHAR(32)  NOT NULL,
 sale_price      INTEGER      ,
 purchase_price  INTEGER      ,
 regist_date     DATE         ,
 PRIMARY KEY (product_id));

可以像下面把Product表中數(shù)據插入到ProductCopy表里。INSERT語句里面的SELECT語句,可以使用WHERE子句、GROUP BY子句等等。

INSERT INTO ProductCopy (product_id, product_name, product_type, sale_price, purchase_price, regist_date)
SELECT product_id, product_name, product_type, sale_price, purchase_price, regist_date
  FROM Product;

使用包含GROUP BY子句的SELECT語句進行插入:

創(chuàng)建一個以商品種類匯總的表。

CREATE TABLE ProductType
(product_type        VARCHAR(32)  NOT NULL,
 sum_sale_price      INTEGER      ,
 sum_purchase_price  INTEGER      ,
 PRIMARY KEY (product_type));

通過下面,得到一個根據商品種類分組的表,并且計算出每個種類的價格的和。

INSERT INTO ProductType (product_type, sum_sale_price, sum_purchase_price)
SELECT product_type, SUM(sale_price), SUM(purchase_price)
  FROM Product
 GROUP BY product_type;

在這里插入圖片描述

DELETE

DROP TABLE語句,將表刪除。

DELETE語句,刪除表里面的數(shù)據。

DELETE語句的對象是行,不是列,無法只刪除部分列的數(shù)據。

刪除全部數(shù)據行:

格式
DELETE FROM <表名>;
例子
DELETE FROM Product;

刪除部分數(shù)據行:

格式
DELETE FROM <表名>
WHERE <條件>;
例子
DELETE FROM Product
WHERE sale_price >= 2000;

UPDATE

UPDATE語句用于改變表中數(shù)據。

格式:

UPDATE <表名>
SET <列名> = <表達式>;

改變regist_date列的所有數(shù)據。

UPDATE Product
   SET regist_date = '2222-02-02';

修改后效果如下。

在這里插入圖片描述

更新部分數(shù)據行:

UPDATE <表名>
SET <列名> = <表達式>
WHERE <條件>;
UPDATE Product
   SET sale_price = sale_price * 10
 WHERE product_type = '廚房用具';

將列更新為NULL:

前提是這個列沒有設置NOT NULL約束和主鍵約束。

UPDATE Product
   SET regist_date = NULL
 WHERE product_id = '0008';

同時更新多個列:

-- 使用逗號,所有DBMS中均可使用
UPDATE Product
   SET sale_price = sale_price * 10,
       purchase_price = purchase_price / 2
 WHERE product_type = '廚房用具';
-- 列表形式,在某些DBMS中無法使用
UPDATE Product
   SET (sale_price, purchase_price) = (sale_price * 10, purchase_price / 2)
 WHERE product_type = '廚房用具';

事務

事務transaction,需要在同一處理單元中執(zhí)行的一系列更新處理的集合。

有時候要對一個表進行多個處理。比如為了某件事,需要把a的價格增加,把b的價格減少,此時,多個處理是作為同一個處理單元執(zhí)行的。這個時候就可以用事務來處理。

格式:

事務開始語句;
DML語句1;
DML語句2;
...
事務結束語句;

例子:

其中,用戶需要明確指出事務的結束。結束事務的指令有COMMIT、ROLLBACK。

COMMIT,提交事務包含的更新處理。一旦提交,無法恢復事務開始前的狀態(tài)。

ROLLBACK,取消事務包含的更新處理,相當于放棄保存,恢復事務開始前的狀態(tài)。

事務在數(shù)據庫連接建立時,已經悄悄開始。

不使用開始語句情況下,SQL Server、PostgreSQL、MySQL里面默認使用自動提交模式,每條SQL語句就是一個事務。

Oracle里面,是直到用戶執(zhí)行COMMIT或者ROLLBACK,算一個事務。

--PostgreSQL
BEGIN TRANSACTION;
    UPDATE Product
       SET sale_price = sale_price + 1000
     WHERE product_name = 'T恤';
    UPDATE Product
       SET sale_price = sale_price - 1000
     WHERE product_name = '褲子';
COMMIT;

DBMS的事務遵循ACID特性。

原子性Atomicity,事務結束時,其中的更新處理要么都執(zhí)行(COMMIT),要么都不執(zhí)行(ROLLBACK)。

一致性Consistency,事務中的處理,要滿足數(shù)據庫設置的約束,如主鍵約束、NOT NULL約束。

隔離性Isolation,不同事務之間互不干擾。一個事務向表中添加數(shù)據,沒提交前,別的事務看不到新添加的數(shù)據。

持久性Durability,事務結束后,該時間點的數(shù)據狀態(tài)會被保存。如果由于系統(tǒng)故障數(shù)據丟失,也能用一些方法恢復。

以上就是PostgreSQL事務的插入刪除及更新操作示例的詳細內容,更多關于PostgreSQL事務插入刪除更新的資料請關注腳本之家其它相關文章!

相關文章

  • PostgreSQL upsert(插入更新)數(shù)據的操作詳解

    PostgreSQL upsert(插入更新)數(shù)據的操作詳解

    這篇文章主要介紹了PostgreSQL upsert(插入更新)教程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • PostgreSQL長事務概念解析

    PostgreSQL長事務概念解析

    pg中的長事務會影響表中垃圾回收,導致表的年齡增長無法freeze。能消耗事務的只有當執(zhí)行了一些DML或者DDL操作后才能算是我們通常說的長事務。否則只能算是我們常說的長連接,當然長連接也有很多弊端,例如占用內存、cpu等資源
    2022-09-09
  • PostgreSQL更新表時時間戳不會自動更新的解決方法

    PostgreSQL更新表時時間戳不會自動更新的解決方法

    這篇文章主要為大家詳細介紹了PostgreSQL更新表時時間戳不會自動更新的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • PostgreSQL查看帶有綁定變量SQL的通用方法詳解

    PostgreSQL查看帶有綁定變量SQL的通用方法詳解

    今天我們要探討的是 custom執(zhí)行計劃和通用執(zhí)行計劃。這一技術在 Oracle中被稱為綁定變量窺視。但 Postgresql中并沒有這樣的定義,更嚴格地說,Postgresql叫做custom執(zhí)行計劃和通用執(zhí)行計劃
    2022-09-09
  • 詳解PostgreSQL 語法中關鍵字的添加

    詳解PostgreSQL 語法中關鍵字的添加

    這篇文章主要介紹了詳解PostgreSQL 語法中關鍵字的添加的相關資料,這里說明下在parser語法解析模塊添加關鍵字,需要的朋友可以參考下
    2017-08-08
  • PostgreSQL 使用raise函數(shù)打印字符串

    PostgreSQL 使用raise函數(shù)打印字符串

    這篇文章主要介紹了PostgreSQL 使用raise函數(shù)打印字符串,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgresql的now()與Oracle的sysdate區(qū)別說明

    postgresql的now()與Oracle的sysdate區(qū)別說明

    這篇文章主要介紹了postgresql的now()與Oracle的sysdate區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Postgres中UPDATE更新語句源碼分析

    Postgres中UPDATE更新語句源碼分析

    這篇文章主要給大家介紹了關于Postgres中UPDATE更新語句源碼分析的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • PostgreSQL的日期時間差DATEDIFF實例詳解

    PostgreSQL的日期時間差DATEDIFF實例詳解

    PostgreSQL是一款簡介而又性能強大的數(shù)據庫應用程序,其在日期時間數(shù)據方面所支持的功能也都非常給力,下面這篇文章主要給大家介紹了關于PostgreSQL的日期時間差DATEDIFF的相關資料,需要的朋友可以參考下
    2023-04-04
  • PostgreSQL教程(六):函數(shù)和操作符詳解(2)

    PostgreSQL教程(六):函數(shù)和操作符詳解(2)

    這篇文章主要介紹了PostgreSQL教程(六):函數(shù)和操作符詳解(2),本文講解了模式匹配、數(shù)據類型格式化函數(shù)、時間/日期函數(shù)和操作符等內容,需要的朋友可以參考下
    2015-05-05

最新評論