11_Oracle_约束

合集下载

oracle数据库constraint用法

oracle数据库constraint用法

在Oracle数据库中,约束(constraint)用于实施所谓的"业务规则",防止非法信息进入数据库,满足管理员和应用开发人员所定义的规则集。

以下是约束的几种类型及其用法:1. 主键约束(Primary Key):对一个列进行约束,要求非空且不重复。

格式:alter table [表名] add constraint [约束名称] primary key ([列名])。

2. 外键约束(Foreign Key):通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键。

格式:alter table [表名] add constraint [约束名称] foreign key ([列名]) references [其他表名]([列名])。

3. 检查约束(Check):给一列的数据进行了限制。

格式:alter table [表名] add constraint [约束名称] check ([列名])。

4. 唯一约束(Unique):给列的数据追加的不重复的约束类型。

格式:alter table [表名] add constraint [约束名称] unique ([列名])。

5. 默认约束:让此列的数据默认为一定的数据。

格式:alter table [表名] add constraint [约束名称] default ([默认值]) for [列名]。

在使用这些约束时,需要注意以下几点:1. 如果没有为约束提供一个名字,那么Oracle会分配一个系统生成的唯一名字,以SYS_开头。

2. 约束定义存储在数据字典中,可以通过查询USER_CONSTRAINTS来获得相关信息。

3. 如果相关的约束定义在单列上,可以在列这一级指定约束的定义;多列约束必须定义在数据表级,相关的列要在括号中指定,用逗号分隔。

4. 如果一个DML语句执行的任何结果破坏了完整性约束,Oracle就会回滚语句,返回错误信息。

oracle约束条件

oracle约束条件

oracle约束条件【实用版】目录1.Oracle 约束条件的概念2.Oracle 约束条件的分类3.Oracle 约束条件的作用4.Oracle 约束条件的使用示例5.Oracle 约束条件的优缺点正文1.Oracle 约束条件的概念Oracle 约束条件是数据库设计中的一种机制,用于保证数据表中数据的完整性和一致性。

约束条件是一种限制,可以控制数据表中数据的添加、修改和删除操作,确保数据满足特定的规则和条件。

2.Oracle 约束条件的分类Oracle 约束条件主要分为以下几类:(1)主键约束(Primary Key Constraint):主键是用于唯一标识表中记录的字段,一个表只能有一个主键。

主键约束可以确保表中的记录不会重复,并且可以快速定位到特定的记录。

(2)外键约束(Foreign Key Constraint):外键是用于连接两个表的字段。

外键约束可以确保表之间的数据一致性和关联性。

外键可以定义在连接表中,连接两个相关的表。

(3)唯一约束(Unique Constraint):唯一约束可以确保某个字段的值在表中唯一,即不能出现重复值。

唯一约束适用于需要保证数据唯一性的场景。

(4)检查约束(Check Constraint):检查约束用于确保某个字段的值满足指定的条件。

当插入或更新数据时,检查约束会自动检查数据是否符合条件,如果不符合则拒绝操作。

(5)默认约束(Default Constraint):默认约束用于为字段设置默认值。

当插入数据时,如果没有为该字段提供值,系统会自动将默认值插入到该字段中。

3.Oracle 约束条件的作用Oracle 约束条件主要用于保证数据表的完整性、一致性和关联性。

通过使用约束条件,可以有效地防止数据错误、数据冲突和数据丢失,从而确保数据库的可靠性和安全性。

4.Oracle 约束条件的使用示例例如,假设有一个学生信息表,需要确保每个学生的学号是唯一的,姓名和年龄符合要求。

oracle 查询约束条件

oracle 查询约束条件

oracle 查询约束条件
在Oracle中,查询约束条件可以使用以下关键字:
1. WHERE:WHERE子句用于从表中选择符合条件的行,可以使用各种算术、逻辑和比较运算符,例如:
SELECT * FROM employees WHERE salary > 5000;
2. GROUP BY:GROUP BY子句用于将查询结果根据指定的列进行分组,在分组后可以使用聚合函数对每个分组进行汇总,例如:
SELECT department_id, AVG(salary) FROM employees GROUP BY department_id;
3. HAVING:HAVING子句用于对分组后的结果进行筛选,只保留满足条件的分组,例如:
SELECT department_id, AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) > 5000;
4. ORDER BY:ORDER BY子句用于对查询结果进行排序,可以根据一个或多个列进行排序,可以指定升序或降序,例如:
SELECT * FROM employees ORDER BY department_id, salary DESC;
5. JOIN:JOIN操作用于将多个表中的数据进行连接,可以使用多种JOIN类型,例如:
SELECT * FROM employees JOIN departments ON
employees.department_id = departments.department_id;。

极好的 sql oracle 培训资料10

极好的 sql oracle 培训资料10

