• Tidak ada hasil yang ditemukan

M EN GUPD ATE D ATA D ALAM D ATABASE M YSQL

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

Pernyat aan ut am a yang digunakan unt uk m em odifikasi dat a dalam dat abase MySQL adalah pernyat aan UPDATE. Sint aksnya adalah sebagai berikut :

<pernyataan update>::=

UPDATE [LOW_PRIORITY] [IGNORE] <single table update> | <joined table update> <single table update>::=

<nama tabel>

SET <nama kolom>=<ekspresi> [{, <nama kolom>=<ekspresi>}...] [WHERE <definisi where>]

[ORDER BY <nama kolom> [ASC | DESC] [{, <nama kolom> [ASC | DESC]}...]] [LIMIT <jumlah baris>]

<joined table update>::=

<nama tabel> [{, <nama tabel>}...]

SET <nama kolom>=<ekspresi> [{, <nama kolom>=<ekspresi>}...] [WHERE <definisi where>]

Baris pert am a dari sint aks berisi kat a kunci perint ah UPDATE bersam aan dengan opsi LOW_PRI ORI TY dan I GNORE, keduanya sepert i yang Anda lihat pada pernyat aan I NSERT. Anda sebaiknya m enggunakan opsi LOW_PRI ORI TY ket ika Anda ingin m enunda eksekusi pernyat aan UPDATE sam pai t idak ada lagi koneksi klien yang sedang m engakses t abel t arget . Anda sebaiknya m enggunakan opsi I GNORE j ika Anda ingin updat e dilanj ut kan m eskipun dit em ukan nilai duplikat pada prim ary key dan indeks unique. ( Baris dengan nilai duplikat t idak diupdat e) .

M EN GUPD ATE TABEL TUN GGAL (SI N GLE TABLE)

Unt uk m engupdat e t abel t unggal dalam dat abase MySQL, dim ana t idak ada kondisi j oin yang diam bil ke dalam akun unt uk m elakukan peng- updat e- an, Anda sebaiknya m em buat pernyat aan UPDATE yang m enggunakan alt ernat if <single t able updat e> , dim ana dit unj ukkan sint aks berikut ini :

<single table update>::= <nama tabel>

SET <nama kolom>=<ekspresi> [{, <nama kolom>=<ekspresi>}...] [WHERE <definisi where>]

[ORDER BY <nama kolom> [ASC | DESC] [{, <nama kolom> [ASC | DESC]}...]] [LIMIT <jumlah baris>]

Sebagaim ana t erlihat pada sint aks, Anda harus m enspesifikasikan nam a t abel dan klausa SET. Klausa SET m eliput i, m inim al, sebuah nam a kolom dan ekspresi yang berhubungan, dihubungkan dengan t anda sam a dengan ( = ) . I nform asi m engeset sebuah nilai unt uk sat u kolom t ert ent u. Jika Anda ingin m enyert akan lebih dari sat u kolom , Anda harus m em isahkan pasangan kolom / ekspresi dengan kom a.

Con t oh .

Mem buat t abel Buku. CREATE TABLE Buku (

IDBuku SMALLINT NOT NULL PRIMARY KEY, NamaBuku VARCHAR(40) NOT NULL,

Stok SMALLINT NOT NULL )

ENGINE=INNODB;

Mem asukkan dat a ke dalam t abel Buku. INSERT INTO Buku

VALUES (101, ‘Noncomformity: Writing on Writing’, 12), (102, ‘The Shipping News’, 17),

(103, ‘Hell\’s Angels’, 23),

(104, ‘Letters to a Young Poet’, 32), (105, ‘A Confederacy of Dunces’, 6), (106, ‘One Hundred Years of Solitude’, 28);

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

33

Tabel ber ikut adalah t abel Pem belian, yang m enyert akan foreign key yang m ereferensi ke t abel Buku.

CREATE TABLE Pembelian (

IDPembelian SMALLINT NOT NULL PRIMARY KEY, IDBuku SMALLINT NOT NULL,

Kuantitas TINYINT (40) NOT NULL DEFAULT 1, TanggalBeli TIMESTAMP,

FOREIGN KEY (IDBuku) REFERENCES Buku (IDBuku) )

ENGINE=INNODB;

Mem asukkan dat a ke dalam t abel Pem belian. INSERT INTO Pembelian

VALUES (1001, 103, 1, ‘2006-10-12 12:30:00’), (1002, 101, 1, ‘2006-10-12 12:31:00’), (1003, 103, 2, ‘2006-10-12 12:34:00’), (1004, 104, 3, ‘2006-10-12 12:36:00’), (1005, 102, 1, ‘2006-10-12 12:41:00’), (1006, 103, 2, ‘2006-10-12 12:59:00’), (1007, 101, 1, ‘2006-10-12 13:01:00’), (1008, 103, 1, ‘2006-10-12 13:02:00’), (1009, 102, 4, ‘2006-10-12 13:22:00’), (1010, 101, 2, ‘2006-10-12 13:30:00’), (1011, 103, 1, ‘2006-10-12 13:32:00’), (1012, 105, 1, ‘2006-10-12 13:40:00’), (1013, 106, 2, ‘2006-10-12 13:44:00’), (1014, 103, 1, ‘2006-10-12 14:01:00’), (1015, 106, 1, ‘2006-10-12 14:05:00’), (1016, 104, 2, ‘2006-10-12 14:28:00’), (1017, 105, 1, ‘2006-10-12 14:31:00’), (1018, 102, 1, ‘2006-10-12 14:32:00’), (1019, 106, 3, ‘2006-10-12 14:49:00’), (1020, 103, 1, ‘2006-10-12 14:51:00’);

