Oracle备忘录(八)--表

SQL> /*
SQL> SQL类型
SQL> 1. DML(Data Manipulation Lanuage 数据操作语言): select insert update delete
SQL> 2. DDL(Data Definition Language 数据定义语言): create/alter/drop/truncate table
SQL>                                                create/drop view/sequence/index/synonym
SQL> 3. DCL(Data Control Language 数据控制语言): commit rollback
SQL> */
SQL> host cls


SQL> --隐式/显式插入null
SQL> --地址符   &
SQL> insert into emp(empno,ename,sal,deptno)
  2  values(&empno,&ename,&sal,&deptno);
输入 empno 的值:  1002
输入 ename 的值:  'Mary'
输入 sal 的值:  5000
输入 deptno 的值:  10
原值    2: values(&empno,&ename,&sal,&deptno)
新值    2: values(1002,'Mary',5000,10)

已创建 1 行。

SQL> /
输入 empno 的值:  1003
输入 ename 的值:  'Mike'
输入 sal 的值:  6000
输入 deptno 的值:  30
原值    2: values(&empno,&ename,&sal,&deptno)
新值    2: values(1003,'Mike',6000,30)

已创建 1 行。

SQL> ed
已写入 file afiedt.buf

  1  insert into emp(empno,ename,sal,deptno)
  2* values(&empno,'&ename',&sal,&deptno)  ---下面字符串就不用加引号了
SQL> /
输入 empno 的值:  1004
输入 ename 的值:  Jerry
输入 sal 的值:  5000
输入 deptno 的值:  10
原值    2: values(&empno,'&ename',&sal,&deptno)
新值    2: values(1004,'Jerry',5000,10)



SQL> select empno,ename,&t
  2  from emp;
输入 t 的值:  sal
原值    1: select empno,ename,&t
新值    1: select empno,ename,sal

     EMPNO ENAME             SAL                                                
---------- ---------- ----------                                                
      1001 Tom              6000                                                
      1002 Mary             5000                                                
      1003 Mike             6000                                                
      1004 Jerry            5000                                                
      7369 SMITH             800                                                
      7499 ALLEN            1600                                                
已选择18行。


SQL> /
输入 t 的值:  deptno
原值    1: select empno,ename,&t
新值    1: select empno,ename,deptno


SQL> select *
  2  from &t;
输入 t 的值:  dept
原值    2: from &t
新值    2: from dept

    DEPTNO DNAME          LOC                                                   
---------- -------------- -------------                                         
        10 ACCOUNTING     NEW YORK                                              
        20 RESEARCH       DALLAS                                                
        30 SALES          CHICAGO                                               
        40 OPERATIONS     BOSTON                                                

SQL> rollback;

回退已完成。

SQL> host cls

SQL> --批处理
--加上where 1 = 2 就是为了不复制表中的数据
--当然可以选定要的数据添加到新建的表中 
--如: where deptno = 10 就把部门为10的加入到了新建的表
SQL> create table emp10 as select * from emp where 1=2;

表已创建。

SQL> desc emp10
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 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 emp10;

未选定行

SQL> --一次性从emp中  将所有10号部门的员工插入到emp10
SQL> insert into emp10
  2  select * from emp where deptno=10;

已创建3行。
                                                                       


SQL> set linesize 120
SQL> col sal for 9999
SQL> host cls

SQL> --更新数据
SQL> --删除数据
SQL> /*
SQL> --delete 和truncate的区别
SQL> --1. delete逐条删除 truncate 先摧毁表 再重建
SQL> --2. **** delete 是DML(可以回滚),truncate是DDL(不可以回滚)
SQL> --3. delete不会释放空间 truncate会
SQL> --4. delete会产生碎片 truncate不会
SQL> --5. delete可以闪回,truncate不可以
SQL> */

SQL> set feedback off  --去除 “选中14行”这样的字眼

--执行sql语句
SQL> @c:\sql.sql
SQL> select count(*) from testdelete;

  COUNT(*)                                                                                                              
----------                                                                                                              
      5000                                                                                                              
SQL> set timing on
SQL> delete from testdelete;
已用时间:  00: 00: 00.04
SQL> set timing off
SQL> drop table testdelete purge;   --彻底删除,不放入回收站
SQL> @c:\sql.sql
SQL> select count(*) from testdelete;

  COUNT(*)                                                                                                              
----------                                                                                                              
      5000                                                                                                              
SQL> set timing on
SQL> truncate table testdelete;
已用时间:  00: 00: 07.87
SQL> set timing off
SQL> host cls

SQL> /*
SQL> Oracle中的事务
SQL> 1. 起始标志: DML语句
SQL> 2. 结束标志: 提交: 显式提交 commit
SQL>                    隐式提交 正常退出exit ,DDL语句
SQL>              回滚: 显式  rollback
SQL>                    隐式  掉电,宕机,非正常退出
SQL> */
SQL> --保存点
SQL> create table testsavepoint
SQL> set feedback on


--创建保存点语法
SQL> savepoint a;
SQL> rollback to savepoint a;
SQL> commit;



SQL> spool off

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值