• Tidak ada hasil yang ditemukan

M EM ASUKKAN D ATA D ALAM D ATABASE M YSQL

Dalam dokumen Praktikum sistem basis data (Halaman 85-89)

Sebelum Anda dapat m elakukan hal apapun dengan dat a dalam dat abase, dat a harus sudah ada. Unt uk alasan inilah, pernyat aan SQL yang perlu Anda pelaj ari adalah m em asukkan dat a dalam dat abase. Ket ika Anda m enam bahkan dat a dalam dat abase, sebenarnya Anda m enam bahkannya ke t abel- t abel secara individu dalam dat abase t ersebut .

M EN GGUN AKAN PERN YATAAN I N SERT UN TUK M EN AM BAH KAN D ATA

Pernyat aan I NSERT m erupakan m et ode yang paling um um digunakan unt uk m em asukkan dat a secara langsung ke dalam sebuah t abel.

Berikut ini adalah sint aks dalam pernyat aan I NSERT :

<p e rnya ta a n inse rt>::=

INSERT [LO W_PRIO RITY | DELAYED] [IG NO RE] [INTO ] {<o p si nila i> | <o p si se t> | <o p si se le c t>}

< o p si nila i >::=

<na m a ta b e l> [(<na m a ko lo m > [{, < na m a ko lo m >}...])] VALUES ({<e ksp re si> | DEFAULT} [{, {< e ksp re si > | DEFAULT}}...]) [{, ({<e ksp re si > | DEFAULT} [{, {< e ksp re si > | DEFAULT}}...])}...] < o p si se t >::= < na m a ta b e l > SET < na m a ko lo m >={< e ksp re si > | DEFAULT} [{, < na m a ko lo m >={< e ksp re si > | DEFAULT}}...] < o p si se le c t >::= < na m a ta b e l > [(<na m a ko lo m > [{, < na m a ko lo m >}...])] <p e rnya ta a n se le c t>

Anda dapat m enggunakan pernyat aan I NSERT unt uk m enam bahkan dat a ke t abel m anapun dalam dat abase MySQL. Ket ika Anda m enam bahkan dat a Anda harus m elakukannya dari baris ke baris, Anda harus m em asukkannya dengan t epat sat unilai per kolom . Jika Anda m enspesifikasikan nilai yang lebih sedikit dari j um lah kolom yang ada, nilai default at au null akan dim asukkan ke kolom yang nilainya t idak dispesifkasikan.

Sekarang perhat ikan baris pert am a sint aks pada pernyat aan I NSERT:

INSERT [LO W_PRIO RITY | DELAYED] [IG NO RE] [INTO ]

Sebagaim ana Anda lihat , pada bars pert am a m em erlukan kat a kunci I NSERT dan sej um lah opsi- opsi. Opsi pert am a adalah LOW_PRI ORI TY dan DELAYED. Anda dapat m enyert akan salah sat u dari opsi ini, t idak bisa keduanya. Jika Anda m enspesifikasikan LOW_PRI ORI TY, pernyat aan t idak akan dieksekusi sam pai t idak ada koneksi klien yang sedang m engakses t abel yang sam a dim ana pernyat aan I NSERT j uga sedang m engakses. Hal ini dapat m enyebabkan penundaan yang lam a sem ent ara Anda m enunggu pernyat aan t ersebut dieksekusi. Pada saat it u, Anda t idak dapat m elakukan aksi apapun. Jika Anda m enspesifikasikan DELAYED, eksekusi j uga akan dit unda, nam un Anda dapat m elanj ut kan unt uk m elakukan aksi lain sem ent ara pernyat aan I NSERT berada dalam ant rian. Opsi LOW_PRI ORI TY dan

Diktat Laboratorium Sistem Basis Data – MySQL

De p a rtm e nt o f Info rm a tic s Eng ine e ring – UNIKO M G a lih He rm a w a n, S.Ko m

29

DELAYED dapat digunakan hanya unt uk m em asukkan dat a t erhadap t abel MyI SAM dan I SAM.

Opsi berikut yang dapat Anda t ent ukan adalah klausa I GNORE. Opsi ini dit erapkan t erut am a pada pernyat aan I NSERT yang m enam bahkan banyak baris ke suat u t abel. Jka Anda m enspesifikasikan I GNORE, baris- baris yang dit am bahkan akan diacuhkan j ika m ereka berisi sebuah nilai yang t erduplikasi t erhadap nilai dari prim ary key at au index unik. Pernyat aan I NSERT m elanj ut kan unt uk m enam bahkan baris- baris yang t ersisa. Jika Anda t idak m enspesifikasikan I GNORE, nilai- nilai yang t erduplikasi akan m em bat alk an proses penam bahan dat a.

Menggunakan alt ernat if < opsi nilai> pada pernyat aan I NSERT

Alt ernat if < opsi nilai> pada pernyat aan I NSERT m engij inkan Anda unt uk m enam bahkan sat u at au lebih baris ke suat u t abel. Sint aksnya adalah sebagai berikut :

<opsi nilai>::=

<nama tabel> [(<nama kolom> [{, < nama kolom >}...])]

VALUES ({<ekspresi> | DEFAULT} [{, {<ekspresi> | DEFAULT}}...]) [{, ({<ekspresi> | DEFAULT} [{, {<ekspresi> | DEFAULT}}...])}...]

Sebagaim ana Anda lihat dalam sint aks, Anda harus m enyediakan nam a t abel dan sebuah klausa VALUES. Anda j uga m em punyai pilihan unt uk m enspesifikasikan sat u at au lebih kolom set elah nam a t abel. Jika Anda m enspesifikasikan nam a kolom , m ereka harus dit ut up dalam t anda kurung dan dipisahkan oleh kom a.

Sekali Anda m enspesifikasikan nam a t abel dan kolom opsional, Anda harus m enspesifikasikan klausa VALUES. Klausa harus m enyert akan m inim al sat u nilai, dim ana direpresent asikan oleh < ekspresi> at au kat a kunci DEFAULT. Jika Anda m enyert akan nam a kolom set elah nam a kolom , klausa VALUES harus m enyert akan sebuah nilai unt uk set iap kolom , sesuai dengan daft ar kolom yang ada. Jika Anda t idak m enent ukan nam a kolom , Anda harus m enyediakan sebuah nilai unt uk set iap kolom dalam t abel, sesuai dengan daft ar kolom yang t erdefinisi dalam t abel.

Kit a akan m em buat pernyat aan pem asukan dat a berdasarkan definisi t abel berikut : CREATE TABLE CD

(

IDCD SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, NamaCD VARCHAR(50) NOT NULL,

Copyright YEAR,

JumlahDisk TINYINT UNSIGNED NOT NULL DEFAULT 1, JumlahStok TINYINT UNSIGNED,

JumlahCadangan TINYINT UNSIGNED NOT NULL, JumlahTersedia TINYINT UNSIGNED NOT NULL, TipeCD VARCHAR(20),

WaktuPenambahan TIMESTAMP );

Jika Anda lupa dengan penj elasan elem en- elem en dalam definisi t abel silakan dibaca m odul pada pert em uan sebelum nya.

Tabel dalam definisi ini, dim ana bernam a CD, m enyim pan inform asi m engenai com pact disks. Anggap saj a Anda ingin m enggunakan pernyat aan I NSERT unt uk m enam bah inform asi m engenai CD Anda yang bernam a Surgam u – Koleksi Ungu. Anda dapat m enset pernyat aan Anda dalam berbagai cara. Pert am a adalah m enent ukan nilai dari set iap kolom , t anpa m enspesifikasikan nam a dari kolom , cont oh:

INSERT INTO CD

VALUES (NULL, ‘Surgamu – Koleksi Ungu’,2006, 2, 10, 3, JumlahStok - JumlahCadangan, ‘Slow’, NULL);

Dalam pernyat aan ini, baris pert am a berisi kat a kunci perint ah I NSERT, opsional kat a kunci I NTO, dan nam a t abel ( CD) . Klausa VALUES m eliput i sebuah nilai unt uk set iap kolom , dim asukkan secara berurut dim ana sesuai dengan urut an penam pakan kolom dalam definisi t abel. Nilai- nilai dit ut up dalam t anda kurung dan dipisahkan oleh kom a.

Diktat Laboratorium Sistem Basis Data – MySQL

De p a rtm e nt o f Info rm a tic s Eng ine e ring – UNIKO M G a lih He rm a w a n, S.Ko m

30

