SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Kunci Utama SQLite

Ringkasan :dalam tutorial ini, Anda akan belajar bagaimana menggunakan SQLite PRIMARY KEY batasan untuk mendefinisikan kunci utama untuk sebuah tabel.

Pengantar kunci utama SQLite

Kunci utama adalah kolom atau grup kolom yang digunakan untuk mengidentifikasi keunikan baris dalam sebuah tabel. Setiap tabel memiliki satu dan hanya satu kunci utama.

SQLite memungkinkan Anda untuk mendefinisikan kunci utama dalam dua cara:

Pertama, jika primary key hanya memiliki satu kolom, gunakan PRIMARY KEY batasan kolom untuk mendefinisikan kunci utama sebagai berikut:

CREATE TABLE table_name(
   column_1 INTEGER NOT NULL PRIMARY KEY,
   ...
);Code language: PHP (php)

Kedua, jika kunci utama terdiri dari dua kolom atau lebih, gunakan PRIMARY KEY batasan tabel untuk mendefinisikan yang utama seperti yang ditunjukkan pada pernyataan berikut.

CREATE TABLE table_name(
   column_1 INTEGER NOT NULL,
   column_2 INTEGER NOT NULL,
   ...
   PRIMARY KEY(column_1,column_2,...)
);Code language: SQL (Structured Query Language) (sql)

Dalam standar SQL, kolom kunci utama tidak boleh berisi NULL nilai-nilai. Artinya kolom kunci utama memiliki NOT NULL implisit kendala.

Namun, untuk membuat versi SQLite saat ini kompatibel dengan versi sebelumnya, SQLite mengizinkan kolom kunci utama berisi NULL nilai.

Kunci utama SQLite dan tabel rowid

Saat Anda membuat tabel tanpa menentukan WITHOUT ROWID pilihan, SQLite menambahkan kolom implisit yang disebut rowid yang menyimpan bilangan bulat bertanda 64-bit. rowid kolom adalah kunci yang secara unik mengidentifikasi baris dalam tabel. Tabel yang memiliki rowid kolom disebut rowid tabel.

Jika sebuah tabel memiliki kunci utama yang terdiri dari satu kolom, dan kolom tersebut didefinisikan sebagai INTEGER maka kolom kunci utama ini menjadi alias untuk rowid kolom.

Perhatikan bahwa jika Anda menetapkan tipe integer lain seperti BIGINT dan UNSIGNED INT ke kolom kunci utama, kolom ini tidak akan menjadi alias untuk rowid kolom.

Karena rowid tabel mengatur datanya sebagai B-tree, mengkueri dan menyortir data dari rowid meja sangat cepat. Ini lebih cepat daripada menggunakan kunci utama yang bukan merupakan alias dari rowid .

Catatan penting lainnya adalah jika Anda mendeklarasikan kolom dengan INTEGER ketik dan PRIMARY KEY DESC klausa, kolom ini tidak akan menjadi alias untuk rowid kolom:

CREATE TABLE table(
   pk INTEGER PRIMARY KEY DESC,
   ...
);Code language: SQL (Structured Query Language) (sql)

Membuat contoh kunci utama SQLite

Pernyataan berikut membuat tabel bernama countries yang memiliki country_id kolom sebagai kunci utama.

CREATE TABLE countries (
   country_id INTEGER PRIMARY KEY,
   name TEXT NOT NULL
);Code language: SQL (Structured Query Language) (sql)

Cobalah

Karena kunci utama countries tabel hanya memiliki satu kolom, kami mendefinisikan kunci utama menggunakan PRIMARY KEY batasan kolom.

Dimungkinkan untuk menggunakan PRIMARY KEY batasan tabel untuk mendefinisikan kunci utama yang terdiri dari satu kolom seperti yang ditunjukkan pada pernyataan berikut:

