Constraint dalam MySQL

Constraint dalam MySQL adalah aturan yang digunakan untuk membatasi nilai-nilai yang dapat dimasukkan ke dalam suatu tabel atau kolom dalam tabel. Constraint digunakan untuk memastikan integritas data dan membatasi operasi yang dapat dilakukan pada data di dalam tabel.

Berikut adalah penjelasan secara detail mengenai jenis-jenis constraint dalam MySQL beserta fungsi, sintaks, dan contohnya:

PRIMARY KEY CONSTRAINT

Fungsi: Menetapkan kolom tertentu sebagai kunci utama atau primary key pada tabel. Kunci utama adalah kolom atau rangkaian kolom yang unik di setiap baris, sehingga dapat digunakan untuk mengidentifikasi setiap baris secara unik.

Sintaks:

CREATE TABLE nama_tabel (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255),
  PRIMARY KEY (kolom1)
);

Contoh:

CREATE TABLE buku (
  id INT NOT NULL,
  judul VARCHAR(255),
  pengarang VARCHAR(255),
  PRIMARY KEY (id)
);

FOREIGN KEY CONSTRAINT

Fungsi: Menetapkan kunci asing atau foreign key pada tabel untuk menghubungkannya dengan tabel lain melalui kolom tertentu. Kunci asing adalah kolom atau rangkaian kolom pada tabel yang merujuk ke kunci utama pada tabel lain.

Sintaks:

CREATE TABLE nama_tabel1 (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255),
  PRIMARY KEY (kolom1)
);

CREATE TABLE nama_tabel2 (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255),
  kolom3 INT,
  FOREIGN KEY (kolom3) REFERENCES nama_tabel1(kolom1)
);

Contoh:

CREATE TABLE penulis (
  penulis_id INT NOT NULL,
  nama VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE buku (
  buku_id INT NOT NULL,
  judul VARCHAR(255),
  penulis_id INT,
  FOREIGN KEY (penulis_id) REFERENCES penulis(id)
);

Berikut adalah contoh sintaks untuk menyisipkan data ke dalam tabel dengan menggunakan constraint FOREIGN KEY pada MySQL antara tabel “Penulis” dan “Buku”:

INSERT INTO Buku (id_buku, judul, penulis_id)
VALUES (1, 'Belajar Bahasa Inggris', 1);

Pada contoh di atas, kita menyisipkan data baru ke dalam tabel “Buku” dengan kolom “judul” dan “penulis_id”. Kita menggunakan sintaks “INSERT INTO” diikuti dengan nama tabel dan kolom yang akan diisi dengan data baru. Pada kolom “penulis_id”, kita menyisipkan nilai yang merujuk pada data pada tabel “Penulis” dengan menggunakan constraint FOREIGN KEY. Constraint ini memastikan bahwa nilai yang kita sisipkan pada kolom “penulis_id” harus sesuai dengan data yang tersedia pada tabel “Penulis”. Jika nilai tidak sesuai, maka MySQL akan menolak operasi penyisipan data tersebut.

Dengan menggunakan constraint FOREIGN KEY, kita dapat memastikan bahwa data yang disimpan pada kolom yang memiliki relasi dengan tabel lain (seperti “penulis_id” pada tabel “Buku”) harus sesuai dengan data yang tersedia pada tabel yang direferensikan (tabel “Penulis” pada contoh di atas). Hal ini memastikan konsistensi dan integritas data pada database kita.

UNIQUE CONSTRAINT

Fungsi: Menetapkan kolom tertentu sebagai kolom unik, sehingga setiap nilai dalam kolom tersebut harus unik dan tidak boleh ada duplikat.

Sintaks:

CREATE TABLE nama_tabel (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255),
  UNIQUE (kolom1)
);

Contoh:

CREATE TABLE pelanggan (
  id INT NOT NULL,
  nama VARCHAR(255),
  email VARCHAR(255),
  UNIQUE (email)
);

CHECK CONSTRAINT

Fungsi: Menetapkan batasan pada nilai yang dimasukkan ke dalam kolom tertentu berdasarkan kondisi tertentu.

Sintaks:

CREATE TABLE nama_tabel (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255),
  kolom3 INT CHECK (kolom3 > 0)
);