约束原则
命名一个约束,必须按照命名规则。如果你不命名
约束,Oracle服务器将用SYS_Cn格式产生一个名字, 这里n是一个唯一的整数,所以约束名是唯一的。 创建一个约束: –在创建表的同时,或者 –在创建表之后 在列或者表级定义一个约束 在数据字典USER_CONSTRAINTS中查看约束
NOT NULL约束
NOT NULL约束只能在列级被指定,不能在表级。 例子里应用NOT NULL约束到EMPLOYEES表的
Department_id列。因为对列LAST_NAME的约束未被 命名,Oracle服务器将为它创建名字。 在指定约束时,可以指定约束的名字: ... last_name VARCHAR2(20) CONSTRAINT emp_last_name_nn NOT NULL...
Including Constraints (约束)
目标
完成本课后, 应当能够执行下列操作:
描述约束 创建和维护约束
什么是约束?
在Oracle数据库中,可以为表设置约束
(Constraint)。当为某个表定义了约束后, 对该表做的所有操作都必须满足约束的要求, 否则操作将失败。
约束类型
NOT NULL约束
确保该列不允许存放空值
EMP
EMPNO ENAME 7839 7698 7782 7566 ... KING BLAKE CLARK JONES JOB PRESIDENT MANAGER MANAGER MANAGER ... COMM DEPTNO 10 30 10 20
EMP
EMPNO ENAME 7839 KING 7698 BLAKE ... ... COMM DEPTNO 10 30 不允许插入 (DEPTNO-9 在 DEPT表中不存 在) 允许 FOREIGN KEY

Oracle 外键约束

Oracle  外键约束

Oracle 外键约束外键FOREIGN KEY约束是几种约束是最复杂的,外键约束可以使两个表进行关联。

外键是指引用另一个表中的某个列或某几个列,或者本表中另一个列或另几个列的列。

被引用的列应该具有主键约束,或者惟一性约束。

在外键的定义中,涉及到外键表、外键列、被引用表和被引用列等几个概念。

如果成功地创建了外键约束,那么系统将要求外键列中的数据必须来自被引用列中的数据。

被引用列中不存在的数据不能存储于外键列中。

在一般情况下,当删除被引用表中的数据时,该数据也不能出现在外键列中。

如果外键列存储了将要在被引用表中删除的数据,那么对被引用表删除数据的操作将失败。

最典型的外键约束是HR模式中的EMPLOYEES和DEPARTMENT表,在该外键约束中,外键表EMPLOYEES中的外键列DEMPARTMENT_ID将引用被引用表DEPARTMENTS 中的DEMPARTMENT_ID列。

例如,在以下的示例中,将以HR身份连接到数据库,并创建一个新表ADMINISTRATION_EMP,并为其添加到DEPATRMENT表的外键约束:SQL> connect hr/hr已连接。

SQL> create table administration_emp2 as select * from hr.employees3 where department_id=10;表已创建。

SQL> alter table administration_emp2 add constraint admin_dep_fk3 foreign key(department_id)4references departments(department_id);表已更改。

为验证创建的外键约束的有效性,可以向ADMINISTRATION_EMP表添加一条记录,并且它的DEPARTMENT_ID列值不存在DEPARTMENTS表中,那么插入操作将会因为违反外键约束而失败:SQL> insert into administration_emp(2 employee_id,last_name,email,hire_date,job_id,department_id)3 values(120,'刘丽','li@',sysdate,'HR_REP',360);insert into administration_emp(*第 1 行出现错误:ORA-02291: 违反完整约束条件(HR.ADMIN_DEP_FK) - 未找到父项关键字注意在一个表上创建外键约束时,被引用表必须已经存在,并且必须为该表的引用列定义惟一性约束或主键约束。

oracle constraint用法(一)

oracle constraint用法(一)

oracle constraint用法(一)Oracle Constraint用法•什么是Oracle Constraint?–Constraint(约束)是定义在表上的规则,用于限制对表中数据的插入、更新和删除操作。

–Oracle Constraint用于保证数据的完整性和一致性。

•主键约束(Primary Key)–主键约束用于定义一列或多列的唯一标识,并自动创建唯一索引。

–语法:CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...)。

•唯一约束(Unique)–唯一约束用于确保某列或某几列的值都是唯一的。

–语法:CONSTRAINT constraint_name UNIQUE(column1, column2, ...)。

•非空约束(Not Null)–非空约束用于确保某列不允许为空值。

–语法:CONSTRAINT constraint_name NOT NULL (column_name)。

•外键约束(Foreign Key)–外键约束用于确保一张表中的数据引用另一张表中已存在的数据。

–语法:CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES parent_table(parent_column)。

–通过外键约束,可实现表之间的关联性和完整性。

•检查约束(Check)–检查约束用于限制某列的值必须满足特定条件。

–语法:CONSTRAINT constraint_name CHECK(condition)。

•启用和禁用约束–使用ENABLE关键字启用约束,该约束将会在表的修改操作中起作用。

–使用DISABLE关键字禁用约束,该约束将不会在表的修改操作中起作用。

•修改和删除约束–可使用ALTER TABLE语句修改或删除现有约束。

–修改约束:ALTER TABLE table_name MODIFYCONSTRAINT constraint_name new_constraint。

oracle模式对象的管理

oracle模式对象的管理