CREATE TABLE languages (
   language_id INTEGER,
   name TEXT NOT NULL,
   PRIMARY KEY (language_id)
);Code language: SQL (Structured Query Language) (sql)

Cobalah

Namun, untuk tabel yang kunci utama terdiri dari lebih dari satu kolom, Anda harus menggunakan PRIMARY KEY batasan tabel untuk mendefinisikan kunci utama.

Pernyataan berikut membuat country_languages tabel yang kunci utamanya terdiri dari dua kolom.

CREATE TABLE country_languages (
	country_id INTEGER NOT NULL,
	language_id INTEGER NOT NULL,
	PRIMARY KEY (country_id, language_id),
	FOREIGN KEY (country_id) REFERENCES countries (country_id) 
            ON DELETE CASCADE ON UPDATE NO ACTION,
	FOREIGN KEY (language_id) REFERENCES languages (language_id) 
            ON DELETE CASCADE ON UPDATE NO ACTION
);Code language: PHP (php)

Cobalah

Menambahkan contoh kunci utama SQLite

Tidak seperti sistem database lain misalnya MySQL dan PostgreSQL, Anda tidak dapat menggunakan ALTER TABLE pernyataan untuk menambahkan kunci utama ke tabel yang ada.

Anda harus mengikuti langkah-langkah berikut untuk mengatasi batasan:

  1. Pertama, matikan pemeriksaan batasan kunci asing.
  2. Selanjutnya, ubah nama tabel menjadi nama tabel lain (old_table)
  3. Kemudian, buat tabel (tabel) baru dengan struktur persis tabel yang telah Anda rename.
  4. Setelah itu, salin data dari tabel_lama ke tabel.
  5. Terakhir, aktifkan pemeriksaan batasan kunci asing

Lihat pernyataan berikut:

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;

ALTER TABLE table RENAME TO old_table;

-- define the primary key constraint here
CREATE TABLE table ( ... );

INSERT INTO table SELECT * FROM old_table;

COMMIT;

PRAGMA foreign_keys=on;Code language: SQL (Structured Query Language) (sql)

Cobalah

BEGIN TRANSACTION memulai transaksi baru. Ini memastikan bahwa semua pernyataan berikutnya berhasil dieksekusi atau tidak ada yang dieksekusi sama sekali.

COMMIT pernyataan melakukan semua pernyataan.

Mari kita buat nama tabel cities tanpa kunci utama.

CREATE TABLE cities (
   id INTEGER NOT NULL,
   name text NOT NULL
);

INSERT INTO cities (id, name)
VALUES(1, 'San Jose');Code language: SQL (Structured Query Language) (sql)

Cobalah

Untuk menambahkan kunci utama ke cities tabel, Anda melakukan langkah-langkah berikut:

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;

ALTER TABLE cities RENAME TO old_cities;

CREATE TABLE cities (
   id INTEGER NOT NULL PRIMARY KEY,
   name TEXT NOT NULL
);

INSERT INTO cities 
SELECT * FROM old_cities;

DROP TABLE old_cities;

COMMIT;

PRAGMA foreign_keys=on;Code language: SQL (Structured Query Language) (sql)

Cobalah

Jika Anda menggunakan alat GUI SQLite, Anda dapat menggunakan pernyataan berikut untuk menampilkan informasi tabel.

PRAGMA table_info([cities]);Code language: SQL (Structured Query Language) (sql)

Cobalah

Dalam tutorial ini, Anda telah belajar menggunakan PRIMARY KEY SQLite batasan untuk mendefinisikan kunci utama untuk sebuah tabel.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ruang Android - Cara mengatur ulang kunci utama tabel yang dibuat secara otomatis pada setiap aplikasi yang dijalankan

  2. Operator

  3. SQLite - Buat Tabel

  4. menyalin file database dari /assets ke /data/data folder di file explorer - Android

  5. Ubah Nilai NULL ke Nilai Default Kolom saat Memasukkan Data di SQLite