Contoh:

CREATE TABLE produk (
  id INT NOT NULL,
  nama VARCHAR(255),
  harga INT CHECK (harga > 0)
);

NOT NULL CONSTRAINT

Fungsi: Menetapkan bahwa kolom tertentu tidak boleh diisi dengan nilai null atau kosong.

Sintaks:

CREATE TABLE nama_tabel (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255) NOT NULL
);

Contoh:

CREATE TABLE pelanggan (
  id INT NOT NULL,
  nama VARCHAR(255) NOT NULL,
  email VARCHAR(255)
);

DEFAULT CONSTRAINT

Fungsi: Menetapkan nilai default untuk kolom tertentu jika tidak ada nilai yang dim

Sintaks:

CREATE TABLE nama_tabel (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255) DEFAULT 'nilai_default'
);

Contoh:

CREATE TABLE produk (
  id INT NOT NULL,
  nama VARCHAR(255),
  harga INT DEFAULT 0
);

Pada contoh di atas, kolom “harga” memiliki nilai default 0 jika tidak ada nilai yang dimasukkan ke dalam kolom tersebut saat sebuah baris ditambahkan ke dalam tabel “produk”. Jika kita memasukkan nilai harga saat menambahkan baris, nilai default akan diabaikan dan nilai yang dimasukkan akan digunakan sebagai gantinya. Namun, jika kita tidak memasukkan nilai harga, nilai default 0 akan digunakan sebagai gantinya.

INDEX CONSTRAINT

Fungsi: Membuat indeks pada satu atau beberapa kolom pada tabel untuk mempercepat proses pencarian data.

Sintaks:

sqlCopy codeCREATE TABLE nama_tabel (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255),
  INDEX nama_indeks (kolom1)
);

Contoh:

sqlCopy codeCREATE TABLE pelanggan (
  id INT NOT NULL,
  nama VARCHAR(255),
  email VARCHAR(255),
  INDEX indeks_email (email)
);

Pada contoh di atas, kita membuat indeks pada kolom “email” di tabel “pelanggan” dengan nama indeks “indeks_email”. Indeks tersebut akan mempercepat proses pencarian data berdasarkan nilai di kolom “email”.

AUTO_INCREMENT CONSTRAINT

Fungsi: Menetapkan nilai otomatis pada kolom tertentu saat baris ditambahkan ke dalam tabel.

Sintaks:

CREATE TABLE nama_tabel (
  kolom1 INT NOT NULL AUTO_INCREMENT,
  kolom2 VARCHAR(255),
  PRIMARY KEY (kolom1)
);

Contoh:

CREATE TABLE pelanggan (
  id INT NOT NULL AUTO_INCREMENT,
  nama VARCHAR(255),
  email VARCHAR(255),
  PRIMARY KEY (id)
);

Pada contoh di atas, kita membuat kolom “id” di tabel “pelanggan” sebagai primary key dan menetapkan nilai otomatis pada kolom tersebut saat baris ditambahkan ke dalam tabel. Nilai otomatis tersebut akan bertambah 1 setiap kali baris ditambahkan, sehingga setiap baris akan memiliki nilai id yang berbeda dan unik.

CHECK CONSTRAINT

Fungsi: Memastikan bahwa nilai yang dimasukkan ke dalam kolom tertentu memenuhi kondisi tertentu.

Sintaks:

CREATE TABLE nama_tabel (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255),
  kolom3 INT,
  CHECK (kolom3 > 0)
);

Contoh:

CREATE TABLE produk (
  id INT NOT NULL,
  nama VARCHAR(255),
  harga INT,
  CHECK (harga > 0)
);

Pada contoh di atas, kita membuat sebuah tabel “produk” dan menetapkan constraint CHECK pada kolom “harga” agar nilai yang dimasukkan ke dalam kolom tersebut harus lebih besar dari 0.

FOREIGN KEY CONSTRAINT

Fungsi: Membuat keterkaitan antara dua tabel dengan menghubungkan kolom dari tabel yang satu dengan kolom dari tabel yang lain.

Sintaks:

