Kursus
Dalam SQL, secara umum ada tiga jenis perintah -
-
DDL - singkatan dari Data Definition Language yang mencakup perintah SQL untuk mendefinisikan basis data, termasuk membuat tabel, memberikan spesifikasi, memodifikasi tabel, dan sebagainya. Contoh DDL meliputi
CREATE,DROP,ALTER, dll. Perubahan yang disebabkan oleh perintah DDL tidak dapat dibatalkan (rollback). -
DML - singkatan dari Data Manipulation Language yang memungkinkan Anda menjalankan kueri select, insert, update, dan delete. Perubahan yang disebabkan oleh perintah DML dapat dibatalkan. Contoh -
SELECT,INSERT,UPDATE, danDELETE. -
DCL - singkatan dari Data Control Language yang memungkinkan Anda menentukan hak akses, izin, dan kontrol lain dari sistem basis data Anda.
Dalam tutorial ini, Anda akan melihat penggunaan pernyataan ALTER TABLE yang bersifat DDL. Berikut adalah materi yang akan dibahas dalam tutorial ini -
- Kebutuhan pernyataan
ALTER TABLE - Membuat tabel di basis data PostgreSQL
- Menjalankan berbagai pernyataan
ALTER TABLEdi PostgreSQL
Catatan: Tutorial ini tidak akan mengajarkan cara membuat tabel, menyisipkan data ke tabel, atau menyeleksi data dari tabel di PostgreSQL. Jika Anda ingin penyegaran materi tersebut, Anda dapat melihat artikel ini.
Kebutuhan Pernyataan ALTER TABLE
Spesifikasi sebuah basis data dapat berubah seiring waktu. Misalnya, Anda mungkin perlu menambahkan kolom ke tabel tertentu, atau perlu menambahkan kunci utama lain ke sebuah tabel. Anda juga mungkin perlu mengubah tipe data dari kolom tertentu dalam tabel. Anda mungkin tidak bisa begitu saja menghapus tabel dan membuatnya kembali dari awal. Pernyataan Alter Table memungkinkan Anda melakukan semua ini dengan sangat mulus. Dengan Alter Table, Anda dapat -
- Menambahkan, memodifikasi, atau menghapus kolom
- Menambahkan atau menghapus constraint
Anda juga dapat mengaktifkan/menonaktifkan constraint, tetapi hal itu tidak dibahas dalam tutorial ini.
Anda akan melihat masing-masing use case di atas dalam tutorial ini, tetapi sebelum itu, Anda memerlukan sebuah tabel di PostgreSQL agar dapat memulai. Pada bagian berikutnya, Anda akan membuat tabel sederhana.
Membuat tabel di basis data PostgreSQL
Anda akan membuat tabel bernama student_details di PostgreSQL (menggunakan utilitas pgAdmin) dengan kolom dan tipe data berikut -
- student_id (integer)
- student_full_name (character)
- student_year (integer)
Anda akan mulai dengan tabel ini yang hanya terdiri dari tiga kolom. Nanti, seiring Anda mengikuti tutorial, Anda akan menambahkan lebih banyak kolom ke tabel ini dan akan mengubah tabel dengan berbagai cara. Kueri create berikut akan membuat tabel sesuai spesifikasi di atas -
CREATE TABLE student_details(
student_id SERIAL,
student_full_name VARCHAR (50),
student_year VARCHAR (100)
);
Mari sisipkan beberapa record ke tabel ini juga -
INSERT INTO student_details(student_full_name, student_year) VALUES('John Doe','1st');INSERT INTO student_details(student_full_name, student_year) VALUES('Chris Villa','3rd');
Karena tipe data student_id disetel ke SERIAL, PostgreSQL akan secara otomatis menambah nilai kolom dan tipe data tersebut ditafsirkan sebagai integer secara default oleh PostgreSQL.
Tabel student_details seharusnya terlihat seperti ini -

