问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在oracle 中怎么处理以下数据

发布网友 发布时间:2022-04-07 20:34

我来回答

3个回答

懂视网 时间:2022-04-08 00:55

):insert delete update select
SQL> 2. DDL(Data Definition Language 数据定义语言): create table,create view,create user
SQL>                                                alter table,alter user
SQL>                                                drop table,drop user
SQL> 3. DCL(Data Control Language 数据控制语言): commit rollback truncate
SQL> */
SQL> host cls


插入 insert语句


语法

INSERT INTO  table[(column [,column...])]

VALUES  (value[, value...]);


使用INSERT 语句向表中插入数据。
使用这种语法一次只能向表中插入一条数据。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - -

INSERT INTO departments(department_id, department_name,

                        manager_id, location_id)

VALUES      (70, ‘PublicRelations‘, 100, 1700);


为每一列添加一个新值。 按列的默认顺序列出各个列的值。 在INSERT 子句中随意列出列名和他们的值。 字符和日期型数据应包含在单引号中。

- - - - - - - - - - - -- - - - - - - - - - - -- - - - - - - - - - - -- - - - - - - - - - - -- - - - - - - - - - - -- - - - - - - - - - - -



SQL> --插入 insert
SQL> desc emp
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL 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> insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
  2  values (1001,‘Tom‘,‘CLERK‘,7839,sysdate,2000,100,10);


已创建 1 行。


隐式插入空值 显式插入空值

?隐式方式:在列名表中省略该列的值。 ?显式方式:在VALUES 子句中指定空值。


SQL> --隐式插入空值 显式插入空值


SQL> insert into emp(empno,ename,sal,deptno) values(1002,‘Mary‘,2000,10);

SQL> insert into emp(empno,ename,sal,deptno) values(1003,‘Mary‘,null,10);




地址符的应用


SQL> --地址符 &

l在SQL 语句中使用& 变量指定列值。 l& 变量放在VALUES子句中。

SQL> insert into emp(empno,ename,sal,deptno)
  2  values(&empno,&ename,&sal,&deptno);
输入 empno 的值:  1004
输入 ename 的值:  ‘Mike‘
输入 sal 的值:  2000
输入 deptno 的值:  10
原值    2: values(&empno,&ename,&sal,&deptno)
新值    2: values(1004,‘Mike‘,2000,10)


已创建 1 行。


SQL> /
输入 empno 的值:  1005
输入 ename 的值:  ‘aaa‘
输入 sal 的值:  3000
输入 deptno 的值:  20
原值    2: values(&empno,&ename,&sal,&deptno)
新值    2: values(1005,‘aaa‘,3000,20)


已创建 1 行。

给&xxx加引号之后,在后面赋值可不需要加引号:

SQL> insert into emp(empno,ename,sal,deptno) values(&empno,‘&ename‘,&sal,&deptno);

输入 empno 的值:  1006
输入 ename 的值:  Tomaa
输入 sal 的值:  1500
输入 deptno 的值:  10
原值    1: insert into emp(empno,ename,sal,deptno) values(&empno,‘&ename‘,&sal,&deptno)
新值    1: insert into emp(empno,ename,sal,deptno) values(1006,‘Tomaa‘,1500,10)


已创建 1 行。


SQL> host cls


&可用于语句的任何地方:

SQL> select empno,ename,&unknown
  2  from emp;
输入 unknown 的值:  sal
原值    1: select empno,ename,&unknown
新值    1: select empno,ename,sal


     EMPNO ENAME             SAL                                                
---------- ---------- ----------                                                
      7369 SMITH             800                                                
      7499 ALLEN            1600                                                
      7521 WARD             1250                                                
      7566 JONES            2975                                                
      7654 MARTIN           1250                                                
      7698 BLAKE            2850                                                
      7782 CLARK            2450                                                
      7788 SCOTT            3000                                                
      7839 KING             5000                                                
      7844 TURNER           1500                                                
      7876 ADAMS            1100                                                


     EMPNO ENAME             SAL                                                
---------- ---------- ----------                                                
      7900 JAMES             950                                                
      7902 FORD             3000                                                
      7934 MILLER           1300                                                
      1001 Tom              2000                                                
      1002 Mary             2000                                                
      1003 Mary                                                                 
      1004 Mike             2000                                                
      1005 aaa              3000                                                
      1006 Tomaa            1500                                                