CREATE TABLE nama_tabel1 (
  kolom1 INT NOT NULL,
  kolom2 VARCHAR(255),
  PRIMARY KEY (kolom1)
);

CREATE TABLE nama_tabel2 (
  kolom3 INT NOT NULL,
  kolom4 VARCHAR(255),
  kolom1 INT,
  FOREIGN KEY (kolom1) REFERENCES nama_tabel1(kolom1)
);

Contoh:

CREATE TABLE kategori (
  id INT NOT NULL,
  nama VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE produk (
  id INT NOT NULL,
  nama VARCHAR(255),
  harga INT,
  kategori_id INT,
  FOREIGN KEY (kategori_id) REFERENCES kategori(id)
);

Pada contoh di atas, kita membuat dua tabel yaitu “kategori” dan “produk”, kemudian menetapkan constraint FOREIGN KEY pada kolom “kategori_id” di tabel “produk” untuk menghubungkannya dengan kolom “id” di tabel “kategori”. Dengan begitu, setiap produk akan memiliki kategori yang terkait dengannya

FULLTEXT CONSTRAINT

Fungsi: Membuat indeks teks lengkap pada kolom teks tertentu, sehingga memungkinkan pencarian teks yang lebih efisien

Benar, Fulltext Constraint adalah salah satu jenis constraint di MySQL yang digunakan untuk membuat indeks teks lengkap pada kolom teks tertentu. Dengan menggunakan Fulltext Constraint, kita dapat melakukan pencarian teks yang lebih efisien, karena indeks yang dibuat akan memperhatikan kata kunci dan bobot kata kunci dalam kolom teks yang diindeks.

Contohnya, jika kita memiliki tabel “artikel” dengan kolom “judul” dan “konten”, kita dapat menggunakan Fulltext Constraint pada kedua kolom tersebut agar memungkinkan pencarian yang lebih efisien. Berikut adalah sintaks untuk membuat Fulltext Constraint:

CREATE TABLE artikel (
  id INT PRIMARY KEY,
  judul VARCHAR(255),
  konten TEXT,
  FULLTEXT (judul, konten)
);

Pada contoh di atas, kita membuat tabel “artikel” dengan Fulltext Constraint pada kolom “judul” dan “konten”. Setelah constraint diaktifkan, kita dapat melakukan pencarian teks dengan menggunakan operator MATCH AGAINST pada kolom yang diindeks. Berikut adalah contoh penggunaan MATCH AGAINST pada tabel “artikel”:

SELECT * FROM artikel WHERE MATCH (judul, konten) AGAINST ('MySQL' IN NATURAL LANGUAGE MODE);

Pada contoh di atas, kita mencari artikel yang mengandung kata kunci “MySQL” pada kolom “judul” atau “konten”. Karena kita telah menggunakan Fulltext Constraint pada kedua kolom tersebut, pencarian dapat dilakukan secara efisien dan akurat.

Mode IN NATURAL LANGUAGE MODE memungkinkan kita untuk melakukan pencarian teks yang lebih alami dan intuitif. Mode ini akan mencari kata kunci yang sesuai dengan kolom teks yang diindeks, dan memberikan bobot pada setiap kata kunci berdasarkan seberapa sering kata kunci tersebut muncul dalam kolom teks yang diindeks.

Contohnya, jika kita mencari kata kunci “MySQL” dalam kolom teks yang diindeks dengan mode IN NATURAL LANGUAGE MODE, MySQL akan mencari kata kunci “MySQL” dan memberikan bobot lebih pada kata kunci tersebut jika kata kunci “MySQL” muncul lebih sering dalam kolom teks yang diindeks. Mode ini juga memperhitungkan kata-kata lain yang sering muncul bersama dengan kata kunci yang dicari, sehingga memberikan hasil pencarian yang lebih akurat.

Selain mode IN NATURAL LANGUAGE MODE, terdapat beberapa mode pencarian lain yang dapat digunakan pada Fulltext Constraint di MySQL, antara lain BOOLEAN MODE, QUERY EXPANSION MODE, dan WITH QUERY EXPANSION MODE. Masing-masing mode memiliki aturan pencarian yang berbeda, dan dapat dipilih sesuai dengan kebutuhan.

BINARY CONSTRAINT

BINARY CONSTRAINT pada dasarnya menetapkan bahwa nilai pada kolom tertentu harus memiliki panjang tetap yang sama. Ketika kita menggunakan BINARY CONSTRAINT, MySQL akan menangani kolom sebagai data biner dengan panjang yang ditentukan.

Berikut adalah contoh sintaks untuk membuat kolom dengan BINARY CONSTRAINT di MySQL:

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(255) BINARY,
    password VARCHAR(255) BINARY
);

