oracle——DDL

一、一些概念

定义:

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

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

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

作用:

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

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

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

个数:

主键--主键只能有一个

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

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

建表语句

外键设置的作用:

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

(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表中数据都被删除了

时间: 2024-08-29 11:53:21

oracle——DDL的相关文章

Oracle ddl 和 dml 操作

  ddl 操作 窗口设置用户权限的方法  Oracle的数据类型  按住Ctrl点击表名 ,可以鼠标操作  插入的数据需要满足创建表的检查  主表clazz删除数据从表设置级联也会一同删除 有约束也强制删除 Oracle dml操作  简化分页查询 创建百万条记录的表 Oracle 数据库的备份 导入导出 原文地址:https://www.cnblogs.com/qingyundian/p/9142659.html

oracle DDL,DML,DCL, 基础概念详解

一.SQL语言,有两个组成部分: DML(data manipulation language):它们是SELECT.UPDATE.INSERT.DELETE,命令是用来对数据库里的数据进行操作的语言. DDL(data definition language):主要的命令有CREATE.ALTER.DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用. 二.SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML

Oracle DDL+DML+DCL实例

SQL语言共分为四大类: 数据查询语言DQL: 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块. 数据操纵语言DML: DML是"数据操纵语言"( Data Manipulation Language )的简写.如果说SELECT语句对数据进行的是读操作,那么DML语句对数据进行的是写操作.DML语句的操作对象是表中的行,这样的语句一次可以影响一行或多行数据. 数据定义语言DDL: DDL(Data Definition Language 数据

利用Oracle DDL触发器实现DDL监控

前言 创建此触发器的主要目的是为了控制数据库的版本,虽然会将DDL语句保留但难免会出现遗漏,所以创建DDl触发器记录DDL操作,主要是用来核对数据库变更的SQL语句 创建用户并授权 #需要使用sys用户授权 CREATE USER DBADMIN IDENTIFIED BY DBADMIN; GRANT CONNECT TO DBADMIN; GRANT DBA TO DBADMIN; GRANT SYS.V_$OPEN_CURSOR TO DBADMIN; 创建序列及表 DROP SEQUEN

Oracle GoldenGate (以下简称ogg)在异种os上同种db之间的数据同步。

ogg能实现的功能: 可以细化到单表同步,符合特定where条件的rows同步,指定column的同步. ogg 的竞争对手:ibm cdc:dell shareplex:dsg:dds等等 环境描述: 源头:windows 2003x64bit, oracle db 11.2.0.3 x64bit 目的端:suse linux ,oracle db 11.2.0.3 预先准备: 1.Microsoft Visual C ++ 2005 SP1 Redistributable Package 注

GoldenGate V11.1数据复制限制

以下对goldengate数据复制的限制情况进行说明. 不支持文件等非结构化数据复制 GoldenGate依赖对于数据库日志的解析获取数据变化,因此只能支持数据库中的数据变化复制,无法支持文件等非结构化数据的复制. Oracle数据类型限制 GoldenGate支持Oralce常见数据类型的复制. GoldenGate不支持的数据类型 1)         ANYDATA 2)         ANYDATASET 3)         ANYTYPE 4)         BFILE 5)  

009.增删查改语法(sql实例)

--------------------------------------------合并结果集SELECT UNION ---------------------------------------------------------- SELECT 'HAHA',1,52 UNION--联合,将查询的两个结果集合并,*结构一致才能合并到一起,结构不一致则会报错 SELECT '嘿嘿',1,52 SELECT 'HAHA',1,52 UNION all SELECT '嘿嘿',1,52--常

oracle-表结构分析

表结构分析 建表语句CREATE TABLE table_name(table_name VARCHAR2(10),table_name1 int(5),)ALTER语句 ALTER TABLE table_name ADD column_name datatypeALTER TABLE table_name MODIFY (column_name datatype) oracle ddl CREATE TABLE "CS_GDBZDATA"."ACCT_WORK_REGIS

sql语句(MySQL)

本篇源自网络,整理了sql99标准中增删改查的sql语句以及MySQL特有的语句. 数据库--MySql 数据仓库.就与我们之前学过的纯文本,properties这些技术一样.用来保存数据.并提供对数据进行增删改查的操作.我们以后做项目时,项目中的数据都是保存在数据库中的.//--------------------------------------------------------------------为什么要用数据库,数据库的特点 1>实现数据共享 2>减少数据的冗余度 3>数