目标

通过本章学习,您将可以:

l  使用 DML 语句

l  向表中插入数据

l  更新表中数据

l  从表中删除数据

l  控制事务

l  描述约束

l  创建和维护约束

数据控制语言

l     DML(Data Manipulation Language – 数据操作语言) 可以在下列条件下执行:

  • 向表中插入数据
  • 修改现存数据
  • 删除现存数据

l  事务是由完成若干项工作的DML语句组成的

从其它表中拷贝数据

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

SELECT employee_id, last_name, salary, commission_pct

FROM   employees

WHERE  job_id LIKE '%REP%';

数据库事务

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

l  一个或多个DML 语句

l  一个 DDL(Data Definition Language – 数据定义语言) 语句

l  一个 DCL(Data Control Language – 数据控制语言) 语句

l  以第一个 DML 语句的执行作为开始

l  以下面的其中之一作为结束:

l  COMMIT 或 ROLLBACK 语句

l  DDL 或 DCL 语句(自动提交)

l  用户会话正常结束

l  系统异常终了

控制事务

l     使用 SAVEPOINT 语句在当前事务中创建保存点。

l  使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

UPDATE...

SAVEPOINT update_done;

INSERT...

ROLLBACK TO update_done;

如果直接ROLLBACK将会全部回滚

什么是约束

l   约束是表级的强制规定

l   有以下五种约束:

  • • NOT NULL
  • • UNIQUE
  • • PRIMARY KEY
  • • FOREIGN KEY
  • • CHECK

l   如果不指定约束名 Oracle server 自动按照 SYS_Cn 的格式指定约束名

NOT NULL 约束

CREATE TABLE employees(

employee_id    NUMBER(6),

last_name      VARCHAR2(25) NOT NULL,//系统约束命名

salary         NUMBER(8,2),

commission_pct NUMBER(2,2),

hire_date      DATE

CONSTRAINT emp_hire_date_nn//自定义约束命名

NOT NULL,

UNIQUE 约束

CREATE TABLE employees(

employee_id      NUMBER(6),

last_name        VARCHAR2(25) NOT NULL,

email            VARCHAR2(25) ,

salary           NUMBER(8,2),

commission_pct   NUMBER(2,2),

hire_date        DATE NOT NULL,

...

CONSTRAINT emp_email_uk UNIQUE(email));

PRIMARY KEY 约束

CREATE TABLE   departments(

department_id        NUMBER(4),

department_name      VARCHAR2(30)

CONSTRAINT dept_name_nn NOT NULL,

manager_id           NUMBER(6),

location_id          NUMBER(4),

CONSTRAINT dept_id_pk PRIMARY KEY(department_id));

FOREIGN KEY 约束

CREATE TABLE employees(

employee_id      NUMBER(6),

last_name        VARCHAR2(25) NOT NULL,

email            VARCHAR2(25),

salary           NUMBER(8,2),

commission_pct   NUMBER(2,2),

hire_date        DATE NOT NULL,

...

department_id    NUMBER(4),

CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)

REFERENCES departments(department_id),

CONSTRAINT emp_email_uk UNIQUE(email));

FOREIGN KEY 约束的关键字

  • •          FOREIGN KEY: 在表级指定子表中的列
  • • REFERENCES: 标示在父表中的列
  • • ON DELETE CASCADE: 当父表中的列被删除时,子表中相对应的列也被删除
  • • ON DELETE SET NULL: 当父表中的列被删除时,子表中相应的列置空

CHECK 约束

..., salary NUMBER(2)

CONSTRAINT emp_salary_min

CHECK (salary > 0),...

添加约束的语法

使用 ALTER TABLE 语句:

l  添加或删除约束, 但是不能修改约束

l  有效化或无效化约束

l  添加 NOT NULL 约束要使用 MODIFY 语句

ALTER TABLE         table

ADD [CONSTRAINT constraint] type (column);

ALTER TABLE     employees