Pada contoh di atas, kita membuat tabel “users” dengan kolom “username” dan “password” yang memiliki tipe data BINARY. Dengan menggunakan BINARY CONSTRAINT, kita dapat memastikan bahwa panjang nilai pada kedua kolom tersebut tetap sama, sehingga dapat memudahkan dalam validasi dan memastikan integritas data.

Contoh penggunaan BINARY CONSTRAINT adalah saat kita ingin menyimpan data kata sandi dalam bentuk hash, yang umumnya berbentuk string biner. Dengan menggunakan BINARY CONSTRAINT pada kolom kata sandi, kita dapat memastikan bahwa panjang nilai pada kolom tetap sama dan sesuai dengan panjang hash yang digunakan.

SPATIAL CONSTRAINT

Fungsi: Membuat indeks pada kolom geospasial, sehingga memungkinkan pencarian yang lebih efisien berdasarkan jarak dan lokasi.

SPATIAL CONSTRAINT biasanya digunakan pada aplikasi yang membutuhkan informasi lokasi, seperti aplikasi peta, GPS, atau aplikasi logistik. Dengan menggunakan SPATIAL CONSTRAINT, kita dapat memudahkan pencarian lokasi yang tepat dan mengoptimalkan kinerja database pada aplikasi tersebut.

Berikut adalah contoh sintaks untuk membuat kolom dengan SPATIAL CONSTRAINT di MySQL:

CREATE TABLE locations (
    id INT PRIMARY KEY,
    name VARCHAR(255),
    coords POINT,
    SPATIAL INDEX(coords)
);

Pada contoh di atas, kita membuat tabel “locations” dengan kolom “coords” yang memiliki tipe data POINT dan diindeks dengan SPATIAL CONSTRAINT. Dengan menggunakan SPATIAL CONSTRAINT, kita dapat melakukan pencarian lokasi yang tepat dan mengoptimalkan kinerja database pada aplikasi yang membutuhkan informasi lokasi.

Contoh penggunaan SPATIAL CONSTRAINT adalah saat kita ingin mencari tempat tertentu berdasarkan jarak dan lokasi. Dengan menggunakan SPATIAL CONSTRAINT, kita dapat melakukan pencarian lokasi dengan cepat dan efisien, sehingga memudahkan pengguna dalam mencari informasi yang dibutuhkan.

Berikut adalah contoh query untuk melakukan pencarian lokasi dengan menggunakan SPATIAL CONSTRAINT di MySQL:

SELECT name, ST_DISTANCE(coords, POINT(106.827153, -6.175392)) as distance
FROM locations
WHERE ST_CONTAINS(ST_BUFFER(coords, 0.01), POINT(106.827153, -6.175392))
ORDER BY distance;

Pada contoh di atas, kita melakukan pencarian lokasi berdasarkan koordinat dengan longitude 106.827153 dan latitude -6.175392. Query di atas akan mengembalikan nama lokasi beserta jaraknya dari koordinat yang diberikan, dengan hasil diurutkan berdasarkan jarak terdekat.

Pada query di atas, kita menggunakan fungsi SPATIAL di MySQL, seperti ST_DISTANCE untuk menghitung jarak antara dua titik, dan ST_CONTAINS untuk memeriksa apakah titik tertentu berada dalam wilayah tertentu. Kita juga menggunakan fungsi ST_BUFFER untuk membuat buffer atau area lingkaran dengan radius tertentu di sekitar koordinat yang diberikan.

JSON CONSTRAINT pada MySQL adalah constraint yang digunakan untuk memvalidasi data yang disimpan dalam format JSON. JSON atau JavaScript Object Notation adalah sebuah format data yang sering digunakan dalam pengembangan aplikasi web. Dengan menggunakan JSON CONSTRAINT, kita dapat memastikan bahwa data yang disimpan dalam format JSON valid dan sesuai dengan struktur yang diharapkan.

