Zu den SQL-Integritätseinschränkungen gehören: 1. „NOT NULL“-Nicht-Null-Einschränkung, die angegebene Spalte lässt keine Nullwerte zu. 2. „UNIQUE“-Eindeutigkeitseinschränkung, es gibt keine doppelten Werte in der angegebenen Spalte 3. „PRIMARY“ KEY“-Primärschlüsseleinschränkung, identifiziert jede Zeile der Tabelle eindeutig; 4. „FOREIGN KEY“-Fremdschlüsseleinschränkung; 5. „CHECK“-Bedingungseinschränkung.
Integritätsbeschränkungen sind ein Mittel, um sicherzustellen, dass von Benutzern vorgenommene Änderungen die Konsistenz der Daten nicht zerstören, und sind ein Mittel, um die Richtigkeit und Kompatibilität der Daten zu schützen Daten.
Fünf allgemeine Einschränkungen:
NOT NULL: Nicht-Null-Einschränkung C, die angegebene Spalte lässt keine Nullwerte zu
UNIQUE: eindeutig Einschränkung U, es gibt keine doppelten Werte in der angegebenen Spalte, oder jeder Wert oder jede Wertegruppe in der Tabelle ist eindeutig
PRIMÄRSCHLÜSSEL: Primärschlüsseleinschränkung P, identifiziert jede Zeile eindeutig Die Tabelle und Nullwerte sind nicht zulässig. Eine Tabelle kann nur eine Primärschlüsseleinschränkung haben.
FÄLLERSCHLÜSSEL: Fremdschlüsseleinschränkung R. Spalten in einer Tabelle verweisen auf Spalten in anderen Tabellen, wodurch Abhängigkeiten bestehen und kann auf Verweise auf sich selbst verweisen.
PRÜFEN: Bedingte Einschränkung C, gibt an, ob die Spalte eine bestimmte Bedingung erfüllt
Nicht-Null-Einschränkung NK
create table member( mid number, name varchar2(200) not null );
Null-Fehler einfügen:
SQL> insert into member(mid,name) values(1,null); * 第 1 行出现错误: ORA-01400: 无法将 NULL 插入 ("SCOTT"."MEMBER"."NAME")
Eindeutige Einschränkung UK
drop table member purge;create table member( mid number, name varchar2(200) not null, email varchar2(50) unique );
Einfügungsfehler
SQL> insert into member(mid,name,email) values (1,'scott','scott@163.com');
1 Zeile wurde erstellt.
SQL> insert into member(mid,name,email) values (2,'jack','scott@163.com'); insert into member(mid,name,email) values (2,'jack','scott@163.com') * 第 1 行出现错误: ORA-00001: 违反唯一约束条件 (SCOTT.SYS_C0010891)
Geben Sie einen Namen für die Einschränkung an
Dieser Fehler sagt dem Benutzer nicht genau, welches Feld ein Problem hat, wie bei der vorherigen nicht leeren Einschränkung. Wir können einen angeben Name für diese Einschränkung. Ein Name
create table member( mid number, name varchar2(200) not null, email varchar2(50), constraint uk_email unique(email) );
Primärschlüsseleinschränkung PK
Primärschlüsseleinschränkung = Nicht-Null-Einschränkung + eindeutige Einschränkung
create table member( mid number, name varchar2(200) not null, email varchar2(50), constraint pk_number primary key(mid), constraint uk_email unique(email) );
Falsches Einfügen Daten melden einen Fehler:
SQL> insert into member(mid,name,email) values (1,'jack','scott@163.com');
1 Zeile erstellt
SQL> insert into member(mid,name,email) values (1,'jack','jack@163.com'); insert into member(mid,name,email) values (1,'jack','jack@163.com') * 第 1 行出现错误: ORA-00001: 违反唯一约束条件 (SCOTT.PK_NUMBER)
Beschränkung CK prüfen
create table member( mid number, name varchar2(200) not null, age number check(age between 0 and 200), sex varchar2(10), email varchar2(50), constraint pk_number primary key(mid), constraint uk_email unique(email), constraint ck_sex check(sex in('男','女')) );
Fehler beim Einfügen falscher Daten:
SQL> insert into member(mid,name,age,sex,email) values (1,'Jack','300','无','jack@163.com'); insert into member(mid,name,age,sex,email) values (1,'Jack','300','无','jack@163.com') * 第 1 行出现错误: ORA-02290: 违反检查约束条件 (SCOTT.CK_SEX)
Primäre Fremdschlüsseleinschränkung FK
create table member( mid number, name varchar2(200) not null, constraint pk_mid primary key(mid) ); create table advice( adid number, content clob not null, mid number, constraint pk_adid primary key(adid), constraint fk_mid foreign key(mid) references member(mid) );
Daten korrekt einfügen, Mid existiert bereits in der angehängten Tabelle
insert into member(mid,name) values (1,'Scott'); insert into member(mid,name) values (2,'Jack'); insert into advice(adid,content,mid) values (1,'test',1); insert into advice(adid,content,mid) values (2,'test',2); commit;
Fügen Sie Mid-Daten ein, die nicht vorhanden sind in der übergeordneten Tabelle
SQL> insert into advice(adid,content,mid) values (3,'test',3); insert into advice(adid,content,mid) values (3,'test',3) * 第 1 行出现错误: ORA-02291: 违反完整约束条件 (SCOTT.FK_MID) - 未找到父项关键字
Die Verwendung von Primär- und Fremdschlüsseleinschränkungen führt zu neuen Problemen beim Löschen von Tabellen und Daten
Um die übergeordnete Tabelle zu löschen, müssen Sie zuerst die untergeordnete Tabelle löschen
SQL> drop table member;drop table member * 第 1 行出现错误: ORA-02449: 表中的唯一/主键被外键引用
Löschen Sie die übergeordnete Tabelle zwangsweise, sodass Sie die Löschoption nicht verwenden können und die Primär- und Fremdschlüsseleinschränkungen in der Worttabelle nicht mehr vorhanden sind
SQL> drop table member cascade constraint; 表已删除。 SQL> insert into advice(adid,content,mid) values (3,'test',3);
1 Zeile wurde erstellt
An Löschen Sie die Daten der übergeordneten Tabelle und löschen Sie zuerst die Daten in der Worttabelle
SQL> delete from member where mid=1; delete from member where mid=1 * 第 1 行出现错误: ORA-02292: 违反完整约束条件 (SCOTT.FK_MID) - 已找到子记录
Zusätzlich zu dieser Methode können Sie auch die Kaskadenoperationsklausel
auf Löschkaskade< setzen 🎜>
create table advice( adid number, content clob not null, mid number, constraint pk_adid primary key(adid), constraint fk_mid foreign key(mid) references member(mid) on delete cascade );
Beim Löschen auf Null setzen
create table advice( adid number, content clob not null, mid number, constraint pk_adid primary key(adid), constraint fk_mid foreign key(mid) references member(mid) on delete set null );
SQL> delete from member where mid=1; 已删除 1 行。 SQL> select * from advice; ADID CONTENT MID ---------- ---------- ---------- test test 2
Einschränkungen anzeigen
SQL> select constraint_name,constraint_type,table_name from user_constraints; CONSTRAINT_NAME C TABLE_NAME ------------------------------ - ------------------------------ FK_DEPTNO R EMP PK_EMP P EMP PK_DEPT P DEPT
Einschränkungen ändern
Einschränkungen hinzufügenalter table member add constraint pk_mid primary key(mid); alter table member add constraint ck_age check(age between 0 and 200); alter table member modify (name varchar2(50) not null);
Einschränkungen deaktivieren/aktivieren
Nicht- Fremdschlüsselalter table member disable constraint ck_age; alter table member enable constraint ck_age;
alter table member disable constraint pk_mid cascade;
alter table member drop constraint pk_mid cascade; alter table member drop constraint ck_age;
Das obige ist der detaillierte Inhalt vonWas sind die SQL-Integritätseinschränkungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!