一、一些概念

定义:

主键--唯一标识一条记录,不能有重复的,不允许为空

外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值

索引--该字段没有重复值,但可以有一个空值

作用:

主键--用来保证数据完整性

外键--用来和其他表建立联系(在添加数据时会做检查,关联表中没有的值是添加不进来的)

索引--是提高查询排序的速度

个数:

主键--主键只能有一个

外键--一个表可以有多个外键(比如:学生表、课程表、学生课程表,其中学生课程表就是两个主键,分别是学生表和课程表的外键,也是该表的组合主键)

索引--一个表可以有多个唯一索引

建表语句
 

外键设置的作用:

外键取值规则:空值或参照的主键值。

(1)插入非空值时,如果主键表中没有这个值,则不能插入。

(2)更新时,不能改为主键表中没有的值。

(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。

(4)更新主键记录时,同样有级联更新和拒绝执行的选择。

简而言之,SQL的主键和外键就是起约束作用。

二、创建语句

创建表:

create table emp_dept(
empno number(4) primary key not null,--第一种方式创建主键
ename varchar2(10),
deptno number(2),
deptname varchar2(14)
);
comment on column emp_dept.empno is '用户编号';
comment on column emp_dept.ename is '用户名';

创建主键:

  方式一:如创建表时,在主键字段定义时声明即可。

  方式二:在创建表的最下面声明主键

create table emp_dept(
empno number(4) not null, --第一种方式创建主键
ename varchar2(10),
deptno number(2),
deptname varchar2(14),
constraint pk_emp_dept primary key ("empno ")
);

  方式三:使用alert语句

alter table 表名
add constraint PK_字段名--"PK"为主键的缩写,字段名为要在其上创建主键的字段名,'PK_字段名'就为约束名
primary key (字段名) --字段名同上

创建外键:

  方式一:

create table sc(
sno char(5) constraint fk_student references student(sno),--写在属性定义里
cno char(5),
foreign key(cno) references course(cno),
grade number
);

  方式二:

create table sc(
sno char(5),
cno char(5),
foreign key(cno) references course(cno),
grade number,
  constraint fk_student foreign key(sno) references student(sno)
);

  方式三:

alter table sc
add constraint fk_student foreign key(sno) references student(sno);

删除外键:

alter table drop constraint fk_student;

三、举例

  创建student、course、stu_cou表,一个是学生表,一个是课程表,一个是学生课程关联表:

  student:

create table student(
sno number(6) primary key not null,
sname varchar2(20)
);

  course:

create table course(
cno number(6) not null,
cname varchar2(30),
constraint pk_course primary key (cno)
);

  stu_cou

create table stu_cou(
sno number(6) not null ,
cno number(6) not null constraint fk_course references course(cno)  on delete  cascade,--级联查询
create_time Date default sysdate,
foreign key(sno) references student(sno)  on delete  cascade--级联查询
);

  每个表插入一条数据

insert into student(sno,sname)
values(1,'bright');
insert into course(cno,cname)
values(1,'java');
insert into stu_cou(sno,cno)
values(1,1);

  这些数据都是合法的,首先主键满足唯一约束条件,外键满足约束条件,此时,插入一条不合法数据

insert into stu_cou(sno,cno) values(1,2);     

删除一条数据

delete from course;

会看到stu_cou表中数据都被删除了

oracle——DDL的更多相关文章

  1. Oracle ddl 和 dml 操作

      ddl 操作 窗口设置用户权限的方法  Oracle的数据类型  按住Ctrl点击表名 ,可以鼠标操作  插入的数据需要满足创建表的检查  主表clazz删除数据从表设置级联也会一同删除 有约束也 ...

  2. 复杂一点的SQL语句:Oracle DDL和DML

    DDL:对表或者表的属性进行了改变 create:创建表创建用户创建视图 创建表 create table student(id int,score int) ; student后面与括号之间可以有空 ...

  3. oracle ddl 与 dml

    DDL create table 创建表 alter table 修改表 drop table 删除表 truncate table 删除表中所有行 create index 创建索引 drop in ...

  4. Oracle DDL+DML+DCL实例

    SQL语言共分为四大类: 数据查询语言DQL: 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块. 数据操纵语言DML: DML是“数据操纵语言”( Data ...

  5. oracle DDL(create、alter、drop)

    一.创建表1.创建表CREATE TABLE <table_name>( column1 DATATYPE [NOT NULL] [PRIMARY KEY], column2 DATATY ...

  6. php 5.6 版本配置 oracle ddl

    1. Windows版PHP内置了Oracle驱动,在ext目录下:php_oci8.dllphp_oci8_11g.dllphp_pdo_oci.dllLinux上如果自己编译的话则添加下面的con ...

  7. oracle DDL(数据定义语言)基本语句

    --创建表格 create table  production( ProductIdvarchar2(10), ProductNamevarchar2(20), ProductPricenumber( ...

  8. Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。

    Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...

  9. ORACLE 11G R2 RAC classical install OGG12.1(LINUX) 经典抽取模式单项同步配置OGG12.1

    博文结构图如下: 一.环境描述以及注意事项 1.1 环境简介 IP 系统 Oracle版本 OGG版本 源端 172.16.10.16/36 RHEL6.5 oracle11204 12.1 目标端 ...

随机推荐

  1. [老老实实学WCF] 第五篇 再探通信--ClientBase

    老老实实学WCF 第五篇 再探通信--ClientBase 在上一篇中,我们抛开了服务引用和元数据交换,在客户端中手动添加了元数据代码,并利用通道工厂ChannelFactory<>类创 ...

  2. MVC5 属性路由

    属性路由(attribute routing)是最新被引进到MVC5中的,它和传统路由共同组成了mvc5中的两种主要路由. 1. 高质量的url应该满足以下几点 域名便于记忆和拼写 简短 便于输入 可 ...

  3. 理解C#系列 / 核心C# / 名称空间

    名称空间namespace 名称空间 名称空间用来逻辑分类,而不是物理上的,名称空间与程序集无关[程序集:经由编译器编译得到的文件],同一个程序集中可以有2不同的名称空间,也可以在不同的程序集中定义同 ...

  4. Session State Pattern会话状态模式

    Client Session State 客户会话状态. 在Client端保存会话状态. 运行机制 Client在每次请求时会把所有的会话数据传给Server,Server在响应时把所有的会话状态传给 ...

  5. Jquery 学习三

    一.each语句 1.each语句的功能 在jQuery中,通过$函数获取的都是jQuery对象.通过测试可知,jQuery对象是一个类数组的特殊对象,其是DOM对象的集合.而each语句就是专门用于 ...

  6. GNU Binutils工具

    参考<程序员的自我修养---连接.装载与库> 以下内容转贴自 http://www.cnblogs.com/xuxm2007/archive/2013/02/21/2920890.html ...

  7. callback调用测试

    <html> <head> <script> var context="全局"; var testObj={ context:"初始& ...

  8. php中json_encode中文编码问题分析

    众所周知使用json_encode可以方便快捷地将对象进行json编码,但是如果对象的属性中存在着中文,问题也就随之而来了.json_encode会将中文转换为unicode编码例如:'胥'经过jso ...

  9. 演出排期JavaScript

    <script language="JavaScript" type="text/javascript"> var diarydays=" ...

  10. Hibernate 插入,修改,删除,查询语句

    /* *具体操作hibernate的类 *增加,删除,修改,按ID查询,模糊查询,查询全部 **/ public class PersonOperate { //在hibernate中所有操作都是由S ...