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