oracle模式对象的管理【开发语言及实现平台或实验环境】Oracle10g【实验目的】(1)学习基本数据库表的创建,表结构的修改与删除等命令;(2)学习索引的管理命令;(3)学习索引化表的管理命令(4)学习分区表的管理命令(5)学习簇、视图、序列、同义词等的管理命令【实验原理】1.基本表的管理(1)表的创建:Create命令:CREATETABLEtable_name(column_nametype(ize),column_nametype(i ze),…);或CREATETABLEtable_name[(column_name,…)]ASSELECTtatement;表名命名规则所用的表名必须满足下面的条件:a)名字必须以A-Z或a-z的字母开始;b)名字可以包括字母、数字和特殊字母(_)。

字符$和#也是合法的,但是这种用法不提倡;c)名字大小写是一样的;例如EMP、emp和eMp是表示同一个表;d)名字最长不超过30个字符;e)表名不能和其它的对象重名;f)表名不能是SQL保留字。

字段类型:完整性约束:Oracle允许用户为表和列定义完整性约束来增强一定的规则。

可分为:表约束和字段约束约束类型如下:1)NOTNULL约束NOTNULL约束保证字段值不能为NULL。

没有NOTNULL约束的字段,值可以为NULL。

2)UNIQUE约束指定一个字段或者字段的集合为唯一键。

在表中没有两行具有相同的值。

如果唯一键是基于单条记录的,NULL是允许的。

表约束命令格式:,[CONSTRAINTcontraint_name]UN IQUE(Column,Column,…)字段约束命令格式:[CONSTRAINTcontraint_name]UNIQUE例如:CREATETABLEDEPT(DEPTNONUMBER,DNAMEVARCHAR2(9),LOCVARCHAR2(10),CONSTRAINTUNQ_DEPT_LOCUNIQUE(DNAME,LOC));UNQ_DEPT_LOC是一个表约束。

oracle 检查约束条件写法

oracle 检查约束条件写法

oracle 检查约束条件写法Oracle检查约束是数据库中的一种强大功能,它可以帮助我们确保数据的完整性和一致性。

本文将详细介绍Oracle检查约束的编写方法。

一、检查约束的基本概念Oracle检查约束是一种在插入或更新数据时对数据进行验证的约束类型。

它可以帮助我们确保数据的准确性、完整性和一致性。

检查约束通常与表或列一起使用,可以在创建表或修改表时定义。

二、检查约束的语法以下是一个简单的Oracle检查约束的语法:```CONSTRAINT 约束名CHECK ( 条件表达式)```其中:- 约束名:检查约束的名称,用于在创建表或修改表时引用的名称。

- CHECK:关键字,表示这是一个检查约束。

- 条件表达式:一个或多个Oracle查询或算术表达式,用于验证数据的合法性。

三、检查约束的使用场景1. 确保数据的唯yi性:例如,我们可以使用检查约束来确保员工的身份证号是唯yi的不重复的值。

```CREATE TABLE employees (id NUMBER PRIMARY KEY,employee_id NUMBER,CONSTRAINT unique_employee_id CHECK (employee_id IN (SELECT employee_id FROM employees WHERE id = employee_id)));```2. 确保数据的范围:例如,我们可以使用检查约束来确保日期的范围在有效的日期范围内。

```CREATE TABLE orders (order_id NUMBER PRIMARY KEY,order_date DATE,CONSTRAINT valid_date CHECK (order_date BETWEEN TO_DATE('1990-01-01', 'yyyy-dd-mm') AND TO_DATE('2020-12-31', 'yyyy-dd-mm')));```3. 确保数据的准确性:例如,我们可以使用检查约束来确保员工的工资在有效的范围内。

oracle约束学习(1)unique和check

oracle约束学习(1)unique和check

oracle约束学习(1)unique和check有人说,没有索引, 拿什么来保证约束?姑且不论这话的对错,但约束的实现(除了not null),很多都是通过索引来快速定位约束的地方。

unique约束会自动建立索引,pk也是。

也因此,约束的很多问题总是和索引缠绵一起。

相关视图:dba_constraintsdba_cons_columnsnot null约束比较特别点。

not null的索引类型和check约束一样,都是C。

只有not null这种约束才会被继承,记住这一点,在复制表时,别忘了加约束、索引等。

unique约束延迟验证属性:deferrable/not deferrable, Deferred/immediate延迟约束在提交的时候才进行校验,大多数是这样的。

not deferrable:不提交也检查,这是缺省值。

[sql]view plaincopy1.SQL> select * from hr.t1;2.3. ID NAME4.---------- ----------------------------------------5. 1 d6. 2 b7.8.SQL> conn hr/hr9.已连接。

10.SQL> alter table t1 add constraint t1_u_1 unique(id); -- 默认情况下是not deferrable & immediate11.12.表已更改。

14.SQL> insert into t1 values(1,'c');15.insert into t1 values(1,'c')16.*17.第 1 行出现错误:18.ORA-00001: 违反唯一约束条件 (HR.T1_U_1)19.20.21.SQL> alter table t1 drop constraint t1_u_1 cascade;22.23.表已更改。

CHIL-ORACLE-检查约束(check)

CHIL-ORACLE-检查约束(check)