Berikut adalah contoh sintaks untuk membuat JSON CONSTRAINT di MySQL:

sqlCopy codeCREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(255),
    price DECIMAL(10,2),
    attributes JSON,
    CHECK (JSON_VALID(attributes))
);

Pada contoh di atas, kita membuat tabel “products” dengan kolom “attributes” yang berisi data dalam format JSON. Kita juga menggunakan JSON CONSTRAINT dengan menggunakan fungsi JSON_VALID untuk memastikan bahwa data yang disimpan dalam kolom “attributes” valid dan sesuai dengan struktur yang diharapkan.

Dengan menggunakan JSON CONSTRAINT, kita dapat memastikan bahwa data yang disimpan dalam format JSON valid dan sesuai dengan struktur yang diharapkan, sehingga mengurangi kemungkinan terjadinya kesalahan dalam pengolahan data pada aplikasi yang menggunakan format JSON.

Berikut adalah contoh sintaks untuk menyisipkan record atau data ke dalam tabel dengan JSON CONSTRAINT pada MySQL:

INSERT INTO products (name, price, attributes)
VALUES ('Product A', 10.99, '{"color": "red", "size": "L"}');

Pada contoh di atas, kita menyisipkan data ke dalam tabel “products” dengan kolom “name”, “price”, dan “attributes”. Kita menggunakan sintaks “INSERT INTO” diikuti dengan nama tabel dan kolom yang akan diisi dengan data baru. Pada kolom “attributes”, kita menyatakan nilai dalam format JSON dengan menggunakan tanda kurung kurawal ({}) dan memisahkan setiap pasangan key-value dengan tanda koma.

Karena pada tabel “products” terdapat JSON CONSTRAINT yang memastikan bahwa data pada kolom “attributes” harus valid dan sesuai dengan struktur yang diharapkan, maka MySQL akan melakukan validasi terhadap nilai yang kita sisipkan pada kolom tersebut. Jika nilai tidak valid, maka MySQL akan menolak operasi penyisipan data tersebut.

Dengan menggunakan JSON CONSTRAINT, kita dapat memastikan bahwa data yang disimpan dalam format JSON valid dan sesuai dengan struktur yang diharapkan, sehingga mengurangi kemungkinan terjadinya kesalahan dalam pengolahan data pada aplikasi yang menggunakan format JSON.

Berikut adalah contoh sintaks untuk menampilkan data JSON pada MySQL:

SELECT attributes->'$.color' AS color, attributes->'$.size' AS size
FROM products;

Pada contoh di atas, kita menggunakan sintaks “SELECT” untuk menampilkan data dari tabel “products”. Pada kolom “attributes”, kita menggunakan operator “->” untuk mengakses nilai pada struktur JSON. Dalam contoh di atas, kita menggunakan sintaks “$.color” dan “$.size” untuk mengakses nilai dari key “color” dan “size” pada JSON. Kita juga menggunakan sintaks “AS” untuk memberikan alias pada kolom hasil query, sehingga hasil query akan lebih mudah dibaca dan diinterpretasikan.

Dengan menggunakan operator “->” pada MySQL, kita dapat mengakses nilai dari struktur JSON yang disimpan pada kolom dalam tabel, sehingga memudahkan kita dalam melakukan pengolahan data pada aplikasi yang menggunakan format JSON.

contoh pembuatan database perpustakaan dengan menggunakan contoh lengkap semua constraint pada MySQL:

CREATE DATABASE perpustakaan;

USE perpustakaan;

CREATE TABLE Penulis (
  penulis_id INT PRIMARY KEY AUTO_INCREMENT,
  nama_penulis VARCHAR(50) NOT NULL,
  negara_asal VARCHAR(50) NOT NULL
);

CREATE TABLE Kategori (
  kategori_id INT PRIMARY KEY AUTO_INCREMENT,
  nama_kategori VARCHAR(50) NOT NULL
);

