<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
使用INSERT語句可以向表中插入資料。
建立一個表:
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));
向表中插入資料:
INSERT語句格式:
裡面的(列1,列2,…)稱為列清單;(值1,值2,…)稱為值清單。列清單和值清單個數要保持一致。
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時,可省略列清單。從左到右將值清單裡面資料賦給每一列。
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');
插入預設值:
前面建立ProductIns表設定sale_price預設值為0。在建立表的時候,設定了預設值,使用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');
從其他表中複製資料:
建立一張和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表中資料插入到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語句進行插入:
建立一個以商品種類彙總的表。
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;
DROP TABLE語句,將表刪除。
DELETE語句,刪除表裡面的資料。
DELETE語句的物件是行,不是列,無法只刪除部分列的資料。
刪除全部資料行:
格式 DELETE FROM <表名>; 例子 DELETE FROM Product;
刪除部分資料行:
格式 DELETE FROM <表名> WHERE <條件>; 例子 DELETE FROM Product WHERE sale_price >= 2000;
UPDATE語句用於改變表中資料。
格式:
UPDATE <表名> SET <列名> = <表示式>;
改變regist_date列的所有資料。
UPDATE Product SET regist_date = '2222-02-02';
修改後效果如下。
更新部分資料行:
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,需要在同一處理單元中執行的一系列更新處理的集合。
有時候要對一個表進行多個處理。比如為了某件事,需要把a的價格增加,把b的價格減少,此時,多個處理是作為同一個處理單元執行的。這個時候就可以用事務來處理。
格式:
事務開始語句; DML語句1; DML語句2; ... 事務結束語句;
例子:
其中,使用者需要明確指出事務的結束。結束事務的指令有COMMIT、ROLLBACK。
COMMIT,提交事務包含的更新處理。一旦提交,無法恢復事務開始前的狀態。
ROLLBACK,取消事務包含的更新處理,相當於放棄儲存,恢復事務開始前的狀態。
事務在資料庫連線建立時,已經悄悄開始。
不使用開始語句情況下,SQL Server、PostgreSQL、MySQL裡面預設使用自動提交模式,每條SQL語句就是一個事務。
Oracle裡面,是直到使用者執行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,事務結束時,其中的更新處理要麼都執行(COMMIT),要麼都不執行(ROLLBACK)。
一致性Consistency,事務中的處理,要滿足資料庫設定的約束,如主鍵約束、NOT NULL約束。
隔離性Isolation,不同事務之間互不干擾。一個事務向表中新增資料,沒提交前,別的事務看不到新新增的資料。
永續性Durability,事務結束後,該時間點的資料狀態會被儲存。如果由於系統故障資料丟失,也能用一些方法恢復。
以上就是PostgreSQL事務的插入刪除及更新操作範例的詳細內容,更多關於PostgreSQL事務插入刪除更新的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45