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
- V jedné tabulce může být více než jeden jedinečný klíč
- Může být definován na jednom nebo více sloupcích
- 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 NAMEJak 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