sql >> Databáze >  >> RDS >> Oracle

Jedinečný klíč v Oracle s příklady

Co je jedinečný klíč

Jedinečný klíč v Oracle Jedinečně identifikuje každý řádek v databázi. V podstatě vynucuje jedinečnost ve sloupci definované
Důležité věci

  1. V jedné tabulce může být více než jeden jedinečný klíč
  2. Může být definován na jednom nebo více sloupcích
  3. Sloupce obsahující jedinečný klíč mohou mít hodnotu null

Jak vytvořit jedinečný klíč

Vytvoření tabulky

To lze provést na úrovni sloupců pomocí příkazu create table v oracle

SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER UNIQUE, dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date ); Tabulka vytvořena. SQL> sloupec CONSTRAINT_NAME formát a20 SQL> sloupec TABLE_NAME formát a20 SQL> sloupec INDEX_NAME formát a20 SQL> vyberte CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, INDEX_NAME z user_Constraints, kde TABLE_NAME='DEPT_MASTER';

Lze to provést i na úrovni stolu

SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER , dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date, Unique(dept_nr) ); Tabulka vytvořena. SQL> vyberte CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, INDEX_NAME z user_Constraints, kde TABLE_NAME='DEPT_MASTER';

Můžeme také poskytnout vlastní omezení

SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER , dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date, constraint DEPT_UK Unique(dept_nr) ); Tabulka vytvořena. SQL> vyberte CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, INDEX_NAME z user_Constraints, kde TABLE_NAME='DEPT_MASTER';

Jedinečný klíč můžeme znázornit pomocí níže uvedeného diagramu

Můžeme mít více sloupců, tj. také složený jedinečný klíč a je definován pouze na úrovni tabulky

VYTVOŘIT TABULKU CUSTOMER_DETAIL(CUSTOMER_ID ČÍSLO(6,0), JMÉNO VARCHAR (20) NENÍ NULL, ČÍSLO VĚKU(6,0) NENÍ NULL,ADRESA VARCHAR2(25), ČÍSLO PLATU(6,0), UNIKÁTNÍ (ID ZÁKAZNÍKA , NAME));Table Created.SQL> vyberte CONSTRAINT_NAME,CONSTRAINT_TYPE, TABLE_NAME,INDEX_NAME z user_Constraints, kde TABLE_NAME='CUSTOMER_DETAIL';

Můžeme také zadat vlastní název omezení

SQL> CREATE TABLE CUSTOMER_DETAIL( CUSTOMER_ID NUMBER(6,0), NAME VARCHAR (20) NOT NULL, AGE NUMBER(6,0) NOT NULL, ADDRESS VARCHAR2(25), PALARY NUMBER(6,0), omezení CUSTOMER_UK UNIQUE(CUSTOMER_ID, NAME) ); Tabulka vytvořena. SQL> vyberte CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, INDEX_NAME z user_Constraints, kde TABLE_NAME='CUSTOMER_DETAIL';

Změnit tabulku přidat jedinečný klíč

Můžeme také přidat jedinečný klíč po vytvoření tabulky. Podívejme se na příklad

SQL> CREATE TABLE CUSTOMER_DETAIL( CUSTOMER_ID ČÍSLO(6,0), JMÉNO VARCHAR (20) NENÍ NULL, VĚK ČÍSLO(6,0) NENÍ NULL, ADRESA VARCHAR2(25), ČÍSLO PLATU(6,0) ); Tabulka vytvořena. SQL> vyberte CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, INDEX_NAME z user_Constraints, kde TABLE_NAME='CUSTOMER_DETAIL';
 SQL> alter table customer_detail add constraint customer_uk UNIQUE(CUSTOMER_ID, NAME); Tabulka změněna. SQL> vyberte CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,INDEX_NAME z user_Constraints, kde TABLE_NAME='CUSTOMER_DETAIL';

Primární klíč a jedinečný klíč obojí

V tabulce orákula můžeme mít primární klíč i jedinečný klíč. Zde je příklad, který to demonstruje

SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER PRIMARY KEY, dept_name varchar2(100) UNIQUE, dept_status NUMBER(1,0) NOT NULL, created_at date ); Tabulka vytvořena. SQL> vyberte CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, INDEX_NAME z user_Constraints, kde TABLE_NAME='DEPT_MASTER';

Jak najít sloupec spojený s jedinečným klíčem

Sloupec spojený s primárním klíčem nebo jedinečným klíčem můžeme najít v zobrazení slovníku User_cons_columns

SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER PRIMARY KEY, dept_name varchar2(100) UNIQUE, dept_status NUMBER(1,0) NOT NULL, created_at date ); Tabulka vytvořena. SQL> vyberte CONSTRAINT_NAME, CONSTRAINT_TYPE,TABLE_NAME,INDEX_NAME z user_Constraints, kde TABLE_NAME='DEPT_MASTER'; 
 SQL> SELECT Název_podmínky, Název_tabulky, Název_sloupce FROM User_cons_columns kde CONSTRAINT_NAME ='409 SYS_NAME CONSTRAINT_NAME TABLE_NAME COLUMN_NAME -------------------- ----------- ------------ SYS_C00540915 DEPT_MASTER DEPT_NAME SQL> SELECT Název_podmínky, Název_tabulky, Název_sloupce FROM Uživatelské_cons_sloupce kde CONSTRAINT_NAME ='SYS_C00540914'; CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------- --------- --------- SYS_C00540914 DEPT_MASTER DEPT_NR SQL> SELECT Constraint_name, Table_name, Column_name FROM User_cons_columns kde CONSTRAINT_NAME 'SYS_C00540918'; CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------- ---------- ------------ SYS_C00540918 CUSTOMER_DETAIL CUSTOMER_ID SYS_C00540918 CUSTOMER_DETAIL NAME 

Jak povolit a zakázat omezení jedinečného klíče

Můžeme to udělat pomocí příkazu alter table. Můžeme poskytnout buď název sloupce, nebo název omezení

SQL> alter table customer_detail disable UNIQUE(CUSTOMER_ID, NAME); Tabulka změněna. SQL změnit tabulku customer_detail zakázat omezení CUST_UK; Tabulka změněna. SQL změnit tabulku customer_detail povolit UNIQUE(CUSTOMER_ID, NAME); Tabulka změněna. SQL změnit tabulku customer_detail povolit omezení CUST_UK; Tabulka změněna.

Jak zrušit jedinečné omezení

Můžeme to udělat pomocí příkazu alter table. Můžeme poskytnout buď název sloupce, nebo název omezení

SQL> alter table customer_detail drop UNIQUE(CUSTOMER_ID, NAME); Tabulka změněna. NEBO SQL> změnit tabulku customer_detail drop omezení CUST_UK; Tabulka změněna.

Doufám, že se vám tento detail na Unique key v Oracle líbí. Uvedli jsme také dostatek příkladů pro demonstraci. Poskytněte nám prosím zpětnou vazbu

Také čte

Výukové programy administrace databáze Oracle
Jak přidat primární klíč do oracle:primární klíč jednoznačně identifikuje řádek v tabulce. Jak přidat primární klíč do oracle, jak zrušit primární klíč, jak vytvořit složený klíč
https://asktom.oracle.com/pls/asktom/f%3Fp%3D100:11:0::::P11_QUESTION_ID:5541352100346689891


  1. Uložit pole PHP do MySQL?

  2. Vrátí GETUTCDATE() stejnou hodnotu, pokud se použije dvakrát ve stejném příkazu?

  3. SQL OR operátor pro začátečníky

  4. Minimální protokolování s INSERT…SELECT a Fast Load Context