Kita akan mulai dengan pengenalan kunci utama di oracle dan kemudian kita akan menyelami berbagai pertanyaan tentangnya.
Pengantar Kunci Utama
Kunci utama adalah kolom atau kumpulan kolom dalam tabel yang secara unik mengidentifikasi baris dalam tabel.
Properti Kunci utama
- Anda tidak boleh memiliki nilai duplikat di dalamnya. yaitu harus unik dalam tabel
- Tidak boleh null atau berisi string kosong
- Seharusnya tidak diubah dari waktu ke waktu
- Kita hanya dapat memiliki satu kunci utama dalam tabel
Rekomendasi
- Disarankan untuk memiliki nilai numerik sebagai kunci utama karena lebih cepat
- Semua tabel harus memiliki kunci utama
Cara Menambahkan kunci utama di oracle
Kunci utama dapat ditambahkan pada pembuatan tabel atau dapat dibuat setelah pembuatan tabel.
Mari kita lihat pembuatan tabel terlebih dahulu
Kunci Utama pada Pembuatan Tabel
Itu dapat didefinisikan pada tingkat kolom atau tingkat tabel. Kunci Primer Gabungan didefinisikan hanya pada tingkat tabel. Saat oracle membuat kunci utama, oracle membuat indeks unik pada kolom tersebut dalam tabel untuk menerapkan batasan kunci utama.
Mari kita periksa dulu level Kolom
Column Level SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER PRIMARY KEY, dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date 2 ); Table created. SQL> desc DEPT_MASTER Name Null? Type DEPT_NR NOT NULL NUMBER DEPT_NAME NOT NULL VARCHAR2(100) DEPT_STATUS NOT NULL NUMBER(1) CREATED_AT DATE SQL> select index_name from dba_indexes where table_name='DEPT_MASTER'; INDEX_NAME ********** SYS_C0013850522 SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER'; CONSTRAINT_NAME INDEX_NAME CONSTRAINT_TYPE SYS_C00478605 C SYS_C00478606 C SYS_C00478607 SYS_C00478607 P
Sekarang mari kita lihat level Tabel
Table Level SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER , dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date, PRIMARY KEY ("DEPT_NR") ); 2 3 4 5 6 7 Table created. SQL> select index_name from dba_indexes where table_name='DEPT_MASTER'; INDEX_NAME SYS_C0013850525 SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER'; CONSTRAINT_NAME INDEX_NAME CONSTRAINT_TYPE SYS_C00478605 C SYS_C00478606 C SYS_C00478607 SYS_C00478607 P
Kami dapat memberikan nama kustom dari batasan kunci utama juga menggunakan klausa add constraint seperti yang ditunjukkan di bawah ini
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 PK_DEPT_NR PRIMARY KEY ("DEPT_NR") ); Table created. SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER'; CONSTRAINT_NAME INDEX_NAME CONSTRAINT_TYPE SYS_C00478609 C SYS_C00478608 C PK_DEPT_NR PK_DEPT_NR P
Tabel dengan Primer dapat direpresentasikan sebagai Diagram
Ubah Tabel Tambahkan Kunci Utama
Mari kita lihat cara menambahkan Primer setelah pembuatan tabel
CREATE TABLE DEPT_MASTER ( dept_nr NUMBER , dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date ); SQL> alter table DEPT_MASTER add primary key ( dept_nr); Table altered. SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER'; CONSTRAINT_NAME INDEX_NAME CONST SYS_C00485778 C SYS_C00485779 C SYS_C00485780 SYS_C00485780 P
Kami juga dapat memberikan nama khusus sambil menambahkan kunci utama
SQL> alter table DEPT_MASTER add constraint DEPT_MASTER_ID primary key ( dept_nr); Table altered. SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER'; CONSTRAINT_NAME INDEX_NAME CONST SYS_C00485778 C SYS_C00485779 C DEPT_MASTER_ID DEPT_MASTER_ID P
cara membuat kunci utama komposit di oracle
Sekarang mari kita lihat cara menambahkan kunci utama untuk kunci komposit
CREATE TABLE CUSTOMER( CUSTOMER_ID NUMBER(6,0), NAME VARCHAR (20) NOT NULL, AGE NUMBER(6,0) NOT NULL, ADDRESS VARCHAR2(25), SALARY NUMBER(6,0), PRIMARY KEY (CUSTOMER_ID, NAME) ); SQL> col CONSTRAINT_NAME format a20 SQL> col INDEX_NAME format a20 SQL> col CONSTRAINT_TYPE format a5 SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='CUSTOMER'; CONSTRAINT_NAME INDEX_NAME CONST SYS_C00485772 C SYS_C00485773 C SYS_C00485774 SYS_C00485774 P
Kami dapat memberikan nama khusus untuk batasan kunci utama pada kunci Komposit juga
SQL>CREATE TABLE CUSTOMER( CUSTOMER_ID NUMBER(6,0), NAME VARCHAR (20) NOT NULL, AGE NUMBER(6,0) NOT NULL, ADDRESS VARCHAR2(25), SQL> SALARY NUMBER(6,0), CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUSTOMER_ID, NAME) ); Table created. SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='CUSTOMER'; CONSTRAINT_NAME INDEX_NAME CONST SYS_C00485776 C SYS_C00485775 C PK_CUSTOMER PK_CUSTOMER P
Gabungan Primer dapat direpresentasikan sebagai
cara melepaskan kunci utama di oracle
Kita dapat menjatuhkan kunci utama menggunakan perintah di bawah ini. Kita dapat menggunakan drop primary key atau drop constraint
SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER'; CONSTRAINT_NAME INDEX_NAME CONST SYS_C00485778 C SYS_C00485779 C DEPT_MASTER_ID DEPT_MASTER_ID P SQL> alter table DEPT_MASTER drop primary key; Table altered. SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER'; CONSTRAINT_NAME INDEX_NAME CONST SYS_C00485778 C SYS_C00485779 C SQL> alter table DEPT_MASTER add constraint DEPT_MASTER_ID primary key ( dept_nr); Table altered. SQL> alter table DEPT_MASTER drop constraint DEPT_MASTER_ID; Table altered. SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='DEPT_MASTER'; CONSTRAINT_NAME INDEX_NAME CONST SYS_C00485778 C SYS_C00485779 C
Cara Mengaktifkan/Menonaktifkan batasan Kunci Utama
SQL> alter table DEPT_MASTER enable primary key; Table altered. SQL> alter table DEPT_MASTER disable primary key; Table altered. SQL> alter table DEPT_MASTER disable constraint DEPT_MASTER_ID; Table altered. SQL> alter table DEPT_MASTER enable constraint DEPT_MASTER_ID; Table altered
Cara Menambahkan Kunci Utama menggunakan Indeks
Ketika oracle membuat kunci utama, itu membuat indeks unik pada kolom itu di tabel untuk menegakkan batasan kunci utama. Tetapi jika tabel memiliki indeks sebelum penambahan kunci Primer, Oracle dapat menggunakan indeks itu untuk batasan kunci utama juga. Oracle dapat menerapkan batasan kunci utama pada indeks unik, non-unik, dan komposit. Oracle akan menggunakan indeks tergantung pada tabel indeks yang sudah dimiliki. Kami juga dapat menggunakan menggunakan klausa indeks pada waktu pembuatan kunci utama juga jika kami ingin menerapkan batasan menggunakan indeks tertentu
SQL> create index DEPT_MASTER_IDX on DEPT_MASTER(dept_nr); Index created. SQL> alter table DEPT_MASTER add constraint DEPT_MASTER_ID primary key ( dept_nr) using index DEPT_MASTER_IDX; Table altered. SQL> col CONSTRAINT_NAME format a20 SQL> col INDEX_NAME format a20 SQL> col CONSTRAINT_TYPE format a5 SQL> / CONSTRAINT_NAME INDEX_NAME CONST DEPT_MASTER_ID DEPT_MASTER_IDX P SYS_C00485779 C SYS_C00485778 C
Bahkan jika kita tidak menggunakan menggunakan indeks dalam pernyataan sebelumnya, oracle akan tetap memiliki indeks non-unik yang sama untuk menerapkan batasan kunci utama
SQL> create index DEPT_MASTER_IDX on DEPT_MASTER(dept_nr); Index created. SQL> alter table DEPT_MASTER add constraint DEPT_MASTER_ID primary key ( dept_nr); Table altered. SQL> col CONSTRAINT_NAME format a20 SQL> col INDEX_NAME format a20 SQL> col CONSTRAINT_TYPE format a5 SQL> / CONSTRAINT_NAME INDEX_NAME CONST DEPT_MASTER_ID DEPT_MASTER_IDX P SYS_C00485779 C SYS_C00485778
cara memodifikasi kunci utama di oracle
Kita tidak bisa begitu saja mengubah nilai kunci Primer. kita perlu membuang kunci lama dan membuat kunci utama baru. Jika kita memiliki batasan kunci asing yang merujuk itu. maka kita perlu melepaskannya terlebih dahulu dan melepaskan kunci utama dan membuat lagi kunci utama baru
cara menaikkan kunci utama secara otomatis di oracle
Dengan 12c, kami memiliki dua cara mudah untuk menerapkan peningkatan otomatis untuk kunci utama
Kolom Identitas
Dalam Oracle Database 12c, Kita dapat mendefinisikan kolom Tabel dengan kata kunci SQL IDENTITY yang merupakan kata kunci SQL American National Standards Institute (ANSI). Yang bertambah secara otomatis pada saat penyisipan (seperti di MySQL).
Example: create table test ( id number generated as identity PRIMARY KEY, name varchar2(100), email varchar2(100), password varchar2(100)firstname varchar2(100)lastname varchar2(100) );
Urutan sebagai Nilai Default
Dengan Oracle Database 12c, kita dapat langsung menetapkan sequence nextval sebagai nilai default untuk sebuah kolom, Jadi Anda tidak perlu lagi membuat trigger untuk mengisi kolom dengan nilai urutan berikutnya, Anda hanya perlu mendeklarasikannya dengan definisi tabel. Ini adalah semacam fitur penambahan otomatis untuk kolom di Oracle seperti MySQL
Example: create sequence tech_test_seq start with 1 increment by 1 nocycle; create table test ( id number default tech_test_seq.nextval primary key name varchar(30) );
cara mengganti nama kunci utama di oracle
Kita dapat dengan mudah mengganti nama batasan kunci utama menggunakan tabel ubah ubah nama sql. Ini tidak memengaruhi pemrosesan dan kunci asing
CREATE TABLE DEPT_MASTER ( dept_nr NUMBER , dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date ); alter table DEPT_MASTER add constraint DEPT_MASTER_ID primary key ( dept_nr); Table altered. select CONSTRAINT_NAME from user_constraints where TABLE_NAME='DEPT_MASTER' and constraint_type = 'P'; CONSTRAINT_NAME ------------- DEPT_MASTER_ID ALTER TABLE DEPT_MASTER RENAME CONSTRAINT DEPT_MASTER_ID TO DEPT_MASTER_ID_PK; select CONSTRAINT_NAME from user_constraints where TABLE_NAME='DEPT_MASTER' and constraint_type = 'P'; CONSTRAINT_NAME ------------- DEPT_MASTER_ID_PK I hope you like the content on primary key and it clear all doubts about the Primary Key concept. Please do provide the feedback and what else can be added in this post
Juga Dibaca
Check Constraint di Oracle :Oracle Check Constraint digunakan untuk menegakkan aturan integritas berdasarkan ekspresi logika, seperti perbandingan. Kondisi pemeriksaan harus mengembalikan true atau false
Not Null constraint di Oracle:
fungsi NVL2 di Oracle:Pelajari cara menggunakan fungsi NVL2 di Oracle dengan contoh
ubah tabel, ubah kolom, oracle
https://en.wikipedia.org/wiki/Primary_key
Kursus yang Direkomendasikan
Berikut adalah Kursus Udemy yang bagus untuk Oracle SQL
Oracle-Sql-Step-by-step :Kursus ini mencakup sql dasar, bergabung, Membuat Tabel dan memodifikasi strukturnya, Membuat Tampilan, Union, Union -semua dan banyak hal lainnya . Kursus yang bagus dan kursus yang harus dimiliki untuk pemula SQL
Kursus Sertifikasi Oracle SQL Lengkap :Ini adalah kursus yang bagus untuk siapa saja yang ingin siap kerja untuk keterampilan pengembang SQL. Kursus yang dijelaskan dengan baik
Pengembang Oracle SQL:Esensi, Kiat, dan Trik :Alat pengembang Oracle Sql sedang digunakan oleh banyak pengembang. Kursus ini memberi kita trik dan pelajaran tentang cara menggunakannya secara efektif dan menjadi pengembang sql yang produktif
Oracle SQL Performance Tuning Masterclass 2020 :Penyetelan kinerja adalah salah satu keterampilan penting dan paling dicari. Ini adalah kursus yang bagus untuk mempelajarinya dan mulai melakukan penyetelan kinerja sql