CREATE TABLE Buku (
  buku_id INT PRIMARY KEY AUTO_INCREMENT,
  judul VARCHAR(100) NOT NULL,
  penulis_id INT,
  kategori_id INT,
  penerbit VARCHAR(50) NOT NULL,
  tahun_terbit INT NOT NULL,
  jumlah_halaman INT NOT NULL,
  stok INT NOT NULL,
  FOREIGN KEY (penulis_id) REFERENCES Penulis(penulis_id),
  FOREIGN KEY (kategori_id) REFERENCES Kategori(kategori_id),
  CHECK (tahun_terbit >= 1800 AND tahun_terbit <= YEAR(CURDATE()))
);

CREATE TABLE Anggota (
  anggota_id INT PRIMARY KEY AUTO_INCREMENT,
  nama_anggota VARCHAR(50) NOT NULL,
  alamat VARCHAR(100) NOT NULL,
  no_telp VARCHAR(15) NOT NULL,
  email VARCHAR(50) NOT NULL UNIQUE,
  tanggal_lahir DATE NOT NULL,
  jenis_kelamin ENUM('Laki-laki', 'Perempuan') NOT NULL,
  CONSTRAINT chk_tanggal_lahir CHECK (tanggal_lahir <= DATE_SUB(CURDATE(), INTERVAL 18 YEAR))
);

CREATE TABLE Pinjaman (
  pinjaman_id INT PRIMARY KEY AUTO_INCREMENT,
  buku_id INT,
  anggota_id INT,
  tanggal_pinjam DATE NOT NULL,
  tanggal_kembali DATE NOT NULL,
  denda INT NOT NULL DEFAULT 0,
  FOREIGN KEY (buku_id) REFERENCES Buku(buku_id) ON DELETE CASCADE,
  FOREIGN KEY (anggota_id) REFERENCES Anggota(anggota_id) ON DELETE CASCADE,
  CHECK (tanggal_kembali >= tanggal_pinjam)
);

CREATE TABLE Review (
  review_id INT PRIMARY KEY AUTO_INCREMENT,
  buku_id INT,
  anggota_id INT,
  review TEXT NOT NULL,
  rating FLOAT NOT NULL,
  FOREIGN KEY (buku_id) REFERENCES Buku(buku_id) ON DELETE CASCADE,
  FOREIGN KEY (anggota_id) REFERENCES Anggota(anggota_id) ON DELETE CASCADE,
  CHECK (rating >= 0 AND rating <= 5)
);

CREATE FULLTEXT INDEX idx_review ON Review (review);

CREATE SPATIAL INDEX idx_lokasi_buku ON Buku (lokasi);

Contoh lain menggunakan ALTER

ontoh lengkap pembuatan database perpustakaan dengan menggunakan berbagai jenis constraint di MySQL:

-- membuat database perpustakaan
CREATE DATABASE perpustakaan;

-- menggunakan database perpustakaan
USE perpustakaan;

-- membuat tabel penulis
CREATE TABLE penulis (
  id INT PRIMARY KEY,
  nama VARCHAR(50) NOT NULL,
  email VARCHAR(50) NOT NULL UNIQUE
);

-- membuat tabel buku
CREATE TABLE buku (
  id INT PRIMARY KEY,
  judul VARCHAR(100) NOT NULL,
  penerbit VARCHAR(50) NOT NULL,
  tahun_terbit INT(4) NOT NULL,
  penulis_id INT,
  FOREIGN KEY (penulis_id) REFERENCES penulis(id)
);

-- membuat tabel peminjaman
CREATE TABLE peminjaman (
  id INT PRIMARY KEY,
  buku_id INT,
  tanggal_pinjam DATE,
  tanggal_kembali DATE,
  FOREIGN KEY (buku_id) REFERENCES buku(id)
);

-- membuat tabel anggota
CREATE TABLE anggota (
  id INT PRIMARY KEY,
  nama VARCHAR(50) NOT NULL,
  alamat VARCHAR(100) NOT NULL,
  email VARCHAR(50) NOT NULL UNIQUE,
  no_telp VARCHAR(20),
  tanggal_lahir DATE
);