Kolom pert am a diisi dengan NULL. Nilai ini digunakan pada kolom I DCD, dim ana dikonfigurasi dengan opsi AUTO_I NCREMENT dan m erupakan prim ary key. Dengan m enspesifikasikan NULL, nilai inkrem ent asi berikut nya secara ot om at is dit am bahkan pada kolom t ersebut ket ika Anda m enam bahkan baris ini ke t abel. Karena ini adalah baris pert am a yang dit am bahkan ke t abel, nilai 1 dim asukkan ke kolom I DCD.

Nilai berikut dalam klausa VALUES adalah m enunj uk pada kolom Nam aCD. Karena nilainya st ring, dia dit ut up dengan t anda kut ip sat u pada kedua sisinya.

Cat at an, unt uk m enam bahkan karakt er t ert ent u dalam st ring , Anda harus m em akai t anda backslash. Misal:

ƒ St ring = ’Do’a I bu’

Anda harus m enuliskan ’Do\ ’a I bu’

ƒ Begit u j uga unt uk t anda kut ip ganda ( ” ) , backslash ( \ ) , persen ( % ) , dan underscore ( _) .

Em pat nilai berikut yang dit ent ukan dalam klausa VALUES adalah dat a t anggal dan num erik yang m enunj uk kolom - kolom dalam definisi t abel ( Copyright = 2006, Jum lahDisk = 2, Jum lahSt ok = 10, dan Jum lahCadangan = 3) .

Nilai yang diberikan unt uk kolom Jum lahTersedia ( Jum lahSt ok- Jum lahCadangan) adalah m erupakan ekspresi yang m enggunakan dua nam a kolom dan t anda operat or arit m at ika m inus ( - ) unt uk m engurangi nilai sebanyak pada kolom Jum lahCadangan dari nilai pada kolom Jum lahSt ok unt uk m em peroleh j um lah t ot al CD yang t ersedia unt uk dij ual. Dalam hal ini t ot alnya adalah 7.

Nilai ber ikut nya adalah Slow , dim ana dim asukkan pada kolom TipeCD. Nilai t er akhir adalah NULL, dim ana digunakan unt uk kolom Wakt uPenam bahan. Kolom dikonfigurasi sebagai kolom TI MESTAMP, yang berart i bahw a w akt u dan t anggal sekarang dit am bahkan secara ot om at is pada kolom t ersebut .

Cara lain unt uk m enam bahkan t anggal sekarang adalah dengan m enggunakan fungsi NOW( ) , daripada NULL. Jika hanya t anggal saj a, Anda dapat m enggunakan fungsi CURDATE( ) at au CURTI ME( ) unt uk w akt u.

Berikut ini j uga cont oh unt uk m enam bahkan dat a ke t abel CD:

INSERT LOW_PRIORITY INTO CD (NamaCD, Copyright, JumlahDisk, JumlahStok, JumlahCadangan, JumlahTersedia, TipeCD)

VALUES (‘Opick – Semesta Bertasbih’, 2006, DEFAULT, 13, 2, JumlahStok - JumlahCadangan, ‘Nasyid’);

Dalam pernyat aan ini, kolom I DCD dan Wakt uPenam bahan t idak dispesifikasikan. Karena I DCD m erupakan kolom AUTO_I NCREMENT, sebuah nilai inkr em ent asi secara ot om at is dit am bahkan ke kolom t ersebut . Dan karena kolom Wakt uPenam bahan m erupakan kolom TI MESTAMP, w akt u dan t anggal sekarang dim asukkan ke kolom nya.

Unt uk kolom Jum lahDisk, DEFAULT digunakan. I ni m enandakan bahw a nilai default harus dim asukkan ke kolom . Dalam hal ini, nilai 1. Sebaliknya, nilai yang t ert era sam a dengan nilai yang Anda lihat sebelum nya. Dalam cont oh t erakhir ini t erdapat opsi LOW_PRI ORI TY dalam klausa I NSERT. Sehingga, pernyat aan ini t idak diproses dan klien akan t erus m enunggu sam pai sem ua koneksi klien t elah selesai m engakses t abel yang dit uj u.

Sekarang kit a akan m enam pilkan sebagian dat a dari t abel CD, m isal I DCD, Nam aCD, dan Jum lahDisk, hasilnya :

+---+---+--- + | IDC D | Na m a C D | Jum la hDisk | +---+---+--- + | 1 | Surgamu – Koleksi Ungu | 2 | | 2 | Opick – Semesta Bertasbih | 1 | +---+---+--- + 2 ro w s in se t (0.00 se c )