已选择20行。


SQL> /
输入 unknown 的值:  job
原值    1: select empno,ename,&unknown
新值    1: select empno,ename,job


     EMPNO ENAME      JOB                                                       
---------- ---------- ---------                                                 
      7369 SMITH      CLERK                                                     
      7499 ALLEN      SALESMAN                                                  
      7521 WARD       SALESMAN                                                  
      7566 JONES      MANAGER                                                   
      7654 MARTIN     SALESMAN                                                  
      7698 BLAKE      MANAGER                                                   
      7782 CLARK      MANAGER                                                   
      7788 SCOTT      ANALYST                                                   
      7839 KING       PRESIDENT                                                 
      7844 TURNER     SALESMAN                                                  
      7876 ADAMS      CLERK                                                     


     EMPNO ENAME      JOB                                                       
---------- ---------- ---------                                                 
      7900 JAMES      CLERK                                                     
      7902 FORD       ANALYST                                                   
      7934 MILLER     CLERK                                                     
      1001 Tom        CLERK                                                     
      1002 Mary                                                                 
      1003 Mary                                                                 
      1004 Mike                                                                 
      1005 aaa                                                                  
      1006 Tomaa                                                                


已选择20行。


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> /
输入 t 的值:  salgrade
原值    2: from &t
新值    2: from salgrade


     GRADE      LOSAL      HISAL                                                
---------- ---------- ----------                                                
         1        700       1200                                                
         2       1201       1400                                                
         3       1401       2000                                                
         4       2001       3000                                                
         5       3001       9999                                                


SQL> host cls




从其它表中拷贝数据


·在INSERT语句中加入子查询。 

    INSERT INTO sales_reps(id, name, salary, commission_pct)

     SELECT employee_id, last_name, salary, commission_pct

     FROM   employees

     WHERE  job_id LIKE ‘%REP%‘;


·不必书写 VALUES 子句。 ·子查询中的值列表应与INSERT 子句中的列名对应


