第四章 數(shù)據(jù)更新

-- 第四章 數(shù)據(jù)更新
-- 4-1數(shù)據(jù)的插入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 INTO ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');
-- 列清單的省略 當(dāng)全部列都插入時(shí)
-- 插入NULL,注意插入NULL時(shí)一定不能用NOT NULL來(lái)約束這一行
-- 插入默認(rèn)值 default約束,default可以顯示也可以隱式插入,建議寫出來(lái),方便看
-- 省略INSERT語(yǔ)句中的列名,就會(huì)自動(dòng)設(shè)定為該列的默認(rèn)值(沒(méi)有默認(rèn)值時(shí)會(huì)設(shè)定為NULL)
-- 從其他表中復(fù)制數(shù)據(jù)
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));

-- INSERT SELECT 語(yǔ)句
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;

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;

SELECT * FROM PRODUCTTYPE;
-- PS:INSERT 語(yǔ)句中可以使用select的任何句子,但是使用order by并沒(méi)有任何效果

-- 4-2數(shù)據(jù)的刪除delete
DELETE FROM <chartname>;
DELETE FROM product;
-- DELETEE語(yǔ)句的刪除對(duì)象并不是表,表用drop,也不是列,而是記錄(行)
DELETE FROM product
WHERE sale_price >= 4000;
SELECT * FROM product;
-- delete語(yǔ)句只能使用where
-- TRUNCATE 可以用來(lái)刪除整個(gè)表中的數(shù)據(jù) 用法: TRUNCATE <表名>;

-- 4-3數(shù)據(jù)的更新update UPDATE SET
UPDATE product
SET regist_date = '2009-10-10';
SELECT * FROM product ORDER BY product_id;
-- 指定條件的UPDATE語(yǔ)句
UPDATE product
SET sale_price = sale_price * 10
WHERE product_type = '廚房用具';
SELECT * FROM product ORDER BY product_id;

-- 使用NULL進(jìn)行更新,NULL清空//注意:只有沒(méi)有not null限制的時(shí)候才可以u(píng)pdate為null
-- 多列更新
UPDATE product
SET sale_price = sale_price * 10
WHERE product_type = '廚房用具';
UPDATE product
SET purchase_price = purchase_price / 2
WHERE product_type = '廚房用具';

-- 多列更新簡(jiǎn)單操作1:
UPDATE product
SET sale_price = sale_price * 10
SET purchase_price = purchase_price / 2
WHERE product_type = '廚房用具';

-- 多列更新簡(jiǎn)單操作2:
UPDATE product
SET (sale_price, purchase_price) = (sale_price * 10, purchase_price / 2)
WHERE product_type = '廚房用具';

SELECT * FROM product ORDER BY product_id;

-- 事務(wù)transactjion:是需要在同一個(gè)處理單元中執(zhí)行的一系列更新處理的集合
-- 更新書中數(shù)據(jù)
UPDATE product
SET sale_price = sale_price - 1000
WHERE product_name = '運(yùn)動(dòng)T恤';

UPDATE product
SET sale_price = sale_price + 1000
WHERE product_name = 'T恤衫';

-- 創(chuàng)建事務(wù)
-- START / BEGIN TRANSACTION 開始事務(wù) COMMIT結(jié)束 ROLLBACK 取消事務(wù)
-- ACID特性:原子性,完整性/一致性,隔離性(不同的事務(wù)之間互不干擾),持久性

-- 練習(xí)題
-- 4.1 原始數(shù)據(jù) 并沒(méi)有被更新
-- 4.2復(fù)制一遍整個(gè)表xx 錯(cuò)誤 因?yàn)閕nsert違反了主鍵約束
-- 4.3
CREATE TABLE ProductMargin
(product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
sale_price INTEGER ,
purchase_price INTEGER ,
margin INTEGER ,
PRIMARY KEY (product_id));

INSERT INTO ProductMargin (product_id, product_name, sale_price, purchase_price, margin)
VALUES ('0001', 'T恤衫', 1000, 500, 500),
('0002', '打孔器', 500, 320, 180),
('0003', '運(yùn)動(dòng)T恤', 4000, 2800, 1200);
SELECT * FROM productmargin;
-- ps 此問(wèn)題數(shù)據(jù)本可以從product表中直接摘錄

-- 4.4 略
START TRANSACTION;
-- 將運(yùn)動(dòng)T恤的銷售單價(jià)從4000日元下調(diào)至3000日元。
-- 根據(jù)上述結(jié)果再次計(jì)算運(yùn)動(dòng)T恤的利潤(rùn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫(kù)概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 MySQL基本操...
    Kingtester閱讀 8,057評(píng)論 5 115
  • 查詢:SELECTFROM 星號(hào) * 代表查詢?nèi)康牧腥秉c(diǎn)在于,無(wú)法選擇列出現(xiàn)的順序ps:sql可以通過(guò)換行和...
    Curi閱讀 417評(píng)論 0 0
  • 一、SQL速成 結(jié)構(gòu)查詢語(yǔ)言(SQL)是用于查詢關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,它包括若干關(guān)鍵字和一致的語(yǔ)法,便于數(shù)據(jù)庫(kù)元件...
    shadow雨軒閱讀 578評(píng)論 0 3
  • #幸福是需要修出來(lái)的~每天進(jìn)步1%~幸福實(shí)修13班~4Lv杭州# 20180117(49/60) 【幸福三朵玫瑰】...
    嘟嘟媽媽2727閱讀 206評(píng)論 0 0
  • 你住的城市下雨了,很想問(wèn)你有沒(méi)有帶傘??墒俏胰套×?,因?yàn)槲遗履阏f(shuō)沒(méi)帶,而我又無(wú)能為力。就像是我愛(ài)你卻給不到你想要的...
    山頂小仙人閱讀 3,432評(píng)論 163 111

友情鏈接更多精彩內(nèi)容