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
Oracle备忘录(八)--表
最新推荐文章于 2022-03-03 15:59:48 发布