데이터 베이스 MySQL 튜토리얼 Oracle数据完整性约束:主键、外键、各种约束的创建删除语句

Oracle数据完整性约束:主键、外键、各种约束的创建删除语句

Jun 07, 2016 pm 05:32 PM
기본 키 외래 키

ORACLE对数据库完整性的约束: 三种方法维护数据完整性:ORACLE完整性约束,数据库触发器,应用程序代码。应尽量使用ORACLE完整性

Oracle对数据库完整性的约束: 

三种方法维护数据完整性:ORACLE完整性约束,数据库触发器,应用程序代码。

应尽量使用ORACLE完整性约束,可靠性和效率高,容易修改,使用灵活,记录在数据字典。

ORACLE五种约束:

非空 not null,定义 的列不能为空。只能在列级定义

唯一,unique,表中每一行所定义 的列或列值不能相同

主键primary key 不能包括空值,主键唯一标识表中每一行,一列或几列组合为主键

外键foreign key 指明一列或几列的组合为外键以维护从表chilD table和主表 parent table 之间的引用完整性referential integrity

条件约束check,表中每一行要满足约束条件。约束加上表上,创建表时可以定义

1.查询约束

查询表中是否有约束并显示约束名:显示表列所对应的约束的信息

BYS@bys1>select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.table_name = upper('&AA');
Enter value for aa: emp
old 1: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.table_name = upper('&AA')
new 1: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.table_name = upper('emp')

CONSTRAINT_NAME COLUMN_NAME
------------------------------ ---------------
PK_EMPNO EMPNO
查表中是否有主键约束

BYS@bys1>select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name =upper('&table_name');
Enter value for table_name: emp
old 1: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name =upper('&table_name')
new 1: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name =upper('emp')

CONSTRAINT_NAME COLUMN_NAME
------------------------------ ---------------
PK_EMPNO EMPNO

查当前用户下的所有约束的信息

BYS@bys1>col owner for a10
BYS@bys1>col table_name for a10
BYS@bys1>select * from user_cons_columns;
OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION
---------- ------------------------------ ---------- --------------- ----------
BYS PK_OBJ_ID TEST2 OBJECT_ID 1
BYS SYS_C0011203 TEST1 OBJECT_ID 1
BYS PK_EMPNO EMP EMPNO 1

 

查询当前用户的相关约束的状态信息,,可以查dba_constraints或USER_constraints

BYS@bys1>select constraint_name,table_name,constraint_type,status,deferrable,deferred,validated from dba_constraints where owner='BYS';
CONSTRAINT_NAME TABLE_NAME C STATUS DEFERRABLE DEFERRED VALIDATED
------------------------------ ---------- - -------- -------------- --------- -------------
SYS_C0011203 TEST1 P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_EMPNO EMP P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_OBJ_ID TEST2 P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED

SCOTT@bys1>select constraint_name,table_name,constraint_type,status,deferrable,deferred,validated from user_constraints;
CONSTRAINT_NAME TABLE_NAME C STATUS DEFERRABLE DEFERRED VALIDATED
------------------------------ ---------- - -------- -------------- --------- -------------
FK_DEPTNO EMP R ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_DEPT DEPT P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_EMP EMP P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
SYS_C0011265 TEST P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_A TEST1 P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED

2.增加、删除、修改约束 增加与修改:

增删主键及外键

alter table dept add constraint pk_dept primary key(deptno);

alter table dept2 add primary key(dname); 不指定约束名,则由系统自动命令约束名。
alter table emp add constraint fk_deptno foreign key(deptno) references dept(deptno) on delete cascade;
alter table emp add constraint fk_deptno foreign key(deptno) references dept(deptno);

注:on delete cascade和on delete set null的作用是用来处理级联删除问题的,

如果你需要删除的数据被其他数据所参照(主、外键),那么你应该决定到底希望oracle怎么处理那些参照这些即将要删除数据的数据的.

你可以有三种方式:
禁止删除,这也是oracle默认的。
将那些参照本值的数据的对应列赋空,使用on delete set null关键字。即删除本表的列中的值,对本列有外键引用的表的相应的列有相应值行会被修改为NULL。
将那些参照本值的数据一并删除,使用on delete cascade关键字,即删除本表的列中的值,对本列有外键引用的表的相应的列有相应值行会被删除

增加CHECK 约束:

alter table dept add constraint valid_deptno check (deptno); DEPTNO列的值需要少于5000

SQL>alter table customer add constraint abc check (address in (’海淀’,’朝阳’,’东城’,’西城’,’通州’,’崇文’,’昌平’)); 增加客户的住址只能是’海淀’,’朝阳’,’东城’,’西城’,’通州’,’崇文’,’昌平’;

增加惟一约束

alter table customer add constraint aaa unique(cardId);

增加非空约束--注意增加非空约束时用的是关键字modify,其它四种约束都是ADD

SQL>alter table dept modify dname not null;

删除