Cont oh lain yang lebih sederhana: INSERT INTO CD (NamaCD)

Diktat Laboratorium Sistem Basis Data – MySQL

De p a rtm e nt o f Info rm a tic s Eng ine e ring – UNIKO M G a lih He rm a w a n, S.Ko m

31

Sedangkan berikut ini cont oh unt uk m enam bahkan banyak baris sekaligus: INSERT INTO CD (NamaCD, Copyright, JumlahDisk,

JumlahStok, JumlahCadangan, JumlahTersedia, TipeCD) VALUES (‘Slank 99’, 1999, 1, 9, 0,

JumlahStok-JumlahCadangan, ‘Blues’), (‘Metallica The Unforgiven’, 1990, 1, 14, 2, JumlahStok-JumlahCadangan, ‘Metal’), (‘Boomerang – Bawalah Aku’, 1988, 1, 6, 1, JumlahStok-JumlahCadangan, ‘Rock’);

M EN GGUN AKAN PERN YATAAN REPLACE UN TUK M EN AM BAH KAN D ATA

Selain pernyat aan I NSERT unt uk m enam bahkan dat a ke dalam t abel, Anda j uga dapat m enggunakan pernyat aan REPLACE. Perbedaan dengan I NSERT adalah bagaim ana nilai dalam kolom prim ary key dan indeks unique diperlakukan. Dalam pernyat aan I NSERT, j ika Anda m encoba m em asukkan baris yang berisi nilai indeks unique at au prim ary key yang sudah t erdapat dalam t abel, Anda t idak bisa m enam bahkannya dalam baris t ersebut . Pernyat an REPLACE akan m enghapus baris lam a dan m enam bahkan baris yang baru.

Sint aksnya adalah:

Sedangkan berikut ini cont oh unt uk m enam bahkan banyak baris sekaligus: <pernyataan replace>::=

REPLACE [LOW_PRIORITY | DELAYED] [INTO] {< opsi nilai > | < opsi set > | < opsi select > <opsi nilai>::=

< nama tabel > [(<nama kolom > [{, < nama kolom >}...])]

VALUES ({<ekspresi > | DEFAULT} [{, {< ekspresi > | DEFAULT}}...]) [{, ({<ekspresi > | DEFAULT} [{, {< ekspresi > | DEFAULT}}...])}...] <opsi set>::=

<nama tabel>

SET < nama kolom >={<ekspresi> | DEFAULT} [{, < nama kolom >={<ekspresi> | DEFAULT}}...] <opsi select>::=

<nama tabel> [(<nama kolom> [{, < nama kolom >}...])] <pernyataan select>

Cont oh.

Terdapat definisi t abel sebagai berikut : CREATE TABLE Inventori

(

IDProduk SMALLINT UNSIGNED NOT NULL PRIMARY KEY, JumlahStok SMALLINT UNSIGNED NOT NULL,

JumlahPemesanan SMALLINT UNSIGNED NOT NULL, TanggalUpdate DATE

);

Karakt erist ik ut am a dalam t abel I nvent ori adalah kolom I DProduk dikonfigurasi sebagai prim ary key. Dia t idak m enggunakan opsi AUTO_I NCREMENT, sehingga Anda harus m enyediakan sebuah nilai unt uk kolom ini. Ber ikut ini cont oh pernyat aan REPLACE unt uk m enam bahkan dat a pada set iap kolom dalam t abel I nvent ori:

REPLACE LOW_PRIORITY INTO Inventori VALUES (101, 20, 25, ‘2006-10-14’);

Anda dapat m enam pilkan nilai- nilai yang t elah Anda t am bahkan dalam t abel I nvent ori dengan m engeksekusi perint ah SELECT berikut :

SELECT * FROM Inventori

Misalkan Anda ingin m enam bahkan dat a baru sebagai berikut : REPLACE LOW_PRIORITY INTO Inventori

Diktat Laboratorium Sistem Basis Data – MySQL

De p a rtm e nt o f Info rm a tic s Eng ine e ring – UNIKO M G a lih He rm a w a n, S.Ko m

32

Dalam pernyat aan t ersebut j uga disert akan nilai 101. Hasilnya, baris yang asli dengan nilai I DProduk t ersebut akan dihapus dan baris baru akan dit am bahkan.

Dalam dokumen Praktikum sistem basis data (Halaman 85-89)

Dokumen terkait