Perhat ikan bahw a nilai- nilai yang dit am bahkan ke kolom I DBuku m eliput i hanya nilai- nilai y ang t erdapat dalam k olom I DBuku pada t abel Buku. Kolom I DBuku di Pem belian m erupakan kolom yang m ereferensi/ m engkait , dan kolom I DBuku di t abel Buku m erupakan kolom yang direferensi/ dikait .

Set elah m em buat t abel dan m enam bahkan dat a pada t abel- t abel t ersebut , Anda dapat m em odifikasi dat anya. Cont oh:

UPDATE Buku SET Stok=Stok+10;

Dalam pernyat aan ini karena t idak kondisi khusus yang harus dipenuhi, berart i akan m engubah seluruh nilai dari kolom St ok dit am bahkan dengan 10.

Sedangkan unt uk m em odifikasi dat a dengan m em nuhi kondisi t ert ent u, Anda bisa m enam bahkannya dengan klausa WHERE.

UPDATE Pembelian SET Kuantitas=2

WHERE IDPembelian=1001;

Dalam per nyat aan di at as berart i akan m engupdat e kolom Kuant it as m enj adi 2 dim ana I DPem belian = 1001.

UPDATE Pembelian SET Kuantitas=Kuantitas+1 WHERE IDPembelian=1001;

Sedangkan dalam pernyat aan di at as, baris dengan I DPem belian = 1001, nilai dari kuant it asnya yang lam a akan dit am bahkan dengan 1.

UPDATE LOW_PRIORITY Buku SET Stok=Stok+10

WHERE Stok<30;

Set iap rekod/ baris pada t abel Buku yang m em punyai St ok lebih kecil dar i 30 akan dit am bah dengan 10.

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

34

UPDATE Pembelian SET Kuantitas=Kuantitas+1 WHERE IDBuku=103

ORDER BY TanggalBeli DESC LIMIT 5;

Mengupdat e t abel Pem belian yang m em punyai I DBuku = 103, dim ana nilai Kuant it as dit am bah 1. Diurut kan berdasarkan TanggalPem belian secara DESCENDI NG pada 5 baris pert am a.

M EN GUPD ATE TABEL JOI N (JOI N ED TABLE)

Dalam cont oh pernyat aan UPDATE sebelum nya Anda t elah m elihat bahw a updat e hanya dilakukan pada t abel- t abel secara individual t anpa m enj oinkannya dengan t abel lain. Meskipun t abel- t abel berisi foreign key yang direferensi/ dikait oeh t abel lain, Anda t idak m enspesifikasikan kondisi no j oin dalam pernyat aan UPDATE.

Sint aksnya adalah sebagai berikut : <joined table update>::=

<nama tabel> [{, <nama tabel>}...]

SET <nama kolom>=<ekspresi> [{, <nama kolom>=<ekspresi>}...] [WHERE <definisi where>]

Cont oh.

UPDATE Buku, Pembelian

SET Buku.Stok = Buku.Stok - Pembelian.Kuantitas WHERE Buku.IDBuku= Pembelian.IDBuku

AND Pembelian.IDPembelian=1002;

Dalam pernyat aan di at as berart i, m engupdat e t abel Buku, dim ana kolom St ok y ang baru m erupakan hasil pengurangan kolom St ok yang lam a dengan kolom Kuant it as pada t abel Pem belian dengan syarat I DBuku di t abel Buku sam a dengan I DBuku di t abel Pem belian dan I DPem belian di t abel Pem belian = 1002.

Lihat lah pada pernyat aan di at as. Dalam klausa UPDATE disert akan nam a dari k edua t abel yait u Buku dan Pem belian. Meskipun Anda hanya m elakukan peng- updat e- an pada t abel Buku, Anda harus m enspesifikasik an kedua t abel karena keduanya Anda sert akan dalam t abel y ang saling j oin (j oined t ables) . Perhat ikan bahwa nam a- nam a t abel dipisahkan oleh kom a.

Klausa SET pada pernyat aan ini m enggunakan nam a kolom qualified unt uk m em berikan ekspresi pada kolom St ok. Sebuah nam a kolom qualified adalah didahului oleh nam a t abel dan sebuah t anda t it ik. Hal ini m engij inkan MySQL ( dan Anda) unt uk m em bedakan ant ara kolom - kolom pada t abel yang berbeda- beda yang m em punyai nam a yang sam a. Misal, kolom pert am a ( Buku.St ok) m enunj uk pada kolom St ok pada t abel Buku.

Berikut ini cont oh m engupdat e t abel j oin dengan banyak nilai sekaligus: UPDATE Buku, Pembelian

SET Pembelian.Kuantitas = Pembelian.Kuantitas + 2, Buku.Stok= Buku.Stok - 2

WHERE Buku.IDBuku= Pembelian. IDBuku AND Pembelian.IDPembelian = 1002;

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

35

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

Dokumen terkait