Oracle基础笔记九

第九章 约束

1.什么是约束

约束是表级的强制规定

有以下五种约束:NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK

2.注意事项

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

创建和修改约束:

建表的同时

建表之后

可以在表级或列级定义约束

可以通过数据字典视图查看约束

3.表级约束和列级约束

作用范围:

①列级约束只能作用在一个列上

②表级约束可以作用在多个列上(当然表级约束也

可以作用在一个列上)

定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。

非空(not null) 约束只能定义在列上

4.定义约束

4.1NOT 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,

...

4.2UNIQUE 约束    唯一约束,允许出现多个空值:NULL。

可以定义在表级或列级:

CREATE TABLE employees(

employee_id      NUMBER(6),

last_name        VARCHAR2(25) UNIQUE,

email            VARCHAR2(25),

salary           NUMBER(8,2),

commission_pct   NUMBER(2,2),

hire_date        DATE NOT NULL,

...

CONSTRAINT emp_email_uk UNIQUE(email));

4.3PRIMARY 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));

4.4FOREIGN 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(级联置空): 子表中相应的列置空

4.5CHECK 约束   定义每一行必须满足的条件

..., salary NUMBER(2)

CONSTRAINT emp_salary_min

CHECK (salary > 0),...

5.添加约束的语法

使用 ALTER TABLE 语句:

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

有效化或无效化约束

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

以create table emp as select * from employees;为例,添加和删除约束

Alter table emp modify(empname varchar2(50) not null);

添加约束举例

ALTER TABLE     employees

ADD CONSTRAINT  emp_manager_fk

FOREIGN KEY(manager_id)

REFERENCES employees(employee_id);

Table altered.

从表 EMPLOYEES 中删除约束

ALTER TABLE      employees

DROP CONSTRAINT  emp_manager_fk;

无效化约束:在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。

ALTER TABLE employees

DISABLE CONSTRAINT emp_emp_id_pk;

激活约束:ENABLE 子句可将当前无效的约束激活

ALTER TABLE employees

ENABLE CONSTRAINT emp_emp_id_pk;

时间: 2024-10-13 16:55:10

Oracle基础笔记九的相关文章

Oracle基础笔记十

第十章 视图 1.视图:从表中抽出的逻辑上相关的数据集合. 视图是一种虚表. 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表. 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句. 视图向用户提供基表数据的另一种表现形式 2.为什么使用视图 控制数据访问 简化查询 避免重复访问相同的数据 3.分类:简单视图和复杂视图 特性           简单视图       复杂视图 表的数量        一个       一个或多个 函数    

Oracle基础笔记

=====================================第一章:oracle数据库基础============================================= Orace特点: 1.跨操作系统,跨硬件平台的数据操作能力 2.支持多用户,大事务量的处理 3.在保持数据安全性和完整性方面的性能优越 4.支持分布式数据处理,具有可移植性 Sqlserver特点: 1.只能在windows上运行 Oracle和Sqlserver两者的共同点: 1.都是关系型数据库 表

Oracle学习笔记九 数据库对象

Oracle 数据库对象又称模式对象,数据库对象是逻辑结构的集合,最基本的数据库对象是表. 其他数据库对象包括: 同义词 同义词是现有对象的一个别名.它的作用有: 1.简化SQL语句 2.隐藏对象的名称和所有者(隐藏原始对象内容) 3.提供对对象的公共访问 同义词共有两种类型: 公有同义词可被所有的数据库用户访问. 私有同义词只能在其模式内访问,且不能与当前模式的对象同名. 创建或替换现有同义词 create or replace synonym emp_syn for scott.emp; 删

Oracle基础笔记十一

第十一章 其他数据库对象 1.什么是序列? 序列:提供有规律的数值. 序列: 可供多个用户用来产生唯一数值的数据库对象 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率 1.2.定义序列 CREATE SEQUENCE 语句 CREATE SEQUENCE sequence [INCREMENT BY n]  --每次增长的数值 [START WITH n]    --从哪个值开始 [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n

Oracle基础笔记七

第七章 创建和管理表 1.常见的数据库对象 对象 描述 表              基本的数据存储集合,由行和列组成. 视图 从表中抽出的逻辑上相关的数据集合. 序列 提供有规律的数值. 索引 提高查询的效率 同义词 给对象起别名 2.命名规则 表名和列名: 必须以字母开头 必须在 1–30 个字符之间 必须只能包含 A–Z, a–z, 0–9, _, $, 和 # 必须不能和用户定义的其他对象重名 必须不能是Oracle 的保留字 3.数据类型 数据类型                 描述

Oracle基础笔记四

第四章 多表查询 1.笛卡尔集 笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. 2.Oracle 连接 使用连接在多个表中查询数据. select table1.column,table2.column from table1,table2 where table1.column = table2.column 在 WHERE 子句中写入连接条件. 在表中有相同列时,在列名之前加上表名前缀 2.1等

Oracle基础笔记八

第八章 数据处理 1.数据操纵语言 DML(Data Manipulation Language – 数据操纵语言) 可以在下列条件下执行: 向表中插入数据 修改现存数据 删除现存数据 事务是由完成若干项工作的DML语句组成的 2.INSERT 语句语法 使用 INSERT 语句向表中插入数据. 使用这种语法一次只能向表中插入一条数据. INSERT INTO table [(column [, column...])] VALUES (value [, value...]); 2.1插入数据

Oracle基础笔记五

第五章 分组函数 1.什么是分组函数? 分组函数作用于一组数据,并对一组数据返回一个值. 类型:AVG COUNT MAX MIN STDDEV SUM 2.AVG(平均值)和 SUM (合计)函数: 可以对数值型数据使用AVG 和 SUM 函数. SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary) FROM   employees WHERE  job_id LIKE '%REP%'; 3.MIN(最小值)和 MAX(最大值)函数

Oracle基础笔记十四

第十四章 高级子查询 1.子查询 子查询 (内查询) 在主查询执行之前执行 主查询(外查询)使用子查询的结果 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM  table); 问题:查询工资大于149号员工工资的员工的信息 SELECT last_name FROM   employees WHERE  salary > (SELECT salary FROM   employees WHERE