CHIL-ORACLE-检查约束(check)1.检查约束 ( check ) 某列取值范围限制、格式限制等2.检查只能是男或者⼥create table test29(id number primary key,sex varchar2(2) check(sex in ('男,⼥')));create table test30(id number primary key,sex varchar2(2) check(sex ='男' or sex='⼥'));create table test31(id number primary key,sex varchar2(2));alter table test31 add constraint chkk check (sex ='男' or sex='⼥');alter table test31 add constraint chkk check (sex in('男','⼥'));3.在⼀个范围中间create table test32(id number primary key,age number check(age>0 and age<120));create table test33(id number primary key,age number check(age between 12 and 30));create table test34(id number primary key ,age number);alter table test34 add constraint ch_test34 check(age>0 and age<120);alter table test34 add constraint ch_test34 check(age between 12 and 30);4.长度⼤于某个值create table test35(id number primary key,password varchar2(10) check(length(password)=6));create table test36(id number primary key ,password varchar2(20));alter table test36 add constraint check_test36 check(length(password)=6);5.数⼤于某个值create table test37(id number(10)primary key ,no number(10) check(no>1));create table test38(id number(10) primary key,no number(10));alter table test38 add constraint ch_test38 check(no>1);---------------6.只能是8位字符,前两位是 0 ,3~4位为数字,第 5 位为"_"下划线,6~8位为字母create table test39(id number(10) primary key,password varchar2(20) check((password like '00[0-9][0-9]/_[a-z,A-Z][a-z,A-Z][a-z,A-Z]%' escape '/')and(length(password)=8) ) );insert into test39 values (1,'0011_aaa');create table test40(id number(10) primary key ,password varchar2(10)check((password like '00[0-9][0-9][_][a-z,A-Z][a-z,A-Z][a-z,A-Z]%')and(length(password)=8) )););alter table test40 modify password varchar2(10)check((password like '00[0-9][0-9][_][a-z,A-Z][a-z,A-Z][a-z,A-Z]%')and(length(password)>1) insert into test40 values(1,'0012_abc');---------------7.电⼦邮箱要含有@符号check(字段 like '%@%')create table test41(id number(10) primary key,email varchar2(10) check (email like '%@%'));insert into test41 values(1,'12@');8.SQL中⽤check约束⼀列的⾸字母为's'check(字段 like 's%')create table test42(id number(10) primary key ,name varchar2(10) check(name like 's%'));insert into test42 values(1,'sname');------------9.检查约束前3位和后8位均为数字字符:check(字段 like '[0-9][0-9][0-9]%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')create table test43(id number(10) primary key,no varchar2(10)check(no like '[0-9][0-9][0-9]%[0-9][0-9][0-9][0-9][0-9]'));insert into test43 values(1,'12345678');------------10.如何建⽴检查⾝份证的约束,⾝份证是18位,最后⼀位还有可能是Xcreate table test44(id number(10) primary key,no values(18) check( length(no)=18 and right(no,17)like '[0-9]' or right (no,17) like 'x' ));insert into test44 values (1,'12345678912345678x');select ⾝份证号 from 表名where len(⾝份证号) = 18 and (right(⾝份证号,17) like '[0-9]'or right(⾝份证号,17) like 'x')11.如何设置区号由0-9之间的数字组成CONSTRAINTquhao CHECK (quhao LIKE '[0-9][0-9][0-9]'or quhao LIKE '[0-9][0-9][0-9][0-9]'or quhao LIKE '[0-9][0-9][0-9][0-9][0-9]'));解释:quhao LIKE '[0-9]...[0-9]'的号码由表⽰n位从0到9中的数组成。

Oracle常见的五种约束

Oracle常见的五种约束

Oracle常见的五种约束(1)定义约束(2)列级约束\表级约束(3)非空约束NOT NULL非空约束作用的列也叫强制列。

顾名思义,强制列中必须有值,当然建表时候若使用default关键字指定了默认值,则可不输入。

(4)唯一性约束unique唯一性约束可作用在单列或多列上,对于这些列或组合,唯一性约束保证每一行的唯一性。

Unique需要注意:对于unique约束来讲,索引是必须的。

如果不存在,就自动创建一个(unique的唯一本质上是通过索引来保证的)Unique允许null值,unique约束的列可存在多个null。

这是因为,unique唯一性通过btree索引来实现,而btree索引中不包含null。

当然,这也造成了在where语句中null值进行过滤会造成全表扫描。

(5)主键约束primary key主键是定位表中单个行的方式,可唯一确定表中的某一行,关系型数据库要求所有表都应该有主键,不过Oracle没有遵循次范例要求,Oracle中的表可以没有主键(这种情况不多见)。

关于主键有几个需要注意的点:键列必须具有唯一性,且不能为空,其实主键约束相当于unique+not null 一个表只允许有一个主键主键所在列必须具有索引(主键的唯一约束通过索引来实现),如果不存在,将会在索引添加的时候自动创建注意:主键约束可以定义在表级也可以定义在列级(添加主键:约束的添加可在建表时创建,也可如下所示在建表后添加,一般推荐建表后添加,灵活度更高一些,建表时添加某些约束会有限制)(6)外键约束foreign key外键约束定义在具有父子关系的子表中,外键约束使得子表中的列对应父表的主键列,用以维护数据库的完整性。

