6,修改資料(筆記)
下列語句用力修改資料:
delete
insert
update
刪除行
刪除表的所有行
delete from customer;
delete customer;
使用truncate table刪除所有行。
使用truncate table語句快速地從表中除去所有行,同時除去所有相應的索引資料。提交事務之後,不能恢復刪除的行。
使用truncate table語句除去行比使用delete語句除去行速度要快,原因如下:
1,截斷表不會觸發表的delete觸發器。
2,不會對正在截斷的表的每一行進行邏輯日誌記錄。
使用truncate table從朝表中刪除資料。
在將truncate table語句與層次結構的超表配合使用時,only關鍵字執行只截斷超表或截斷超表及其所有子表。在預設情況下
(不使用only),截斷超表及其所有子表,假設你建立了超表person,並在它下面定義了兩個子表employee和sales_rep,以下
truncate table語句從person,employee和sales_rep表中刪除行;
truncate table person;
要將刪除僅限制於超表中的行,必須在truncate table語句中使用only關鍵字,例如:只刪除person表中的行。
truncate table only person;
刪除指定行
delete語句中的where子句的格式與select 語句中的where子句相同。可以使用它來精確指定應刪除的一行或多行。
delete from customer where customer_num = 175;
刪除選擇的行
delete from customer where company = 'Druid cyclery'
刪除包含行型別的行(IDS)
delete from employee where address.city = 'san jose';
刪除包含指定型別的行(IDS)
DELETE FROM manager where 'Baker' in diect_reports;
從超級表刪除行(IDS)
當刪除超表的各行時,刪除操作的作用域是超表及其子表。假設您建立了超表person,並在它下面定義了兩個子表employee和
sales_rep,對person表執行的以下delete語句從所有表person,employee和sales_rep中刪除行:
delete from person where name = 'Walker';
要將刪除僅限制於超表中的行,必須在delete語句中使用only關鍵字。
delete from only(person) where name = 'Walker';
複雜的刪除條件
delete 語句中的where子句可能會象select語句中的where子句那樣複雜。它可能包含用and和or連線的多個條件,也可能包含子查詢
delete from stock where 0 = (select count(*) from manufact where manufact.manu_code = stock.manu_code)
使用刪除連線(xps)
delete from stock using stock,manufact where stock.manu_code != manufact.manu_code;
插入行
insert語句向表新增新行。該語句具有兩個基本功能。它可以使用您提供的列值建立一個新行。或者它可以使用從其它表選擇的資料
建立一組新行。
單行
insert語句最簡單的形式根據列值的列表建立一個新行,並將該放放置在表中,
insert into stock values (115,'rpc','tire pump',108,'box','6/box');
將行插入到型別表中(IDS)
create row type zip_t
(
z_code char(5),
z_suffix char(4)
);
create row type address_t
(
street varchar(20),
city varchar(20),
state char(2),
zip zip_t
);
create row type employee_t
(
name varchar(30),
address address_t,
salary integer
);
create table employee of type employee_t;
插入到行型別列中(IDS)
insert into employee
values ('poole,john',
row('42 high st','willits','ca',
row(69055,1450))::address_t,35000);
為行型別指定空值
insert into student values('Brauer,howie',null,3.75)
為行型別的特定欄位插入null值時,必須包含row建構函式,一下insert語句顯示可以如何將空值插入到employee表的address列的特定欄位中。
insert into employee
values(
'singer,john',
row(null,'Davis','ca',
row(97000,2000))::address_t,67000
);
將行插入到超級表中(IDS)
INSERT INTO person
values(
'Poole,John'
row('402 saphire st.','Elmondo','ca','69055'),
345605900
)
更新行
使用update語句來更改表的一個或多個現有行中的一個或多個列的內容。此語句有兩種完全不同的形式。
一種允許您按名稱將特定值指定給列;另一種允許您將一系列值(這些值可由select語句返回)指定給一系列。
選擇要更新的行
任一形式的update語句都可以where子句結束。如果省略where子句,則修改所有行。在
where子句中選擇要修改的精確行集可能很複雜。對where 子句的唯一限制時不能在子查詢的from子句中命名更新的表。
update customer set fname = 'barnaby',lname = 'dorfler' where customer_num = 13
還可在where子句中使用子查詢,假定anza公司因為安全原因需要回收網球。結果時,必須將來自制造商ANZ幷包含庫存號6的
所有為交貨訂單設定為延期交貨:
update orders
set backlog = 'y'
where ship_date is null
and order_num in
(select distinct items.order_num from items
where itmes.stock_num = 6
and items.manu_code = 'ANZ');
用統一值進行更新
update stock set unit_price = unit_price * 1.5 where manu_code = 'HRO';
update items set total_price = quantity * (select max(unit_price) from stock where stock.stock_num = items.stock_num)
where items.order_num in (select order_num from orders where ship_date is null);
用選擇的值進行更新
update customer set (fname,lname) = ('Barnaby','Dorfler') where customer_num = 103;
用這種方法編寫語句沒有任何優點。實際上,它更難於閱讀,原因時將那些值指定給那些列不明顯。
但是,當要指定的值來自單個select語句時,此形式就很合理。
update customer
set (address1,address2,city,state,zipcode) =
((select address1,address2,city,state,zipcode from newaddr
where newaddr.customer_num=customer.customer_num))
where customer_num in (select customer_num from newaddr);
更新行型別(IDS)
更新包含已命名行型別的行
update employee set address = Row('103 california st','San Francisco', address.state,address.zip)::address_t
where name = 'zawinul,joe'
更新包含未命名行型別的行
update student set s_address = row(13 sunset','Fresno',s_address.state,s_address.zip) where s_name = 'henry,john'
為行型別的欄位指定空值
update employee set address = row(null::varchar(20),‘Davis','CA',Row(Null::Char(5),null::Char(4)))::address_t)
where name = 'henry,john'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245654/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 7.在外部資料庫中存取和修改資料(筆記)資料庫筆記
- 資料科學和人工智慧技術筆記 十九、資料整理(6)資料科學人工智慧筆記
- 機器學習演算法筆記之6:資料預處理機器學習演算法筆記
- jexcelapi學習筆記三——各資料型別的寫操作(修改)ExcelAPI筆記資料型別
- GWT筆記(6)筆記
- 《JavaScript資料結構與演算法》筆記——第6章 集合JavaScript資料結構演算法筆記
- 資料互動筆記筆記
- 資料泵用法筆記筆記
- 資料結構筆記資料結構筆記
- es6筆記筆記
- IPv6筆記筆記
- ECMAScript 6筆記(一)筆記
- #ECMASCRIPT6筆記筆記
- STREAMS筆記(6) rule筆記
- MySQL學習筆記之SQL語句建立、修改和刪除資料庫MySql筆記資料庫
- Spring 學習筆記(6)Spring和資料庫程式設計Spring筆記資料庫程式設計
- MySQL資料型別筆記MySql資料型別筆記
- Docker筆記(八):資料管理Docker筆記
- 大資料開發筆記大資料筆記
- laravel筆記+資料庫操作Laravel筆記資料庫
- 機器學習筆記——資料集分割機器學習筆記
- 資料結構筆記——概述資料結構筆記
- 資料庫學習筆記資料庫筆記
- 資料結構筆記——棧資料結構筆記
- 大資料個人筆記(一)大資料筆記
- PHP筆記--資料庫操作PHP筆記資料庫
- Node-webkit 資料筆記WebKit筆記
- 二:標量資料(筆記)筆記
- JavaScript筆記(6)陣列JavaScript筆記陣列
- java學習筆記6Java筆記
- git學習筆記6Git筆記
- CCNA學習筆記6筆記
- vue學習筆記6Vue筆記
- 筆記:JavaScript ES6筆記JavaScript
- 大資料筆記01--大資料概述大資料筆記
- 資料庫修改資料資料庫
- 資料庫mysql學習筆記記錄資料庫MySql筆記
- python學習筆記:第6天 小資料池和編碼轉換Python筆記