数据库 数据库SQL语句五
集合运算 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保存点