Welcome 微信登录

首页 / 数据库 / MySQL / Oracle处理数据(DML+DDL+DCL)+事务

SQL> /*
SQL> SQL语句
SQL> 1. DML语句(Data Manipulation Language 数据操作语言): insert update delete select
SQL> 2. DDL语句(Data Definition Language 数据定义语言): create/alter/drop/truncate table
SQL>                                                    create/drop view,create/drop index(sequence,synonym)
SQL> 3. DCL语句(Data Control Language 数据控制语言): commit rollback
SQL> */
SQL> --插入insert
SQL> --插入新员工
SQL> insert into emp(empno,ename,sal,deptno)
  2  values(1001,"Tom",1000,10);
SQL> --隐式插入null值、显式插入空值
SQL> --地址符 &
SQL> insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno);
输入 empno 的值:  1003
输入 ename 的值:  "Mike"
输入 sal 的值:  3000
输入 deptno 的值:  20
原值    1: insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno)
新值    1: insert into emp(empno,ename,sal,deptno) values(1003,"Mike",3000,20)已创建 1 行。
SQL> insert into emp(empno,ename,sal,deptno) values(&empno,"&ename",&sal,&deptno)
  2  ;
输入 empno 的值:  1005
输入 ename 的值:  fakfj
输入 sal 的值:  3000
输入 deptno 的值:  10
原值    1: insert into emp(empno,ename,sal,deptno) values(&empno,"&ename",&sal,&deptno)
新值    1: insert into emp(empno,ename,sal,deptno) values(1005,"fakfj",3000,10)已创建 1 行。
SQL>--&就相当于prepareStatemment 而且为了不出错 字符串需要加上""尽量加在预编译时期
SQL> rollback;SQL> --在DML语句中使用地址符
SQL> select empno,ename,&a
  2  from emp;
输入 a 的值:  sal
SQL> select * from &a;
输入 a 的值:  dept
SQL> --一次插入(拷贝)一批数据
SQL> create table emp20 as select * from emp where 1=2;表已创建。SQL> desc emp20
 名称                                                                                是否为空? 类型
 ----------------------------------------------------------------------------------- -------- --------------------------------------------------------
 EMPNO                                                                                        NUMBER(4)
 ENAME                                                                                        VARCHAR2(10)
 JOB                                                                                          VARCHAR2(9)
 MGR                                                                                          NUMBER(4)
 HIREDATE                                                                                   DATE
 SAL                                                                                          NUMBER(7,2)
 COMM                                                                                       NUMBER(7,2)
 DEPTNO                                                                                     NUMBER(2)SQL> select * from emp20;未选定行SQL> --一次性将emp中所有20号部门的员工插入到emp20
SQL> insert into emp20
  2  select * from emp where deptno=20;已创建5行。
SQL> truncate table emp20;表被截断。SQL> select * from emp20;未选定行SQL> --等同于: delete from emp20;
SQL> /*
SQL> delete和truncate table的区别
SQL> 1. delete是DML,truncate是DDL (DML可以rollback,DDL不可以)
SQL> 2. delete逐条删除;truncate先摧毁,再重建
SQL> 3. delet会产生碎片;truncate不会
SQL> 4. delete不会释放空间;truncate会
SQl> 5. 但是在Oracle中delete内部做了很多优化 所以一般是delete性能好
SQL> */
SQL> set feedback off
SQL>--关闭系统提示多少行收到影响事务SQL> /*
SQL> Oracle中的事务
SQL> 1. 事务的起始标志: DML语句
SQL> 2. 事务的结束标志: 提交: 显式提交 commit
SQL>                          隐式提交  DDL 语句,正常退出 exit
SQL>                 回滚: 显式  rollback
SQL>                       隐式 非正常退出,掉电,宕机
SQL> */
SQL> --保存点
SQL> create table testsavepoint
  2  (tid number,tname varchar2(20));
SQL> set feedback on
SQL> insert into testsavepoint values(1,"Tom");已创建 1 行。SQL> insert into testsavepoint values(2,"Mary");已创建 1 行。SQL> --定义保存点
SQL> savepoint a;保存点已创建。SQL> insert into testsavepoint values(3,"Moke");已创建 1 行。SQL> rollback to savepoint a;回退已完成。SQL> select * from testsavepoint;     TID TNAME                                                                                                                                     
---------- --------------------                                                                                                                     
       1 Tom                                                                                                                                       
       2 Mary                                                                                                                                      已选择2行。SQL> commit;提交完成。事务的隔离级别MySQL支持SQL99的四个  Oracle只支持2个  READ COMMITED 和Serializable 还支持另外一个不属于SQL99的规范 READ ONLY更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle 多进程更新同一个表Oracle数据库对象(共12个)DDL相关资讯      Oracle DML  Oracle DDL  Oracle处理数据 
  • Oracle 11.2.0.3和MySQL5.6 DDL比  (09/17/2015 19:15:08)
  • Oracle实现对表dml错误记录日志  (03/04/2014 19:14:45)
  • Oracle记录用户DDL操作脚本  (11/29/2013 19:39:10)
  • Oracle DML错误日志笔记  (01/13/2015 18:34:51)
  • Oracle数据库对象(共12个)DDL  (01/25/2014 13:49:16)
  • 两台Oracle之间配置OGG-未配置同步  (10/28/2013 17:14:50)
本文评论 查看全部评论 (0)
表情: 姓名: 字数