Oracle/PLSQL: 主键(Primary Key)说明

1 目标

通过演示样例解说怎样创建、删除、禁用和开启主键。

2 前言之-什么是主键

在Oracle中,主键指能唯一标识一条记录的单个数据表列或联合的数据表列(联合主键|复合主键)。主键用到的数据表列数据不能包括空值。并且,一张表仅仅能包括一个主键。

说明:在Oracle数据库中,联合主键的列不能超过32个。主键能够在创建表时定义或者通过ALTER TABLE语法定义。

3 创建主键之 - 在创建表时定义主键

单列主键演示样例:

CREATE TABLE TB_PK_EXAMPLE
(
ID number,
NAME varchar2(50),
DESCRIPTION varchar2(300),
CONSTRAINT TB_PK_EXAMPLE_PK PRIMARY KEY(ID)--定义主键
);

联合主键演示样例:

CREATE TABLE TB_SUPPLIER_EX
(
supplier_id number,
supplier_name varchar2(50),
supplier_description varchar2(300),
contact_name varchar2(50),
constraint TB_SUPPLIER_EX_PK primary key(supplier_id, supplier_name)--联合主键
);

4 创建主键之 - 使用alter table语法

语法

ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (col1, col2,...coln);

演示样例准备

先创建两张表(tb_employees和tb_departments)。脚本例如以下:

create table tb_employees
(
employee_id number,
employee_name varchar2(50),
employee_age number,
employee_birth date,
department_id number
); create table tb_departments
(
department_id number,
department_name varchar2(100),
location varchar2(300)
);

同过alter table语法创建主键:

--单列主键
alter table tb_employees add constraint tb_employees_pk primary key (employee_id);
--联合主键
alter table tb_departments add constraint tb_departments_pk primary key (department_id,department_name);

5 禁用主键

语法:

ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;

演示样例:

alter table tb_employees disable constraint tb_employees_pk;

6 启用主键

语法:

ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;

演示样例:

alter table tb_employees enable constraint tb_employees_pk;

7 删除主键

语法:

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

演示样例:

alter table tb_employees drop constraint tb_employees_pk;
alter table tb_departments drop constraint tb_departments_pk;
alter table TB_PK_EXAMPLE drop constraint TB_PK_EXAMPLE_PK;
alter table TB_SUPPLIER_EX drop constraint TB_SUPPLIER_EX_PK;





-------------------------------------------------------------------------------------------------------------------

假设您们在尝试的过程中遇到什么问题或者我的代码有错误的地方。请给予指正。很感谢!

联系方式:david.louis.tian@outlook.com

版权@:转载请标明出处!

--------------------------------------------------------------------------------------------------------------------

版权声明:本文博主原创文章。博客,未经同意不得转载。

Oracle主键(Primary Key)使用详细的说明的更多相关文章

  1. Oracle外键(Foreign Key)使用详细的说明(一)

    Oracle外键(Foreign Key)使用详细的说明(一) 1.目标 演示如何Oracle使用外键数据库 2.什么是外键? 1)在Oracle数据库中,外键是用来实现參照完整性的方法之中的一个.打 ...

  2. 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)

    1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...

  3. 关于主键(PRIMARY KEY)和自增(AUTO_INCREMENT)结合使用的知识点

    1.主键(PRIMARY KEY)和自增(AUTO_INCREMENT)同时使用两种写法:    a.主键(PRIMARY KEY)和自增(AUTO_INCREMENT)分两行写        创建一 ...

  4. 关于数据库主从表、主键PRIMARY KEY 外键约束 FOREIGN KEY 约束----NOT NULL,DEFAULT,CHECK

    如果由两个列共同组成主键,而且一个子表将主键作为可为空值的外键来继承,就可能得到错误的数据.可在一个外键列中插入有效的值,但在另一个外键列中插入空值.然后,可添加一个数据表检查约束,在可为空的外键中检 ...

  5. 主键primary key和唯一索引unique index

    1)主键一定是唯一性索引,唯一性索引并不一定就是主键. 2)主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引. 3)主键常常与外键构成参照完整性约束,防止出现数 ...

  6. SQLSERVER聚集索引和主键(Primary Key)的误区认识

    引用别人的,供以后学习使用,谢谢! 很多人会把Primary Key和聚集索引搞混起来,或者认为这是同一个东西.这个概念是非常错误的. 主键是一个约束(constraint),他依附在一个索引上,这个 ...

  7. oracle主键自增

    oracle主键自增 1建立数据表 create table Test_Increase(            userid number(10) primary key,  /*主键,自动增加*/ ...

  8. oracle 主键应用序列和触发器实现自动增长

    oracle 主键自动增长 这几天搞Oracle,想让表的主键实现自动增长,查网络实现如下: create table simon_example ( id number(4) not null pr ...

  9. oracle 主键自动增长

    oracle 主键自动增长 2009-12-11 16:07:00|  分类: 数据库资料|字号 订阅     这几天搞Oracle,想让表的主键实现自动增长,查网络实现如下: create tabl ...

随机推荐

  1. 如何把传统写法改成框架形式 es6

    每天思考的问题: 1.什么是组件 2.什么是插件 3.如何把传统写法改成框架形式 4.前端为什么要使用框架,使用框架的好处是什么? Image.png http://www.zhihu.com/que ...

  2. 【Codeforces Round #301 (Div. 2) E】Infinite Inversions

    [链接] 我是链接,点我呀:) [题意] 给你一个无限长的序列1,2,3,4... 然后给你n个操作. 每个操作ai,bi; 表示调换位置为ai和位置为bi的数的位置. (ai,bi<=10^9 ...

  3. 【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules

    [链接]h在这里写链接 [题意] 在这里写题意 [题解]     dp[i][0] 第i个位置,bob没有决策权     dp[i][1] 第i个位置,bob有决策权     dp[n][0] = 0 ...

  4. 讨论:怎样加快android的开机时间

    如题,近期项目须要,须要将android的开机时间大幅缩短,查了下网上资料,作用有限,望有处理过相关问题的兄弟姐妹參与讨论,给予不吝赐教,期待ing

  5. 19、opencv和v4l2的关系

    分析如下: v4L2是针对uvc免驱usb设备的编程框架,而opencv是一种跨平台计算机视觉库,opencv不仅支持v4l2框架,还支持windows.os等操作系统上的摄像头框架 cvCreate ...

  6. ASIC DC综合的理解

    ASIC DC综合的理解 DC综合流程 输入设计文件+指定的工艺库文件+约束文件 经过DC的综合,输出满足期望的门级网表及综合报告 输入输出数据 输入文件:设计文件(verilog等).工艺库(db) ...

  7. php重建二叉树(函数缺省参数相关的都写在后面,比如array_slice函数中的$length属性,故第一个参数是操作的数组)

    php重建二叉树(函数缺省参数相关的都写在后面,比如array_slice函数中的$length属性,故第一个参数是操作的数组) 一.总结 牛客网和洛谷一样,是真的好用 二.php重建二叉树 输入某二 ...

  8. Python数据分析环境和工具

    一.数据分析工作环境 Anaconda: Anaconda(水蟒)是一个科学计算软件发行版,集成了大量常用扩展包的环境,包含了 Python 解释器,conda 包管理工具,以及 NumPy.Pand ...

  9. 【30.49%】【codeforces 569A】Music

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  10. java判断字符串是否为数字

    我们在做安卓开发中,一定会遇到判断某字符串是否是数字的问题,本文使用正则表达式可以很方便的判断出来,希望本文对安卓开发者有所帮助.   1 public boolean isNumeric(Strin ...