不过出于性能和后期的业务系统的扩展的考虑,很多时候,外键约束仅出现在数据库的设计中,实际会放在业务程序中进行处理。

外键约束注意以下几点:外键约束的子表中的列和对应父表中的列数据类型必须相同,列名可以不同对应的父表列必须存在主键约束(Primary key)或唯一约束(unique)外键约束允许null值,对应的行就成了孤行了其实很多时候不使用外键,很多人认为会让删除操作比较麻烦,比如要删除父表中的某条数据,但某个子表中又有对该条数据的引用,这时就会导致删除失败。

零点起飞学Oracle之使用约束

零点起飞学Oracle之使用约束

外键的主要作用是保证数据的参照完整性。最终保证
数据库的完整性。本小节将讲述参照完整性的定义, 并阐述外键定义及使用。 1.参照完整性 在两个表之间,一个表中的记录依附于另一个表的记 录而存在,称为表之间的参照完整性。参照完整性总 是存在着真实的业务背景。例如,在employeenew表 中,存储了每位员工的信息;在jobs表中存储了员工 职位信息。employeenew中的每条记录都依附于jobs表 中记录的存在而存在,即建立了两个表之间的参照完 整性。
索引可以使用户快速找到表中的特定信息。当用户在
数据表的某列(或某些列)上创建了主键、而在检索 数据时又使用了该索引列,Oracle可以很快的捕获符 合条件的记录。而不必采用全表逐条扫描的方式。有 关索引的详细信息,将在以后的章节讲解。
【示例11-13】在Oracle中,创建了主键之后,都会存
2.查看外键信息
同样可以在视图user_constraints和user_cons_columns中
获取外键的详细信息。 【示例11-17】在视图user_cosntraints中获取表 employeenew的约束信息。
3.验证外键约束的作用
当尝试向表employeenew中插入数据,可以验证外键
主键用来唯一地标识表中的一行数据,它规定在主键
列上的数据不能重复,并且不能为空。如果在某个列 上指定了主键约束,那么就不需要在该列上再指定not null约束和unique约束。创建主键时,有以下注意事项。 主键列的数据类型:我们设臵主键时,主键列的数据 类型不一定是数值型,也可以使其他的,如字符型。 主键不一定只有一列:在表的设计视图中,选择可以 要定义为主键的一个或多个字段。 自增的数值型主键:设臵主键时,可以采用自增的列 作为主键,实现自动编号,速度快,对于检索非常有 利。

11g em重建报唯一约束错误解决

11g em重建报唯一约束错误解决

今天在手工配置Oracle11g的EM时总是报如下错误,也没有找到解决办法,以下是北京海淀甲骨文学习中心的解决过程,希望可以帮助你们-WARNING:ORA-00001:uniqueconstraint(SYSMAN.PARAMETERS_PRIMARY_KEY)violatedORA-06512:at"SYSMAN.EMD_LOADER",line4986ORA-06512:atline1以Metalink上也没有找到解决办法,以下是我的解决过程:1、数据库版本SQL>select*fromv$version;BANNER------------------------------------------------------------------------------------------------------------------------------OracleDatabase11gEnterpriseEditionRelease11.2.0.3.0-64bitProductionPL/SQLRelease11.2.0.3.0-ProductionCORE11.2.0.3.0ProductionTNSforLinux:Version11.2.0.3.0-ProductionNLSRTLVersion11.2.0.3.0–Production2、配置EM时的步骤[oracle@Core-Nbu-Rollback~]$emca-configdbcontroldb-reposrecreateSTARTEDEMCAatNov23,20123:52:08PMEMConfigurationAssistant,Version11.2.0.3.0ProductionCopyright(c)2003,2011,Oracle.Allrightsreserved.Enterthefollowinginformation:DatabaseSID:testDatabaseControlisalreadyconfiguredforthedatabasetest YouhavechosentoconfigureDatabaseControlformanagingthedatabasetest Thiswillremovetheexistingconfigurationandthedefaultsettingsandperform.afreshconfiguration----------------------------------------------------------------------WARNING:Whilerepositoryisdroppedthedatabasewillbeputinquiescemode.---------------------------------------------------------------------- Doyouwishtocontinue?[yes(Y)/no(N)]:YListenerORACLE_HOME[/soft/ora11g/11202]:PasswordforSYSuser:PasswordforDBSNMPuser:PasswordforSYSMANuser:Emailaddressfornotifications(optional):OutgoingMail(SMTP)serverfornotifications(optional):----------------------------------------------------------------- YouhavespecifiedthefollowingsettingsDatabaseORACLE_HOME................/soft/ora11g/11202 Localhostname................Core-Nbu-RollbackListenerORACLE_HOME................/soft/ora11g/11202 Listenerportnumber. (1521)DatabaseSID................testEmailaddressfornotifications...............OutgoingMail(SMTP)serverfornotifications...............---------------------------------------------------------------------------------------------------------------------------------------WARNING:Whilerepositoryisdroppedthedatabasewillbeputinquiescemode.---------------------------------------------------------------------- Doyouwishtocontinue?[yes(Y)/no(N)]:YNov23,20123:52:33PMoracle.sysman.emcp.EMConfigperformINFO:Thisoperationisbeingloggedat/soft/ora11g/cfgtoollogs/emca/test/emca_2012_11_23_15_52_07 .log.Nov23,20123:52:35PMoracle.sysman.emcp.util.DBControlUtilstopOMSINFO:StoppingDatabaseControl(thismaytakeawhile)...Nov23,20123:52:56PMoracle.sysman.emcp.EMReposConfiginvokeINFO:DroppingtheEMrepository(thismaytakeawhile)...Nov23,20123:54:56PMoracle.sysman.emcp.EMReposConfiginvokeINFO:RepositorysuccessfullydroppedNov23,20123:54:57PMoracle.sysman.emcp.EMReposConfigcreateRepositoryINFO:CreatingtheEMrepository(thismaytakeawhile)...Nov23,20123:57:30PMoracle.sysman.emcp.EMReposConfigcreateRepositoryWARNING:ORA-00001:uniqueconstraint(SYSMAN.PARAMETERS_PRIMARY_KEY)violatedORA-06512:at"SYSMAN.EMD_LOADER",line4986ORA-06512:atline1Nov23,20123:57:30PMoracle.sysman.emcp.EMReposConfiginvokeSEVERE:ErrorcreatingtherepositoryNov23,20123:57:30PMoracle.sysman.emcp.EMReposConfiginvokeINFO:Refertothelogfileat/soft/ora11g/cfgtoollogs/emca/test/emca_repos_create_<date>.logformo redetails.Nov23,20123:57:30PMoracle.sysman.emcp.EMConfigperformSEVERE:ErrorcreatingtherepositoryRefertothelogfileat/soft/ora11g/cfgtoollogs/emca/test/emca_2012_11_23_15_52_07.logformoredet ails.Couldnotcompletetheconfiguration.Refertothelogfileat/soft/ora11g/cfgtoollogs/emca/test/emca_ 2012_11_23_15_52_07.logformoredetails.盈佳科技有限公司是甲骨文Oracle公司在北京指定授权IT学习中心,坐落于海淀区北四环中路。

oracle建表的时候同时创建主键,外键,注释,约束,索引

oracle建表的时候同时创建主键,外键,注释,约束,索引

oracle建表的时候同时创建主键,外键,注释,约束,索引--主键create table emp (id number constraint id_pr primary key ,name1 varchar(8));create table emp9 (id number ,name1 varchar(8) ,constraint aba_pr primary key(id,name1));--外键create table emp1(id number references emp(id),name varchar(8));--复合外键create table emp0(id number ,name varchar(8) ,constraint fk_nam1e foreign key(id,name) references emp9(id,name1));--主键另外写法create table emp2(id number,name varchar(8),id1 number, constraint pk_id primary key(id),constraint fk_name foreign key(id1) references emp(id))--check 约束的写法create table emp4(id number check(id in(1,2 ,3)),name varchar(8));不带约束名称的:create table userInfo (id number(6) primary key,--主键name varchar2(20) not null,--⾮空sex number(1),age number(3) default 18,birthday date,address varchar2(50),email varchar2(25) unique,--唯⼀tel number(11),deptno number(2) references dept(deptno)—外键);带约束名称:create table userInfo (id number(6) constraint id_pk primary key,name varchar2(20) constraint name_nn not null,sex number(1),age number(3) default 18,birthday date,address varchar2(50),email varchar2(25) constraint email_uqe unique,tel number(11),deptno number(2) constraint dept_deptno_ref references dept(deptno));列模式:create table userInfo (id number(6),name varchar2(20),sex number(1),age number(3) default 18,birthday date,address varchar2(50),email varchar2(25),tel number(11),deptno number(2),constraint id_pk primary key (id),--也可以两个以上,联合主键constraint dept_deptno_ref foreign key (deptno) references dept(deptno),constraint emial_name_uqe unique (email, name));Alter模式:alter table userInfo add(msn varchar2(20));alter table userInfo modify(msn varchar2(25));alter table userInfo drop(msn);alter table userInfo drop constraint id_pk;alter table userInfo add constraint id_pk primary key (id);3、创建视图create table v$_dept_viewasselect deptno, dname from dept;--重新编译视图alter view v$_dept_view compile;提⽰:视图⼀般是⼀个表或多个表的查询或⼦查询,这样可以减少代码量,但同时增加了对数据库视图的维护程度,如:某个表字段被删除或是修改,视图也要重新创建或修改,同时占⽤了数据库的⼀部分空间;视图就是⼀个虚拟的表格;4、创建索引普通索引:create index idx_dpt_dname on dept(dname);联合索引:create index idx_dept_dname_deptno on dept(dname, deptno);--唯⼀索引create unique index idx_emp_ename on scott.emp(ename);--反向键索引create index idx_emp_rev_no on scott.emp(empno) reverse;--位图索引create bitmap index idx_emp_name on scott.emp(dname);--索引组织表,⼀定要有主键create table tab (id int primary key,name varchar2(20)) organization index;--索引组织表的insert效率⾮常低--分区表索引create index idx_name on table(col) local/global;--索引分区提⽰:当给表创建主键或唯⼀键约束时,系统也会创建⼀个约束给该字段;同样创建索引也会占⽤数据库空间;索引在访问、查询的时候效率有提⾼,但是在修改表的时候效率就会降低;5、创建序列create sequence seq;select seq.nextval from dual;insert into tab values(sql.nextval, ‘music’);create sequence seqtabstart with 2 –从2开始increment by 3—每次加3nomaxvalue—没有最⼤值minvalue 1—最⼩值1nocycle—不循环nocache;--不缓存--修改序列,不能修改起始值alter sequence seqtabmaxvalue 1000;6、创建同义词同义词,顾名思义就是说别名、或是另⼀个名字。

《数据库》第五章 数据完整性与约束

《数据库》第五章 数据完整性与约束
约束) 强制两个表之间的关系. –外键约束要求对于定义约束的列中的每个值,
必须与引用表中指定的列的值匹配。
15
Inspur Education
▪ 外键约束
–外键约束相关的概念:
oracle– 中外是键其常:他外表用键的约主约束 键定 列束义。中的的用引用法了其他表的的列或列集,一般
– 引用键:外键引用的其他表的唯一键或主键。 – 从表或子表:包含外键的表。此表的值依赖于引用表的唯一
–实例:在已创建的表dept_20中添加
oracleemp中lo常yee用_id约和束h的ir用e_d法ate 列的组合外键约
束A并LTE启R T用ABL:E dept_20
ADD CONSTRAINT fk_empid_hiredate FOREIGN KEY (employee_id, hire_date) REFERENCES job_history(employee_id, start_date)
▪ 唯一性约束
–实例:为已存在的warehouses表的
oraclwear中eh常ous用e_i约d,束wa的re用hou法se_name列,添加名
whAL_TuERnTqA为BLE的wa唯reh一ous性es 约束
ADD CONSTRAINT wh_unq UNIQUE (warehouse_id, warehouse_name)
25
Inspur Education
▪ 检查性约束
–检查性(check)约束即要求每一行的一列或
oracl多e列中的常值用,必约须束满的足用指定法条件。
–检查约束的主要好处是具有非常灵活的完整性 规则的能力。
26
Inspur Education

Oracle中表及约束

Oracle中表及约束

改变对象名称
使用RENAME语句改变对象名称,可以修改表、视图、 语句改变对象名称,可以修改表、视图、 使用 语句改变对象名称 序列或者同义词的名称
RENAME old_name TO new_name;
必须是对象的所有者
练习
现在有一张国家表, 现在有一张国家表,里面只有一个国家名称字段 表中数据如下:中国、美国、巴西、荷兰。 ,表中数据如下:中国、美国、巴西、荷兰。 使用查询显示如下结果: 使用查询显示如下结果: 中国-美国 中国-巴西 中国-荷兰 美国-中国 美国-巴西 美国-荷兰
数据完整性
分类: 分类: – 域完整性;(控制一列的约束条件)
• 实现CHECK
– 实体完整性;(一行有唯一标识)
• PRIMARY KEY

– 参照完整性。(主表和从表的数据一致性)
• FOREIGN KEY
什么是约束
删除. 删除
约束是在表上强制执行的数据校验规则 约束是在表上强制执行的数据校验规则. 强制执行的数据校验规则 当表中数据有相互依赖性时, 当表中数据有相互依赖性时,可以保护相关的数据不被
使用子查询创建表
使用子查询创建表的语法 CREATE TABLE table [column(, column...)] AS subquery; 新表的字段列表必须与子查询中的字段列表匹配 字段列表可以省略
说明: 说明:
如果现在子查询的写的是: SELECT * FROM emp,表示将表结构和表中的数 , 据全部复制 如果现在子查询写的是: SELECT * FROM emp WHERE 1=2,加入了一 , 个永远不可能成立的条件, 个永远不可能成立的条件,则此时表示的只是复制表结构 ,不复制表中的数据

oracle数据库constraint用法

oracle数据库constraint用法

oracle数据库constraint用法摘要:1.Oracle 数据库约束的概念和作用2.Oracle 数据库约束的种类3.Oracle 数据库约束的创建方法4.Oracle 数据库约束的查询与维护正文:一、Oracle 数据库约束的概念和作用在Oracle 数据库中,约束(constraint)是一种用于保证数据表中记录完整和有效的规则。

约束可以限制某列的值范围或者确保某列的值满足特定的条件。

通过使用约束,可以防止非法信息进入数据库,从而确保数据的正确性和完整性。

二、Oracle 数据库约束的种类Oracle 数据库支持以下五种类型的约束:1.非空约束(NOT NULL):用于确保某列的值不能为空。

2.唯一性约束(UNIQUE):用于确保某列的值唯一,即不能出现重复值。

3.主键约束(PRIMARY KEY):用于确保某列(或多列)的值不仅唯一,而且不能为空。

主键是用来唯一标识表中的记录的。

4.外键约束(FOREIGN KEY):用于建立表与表之间的关联。

