1,建外键

新建两个表来实现外键的关联。

create table main_tab

(

id number,

name varchar2(30)

);

create table sub_tab

(

id number,

main_id number,

name varchar2(30)

);

这里要设置sub_tab里面的mian_id为外键。设置外键的前提是main_id必须是main_tab的主键。所以要先设置main_tab的主键。代码如下:

ALTER TABLE main_tab ADD CONSTRAINT pk_main_tab PRIMARY KEY(id);

这个时候可以在sub_tab中设置外键了。代码如下:

ALTER TABLE sub_tab ADD CONSTRAINT fk_sub_tab foreign KEY (main_id) references main_tab(id);

解释下alter table的命令。

ALTER TABLE sub_tab ADD CONSTRAINT fk_sub_tab foreign KEY (main_id) references main_tab(id);

alter table table_name-----------------------意思就是要改动某个表

add constraint constraint_name-------------意思就是给某个表加约束/限制

foreign key(column_name)------------------说明是外键的约束,而且是某个column的。

references table_name(id);------------------指定这个外键是属于哪个表的

那么,如何实现两张表的级连删除呢?

重新建立PERSON的外键,加上ON DELETE CASCADE选项试一下:

SQL> alter table person drop CONSTRAINT FK_PERSON1;

表已更改。

SQL>ALTER TABLE PERSON ADD (CONSTRAINT FK_PERSON1 FOREIGN KEY (PROFESSION) 
REFERENCES PERSONPROFESSION (PROFESSIONID) ON DELETE CASCADE);

表已更改。

增加外键约束的时候加ON DELETE CASCADE选项目的是可以在子表记录存在的情况下直接删除父表记录,而不用受约束的限制:
SQL> delete from PERSONPROFESSION;

已删除 1 行。

SQL> select PERSONID,PROFESSION from person;

PERSONID PROFESSION
---------- ----------
        10          1

SQL> select * from PERSONPROFESSION;

未选定行

以上可以看出父表记录删除了,子表记录还存在。

那么在delete语句的末尾加上CASCADE,就可以实现两张表的级删除:

SQL> delete from PERSONPROFESSION cascade;

已删除 1 行。

SQL> select * from person;

未选定行

SQL> select * from PERSONPROFESSION;

未选定行

oracle语句总结(一)的更多相关文章

  1. [转载]T-SQL(Oracle)语句查询执行顺序

    原文链接:http://blog.sina.com.cn/s/blog_61c006ea0100mlgq.html sql语法的分析是从右到左,where子句中的条件书写顺序,基本上对sql性能没有影 ...

  2. 性能测试常用Oracle语句

    性能测试常用Oracle语句 显示数据库当前的连接数 select count(*) from v$process; 显示数据库最大连接数: select value from v$parameter ...

  3. oracle语句随笔

    oracle语句随笔 dmp数据的导入. ; --创建用户 GRANT CONNECT,RESOURCE,DBA TO memsspc; --赋值权限 --cmd 中导入命令 IMP memsspc@ ...

  4. 53个Oracle语句优化规则详解(转)

    Oracle sql 性能优化调整  1. 选用适合的ORACLE优化器        ORACLE的优化器共有3种:a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE ...

  5. Oracle语句优化1

    Oracle语句优化1 优化就是选择最有效的方法来执行SQL语句.Oracle优化器选择它认为最有效的     方法来执行SQL语句.         1. IS   NULL和IS   NOT   ...

  6. oracle语句insert into select如何加后续插入条件

    oracle语句insert into select如何加后续插入条件 2014-01-21 10:48匿名  分类:其他编程语言 | 浏览 2746 次 oracle中有批量插入语句insert i ...

  7. Oracle 语句中“||”代表什么啊?

    Oracle 语句中“||”代表什么啊? Oracle 语句中“||”代表什么啊?跟ServerSQL中的字符串的连接符“+”是一个概念么? 1. 恩是的 是一个含义...select '1'||'2 ...

  8. Oracle语句中IN和=的区别有哪些?

    Oracle语句中IN和=的区别有: 1.首先应用范围不一样:in 可以理解为是范围内的选择:= 只有一个.例如: select sno, sname from t1 where sno in ('s ...

  9. MyBatis项目实战 快速将MySQL转换成Oracle语句

    一.前言 因项目需求,小编要将项目从mysql迁移到oracle中 ~ 之前已经完成 数据迁移 (https://zhengqing.blog.csdn.net/article/details/103 ...

  10. 45个非常有用的oracle语句(摘自尚学堂)

    日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 “SYSDATE”来指定查询的日期. 1 2 SELECT TRUNC (SYSDATE, ...

随机推荐

  1. ZOJ 3696 Alien's Organ 概率论 泊松分布

    看了好久的题,但还是看得一脸蒙圈,感觉完全无从下手,我的队友告诉我可能是正太分布之类的,但我感觉不太像,后来才听同学说是泊松分布,才恍然大悟,概率论刚刚学过这里不久,不禁感叹,学会了还要会用啊... ...

  2. 最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件

    今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程.以后各位只要着重如何编写 ...

  3. Allegro PCB -通孔焊盘制作 及Flash制作

    通孔焊盘制作,比如插针封装 数值确定: mil单位                                                                           ...

  4. 神经网络joone_engin模式识别示范,eclipse

    链接: http://pan.baidu.com/s/1kVRducv 密码: junw

  5. 使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍

    使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍 Windows MobileMobileWindowsMicrosoftWinForm 介绍 Microso ...

  6. 深度学习 for java http://deeplearning4j.org/

    http://deeplearning4j.org/ http://deeplearning4j.org/zh-neuralnet-overview

  7. CDOJ 1273 God Qing's circuital law

    暴力枚举+idea.做的时候mod写错了,写成了1000000009,找了两个多小时才发现...... a[1],a[2],a[3]....a[N] b[1],b[2],b[3]....b[N] 首先 ...

  8. Linux如何正确关机

    其实,在Linux领域内大多用在服务器上,很少遇到关机的操作.毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机. Linux和windows不同,在 Linux 底下,由于每个程序( ...

  9. IT技术网站汇总

    首先是比较著名的博客型的网站!一般来说在国外比较著名的博客基本上都是比较有影响力发起的或者建立的经常发布一些比较有思考力深入分析的文章! 博客媒体网站 1.www.ArsTechnica.com 2. ...

  10. Laravel5 model create使用

    1.在laravel的Eloquent ORM中,默认表会有created_at.updated_at两个字段,因此在使用create函数时若表无这两个字段会出错,可以设置 public $times ...