-- membuat tabel peminjaman_anggota
CREATE TABLE peminjaman_anggota (
  id INT PRIMARY KEY,
  anggota_id INT,
  peminjaman_id INT,
  FOREIGN KEY (anggota_id) REFERENCES anggota(id),
  FOREIGN KEY (peminjaman_id) REFERENCES peminjaman(id)
);

-- menambahkan constraint UNIQUE pada kolom email pada tabel penulis
ALTER TABLE penulis
ADD CONSTRAINT penulis_email_unique UNIQUE (email);

-- menambahkan constraint NOT NULL pada kolom tanggal_pinjam pada tabel peminjaman
ALTER TABLE peminjaman
MODIFY tanggal_pinjam DATE NOT NULL;

-- menambahkan constraint DEFAULT pada kolom tanggal_kembali pada tabel peminjaman
ALTER TABLE peminjaman
MODIFY tanggal_kembali DATE DEFAULT '9999-12-31';

-- menambahkan constraint FULLTEXT pada kolom judul pada tabel buku
ALTER TABLE buku
ADD FULLTEXT (judul);

-- menambahkan constraint CHECK pada kolom tahun_terbit pada tabel buku
ALTER TABLE buku
ADD CONSTRAINT buku_tahun_terbit_check CHECK (tahun_terbit > 0);

-- menambahkan constraint BINARY pada kolom email pada tabel anggota
ALTER TABLE anggota
ADD CONSTRAINT anggota_email_binary BINARY (email);

-- menambahkan constraint SPATIAL pada kolom alamat pada tabel anggota
ALTER TABLE anggota
ADD SPATIAL INDEX (alamat);

Berikut adalah contoh perintah untuk menyisipkan data pada setiap tabel dalam database perpustakaan yang telah dibuat sebelumnya:

Tabel buku

INSERT INTO buku (id, judul, id_penulis, penerbit, tahun_terbit)
VALUES 
    (1, 'Laskar Pelangi', 1, 'Bentang Pustaka', 2005),
    (2, 'Sang Pemimpi', 1, 'Bentang Pustaka', 2006),
    (3, 'Edensor', 1, 'Bentang Pustaka', 2007),
    (4, 'Maryamah Karpov', 1, 'Bentang Pustaka', 2008),
    (5, 'Cinta di Dalam Gelas', 2, 'Erlangga', 2005),
    (6, 'Ayat-Ayat Cinta', 2, 'Republika', 2004),
    (7, 'Lelaki Harimau', 3, 'Gramedia Pustaka Utama', 2014),
    (8, 'Sepotong Senja untuk Pacarku', 4, 'Bentang Pustaka', 2012),
    (9, 'Pulang', 5, 'Gramedia Pustaka Utama', 2015),
    (10, 'Aroma Karsa', 5, 'Gramedia Pustaka Utama', 2017);

Tabel penulis

mysqlCopy codeINSERT INTO penulis (id, nama)
VALUES
    (1, 'Andrea Hirata'),
    (2, 'Tere Liye'),
    (3, 'Eka Kurniawan'),
    (4, 'Dewi Lestari'),
    (5, 'Leila S. Chudori');

Tabel kategori

INSERT INTO kategori (id, nama)
VALUES
    (1, 'Novel'),
    (2, 'Cerpen'),
    (3, 'Puisi'),
    (4, 'Drama'),
    (5, 'Biografi');

Tabel buku_kategori

mysqlCopy codeINSERT INTO buku_kategori (id_buku, id_kategori)
VALUES
    (1, 1),
    (1, 2),
    (2, 1),
    (2, 2),
    (3, 1),
    (3, 2),
    (4, 1),
    (4, 2),
    (5, 1),
    (6, 1),
    (7, 1),
    (7, 4),
    (8, 2),
    (8, 4),
    (9, 1),
    (10, 3);

Tabel peminjaman

mysqlCopy codeINSERT INTO peminjaman (id, id_buku, id_anggota, tanggal_pinjam, tanggal_kembali)
VALUES
    (1, 1, 1, '2022-01-01', '2022-01-08'),
    (2, 2, 2, '2022-01-02', '2022-01-09'),
    (3, 3, 3, '2022-01-03', '2022-01-10'),
    (4, 4, 4, '2022-01-04', '2022-01-11');

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *