使用INSERT语句
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);

INSERT INTO departments(department_id,
department_name, manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
字符和日期需要用单引号

INSERT INTO employees
VALUES (114,
'Den', 'Raphealy',
'DRAPHEAL', '515.127.4561',
TO_DATE('FEB 3, 1999', 'MON DD, YYYY'),
'SA_REP', 11000, 0.2, 100, 60);
insert into d values(50, 'SHC','America');
insert into d values(60, 'IT','China');

插入默认值或空值
INSERT INTO departments (department_id,
department_name)
VALUES (30, 'Purchasing');

INSERT INTO departments
VALUES (100, 'Finance', NULL, NULL);

insert.sql
INSERT INTO d VALUES(&dno, '&dname','&loc');
@/u01/app/oracle/insert.sql

使用子查询插入
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子句
drop table e purge;
create table e as select * from emp where 1=2;
insert into e select * from emp where deptno = 10;
insert into e select * from emp where deptno = 20;
insert into e (empno,ename,sal,deptno) select empno,ename,sal,deptno from emp where deptno=30;
alter table e modify job default 'WWW';

使用UPDATE语句
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];

UPDATE employees
SET department_id = 50
WHERE employee_id = 113;

UPDATE copy_emp
SET department_id = 110;
Specify SET column_name= NULL to update a column value to NULL.

UPDATE copy_emp
SET department_id = (SELECT department_id
FROM employees
WHERE employee_id = 100)
WHERE job_id = (SELECT job_id
FROM employees
WHERE employee_id = 200);

使用DELETE(DML)语句和Truncate(DDL)语句
DELETE [FROM] table
[WHERE condition];

create table emp_copy as select * from employees;

DELETE FROM emp_copy
WHERE department_id =
(SELECT department_id
FROM departments
WHERE department_name
LIKE '%Public%');

TRUNCATE TABLE table_name;
TRUNCATE TABLE copy_emp;
自动提交,不能回滚。不能加where子句。产生日志少,几乎不产生undo数据,速度快。会释放空间,delete后不会释放空间。
conn / as sysdba;
grant select on v_$database to scott;
grant select on dba_objects to scott;

conn scott/tiger;
create table big_t as select * from dba_objects;
exec dbms_status.gather_table_stats('scott','big_t');
select blocks,num_rows from user_tables where table_name='BIG_T';

delete big_t;
commit;
exec dbms_status.gather_table_stats('scott','big_t');
select blocks,num_rows from user_tables where table_name='BIG_T';

drop table big_t purge;
create table big_t as select * from dba_objects;
exec dbms_status.gather_table_stats('scott','big_t');
select blocks,num_rows from user_tables where table_name='BIG_T';

truncate table big_t;
exec dbms_status.gather_table_stats('scott','big_t');
select blocks,num_rows from user_tables where table_name='BIG_T';

事务控制
DML statements that constitute one consistent change to the data
One DDL statement
One data control language (DCL) statement

Begin when the first DML SQL statement is executed.
End with one of the following events:
-A COMMIT or ROLLBACK statement is issued.
-A DDL or DCL statement executes (automatic commit).
-The user exits SQL Developer or SQL*Plus. (Commit)
-The system crashes.(RollBack)
commit之后,其他的会话才能看到所做的更改。

session 1:
insert into d select * from d;
session 2:
select * from d;

session 1:
delete d where rownumber<=4;
session 2:
select * from d;

session 1:
create table e as select * from emp;
session 2:
select * from d;

session 1:
exit;
session 2:
select * from d;

session 1:
insert into d select * from d;
session 2:
ps -a | grep 'ora'
kill -9 4181
startup
select * from d;

使用savepoint,将一个事务分为多个部分
insert into d values(50, 'edu','china');
update d set loc='china' where deptno=40;
delete d where deptno=10;
rollback;
select * from d;

insert into d values(50, 'edu','china');
savepooint s1;
update d set loc='china' where deptno=40;
savepoint s2;
delete d where deptno=10;
rollback to savepoint s2;
select * from d;

rollback;
select * from d;

语句级别回滚
错误的语句只会回滚该语句,不会回滚之前的语句所做的更改。

读一致性
user a:
UPDATE employeesSET salary = 7000
WHERE last_name = 'Grant';
user b:
SELECT * FROM userA.employees;

select * from emp for update;
SELECT employee_id, salary, commission_pct, job_id
FROM employees
WHERE job_id = 'SA_REP'
FOR UPDATE
ORDER BY employee_id;

使用FOR UPDATE OF column_name 来确定锁定制定的行
SELECT e.employee_id, e.salary, e.commission_pct
FROM employees e JOIN departments d
USING (department_id)
WHERE job_id = 'ST_CLERK‘
AND location_id = 1500
FOR UPDATE OF e.salary
ORDER BY e.employee_id;