外键约束可以确保一个表中的值与另一个表中的值相对应。

5.检查约束(CHECK):用于确保某列的值满足指定的条件。

例如,可以限制年龄必须在18 到65 之间。

三、Oracle 数据库约束的创建方法约束可以在创建表时定义,也可以在表创建后通过ALTER TABLE 语句添加。

以下是创建约束的几种方法:1.在创建表时定义约束```sqlCREATE TABLE students (id NUMBER PRIMARY KEY,name VARCHAR2(50) NOT NULL,age NUMBER CHECK (age >= 18 AND age <= 65),gender CHAR(1) CHECK (gender IN ("M", "F", "O", "N")));```2.在表创建后添加约束```sqlALTER TABLE studentsADD CONSTRAINT age_check CHECK (age >= 18 AND age <= 65);ALTER TABLE studentsADD CONSTRAINT gender_check CHECK (gender IN ("M", "F", "O", "N"));```四、Oracle 数据库约束的查询与维护1.查询约束可以使用DESCRIBE 语句查看表的约束信息:```sqlDESCRIBE students;```2.修改约束可以使用ALTER TABLE 语句修改约束:```sqlALTER TABLE studentsMODIFY COLUMN age NUMBER CHECK (age >= 18 AND age <= 65);ALTER TABLE studentsDROP CONSTRAINT gender_check;```3.删除约束可以使用ALTER TABLE 语句删除约束:```sqlALTER TABLE studentsDROP CONSTRAINT age_check;```综上所述,Oracle 数据库约束是用于保证数据表中记录完整和有效的一种规则。

dp_s09_l01定义NOT NULL 和UNIQUE 约束条件

dp_s09_l01定义NOT NULL 和UNIQUE 约束条件

命名违规 如果使用了 CONSTRAINT 词, 则其后必须跟约束条件名称。 NOT NULL 违规 只能在列级定义 NOT NULL 约束条件。
版权所有 © 2007,Oracle。保留所有权利。
12
定义 NOT NULL 和 UNIQUE 约束条件
讲述/示范
五种约束条件类型
在 Oracle 数据库中,可以使用五种类型的约束条件。每种类型 的约束条件都强制执行不同种类的规则。 这些类型如下所示: - NOT NULL 约束条件 - UNIQUE 约束条件 - PRIMARY KEY 约束条件 - FOREIGN KEY 约束条件 - CHECK 约束条件 在本课后面的部分,您将学习 NOT NULL 和 UNIQUE 约束 条件。下节课将介绍另外三种类型。
版权所有 © 2007,Oracle。保留所有权利。
15
定义 NOT NULL 和 UNIQUE 约束条件
讲述/示范
UNIQUE 示例: 如果使用 UNIQUE 约束条件定 义表中的电子邮件列,则其它的 客户条目中就不能包含相同的电 子邮件地址。如果两位客户住在 一起并共用一个电子邮件地址, 则会发生什么情况?
版权所有 © 2007,Oracle。保留所有权利。
13
定义 NOT NULL 和 UNIQUE 约束条件
讲述/示范
NOT NULL 约束条件
使用 NOT NULL 约束条件定义的列要求,对于表中输入的每一 行,该列必须有一个值。例如,如果将雇员表中的电子邮件列 定义为 NOT NULL,则对于输入到该表中的每位雇员,其电子 邮件列中必须有一个值。 定义 NOT NULL 列时,通常会在约束条件名称中使用后缀 _nn。 例如,可以将雇员表中电子邮件列的 NOT NULL 约束条件命名 为 emp_email_nn。

约束条件

约束条件

版权所有 © 2007,Oracle。保留所有权利。
5
PRIMARY KEY、FOREIGN KEY 和 CHECK 约束条件
讲述/示范
在 CREATE TABLE 语句中,列级 PRIMARY KEY 约束 条件的语法如下所示: CREATE TABLE 客户 (客户编号 NUMBER(4) CONSTRAINT 客户_客户编号_pk PRIMARY KEY, 名字 VARCHAR2(14), 姓氏 VARCHAR2(13)); 请注意,列级只是指在 CREATE TABLE 语句中定义了列的 区域。表级是指在语句中定义了个别列之后的最后几行。
D_活动 - 子表
标识 名称 100 Peters Graduation Vigil Wedding 活动日期 说明 费用 地点标识 包代码 112 主题代码 200 客户编号 5922
105
14-MAY-04 Party for 200, 8000 100 red, white, blue motif 28-APR-04 Black tie at 10000 220 Four Seasons Hotel
版权所有 © 2007,Oracle。保留所有权利。
3
PRIMARY KEY、FOREIGN KEY 和 CHECK 约束条件
讲述/示范
PRIMARY KEY 约束条件 PRIMARY KEY 约束条件是唯一地标识表中各行的 一个列或一组列。表中任两行的主键值都不能相同。 要满足 PRIMARY KEY 约束条件,必须满足下面 两个条件: – 主键中的任一列均不包含空值。 – 一个表只能有一个主键。
版权所有 © 2007,Oracle。保留所有权利。
6
PRIMARY KEY、FOREIGN KEY 和 CHECK 约束条件
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档