对非空约束的删除:因为非空约束不能指定约束名,应该先通过查询表和列所对应的的约束信息,找出约束名,再删除。如下:

BYS@bys1>alter table dept drop constraint SYS_C0011725;

修改约束--大可以删除了重建

alter table dept2 modify constraint pk_d2 initially immediate;

删除指定名字的约束---可以是主键、外建或其它约束的名字

alter table emp drop constraint PK_EMPNO;

alter table scott.event drop constraint evtid_pk; 删除其它用户的约束--需要DBA权限

不用指定约束名,直接删除表中主键

altertable emp drop primary key cascade; 删除主键约束的时候,如果在些主键上的外键创建时未指定on delete cascade参数,直接删除主键报错,要加上cascade参数。

重命令约束

alter table scott.emp rename constraint pk_emp to emp_empno_pk;

更多详情见请继续阅读下一页的精彩内容

相关阅读:

Oracle完整性约束

Oracle的约束和索引

从Oracle的约束到索引

Oracle常用数据类型和完整性约束

ORA-02291: 违反完整约束条件 …… - 未找到父项关键字

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

mysql 논리적 기본 키란 무엇입니까? mysql 논리적 기본 키란 무엇입니까? Jul 10, 2023 pm 01:46 PM

MySQL 논리적 기본 키는 데이터베이스에서 레코드를 식별하는 데 사용되는 필드 또는 필드 조합을 참조하지만 고유하지는 않습니다. 논리적 기본 키는 일반적으로 데이터 쿼리 및 데이터 작업에 사용됩니다. 논리적 기본 키는 식별 속성이 있는 모든 필드가 될 수 있습니다. 예를 들어 사용자 테이블에서 사용자 이름은 레코드를 식별하는 데 사용될 수 있지만 고유하지 않기 때문에 논리적 기본 키로 사용할 수 있습니다.

Redmi K70Pro에서 리턴 키와 홈 키를 설정하는 방법은 무엇입니까? Redmi K70Pro에서 리턴 키와 홈 키를 설정하는 방법은 무엇입니까? Feb 23, 2024 pm 01:40 PM

물론, 각 연령층마다 휴대전화에 대한 요구가 다릅니다. 현재 가장 인기 있는 모델 중 하나인 RedmiK70Pro는 다양한 연령대의 소비자 요구를 충족할 수 있는 다양한 내부 기능과 서비스를 갖추고 있습니다. Redmi K70Pro에서 리턴 키와 홈 키를 설정하는 방법은 무엇입니까? 또한 명확하게 이해해야 합니다. 이해한 후에만 이 휴대폰을 구입할지 여부를 결정할 수 있습니다. 그런 다음 편집자를 따라 다음 내용을 살펴보십시오! Redmi K70Pro에서 리턴 키와 홈 키를 설정하는 방법은 무엇입니까? 휴대폰의 설정 메뉴에 액세스하려면 알림 창을 아래로 내리거나 홈 화면에서 설정 아이콘을 찾아 설정 인터페이스를 열 수 있습니다. 설정 인터페이스에서 "버튼" 또는 "탐색 표시줄"을 찾아서 클릭하세요.

MySQL 외래 키와 기본 키를 자동으로 연결하는 방법은 무엇입니까? MySQL 외래 키와 기본 키를 자동으로 연결하는 방법은 무엇입니까? Mar 15, 2024 pm 12:54 PM

MySQL 외래 키와 기본 키를 자동으로 연결하는 방법은 무엇입니까? MySQL 데이터베이스에서 외래 키와 기본 키는 서로 다른 테이블 간의 관계를 설정하고 데이터의 무결성과 일관성을 보장하는 데 도움이 되는 매우 중요한 개념입니다. 실제 애플리케이션 프로세스에서는 데이터 불일치를 방지하기 위해 외래 키를 해당 기본 키에 자동으로 연결해야 하는 경우가 많습니다. 다음은 구체적인 코드 예시를 통해 이 기능을 구현하는 방법을 소개합니다. 먼저 두 개의 테이블을 생성해야 합니다. 하나는 마스터 테이블이고 다른 하나는 슬레이브 테이블입니다. 메인 테이블에 생성

Honor X50Pro에서 리턴 키와 홈 키를 어떻게 설정합니까? Honor X50Pro에서 리턴 키와 홈 키를 어떻게 설정합니까? Mar 18, 2024 am 11:34 AM

명예 세트 반환 키와 기본 키? 아래를 살펴보겠습니다! Honor X50Pro에서 리턴 키와 홈 키를 어떻게 설정합니까? 1. 홈 화면에서 "설정" 아이콘을 찾아 "시스템 및 업데이트" 기능 옵션을 클릭합니다. 2. 시스템 및 업데이트 기능 항목에서 "시스템 탐색 방법"을 클릭합니다. 3. Honor 휴대폰은 세 가지 반환 키 설정을 제공합니다. 사용자 설정 조정에 따라 설정할 수 있습니다. Honor X50Pro 휴대폰에서 리턴 키와 홈 키를 설정하는 방법은 매우 간단합니다. 위의 단계를 따르면 됩니다.