SQL> --一次插入(拷贝)多条数据?  
SQL> create table  emp10 as select * from emp where 1=2;    (因为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> insert into emp10
  2  select * from emp where deptno=10;


已创建3行。


SQL> select * from emp10;


     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM 
---------- ---------- --------- ---------- -------------- ---------- ---------- 
    DEPTNO                                                                      
----------                                                                      
      7782 CLARK      MANAGER         7839 09-6月 -81           2450            
        10                                                                      
                                                                                
      7839 KING       PRESIDENT            17-11月-81           5000            
        10                                                                      
                                                                                
      7934 MILLER     CLERK           7782 23-1月 -82           1300            
        10                                                                      
                                                                                


SQL> --在插入中使用子查询
SQL> create table  emp20 as select * from emp where deptno=20;


表已创建。


SQL> select * from emp20;


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                 
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                                                 
      7369 SMITH      CLERK           7902 17-12月-80       800                    20                                                                 
      7566 JONES      MANAGER         7839 02-4月 -81      2975                    20                                                                 
      7788 SCOTT      ANALYST         7566 13-7月 -87      3000                    20                                                                 
      7876 ADAMS      CLERK           7788 13-7月 -87      1100                    20                                                                 
      7902 FORD       ANALYST         7566 03-12月-81      3000                    20                                                                 




更新数据 update

·使用UPDATE 语句更新数据。

       UPDATE  table

       SET  column = value [, column= value, ...]

       [WHERE   condition];


·可以一次更新多条数据。


使用 WHERE 子句指定需要更新的数据

如果省略WHERE子句,则表中的所有数据都将被更新



可在update中使用子查询


删除:delete

SQL> --删除:delete
SQL> delete from emp10;


已删除3行。


SQL> truncate table emp20;


表被截断。


SQL> /*
SQL> 1. delete逐条删除;truncate先摧毁,再重建
SQL> 2. delete 不会释放空间;truncate会
SQL> 3. delete会产生碎片;truncate不会
SQL> 4. deleted可以闪回;truncate不可以闪回
SQL> */
SQL> select * from emp;


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                 
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                                                 
      7369 SMITH      CLERK           7902 17-12月-80       800                    20                                                                 
      7499 ALLEN      SALESMAN        7698 20-2月 -81      1600        300         30                                                                 
      7521 WARD       SALESMAN        7698 22-2月 -81      1250        500         30                                                                 
      7566 JONES      MANAGER         7839 02-4月 -81      2975                    20                                                                 
      7654 MARTIN     SALESMAN        7698 28-9月 -81      1250       1400         30                                                                 
      7698 BLAKE      MANAGER         7839 01-5月 -81      2850                    30                                                                 
      7782 CLARK      MANAGER         7839 09-6月 -81      2450                    10                                                                 
      7788 SCOTT      ANALYST         7566 13-7月 -87      3000                    20                                                                 
      7839 KING       PRESIDENT            17-11月-81      5000                    10                                                                 
      7844 TURNER     SALESMAN        7698 08-9月 -81      1500          0         30                                                                 
      7876 ADAMS      CLERK           7788 13-7月 -87      1100                    20                                                                 


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                 
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                                                 
      7900 JAMES      CLERK           7698 03-12月-81       950                    30                                                                 
      7902 FORD       ANALYST         7566 03-12月-81      3000                    20                                                                 
      7934 MILLER     CLERK           7782 23-1月 -82      1300                    10                                                                 


已选择14行。


SQL> set feedback off
SQL> select * from emp;


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                 
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                                                 
      7369 SMITH      CLERK           7902 17-12月-80       800                    20                                                                 
      7499 ALLEN      SALESMAN        7698 20-2月 -81      1600        300         30                                                                 
      7521 WARD       SALESMAN        7698 22-2月 -81      1250        500         30                                                                 
      7566 JONES      MANAGER         7839 02-4月 -81      2975                    20                                                                 
      7654 MARTIN     SALESMAN        7698 28-9月 -81      1250       1400         30                                                                 
      7698 BLAKE      MANAGER         7839 01-5月 -81      2850                    30                                                                 
      7782 CLARK      MANAGER         7839 09-6月 -81      2450                    10                                                                 
      7788 SCOTT      ANALYST         7566 13-7月 -87      3000                    20                                                                 
      7839 KING       PRESIDENT            17-11月-81      5000                    10                                                                 
      7844 TURNER     SALESMAN        7698 08-9月 -81      1500          0         30                                                                 
      7876 ADAMS      CLERK           7788 13-7月 -87      1100                    20                                                                 


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                 
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                                                 
      7900 JAMES      CLERK           7698 03-12月-81       950                    30                                                                 
      7902 FORD       ANALYST         7566 03-12月-81      3000                    20                                                                 
      7934 MILLER     CLERK           7782 23-1月 -82      1300                    10                                                                 
SQL> @c:sql.sql
SQL> select count(*) from testdelete;


  COUNT(*)                                                                                                                                            
----------                                                                                                                                            
      5000                                                                                                                                            
SQL> set timing on
SQL> delete from testdelete;;
delete from testdelete;
                      *
第 1 行出现错误: 
ORA-00911: 无效字符 




已用时间:  00: 00: 00.00
SQL> delete from testdelete;
已用时间:  00: 00: 00.04
SQL> drop table testdelete purge;
已用时间:  00: 00: 01.36
SQL> set timing on
SQL> set timing off
SQL>  @c:sql.sql
SQL> set timing on
SQL> truncate table testdelete;
已用时间:  00: 00: 03.21
SQL> set timing off
SQL> host cls



Oracle中的事务

事务知识点

数据库事务由以下的部分组成:

一个或多个DML 语句 一个DDL(Data Definition Language – 数据定义语言) 语句 一个DCL(Data Control Language – 数据控制语言) 语句


1. 起始标志: DML语句-自动开启
2. 结束标志:提交: 显式提交 commit
                   隐式提交: DDL(create table,drop user,..)
                  回滚:显式回滚 rollback

                  隐式回滚: 掉电,宕机,非正常退出



使用COMMIT 和ROLLBACK语句,我们可以:

l确保数据完整性。 l数据改变被提交之前预览。 l将逻辑上相关的操作分组。

自动提交在以下情况中执行:       ?DDL 语句。       ?DCL 语句。       ?不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话exit。 会话异常结束或系统异常会导致自动回滚。



保存点

使用SAVEPOINT 语句在当前事务中创建保存点。 使用ROLLBACK TOSAVEPOINT 语句回滚到创建的保存点。


SQL> create table testsavepoint

  2  (tid number,tname varchar2(20));
SQL> set feedback on
SQL> insert into testsavepoint values(1,‘Tom‘);


已创建 1 行。


SQL> insert into testsavepoint values(2,‘Mary‘);


已创建 1 行。


SQL> savepoint a;


保存点已创建。


SQL> insert into testsavepoint values(3,‘Mike‘);


已创建 1 行。


SQL> rollback to savepoint a;


回退已完成。


SQL> select * from testsavepoint;


       TID TNAME                                                                                                                                      
---------- --------------------                                                                                                                       
         1 Tom                                                                                                                                        
         2 Mary                                                                                                                                       


已选择2行。


SQL> commit;


提交完成。

JDBC中如何使用保存点

SQL> /*
SQL> JDBC中使用存储点
SQL> Connection conn = ...
SQL> conn.setAutoCommit(false);
SQL> Savepoint sp = conn.setSavepoint("aaa")
SQL> DML
SQL> 
SQL> conn.rollback(sp);
SQL> */
SQL> spool off

Oracle学习(8):处理数据

标签:oracle   学习笔记   数据库   

热心网友 时间:2022-04-07 22:03

没有试验,不敢保证第2种方法正确:
1. 写一段pl/sql,倒序取出id的数据,
循环:
当本行data不为null,赋予变量
当本行data为null,则将变量中的data值赋予当前行

2. 反复执行下来sql,直到无数据行被更新:
update table a set data=(
select data from table b where b.id -1 = a.id and b.date is not null
)
where date is null

热心网友 时间:2022-04-07 23:21

多次执行:update tablename t1 set data=(select data from tablename t2 where t2.id=t1.id+1 ) where t1.data is null 直至填满来自:求助得到的回答
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 求一篇微生物的纯系分离及保藏的实验报告。 商务谈判开局为什么很重要? 乳酸菌实验报告 食品中大肠菌群的检验,有哪些需要注意的实验步骤 做销售的谈判技巧? 微生物实验报告:测定细菌生长曲线 商务谈判—谈判开局 假设你即将和一家文具店就购买办公用品事宜进行谈判,你准备如何开局呢?列出你的谈判开局计划? 第十四章静脉输液和输血技术实验报告怎么写 如何理解谈判开局作用 植物组织培养实验报告 商务谈判开局的主要任务是什么? 怎么写实验结果以及分析呢? (实验)细菌的分布与消毒灭菌 1.咽喉部细菌的检查(血平板,2人/组) 在谈判的开局阶段,一般应注意以下哪些方面 细胞培养的实验报告 谈判开局阶段的接待礼仪、迎领、问候、介绍等礼节? 外科中穿无菌手术衣和戴无菌手套的实验报告范文 外科中手臂消毒穿无菌手术衣及带手套实验报告 西医外科关于无菌操作洗手穿衣的实验报告怎么写 在谈判的开局阶段如何交换意见 姓李29画女生名字带水 轮胎秋千制作方法 女孩取名带水的字姓李 秋千架制作 起带水李姓女孩名字 秋千是如何诞生的? 2006年8月4日出生属于什么命啊?取名字里带水的李姓女孩名字,含艺术成功之数 如何制作秋千模型 您好,请问2010年阳历8月6日零点16分出生的李姓女孩取什么名字比较好?从网上查我们不太懂。 给李姓女孩取名,要带水,总划数为19或29(繁体) 触摸屏尺寸规格有哪些 星际争霸2如何把中文语音转换成英文语音? 姓李女孩取名带土带水 姓李的女孩子起名三个字的,生辰八字缺水,带水的,谢谢 姓李女孩求个名字带三点水旁的或带金字旁的 液晶拼接屏能不能够触摸? 苹果iPhone怎样给Safari添加密码 语音合成技术的英文缩写是什么 苹果safari怎么设置存储密码 姓李的女孩名字大全32笔要带水