Sekarang Anda sudah memiliki tabel di PostgreSQL. Mari kita lihat penerapan berbeda dari Alter Table pada bagian berikutnya.
Menjalankan berbagai pernyataan ALTER TABLE di PostgreSQL
Pada bagian ini, Anda akan melihat penggunaan pernyataan Alter Table dalam dua cara berikut seperti disebutkan di atas -
- Menambahkan, memodifikasi, dan menghapus kolom
- Menambahkan dan menghapus constraint
Menambahkan, memodifikasi, atau menghapus kolom
Mulailah dengan menambahkan satu kolom lagi bernama student_grade (bertipe character) ke tabel -
ALTER TABLE student_details ADD student_grade VARCHAR(5);
Sekarang, tabel seharusnya seperti berikut -

Perhatikan bahwa untuk entri yang Anda masukkan, nilainya null pada kolom student_grade. Ini secara implisit dilakukan oleh sebagian besar RDBMS. Namun, Anda selalu dapat menjalankan kueri update untuk memperbarui nilainya. Sekarang mari lihat cara memodifikasi kolom menggunakan Alter Table. Anda akan mengubah ukuran maksimum yang diizinkan untuk kolom student_year dari 100 menjadi 10 karena mengalokasikan terlalu banyak ruang untuk hanya tiga karakter (student_year bisa 1st, 2nd, atau 3rd) tidaklah praktis.
ALTER TABLE student_details ALTER COLUMN student_year TYPE VARCHAR(10);
Anda dapat melihat hasilnya pada gambar berikut -

Anda juga dapat mengganti nama kolom. Mari lihat caranya -
ALTER TABLE student_details RENAME student_id TO student_roll;
Kueri di atas mengganti nama kolom student_id menjadi student_roll. Anda juga dapat memverifikasinya menggunakan kueri select, dan hasil Anda seharusnya mirip dengan gambar berikut -

Sekarang mari lihat bagaimana Anda dapat menghapus kolom dari sebuah tabel -
ALTER TABLE student_details DROP COLUMN student_year;
Kueri tersebut menghapus kolom student_year dan setelah dieksekusi, tabel akan menjadi seperti -

Perhatikan bahwa jika kolom yang Anda hapus direferensikan oleh tabel lain, Anda mungkin mendapatkan error pelanggaran integritas referensial.
Sekarang Anda akan melihat cara menambahkan dan menghapus constraint pada sebuah tabel.
Menambahkan dan menghapus constraint.
Tabel student_details belum memiliki kunci utama. Kunci utama adalah gabungan constraint not null dan unique. Mari tentukan kolom student_roll (yang telah diubah dari student_id) sebagai kunci utama dari student_details -
ALTER TABLE student_details ADD PRIMARY KEY (student_roll);
Anda juga dapat menambahkan constraint lain, misalnya, Anda dapat menambahkan constraint check pada kolom student_grade sehingga nilainya selalu A, B, atau C.
ALTER TABLE student_details ADD CONSTRAINT year_check CHECK (student_grade IN ('A', 'B', 'C'));
year_check adalah placeholder untuk constraint yang Anda tambahkan ke tabel. Sekarang jika Anda mencoba menyisipkan entri berikut ke tabel, Anda akan mendapatkan error -
INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd');
Error-nya terlihat seperti berikut -

Menghapus constraint juga serupa. Anda perlu menentukan nama constraint yang ingin dihapus. Mari hapus constraint yang Anda beri nama year_check -
ALTER TABLE student_details DROP CONSTRAINT year_check;
Mari verifikasi. Jika constraint year_check benar-benar dihapus, maka kueri ini INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd'); tidak akan menimbulkan error. Tabel sekarang memuat record tersebut -

Anda juga dapat mencoba constraint check lainnya.
Sekian untuk tutorial ini!
Tutorial ini memperkenalkan Anda pada pernyataan Alter Table untuk secara efektif memodifikasi skema sebuah tabel. Jika Anda ingin meningkatkan keterampilan SQL Anda, Anda mungkin tertarik mengikuti kursus berikut yang ditawarkan oleh DataCamp -
