3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入
1相關(guān)術(shù)語(yǔ)
| 語(yǔ)句 | 含義 | 操作 |
| DML語(yǔ)句 | (Data Manipulation Language) 數(shù)據(jù)庫(kù)操作語(yǔ)言 | insert update delete select |
| DDL語(yǔ)言 | (Date definition Language) 數(shù)據(jù)庫(kù)定義語(yǔ)言 | create table;create view index sequence synonvm同義詞,truncate table |
| DCL語(yǔ)言 | (Data control Language) 數(shù)據(jù)控制語(yǔ)言 | commit rollback savepoint |
2數(shù)據(jù)庫(kù)認(rèn)證
| Oracle數(shù)據(jù)庫(kù)管理員認(rèn)證專員(OCA) | Oracle Certified Associate |
| Oracle數(shù)據(jù)庫(kù)管理員認(rèn)證專家(OCP) | Oracle Certified Professional |
| Oracle數(shù)據(jù)庫(kù)管理員認(rèn)證大師(OCM) | Oracle Certified Master |
3 insert語(yǔ)句
A插入一個(gè)完整記錄:
insert into emp values (1, 'aaa', 'clerk',7092, '17-12月-80', 8000, NULL, 20);
B插入部分記錄:
insert into emp(empno,ename,deptno)values(2,'bb',20);
C插入空值(顯示和隱式)
D插入日期
insert into empvalues(3,'ccc','clerk',7092,sysdate,8000,NULL,20);
E創(chuàng)建腳本?取地址符 & ,通過(guò)這種方式可以讓用戶自定義輸入
SQL> insert into emp(empno,ename,deptno)
????? 2?values(&empno,&ename,20);
輸入 empno的值:?4
輸入 ename的值:?'cccc4'
原值???2: values(&empno,&ename,20)
新值???2: values(4,'cccc4',20)
?
已創(chuàng)建 1行。
F?select ename,job,&tt from emp;
4批量插入數(shù)據(jù)
A把10號(hào)部門的員工copy到另外一個(gè)表中
| 創(chuàng)建表結(jié)構(gòu) |
| create table emp10 ????as ???????select * from emp where 1=2; |
|
|
| 批量插入數(shù)據(jù) |
| insert into emp10 select * from emp where deptno = 10; |
|
|
5 update語(yǔ)句,語(yǔ)法結(jié)構(gòu)如下:
| UPDATE??table ??????????? SET?? column = value [, column = value, ...] ??????????????????[WHERE ????????? condition]; |
| update emp10 set deptno = 20 where empno = 7782; |
|
|
6 delete語(yǔ)句
| 語(yǔ)法結(jié)構(gòu): |
| DELETE [FROM] table [WHERE condition]; |
7 delete與truncate的區(qū)別
| delete(刪除表的數(shù)據(jù))和truncate表(truncate實(shí)質(zhì)把表drop然后重新建表)區(qū)別: |
| 1、delete逐條刪除,truncate先摧毀在重建 |
| 2、delete語(yǔ)句是DML語(yǔ)句,truncate是DDL語(yǔ)言 ??A DML語(yǔ)句可以閃回?做錯(cuò)的并且提交了,可以通過(guò)閃回,撤銷操作 ??B DDL語(yǔ)言不可以閃回?flashback |
| 3、delete是逐條刪除,會(huì)產(chǎn)生碎片,truncate不會(huì)產(chǎn)生碎片 ??行移動(dòng)功能:要開(kāi)啟閃回功能,必須要開(kāi)啟行移動(dòng)功能。 |
| 4、delete不會(huì)釋放空間 truncate會(huì) |
| 5、delete可以回滾?truncate不可以 |
| 6、oracle delete快,mysql truncate快 |
網(wǎng)絡(luò)上關(guān)于delete和truncate的區(qū)別的介紹:
| 語(yǔ)法: |
| delete from tablename; truncate table tablename; |
| 區(qū)別: |
| 1、?delete from后面可以寫條件,truncate不可以 2、?delete from記錄是一條條刪的,所刪除的每條記錄都會(huì)進(jìn)日志,而truncate一次次刪掉整個(gè)頁(yè),因此日志里面只記錄頁(yè)釋放,簡(jiǎn)言之,delete from更新日志,truncate基本不,所用的事物日志空間較少。 3、?delete from刪空表后,會(huì)保留一個(gè)空的頁(yè),truncate在表中不會(huì)留有任何頁(yè)。 4、?當(dāng)使用行鎖執(zhí)行DELETE語(yǔ)句時(shí),將鎖定表中各行以便刪除。Truncate始終鎖定表和頁(yè),而不是鎖定各行。 5、?如果有identity產(chǎn)生的自增id列,delete from后仍然從上次的數(shù)開(kāi)始增加,即種子不變,truncate后,種子會(huì)恢復(fù)初始。 6、?truncate不會(huì)觸發(fā)delete的觸發(fā)器,因此truncate操作不記錄各個(gè)行刪除。 |
| 總結(jié): |
| 1、?truncate和delete只刪除數(shù)據(jù),不刪除表的結(jié)構(gòu)(定義) drop語(yǔ)句將刪除表的結(jié)構(gòu),被依賴的約束(constrain),觸發(fā)器(trigger),索引(index);依賴于該表的存儲(chǔ)過(guò)程/函數(shù)將保留,但是變?yōu)?/span>invalid狀態(tài)。 2、?delete語(yǔ)句是dml操作,這個(gè)操作會(huì)放到rollback segement中,事務(wù)提交之后才生效;如果有相應(yīng)的trigger,執(zhí)行的時(shí)候?qū)⒈挥|發(fā)truncate,drop是ddl操作,操作立即生效,原數(shù)據(jù)不放到rollback segment中,不能回滾。操作不觸發(fā)trigger. 3、?delete語(yǔ)句不影響表所占用的extent,高水線(high watermark)保持原位置不動(dòng),顯然drop語(yǔ)句將表所占用的空間全部釋放,truncate語(yǔ)句缺省情況下見(jiàn)空間釋放到minextents個(gè)extent,除非使用reuse storage;truncate會(huì)將高水線復(fù)位(回到最開(kāi)始)。 4、?速度,一般來(lái)說(shuō):drop > truncate > delete 5、?安全性:小心使用drop和truncate,尤其沒(méi)有備份的時(shí)候,否則哭都來(lái)不及。 6、?使用上,想刪除部分?jǐn)?shù)據(jù)行用delete,注意帶上where子句。回滾段要足夠大。想刪除表,當(dāng)然用drop,想保留表而將所有數(shù)據(jù)刪除。如果和事務(wù)無(wú)關(guān),用truncate即可,如果和事務(wù)有關(guān),或者想觸發(fā)trigger,還是用delete,如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,在重新導(dǎo)入/導(dǎo)入數(shù)據(jù)。 |
8從文件中導(dǎo)入數(shù)據(jù),通過(guò)命名delete和 truncate刪除表數(shù)據(jù)
| 從文件導(dǎo)入數(shù)據(jù) |
| SQL> set timing off; SQL> set feedback off; SQL> drop table testdelete purge; SQL> @c:\Sql.sql; SQL> SQL> set timing on;?//最后刪除數(shù)據(jù)表的時(shí)候,把時(shí)間打開(kāi),記錄時(shí)間 SQL> delete from testdelete; 已用時(shí)間:?00: 00: 00.09 |
| 從文件導(dǎo)入數(shù)據(jù): |
| set timing off; @c:\Sql.sql;???? set timing off;? select count(*) from testdelete; set timing on;?//最后刪除數(shù)據(jù)表的時(shí)候,把時(shí)間打開(kāi),記錄時(shí)間 truncate table testdelete; 已用時(shí)間:?00: 00: 00.51 |
| 總結(jié): |
| truncate表一般比delete表的速度快,但Oracle做了優(yōu)化,delete數(shù)據(jù)的時(shí)候更快些! |
?
總結(jié)
以上是生活随笔為你收集整理的3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 平安银行降额是风控吗
- 下一篇: 一百多买包怀疑是假LV 店主明说是高仿