集合运算
union 并集(两个集合如果有重复部分,那么只显示一次重复部分)
union all 并集(两个集合如果有重复部分,那么重复部分显示两次)
intersect 交集
minus 差集
--查询部门号是10和20号的员工信息
select * from emp where deptno=10
union
select * from emp where deptno=20
集合运算注意事项:
1.参与运算的各个集合必须列数相同,并且类型一致
2.采用第一个集合的表头作为结果集的表头
DML数据操作
insert语句语法
使用insert语句向表中插入数据
insert into 表名 (列名1,列名2,...)
values (value1,value2,...)
--插入一条完整的数据(不需要加列名)
insert into emp values(7288,'JACk','CLERK',7902,'17-12月-80',1600,null,20)
--插入一条不完整的数据(需要加列名)
insert into emp (EMPNO ,ENAME,JOB,MGR,SAL,DEPTNO) values(7289,'JHON','CLERK',7902,1780,20)
--插入空值的两种方式
1.隐式插入(不完整插入就是隐式插入)
2.显式插入(null就是显式插入)
--插入日期的指定值
insert into emp values(7293,'BLACKH','CLERK',7902,to_date('1990-2-4 9:30:28','yyyy-mm-dd hh12:mi:ss'),3400,null,20)
--插入中的&操作符(需要用户输入empno和deptno的值)
insert into emp (EMPNO,ENAME,JOB,MGR,SAL,DEPTNO) values(&empno,'JHON','CLERK',7902,1780,&deptno)
--回退事务
SQL> rollback;--oracle默认开启事务
--新创建一个表(拷贝emp的表结构)
create table t1
as
select * from emp where 1=2
--从emp表中把10号部门的员工数据插入到t1表中
insert into t1 ( select * from emp where deptno=10 );
--子查询不光在select中使用,而且可以在insert子句中使用
--不必书写values子句
--子查询中的值列表应与insert子句中的列名对应
update语句语法
--更新数据
--可以一次更新多条数据
update 表名
set colnum1=value1,colnum2=value2,...
where condition
eg:SQL> update t1 set ename='JOKE',sal=3000 where empno=7782;
delete语句
--从表中删除数据(表是一直存在的)
delete from 表名
where condition
eg: delete from t1 where empno=7782;
truncate语句
truncate:清空表
truncate table t1;--删除表中的所有数据
delete和truncate的区别
1.delete逐条删除 truncate先摧毁再重建
2.delete语言是DML语言 truncate是DDL语言
DML语言可以闪回,做错了并且提交了,可通过闪回撤销操作
DDL语言不可以闪回
3.delete是逐条删除,会产生碎片,truncate不会产生碎片
4.delete不会释放空间,truncate会
5.delete可以回滚,,truncate不可以
6.oracle delete快 mysql truncate快
sql语句优化⑤:oracle中删除表数据,delete快;mysql中删除表数据,truncate快。
常用oracle命令
--set timing off;--关闭sql执行时间显示
--set feedback off;--关闭数据反馈
--@c:sql.sql--从c盘导入sql文件
--set timing on;--打开sql执行时间显示
数据库事务
概念:一个或多个DML语句组成
特点:要么都成功,要么都失败
特性:原子性 一致性 隔离性 持久性
事务的隔离性:多个客户端同时操作数据库时,会隔离他们的操作,
因为oracle实例并不会直接将操作提交到数据库,所以多个事务之间的操作互不影响
事务的开始和结束
1.事务起始的标志:DHL语言(oracle默认事务是打开的)
2.事务结束的标志
提交:显式提交commit
隐式提交(1)执行DDL语言,DDL语言能隐式的提交数据
eg:create table语言
(2)正常退出
回滚:显式:rollback
隐式 断电,非正常退出,系统出错
回滚到保存点
1.使用savepoint语句在当前事务中创建保存点
eg:savepoint al;--创建保存点a1
2.使用rollback to savepoint 语句回滚到创建的保存点
eg:rollback to savepoint a1;回滚到a1保存点