ADD CONSTRAINT  emp_manager_fk

FOREIGN KEY(manager_id)

REFERENCES employees(employee_id);

删除约束

ALTER TABLE      employees

DROP CONSTRAINT  emp_manager_fk;

oracle 10g 学习之数据进行增删改查、数据库事务、约束(8)的更多相关文章

  1. Mybatis学习总结(二)—使用接口实现数据的增删改查

    在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num ...

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

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

  3. django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能

    1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...

  4. mysql学习笔记一 —— 数据的增删改查

    1.连接mysql mysql 直接回车(是以root身份,密码空,登陆的是本机localhost) [root@www mysql]# mysql -uroot -p123 -S /var/lib/ ...

  5. python学习之-成员信息增删改查

    python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...

  6. EF学习笔记-1 EF增删改查

    首次接触Entity FrameWork,就感觉非常棒.它节省了我们以前写SQL语句的过程,同时也让我们更加的理解面向对象的编程思想.最近学习了EF的增删改查的过程,下面给大家分享使用EF对增删改查时 ...

  7. vue实现对数据的增删改查(CURD)

    vue实现对数据的增删改查(CURD) 导语: 网上看到一个写的比较好的学习文章,转载分享一下 在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的 ...

  8. Mybatis框架基于注解的方式,实对数据现增删改查

    编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...

  9. dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)

    jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...

随机推荐

  1. BurpSuite实例教程

    很久以前就看到了Burp suite这个工具了,当时感觉好NB,但全英文的用起来很是蛋疼,网上也没找到什么教程,就把这事给忘了.今天准备开始好好学习这个渗透神器,也正好给大家分享下.(注:内容大部分是 ...

  2. linux下的struct sigaction

    工作中使用案例: struct sigaction act; act.sa_sigaction = handleSignal; act.sa_flags = SA_SIGINFO; sigemptys ...

  3. Quartz.net开源作业调度框架使用详解(转)

    前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron-like表达式,集群,数据库.功能性能强大更不 ...

  4. ThinkPHP3.2.3自带的分页用法--很简单实用

    把解压后的Page.class.php放入ThinkPHP/Extend/Library/ORG/Util/(如果没有请手动创建)目录下面.thinkphp 自带的分页非常好用美观,先看一下如下代码片 ...

  5. 【原创】angularjs1.3.0源码解析之service

    Angular服务 在angular中,服务(service)是以提供特定的功能的形式而存在的. angular本身提供了很多内置服务,比如: $q: 提供了对promise的支持. $http: 提 ...

  6. wordpress自定义后台用户联系方式 添加qq、微博、微信

    在 WordPress 后台,个人设置(Profile)中,可以设置电子邮件和 Website,如何添加国人常用的 QQ, 微博,微信呢? <?php /* Plugin Name: Custo ...

  7. Ninth scrum meeting - 2015/11/3

    今天课上老师询问了每个团队的进度,我们发现有好多团队都已经基本完成了, 距离预定的alpha版本开发完成时间也越来越近了,我们的工作也都在有条不紊的进行着.今天又出现了git pull时有冲突的情况, ...

  8. [Effective JavaScript 笔记]第4章:对象和原型--个人总结

    前言 对象是js中的基本数据结构.对象在js语言编码中也随处可见,比如经常会用到的函数,也是一个Function构造函数,Function.prototype原型对象.每当声明一个函数时,都会继承Fu ...

  9. CameraFacingBillboard

    原地址:http://www.cnblogs.com/88999660/ 描述 这个脚本使得它被连接到配合本身相机的对象.这对于要经常面对镜头,并以同样的方式了,因为它是有用的广告牌. 用法 将这个脚 ...

  10. Shell之date用法

    创建以当前时间为文件名的 mkdir `date+%Y%m%d` 备份以时间做为文件名的 tar cvf./htdocs`date +%Y%m%d`.tar ./* date命令如何获得上星期的日期? ...