Oracle SQL Lesson (9) - 操作数据(增删改)的更多相关文章

  1. Delphi - cxGrid连接Oracle数据库 实现数据的增删改查

    cxGrid连接Oracle数据库 实现数据的增删改查 cxGrid连接Oracle数据库 1:通过OraSession连接数据库.OraDataSet实现OraSession和OraDataSour ...

  2. python链接oracle数据库以及数据库的增删改查实例

    初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...

  3. SQL语法之初级增删改查

    SQL语法之初级增删改查 1.增 1.1插入单行 INSERT INTO [表名](列名) VALUES(列值) 语法如下: INSERT INTO bsp_Nproductclass(guid,pi ...

  4. oracle初试、函数、增删改查、多表查询

      安装oracle后的测试以及解锁账户                  安装后打开命令行,输入 sqlplus 回车后会提示输入用户名,输入 sys或者system 回车后输入密码,密码为安装or ...

  5. oracle学习笔记系列------oracle 基本操作之表的增删改查

    --创建一个表 CREATE TABLE employee_souvc( id ), name ), gender ), birth DATE, salary ,), job ), deptno ) ...

  6. Sql Server——数据的增删改

    所谓数据的增删改就是在创建好数据库和表后向表中添加数据.删除表中的数据.更改表中的一些数据. 新增数据: 语法一: insert into 表名 values (数据内容)        --这里需要 ...

  7. SQL学习之简单增删改查

    SQL最常用的语句,就是增删改查: 增删改查的对象,分别是库(文件夹),表(文件),表的内容(表的记录): 一.创建一个基本的表 #create table Student_Info (Name VA ...

  8. Python 模拟SQL对文件进行增删改查

    #!/usr/bin/env python # _*_ coding:UTF-8 _*_ # __auth__: Dalhhin # Python 3.5.2,Pycharm 2016.3.2 # 2 ...

  9. SQL简单语句(增删改查)

    简单的SQL语句增删改查操作 说明: 在mysql里面亲测结果正确    用到的表(学生表:studnets) 1.创建一个学生表,(学号,姓名,性别,家庭住址) mysql> create t ...

随机推荐

  1. 使用visual c++ 2005远程调试64位系统上32位与64位程序

    一直都挺喜欢使用visual c++远程调试代码,它能展现给我们当时代码执行最真实的情景,今天有时间记录一下,以免以后忘了. 远程调试需要在被调试端安装服务器,对于visual c++ 2005来说调 ...

  2. ThinkPhp学习11

    原文:ThinkPhp学习11 一.模板的使用        (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[i ...

  3. sqlserver 自学笔记 函数实训 学分学期转换函数的设计

    设计目的: 1.运用sql基本知识,编写学期转换函数. 2.运用sql基本知识,编写学分转换函数,将考试成绩转换为学分 3.通过上述函数的编写与调试,熟练掌握 sql函数的编写.调试与使用方法. 设计 ...

  4. HDU 1007 近期点对

    分治法求近期点对 递归将点不断分成小组.计算最短距离.此时的最短距离不过两点都属两块的某一块(这里的切割点是mid点). 还须要考虑两点分属两块的情况. 这时对于选点则把范围缩小到了以mid为中心. ...

  5. java图形

    JFreeCharteclipse图形化编程插件jigloojfaceibm的jface基于swt,swing解决了awt存在的lcd问题.swing组件:container,window,frame ...

  6. Photoshop理论:另外一种角度看图层混合模式

    源地址:http://www.missyuan.com/thread-687724-1-4.html 1.我将一个色阶看成是一个由亮部和暗部组成的这么一个元素,亮部是我们看的见的,暗部是影响亮部的,有 ...

  7. Bean-Query 一个把对象转换为Map的Java工具库

    刚开源了一个经过完整測试的Java工具类. 地址例如以下: https://github.com/Jimmy-Shi/bean-query 使用说明例如以下: Bean-query Click Her ...

  8. Android开发 - ActivityLifecycleCallbacks用法初探

    ActivityLifecycleCallbacks是什么? Application通过此接口提供了一套回调方法,用于让开发人员对Activity的生命周期事件进行集中处理. 为什么用Activity ...

  9. leetcode第一刷_Unique Paths

    从左上到右下,仅仅能向右或向下,问一共同拥有多少种走法. 这个问题当然能够用递归和dp来做,递归的问题是非常可能会超时,dp的问题是须要额外空间. 事实上没有其它限制条件的话,这个问题有个非常easy ...

  10. 向GridView的模板列绑定OnClientClick的函数时出现了奇怪的问题

    原文:向GridView的模板列绑定OnClientClick的函数时出现了奇怪的问题 GridView的一个模板列中的内容是按钮,需要实现以下的效果: GridView分页显示数据,点击编辑按钮(模 ...