Heim > Datenbank > MySQL-Tutorial > Was sind die SQL-Integritätseinschränkungen?

Was sind die SQL-Integritätseinschränkungen?

清浅
Freigeben: 2020-09-15 11:46:59
Original
17231 Leute haben es durchsucht

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.

Was sind die SQL-Integritätseinschränkungen?

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
    );
Nach dem Login kopieren

Null-Fehler einfügen:

SQL> insert into member(mid,name) values(1,null);
*
第 1 行出现错误:
ORA-01400: 无法将 NULL 插入 ("SCOTT"."MEMBER"."NAME")
Nach dem Login kopieren

Eindeutige Einschränkung UK

drop table member purge;create table member(
    mid number,
    name varchar2(200) not null,
    email varchar2(50) unique
    );
Nach dem Login kopieren

Einfügungsfehler

SQL> insert into member(mid,name,email) values (1,'scott','scott@163.com');
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
    );
Nach dem Login kopieren

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)
    );
Nach dem Login kopieren

Falsches Einfügen Daten melden einen Fehler:

SQL> insert into member(mid,name,email) values (1,'jack','scott@163.com');
Nach dem Login kopieren

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)
Nach dem Login kopieren

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('男','女'))    
   );
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
       );
Nach dem Login kopieren

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;
Nach dem Login kopieren

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) - 未找到父项关键字
Nach dem Login kopieren

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: 表中的唯一/主键被外键引用
Nach dem Login kopieren

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);
Nach dem Login kopieren

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) - 已找到子记录
Nach dem Login kopieren

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
       );
Nach dem Login kopieren

In diesem Fall werden durch das Löschen der angehängten Tabellendaten die Wörter gelöscht. Die Daten in der Tabelle werden ebenfalls gelöscht.

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      
 );
Nach dem Login kopieren

Durch das Löschen der Daten in der übergeordneten Tabelle werden die entsprechenden zugehörigen Felder in der untergeordneten Tabelle auf null gesetzt

SQL> delete from member where mid=1;

已删除 1 行。

SQL> select * from advice;

      ADID CONTENT         MID
---------- ---------- ----------
    test
    test            2
Nach dem Login kopieren

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
Nach dem Login kopieren

R Fremdschlüsseleinschränkungen, C Prüfeinschränkungen, Q Eindeutigkeitseinschränkungen, P Primärschlüsseleinschränkungen

Einschränkungen ändern

Einschränkungen hinzufügen

alter 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);
Nach dem Login kopieren

Es ist zu beachten, dass Nicht-Null-Einschränkungen die Änderungsmethode verwenden

Einschränkungen deaktivieren/aktivieren

Nicht- Fremdschlüssel

alter table member disable constraint ck_age;
alter table member enable constraint ck_age;
Nach dem Login kopieren

Fremdschlüssel

alter table member disable constraint pk_mid cascade;
Nach dem Login kopieren

Einschränkung löschen

alter table member drop constraint pk_mid cascade;
alter table member drop constraint ck_age;
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage