SQL查询和优化(五)
来源:互联网 发布:淘宝直通车宝贝标题 编辑:程序博客网 时间:2024/06/04 19:55
一、插入新记录
建立测试表,各列都有默认值。CREATE TABLE TEST(c1 VARCHAR2(10) DEFAUT'默认1',c2 VARCHAR2(10) DEFAUT'默认2',c3 VARCHAR2(10) DEFAUT'默认3',c4 DATE DEFAULT SYSDATE);新增数据如下:INSERT INTO TEST(c1,c2,c3) VALUES(DEFAULT,NULL,'手输值');SELECT * FROM TEST;C1 C2 C3 C4------ ------ ------ ------默认1 手输值 2017-08-071 row selected
可以看出几点
1、如果INSERT语句中没有含默认值的列,则会添加默认值,如C4列。
2、如果含默认值的列,使用DEFAULT关键字,都会添加默认值,如C1列。
3、如果设置了值如NULL可其它,则不会再生成默认值,如C2、C3列。
二、多表插入语句
多表插入分为以下四种
1、无条件INSERT
2、有条件 INSERT ALL
3、转置INSERT
4、有条件INSERT ALL
建立测试用表CREATE TABLE emp1 AS SELECT empno,ename,job FROM emp WHERE 1=2;CREATE TABLE emp2 AS SELECT empno,ename,deptno FROM emp WHERE 1=2;
无条件INSERT INSERT ALL INTO emp1(empno,ename,job)VALUES(empno,ename,job) INTO emp2(empno,ename,deptno)VALUES(empno,ename,deptno)SELECT impno,ename,job,deptno FROM emp WHERE deptno IN(10,20);这样会同时向两张表中插入数据,且两个表中插入的数据条数是一样的
有条件 INSERT ALL delete emp1;delete emp2;INSERT ALL WITH job IN('SALESMAN','MANAGER') THEN INTO emp1(empno,ename,job)VALUES(empno,ename,job) WITH deptno IN('20','30') THEN INTO emp2(empno,ename,deptno)VALUES(empno,ename,deptno)SELECT impno,ename,job,deptno FROM emp这样会按条件插入
INSERT FIRSTdelete emp1;delete emp2;INSERT FIRST WITH job IN('SALESMAN','MANAGER') THEN INTO emp1(empno,ename,job)VALUES(empno,ename,job) WITH deptno IN('20','30') THEN INTO emp2(empno,ename,deptno)VALUES(empno,ename,deptno)SELECT impno,ename,job,deptno FROM emp当第一个表符合条件后,第二个表将不再插入对应的行,emp1和emp2不再会有相同的数据
转置INSERTcreate table sales_source_data (employee_id number(6),week_id number(2),sales_mon number(8,2),sales_tue number(8,2),sales_wed number(8,2),sales_thur number(8,2),sales_fri number(8,2));insert into sales_source_data values (176,6,2000,3000,4000,5000,6000);create table sales_info (employee_id number(6),week number(2),sales number(8,2));看上面的表结构,现在将要sales_source_data表中的数据转换到sales_info表中,这种情况就需要使用旋转Insert示例如下:insert allinto sales_info values(employee_id,week_id,sales_mon)into sales_info values(employee_id,week_id,sales_tue)into sales_info values(employee_id,week_id,sales_wed)into sales_info values(employee_id,week_id,sales_thur)into sales_info values(employee_id,week_id,sales_fri)select employee_id,week_id,sales_mon,sales_tue,sales_wed,sales_thur,sales_frifrom sales_source_data;
部分选自《Oracle 查询优化改写技巧与案例》 有教无类 落落 著
阅读全文
0 0
- SQL查询和优化(五)
- oracle中sql语句查询优化(五)
- SQL查询和优化(一)
- SQL查询和优化(二)
- SQL查询和优化(三)
- SQL查询和优化(四)
- SQL查询和优化(六)
- SQL 查询和优化(七)
- SQL查询和优化(九)
- SQL查询和优化(十)
- SQL查询和优化(十一)
- SQL查询和优化(十二)
- SQL查询和优化(十三)
- SQL查询和优化(十五)
- SQL优化和查询(十六)
- SQL查询和优化(八)
- SQL优化和查询(十七)
- SQL查询和优化(十四)——用分析函数优化标量子查询
- Dubbo-Admin管理平台和Zookeeper注册中心的搭建
- 【C语言】单链表常用函数
- python logging日志模块
- java实现文件的上传和下载
- 搞懂线段树
- SQL查询和优化(五)
- Linux 查看CPU信息,机器型号,内存等信息
- Android写文件报read only file system
- Shredding Company (dfs)
- css3实现从左右两边以动画的形式分别插入文字和图片
- Android studio项目编译期字节码插入实践Note
- 如何使用vs在调试时查看内存
- SQL语言
- 内核是如何管理进程的