Honor 90GT에서 리턴 키와 홈 키를 어떻게 설정합니까? Honor 90GT에서 리턴 키와 홈 키를 어떻게 설정합니까? Feb 12, 2024 am 09:48 AM

시대의 급속한 발전에 따라 현재의 휴대폰 기술도 지속적으로 발전하고 있습니다. 과거 휴대폰에는 다양한 버튼이 있었지만 이제는 점차 사라지고 있습니다. 그러나 여전히 많은 사람들이 휴대폰을 제어하기 위해 버튼을 사용하고 있습니다. . 그렇다면 Honor 90GT의 복귀 버튼과 기본 키를 설정하는 방법은 무엇입니까? 아래를 살펴보겠습니다! Honor 90GT에서 리턴 키와 홈 키를 어떻게 설정합니까? Honor 90GT는 Huawei 휴대폰입니다. 리턴 키와 홈 키를 설정하는 방법은 다음과 같습니다. 1단계: 설정 열기: 휴대폰 바탕 화면에서 "설정" 아이콘을 찾아 클릭하여 설정 인터페이스로 들어갑니다. 2단계: "시스템 및 업데이트" 옵션 찾기: 설정 인터페이스에서 화면을 아래로 밀고 "시스템 및 업데이트" 옵션을 찾아서 클릭하여 들어갑니다. 3단계: 탐색 모음 설정 입력: 시스템 및 업데이트 인터페이스에서 화면을 아래로 밀어서 다음을 찾습니다.

mysql 기본 키에는 어떤 유형이 사용됩니까? mysql 기본 키에는 어떤 유형이 사용됩니까? Jul 18, 2023 pm 03:11 PM

MySQL 기본 키는 정수 유형, 자체 증가 정수 유형, UUID 유형 또는 문자열 유형을 사용할 수 있습니다. 유형에 대한 자세한 소개: 1. 가장 일반적인 기본 키 유형 중 하나인 정수 유형. MySQL에서는 다양한 길이를 사용할 수 있습니다. 2. 고유한 정수 값을 기본 키로 자동 할당할 수 있는 자체 증가 정수 유형입니다. 유형은 특히 높은 동시 데이터 삽입이 필요한 시나리오에서 기본 키로 사용하기에 매우 적합합니다. 3. UUID 유형, 데이터의 전역 고유성을 보장할 수 있는 128비트 전역 고유 식별자 4. 문자열 유형, 권장되지 않음 등.

데이터 무결성을 유지하기 위해 MySQL에서 외래 키를 사용하는 방법은 무엇입니까? 데이터 무결성을 유지하기 위해 MySQL에서 외래 키를 사용하는 방법은 무엇입니까? Aug 02, 2023 am 08:09 AM

데이터 무결성을 유지하기 위해 MySQL에서 외래 키를 사용하는 방법은 무엇입니까? 소개: 데이터베이스에서는 데이터 무결성이 매우 중요합니다. 외래 키를 사용하면 데이터베이스의 관련 테이블 간의 데이터 일관성과 무결성을 보장할 수 있습니다. 이 기사에서는 MySQL에서 데이터 무결성을 유지하기 위해 외래 키를 사용하는 방법을 소개합니다. 테이블 및 연결 만들기: 먼저 두 개의 테이블을 만들고 연결해야 합니다. 두 개의 테이블이 있다고 가정합니다. 하나는 "주문" 테이블이고 다른 하나는 "고객"입니다.

Redmi K70에서 리턴 키와 홈 키를 여는 방법은 무엇입니까? Redmi K70에서 리턴 키와 홈 키를 여는 방법은 무엇입니까? Feb 23, 2024 am 11:40 AM

RedmiK70은 많은 사용자들이 사용하는 모델입니다. 이 전화기는 출시 이후 매우 좋은 평판을 유지하고 있습니다. 매우 비용 효율적이며 매우 강력한 성능 구성을 사용하므로 누구나 선택할 수 있습니다. 리턴 키와 기본 키를 설정하는 등의 작업을 직접 수행할 수 있지만 구체적으로 설정하는 방법은 무엇입니까? Redmi K70에서 리턴 키와 기본 키를 설정하는 방법은 무엇입니까? 휴대폰에서 설정 앱을 엽니다. 설정 페이지에서 아래로 스크롤하여 "추가 설정"을 찾아 클릭하세요. 추가 설정 페이지 진입 후 '버튼 및 제스처 단축키'를 선택하세요. 버튼 및 제스처 단축키 설정에는 뒤로 및 홈 키에 대한 조정 옵션이 표시됩니다. "뒤로 키" 옵션을 클릭하면 하드웨어 뒤로 키를 활성화 또는 비활성화하도록 선택할 수 있습니다.

See all articles