问题:查询部门号10和20的员工的信息:
select * from emp where deptno in(10,20);
select * from emp where deptno = 10 or deptno = 20;
集合运算的对象是两个集合
常用的有: \(A \bigcap B\),\(A \bigcup B\),\(A-B\)等
上面的问题改写为集合运算版本:
select * from emp where deptno = 10 union select * from emp where deptno = 20;
注意事项:
insert into table[列1..] values (值1...);
如:
insert into emp values (1001,'TOM','Engineer',7839, sysdate,5000,200,10); insert into emp(empno, ename, sal, deptno) values(1002, 'Marry', 6000, 20);
1. &地址符:
SQL> insert into emp(empno, ename, sal, deptno) values(&empno, &ename, &sal, &deptno);
加上&符号,下次输入/号就可以继续赋值了,&后面的可以任意写,一般和前面相同
2. 批处理:
先创一张相同结构的表,不要有数据(where 假):
create table emp10 as select * from emp where 1=2;
然后插入一批数据:
insert into emp10 select * from emp where deptno=10 ;
更新操作一般会使用where来改一部分数据
update emp10 set sal=4000, comm=300 where ename = 'CLARK'; ( 或 where empno=7782; )
delete from emp10 where empno=7782;(或ename= 'KING');
注意:“from”关键字在Oracle中可以省略不写,但MySQL中不可以。
delete和truncate的区别:
数据库事务,是由有限的数据库操作序列组成的逻辑执行单元,这一系列操作要么全部执行,要么全部放弃执行。
要么都成功,要么都失败.
比如银行转帐,A转1000给B:1.A-1000,2.B+1000.这两步要捆绑一起.
成功了就commit提交,失败了就rollback回滚
事务的特性:
事务4大特性(ACID) :原子性、一致性、隔离性、持久性。
事务的起始标志:Oracle中自动开启事务,以DML语句为开启标志。
执行一个增删改查语句,只要没有提交commit和回滚rollback,操作都在一个事务中。
事务的结束标志:提交、回滚都是事务的结束标志。
提交:
回滚:
还可以增加保存点(savepoint),相当于存档.可以使用rollback回滚到指定的保存点.
隔离级别:
对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题:
Oracle支持的隔离级别: Read Commited(默认)和 Serializable,以及Oracle自定义的Read Only三种。
Read Only:由于大多数情况下,在事务操作的过程中,不希望别人也来操作,但是如果将别人的隔离级别设置为Serializable(串行),但是单线程会导致数据库的性能太差。是应该允许别人来进行read操作的。
mysql支持以上四种, Oracle默认读已提交数据,mysql默认可重复读。