Landasan Teori
Pengenalan Operasi Dasar
Hasil Praktikum
Pengenalan Operasi Dasar
MENGENAL OPERASI DASAR SQL
1. DDL (Data Definition Language)
DDL merupakan bahasa yang digunakan untuk membuat atau memodifikasi database dan tabel,
1. DDL (Data Definition Language)
DDL merupakan bahasa yang digunakan untuk membuat atau memodifikasi database dan tabel,
Perintah DDL a.l:
a. CREATE Untuk membuat
Syntak :
- membuat database
CREATE DATABASE nama_database
a. CREATE Untuk membuat
Syntak :
- membuat database
CREATE DATABASE nama_database
- membuat tabel
CREATE TABLE nama_tabel ( field1 type_data1 (lebar_data1), field2 type_data2 (lebar_data2)
CREATE TABLE nama_tabel ( field1 type_data1 (lebar_data1), field2 type_data2 (lebar_data2)
- Apabila akan menambahkan konstrain integritas PRIMARY KEY maka syntaknya adalah sbb :
CREATE TABLE nama_tabel ( field1 type_data1 (lebar_data1) PRIMARY KEY, field2 type_data2 (lebar_data2))
CREATE TABLE nama_tabel ( field1 type_data1 (lebar_data1) PRIMARY KEY, field2 type_data2 (lebar_data2))
- Catatan : yang akan dijadikan primary key adalah field1
Misal :CREATE TABLE mahasiswa (nim char(10), nama char(30), jurusan char(2), ipk decimal(4,2))
Misal :CREATE TABLE mahasiswa (nim char(10), nama char(30), jurusan char(2), ipk decimal(4,2))
- Mengatur agar data selalu diisi
Saat menciptakan tabel, pada field ditambah pemodifikasi NOT NULL
Saat menciptakan tabel, pada field ditambah pemodifikasi NOT NULL
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR NOT NULL ,
Jumlah INTEGER,
PRIMARY KEY(kode)
);
Kode CHAR(3) NOT NULL,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR NOT NULL ,
Jumlah INTEGER,
PRIMARY KEY(kode)
);
Maka pada saat mengisi ke tabel Barang field Kode, Nama, Jenis harus
diisi, sedangkan field Jumlah tidak harus diisi (boleh diisi boleh
tidak)
- Menentukan kunci primer
dengan menyertakan PRIMARY KEY.
- Menentukan kunci primer
dengan menyertakan PRIMARY KEY.
- Membuat kunci komposit
Untuk kunci yang tersusun lebih dari satu kolom.
Untuk kunci yang tersusun lebih dari satu kolom.
CREATE TABLE DetilJual (
NoNota CHAR(3),
Kode CHAR(3),
Jumlah INTEGER UNSIGNED,
PRIMARY KEY(NoNota, Kode));
NoNota CHAR(3),
Kode CHAR(3),
Jumlah INTEGER UNSIGNED,
PRIMARY KEY(NoNota, Kode));
Ctt: tipe Integer lebarnya boleh diisi boleh tidak, kalau diisi maksimum 11 karakter, kalau tidak defaulnya 11 karakter.
Tipe Integer Unsigned (bilangan bulat positif)
Tipe Integer Unsigned (bilangan bulat positif)
- Memberi Nilai Bawaan
Jika suatu kolom tidak diberi nilai, bisa dikehendaki untuk dapat diberi nilai bawaan.
Dengan kata kunci DEFAULT.
Jika suatu kolom tidak diberi nilai, bisa dikehendaki untuk dapat diberi nilai bawaan.
Dengan kata kunci DEFAULT.
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL PRIMARY KEY,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR,
Jumlah INTEGER DEFAULT 0);
Kode CHAR(3) NOT NULL PRIMARY KEY,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR,
Jumlah INTEGER DEFAULT 0);
Ctt: kalau jumlah tidak diisi maka akan diisi defaultnya yi 0 atau:
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL PRIMARY KEY,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR DEFAULT MI,
Jumlah INTEGER DEFAULT 0);
Kode CHAR(3) NOT NULL PRIMARY KEY,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR DEFAULT MI,
Jumlah INTEGER DEFAULT 0);
kalau jenis tidak diisi maka akan diisi defaultnya yi MI (minuman)
- Memberi nilai yang unik
Sebenarnya kunci primer juga bertindak sebagi penjamin bahwa nilai suatu kolom akan bersifat unik (tdk kembar). Namun, kadangkala diperlukan agar suatu kolom yang tidak berfungsi sebagai kunci primer juga bersifat unik. Hal ini dapat dilakukan dengan memberikan kekangan UNIQUE pada kolom yang bersangkutan. Contoh
Sebenarnya kunci primer juga bertindak sebagi penjamin bahwa nilai suatu kolom akan bersifat unik (tdk kembar). Namun, kadangkala diperlukan agar suatu kolom yang tidak berfungsi sebagai kunci primer juga bersifat unik. Hal ini dapat dilakukan dengan memberikan kekangan UNIQUE pada kolom yang bersangkutan. Contoh
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL PRIMARY KEY,
Nama VARCHAR(20) NOT NULL UNIQUE,
Jenis CHAR,
Jumlah INTEGER DEFAULT 0);
Kode CHAR(3) NOT NULL PRIMARY KEY,
Nama VARCHAR(20) NOT NULL UNIQUE,
Jenis CHAR,
Jumlah INTEGER DEFAULT 0);
Penambahan kata UNIQUE pada kolom nama menyatakan bahwa tidak boleh ada nama barang yang sama
- Perbedaan PRIMARY KEY dan UNIQUE
PRIMARY KEY UNIQUE
Dalam sebuah tabel, keberadaannya hanya bisa satu kali Sejumlah kolom yang unik bisa didefinisikan
Kolom-kolom yang menjadi kunci primer tidak boleh berisi NULL Kolom yang didefinisikan sebagai kolom unik boleh berisi NULL sepanjang kolom tidak didefinisikan sebagai NOT NULL
b. DROP Untuk menghapus :
Syntak :
- menghapus database
DROP DATABASE nama_database
PRIMARY KEY UNIQUE
Dalam sebuah tabel, keberadaannya hanya bisa satu kali Sejumlah kolom yang unik bisa didefinisikan
Kolom-kolom yang menjadi kunci primer tidak boleh berisi NULL Kolom yang didefinisikan sebagai kolom unik boleh berisi NULL sepanjang kolom tidak didefinisikan sebagai NOT NULL
b. DROP Untuk menghapus :
Syntak :
- menghapus database
DROP DATABASE nama_database
- menghapus tabel
DROP TABLE nama_table
DROP TABLE nama_table
c. ALTER Untuk memodifikasi tabel
Syntak :
- menambah field baru
ALTER TABLE nama_tabel ADD [COLUMN] field_baru type_data(lebar_data)
Misal :
ALTER TABLE mahasiswa ADD [COLUMN] alamat varchar(30)
Syntak :
- menambah field baru
ALTER TABLE nama_tabel ADD [COLUMN] field_baru type_data(lebar_data)
Misal :
ALTER TABLE mahasiswa ADD [COLUMN] alamat varchar(30)
- menghapus field
ALTER TABLE nama_tabel DROP [COLUMN] field_yang_dihapus
Misal :
ALTER TABLE mahasiswa DROP COLUMN alamat atau
ALTER TABLE mahasiswa DROP alamat
ALTER TABLE nama_tabel DROP [COLUMN] field_yang_dihapus
Misal :
ALTER TABLE mahasiswa DROP COLUMN alamat atau
ALTER TABLE mahasiswa DROP alamat
- mengedit / mengganti field
ALTER TABLE nama_tabel CHANGE [COLUMN] field_lama field_baru type_data(lebar_data)
Misal :
ALTER TABLE mahasiswa CHANGE nama nama_mhs char(40)
ALTER TABLE nama_tabel CHANGE [COLUMN] field_lama field_baru type_data(lebar_data)
Misal :
ALTER TABLE mahasiswa CHANGE nama nama_mhs char(40)
- Mengubah struktur tabel
mysql> alter table mhs modify nama varchar(35);
artinya: mengubah tipe field nama menjadi varchar(35)
mysql> alter table mhs modify nama varchar(35);
artinya: mengubah tipe field nama menjadi varchar(35)
2. DML (Data Manipulation Language)
DML merupakan bahasa untuk memanipulasi data (menambah, membaca/menampilkan, mengedit, menghapus)
DML merupakan bahasa untuk memanipulasi data (menambah, membaca/menampilkan, mengedit, menghapus)
Perintah DML a.l :
a. INSERT INTO: Untuk Menambah data baru/record/baris/row
Syntak :
INSERT INTO nama_tabel (field1, field2, …) VALUES (value1, value2,…).
a. INSERT INTO: Untuk Menambah data baru/record/baris/row
Syntak :
INSERT INTO nama_tabel (field1, field2, …) VALUES (value1, value2,…).
Field dan value harus berjumlah sama dan masing-masing berpasangan,
artinya : value1 akan diisikan ke field1, value2 akan diisikan ke
field2,dst.
Misal:
create table mhs (
nim char(9) not null,
nama varchar(30),
kelamin enum(‘L’,'P’),
tglahir date,
jurusan char(2),
ipkum decimal(3,2),
primary key(nim)
);
Misal:
create table mhs (
nim char(9) not null,
nama varchar(30),
kelamin enum(‘L’,'P’),
tglahir date,
jurusan char(2),
ipkum decimal(3,2),
primary key(nim)
);
INSERT INTO mhs (nim,nama,kelamin, tglahir,jurusan,ipkum)VALUES(‘05023562’,’TOTOK’,’L’,’1991-06-11’,’TI’, 2.45);
atau kalau semua field mau diisi, nama fieldnya tidak perlu ditulis
atau kalau semua field mau diisi, nama fieldnya tidak perlu ditulis
mysql> insert into mhs
values(’067890001′, ‘Agus Sugiarto’, ‘L’, ’1990-08-17′, ‘TI’, 2.56);
values(’067890001′, ‘Agus Sugiarto’, ‘L’, ’1990-08-17′, ‘TI’, 2.56);
Cobalah untuk mengisi beberapa record lagi. Ingat! nim tidak boleh sama dan harus diisi (krn not null).
Menambah record tetapi hanya field nim, nama, dan kelamin yang diisi:
mysql> insert into mhs(nim, nama, kelamin) values(’067890003′, ‘Amir Hamzah’, ‘L’);
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR(1) NOT NULL ,
Jumlah INTEGER,
PRIMARY KEY(kode)
);
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’001′, ‘Beras’, ‘M’, 10);
mysql> insert into mhs(nim, nama, kelamin) values(’067890003′, ‘Amir Hamzah’, ‘L’);
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR(1) NOT NULL ,
Jumlah INTEGER,
PRIMARY KEY(kode)
);
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’001′, ‘Beras’, ‘M’, 10);
Jika tidak ingin untuk memasukkan data ke kolom Jenis (Kode,Nama,Jenis: semua NOT NULL)
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’001′, ‘Beras’, NULL, 10);
VALUES (’001′, ‘Beras’, NULL, 10);
perintah ini akan ditolak: krn jenis tdk diisi padahal harus diisi/NOT NULL (tidak boleh kosong)
Tetapi kalau jenis diisi ’null’ pakai tanda petik, perintah ini akan diterima karena dianggap karakter
Tetapi kalau jenis diisi ’null’ pakai tanda petik, perintah ini akan diterima karena dianggap karakter
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’001′, ‘Beras’, ’NULL’, 10);
VALUES (’001′, ‘Beras’, ’NULL’, 10);
Atau perintah di bawah ini, juga akan ditolak: krn nama, jenis tidak diisi (padahal not null : tdk boleh kosong)
INSERT INTO Barang (Kode, Jumlah)
VALUES (’006′, 12);
VALUES (’006′, 12);
Maka yang benar:
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’006′,’Buku’,’alat tulis’,12);
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’006′,’Buku’,’alat tulis’,12);
Tetapi kalau field Jumlah tidak diisi maka field jumlah tidak usah ditulis (krn jumlah boleh kosong/bukan NOT NULL)
INSERT INTO Barang (Kode, Nama, Jenis)
VALUES (’006′,’Buku’,’alat tulis’);
VALUES (’006′,’Buku’,’alat tulis’);
atau ditulis juga bisa
INSERT INTO Barang (Kode, Nama, Jenis,jumlah)
VALUES (’006′,’Buku’,’alat tulis’,null);
VALUES (’006′,’Buku’,’alat tulis’,null);
Dengan menggunakan sebuah INSERT, kita bisa menambahkan sejumlah
baris yang berasal dari hasil qeury. Sekarang dicoba membuat tabel baru
bernama barangbr dengan perintah sbb:
create table barangbr (
Kd_brg char(3),
nama varchar(10),
Jenis char(1);
Kd_brg char(3),
nama varchar(10),
Jenis char(1);
dengan menggunakan INSERT, semua data barang, dengan jenis M (jenis ttt) dapat di transfer ke tabel barangbr. Caranya sbb:
INSERT INTO barangbr (Kd_brg, nama, Jenis) SELECT Kode, nama, Jenis FROM barang WHERE Jenis = ’M’;
b. UPDATE: Untuk MengEdit/mengubah data
Syntak :
UPDATE nama_tabel SET field1 = value1, field2 = value2,…[ WHERE kriteria ]
b. UPDATE: Untuk MengEdit/mengubah data
Syntak :
UPDATE nama_tabel SET field1 = value1, field2 = value2,…[ WHERE kriteria ]
Ctt: WHERE tujuannya untuk mengurangu jumlah record yang ditampilkan, kalau tanpa WHERE semua record akan tampil
Misal :Untuk mengganti nama mahasiwa menjadi ANDI untuk nim 05023562
UPDATE mahasiswa SET nama = “ANDI” WHERE nim=”05023562”
UPDATE mahasiswa SET nama = “ANDI” WHERE nim=”05023562”
mengubah sebuah kolom sebuah baris
UPDATE barang
SET nama = ‘beras delanggu’
WHERE Kode = ‘001’;
UPDATE barang
SET nama = ‘beras delanggu’
WHERE Kode = ‘001’;
Mengubah beberapa kolom
UPDATE barang
SET Nama = ‘beras delanggu’,
Jumlah = 10
WHERE Kode = ‘001’;
UPDATE barang
SET Nama = ‘beras delanggu’,
Jumlah = 10
WHERE Kode = ‘001’;
Mengubah beberapa baris
UPDATE barang
SET Jumlah = 0
WHERE Jenis = ‘M’;
UPDATE barang
SET Jumlah = 0
WHERE Jenis = ‘M’;
atau
UPDATE barang
SET Jumlah = 10
WHERE Kode = ‘001’ OR
Kode = ‘004’;
SET Jumlah = 10
WHERE Kode = ‘001’ OR
Kode = ‘004’;
setelah dieksekusi perintah diatas maka data jumlah milik kode 001 serta 004 berubah menjadi 10
Mengubah semua baris (semua record, field jumlah isinya null semua)
UPDATE barang
SET Jumlah = null;
UPDATE barang
SET Jumlah = null;
Misal dalam tabel barang ditambah atribut/field harga, kita bisa
menaikkan harga 20% dari harga semula, dengan menggunakan bentuk
ekspresi sbb:
UPDATE barang
SET harga = 1.2 * harga;
c. DELETE: Untuk Menghapus Data
Syntak :
DELETE FROM nama_tabel[WHERE Kriteria];
Misal :
- Untuk menghapus data mahasiswa yang mempunyai nim 05023562
DELETE FROM mahasiswa WHERE nim = “05023562”
UPDATE barang
SET harga = 1.2 * harga;
c. DELETE: Untuk Menghapus Data
Syntak :
DELETE FROM nama_tabel[WHERE Kriteria];
Misal :
- Untuk menghapus data mahasiswa yang mempunyai nim 05023562
DELETE FROM mahasiswa WHERE nim = “05023562”
- Menghpus sebuah baris
DELETE FROM Barang WHERE Kode = ‘001’;
DELETE FROM Barang WHERE Kode = ‘001’;
akan menghapus baris yang kolom Kode bernilai ‘001’ (hanya satu karena kunci primer)
- Menghapus beberapa baris
DELETE FROM Barang WHERE Jenis = ‘M’;
DELETE FROM Barang WHERE Jenis = ‘M’;
akan menghapus baris yang kolom Jenis bernilai ‘M’ (bisa lebih dari satu)
- Menghapus semua baris
DELETE FROM Barang;
d. SELECT: untuk membaca atau menampilkan data
SELECT Daftar_field_yang_akan_ditampilkan
FROM nama_tabel
[WHERE kriteria_data_yang_akan_ditampilkan]
DELETE FROM Barang;
d. SELECT: untuk membaca atau menampilkan data
SELECT Daftar_field_yang_akan_ditampilkan
FROM nama_tabel
[WHERE kriteria_data_yang_akan_ditampilkan]
Misal :
- Menampilkan semua kolom semua baris
SELECT * FROM Barang;
- Menampilkan semua kolom semua baris
SELECT * FROM Barang;
- menampilkan nim dan nama semua mahasiswa (menampilkan kolom tertentu)
SELECT nim, nama FROM mahasiswa
SELECT Kode, Nama FROM Barang;
SELECT nim, nama FROM mahasiswa
SELECT Kode, Nama FROM Barang;
- menampilkan nim dan nama mahasiswa jurusan MI
SELECT nim, nama FROM mahasiswa WHERE jurusan = ‘MI’
SELECT nim, nama FROM mahasiswa WHERE jurusan = ‘MI’
- menampilkan semua field dari tabel mahasiswa jurusan MI (memilih baris tertentu)
SELECT * FROM mahasiswa WHERE jurusan = ‘MI’
SELECT * FROM Barang WHERE Jenis=’A’;
SELECT * FROM mahasiswa WHERE jurusan = ‘MI’
SELECT * FROM Barang WHERE Jenis=’A’;
- Kalau hasil yang dikehendaki hanya berupa kemungkinan isi dari
kolom jenis, maka bisa menyisipkan kata DISTINCT pada klausa SELECT
SELECT DISTINCT jenis FROM barang;
SELECT DISTINCT kota FROM pegawai;
SELECT DISTINCT kota FROM pegawai;
mengetahui di kota mana saja pegawai bertempat tinggal (tdk semua record ditampilkan)
- Menampilkan jam sekarang
SELECT time(now());
- Menampilkan waktu sekarang
SELECT now();
SELECT time(now());
- Menampilkan waktu sekarang
SELECT now();
- Menampilkan tahun sekarang
SELECT year(now());
SELECT year(now());
- Menampilkan tanggal sekarang
SELECT date(now());
SELECT date(now());
- Menampilkan hari sekarang
SELECT day(now());
SELECT day(now());
- Operator Relasi
Beberapa operator relasi yang digunakan pada saat akan dibutuhakan suatu kriteria tertentu untuk menampilkan data adalah :
Operator Arti
= Sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
< Kurang dari
<= Kurang dari atau sama dengan
<> Tidak Sama Dengan
LIKE Mengandung suatu kata/huruf tertentu
BETWEEN Rentang antara dua nilai
Beberapa operator relasi yang digunakan pada saat akan dibutuhakan suatu kriteria tertentu untuk menampilkan data adalah :
Operator Arti
= Sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
< Kurang dari
<= Kurang dari atau sama dengan
<> Tidak Sama Dengan
LIKE Mengandung suatu kata/huruf tertentu
BETWEEN Rentang antara dua nilai
- untuk memperoleh barang yang jumlahnya antara 4 dan 11
SELECT * FROM Barang WHERE Jumlah >= 4 AND Jumlah <= 11;
SELECT * FROM Barang WHERE Jumlah >= 4 AND Jumlah <= 11;
dapat diganti dengan perintah
SELECT * FROM Barang WHERE Jumlah BETWEEN 4 AND 11;
SELECT * FROM Barang WHERE Jumlah BETWEEN 4 AND 11;
SELECT nama,stok FROM barang WHERE Jumlah > 10;
SELECT nama,harga FROM barang where not (harga > 6600 AND harga < 3000);
SELECT nama,harga FROM barang where not (harga > 6600 AND harga < 3000);
Operator logika (operator Boolean)
Yang sering digunakan adalah : AND (dan/dua-duanya harus benar), OR (atau/salah satu benar, jawabannya benar) dan NOT (bukan/tidak)
Yang sering digunakan adalah : AND (dan/dua-duanya harus benar), OR (atau/salah satu benar, jawabannya benar) dan NOT (bukan/tidak)
- Menampilkan nim, nama dan alamat mahasiswa jurusan TI dan berjenis kelamin wanita
SELECT nim,nama,alamat FROM mahasiswa WHERE jurusan= ‘TI’ AND jenis_kel = ‘WANITA’;
SELECT * FROM barang WHERE jenis = ‘MI’ AND stok = 10;
SELECT * FROM barang WHERE jenis = ‘MI’ OR stok = 10;
SELECT nama,jenis FROM barang WHERE NOT jenis = ‘MI’;
Operator BETWEEN dan NOT BETWEEN
- untuk memperoleh barang yang jumlahnya antara 4 dan 11
SELECT * FROM Barang WHERE Jumlah BETWEEN 4 AND 11;
- untuk memperoleh barang yang jumlahnya antara 4 dan 11
SELECT * FROM Barang WHERE Jumlah BETWEEN 4 AND 11;
- Menampilkan nim, nama dan IPK mahasiswa yang mempunyai IPK 2,5 sampai 3,2
SELECT nim,nama,ipk FROM mahasiswa WHERE ipk BETWEEN 2.5 AND 3.2
SELECT nim,nama,ipk FROM mahasiswa WHERE ipk BETWEEN 2.5 AND 3.2
- untuk memperoleh barang yang jumlahnya lebih kecil dari 4 dan lebih besar dr 11
SELECT * FROM Barang WHERE Jumlah NOT BETWEEN 4 AND 11;
SELECT * FROM Barang WHERE Jumlah NOT BETWEEN 4 AND 11;
Operator IN dan NOT IN
untuk melakukan pencocokan dengan salah satu yang termasuk didalam daftar
untuk melakukan pencocokan dengan salah satu yang termasuk didalam daftar
select * from mhs where jurusan = ‘MI’ or jurusan = ‘KA’;
untuk memperoleh mhs yang jurusannya MI atau KA.
untuk memperoleh mhs yang jurusannya MI atau KA.
Dapat diganti dengan
select * from mhs where jurusan IN(‘MI’,'KA’);
select * from mhs where jurusan IN(‘MI’,'KA’);
Bila ditambah NOT di depan IN akan memperoleh data diluar MI dan KA.
Menampilkan semua dari tabel barang yang jenis nya hanya MI dan SA
select * from barang where jenis IN(‘MI’,’SA’);
select * from barang where jenis IN(‘MI’,’SA’);
Menampilkan semua tabel barang yang jenisnya selain MI dan SA
select * from barang where jenis NOT IN(‘MI’,’SA’);
Operator LIKE dan NOT LIKE
- bermanfaat untuk mencari data semacam:
- barang apa saja yang mengandung huruf ‘be’
- perlu menyebutkan tanda wilcard berupa garis bawah ( _ ) atau persen (%).
• tanda _ berarti sebuah karakter apa saja
contoh:
a_i bisa berati ani, ali, abi, dll
select * from barang where jenis NOT IN(‘MI’,’SA’);
Operator LIKE dan NOT LIKE
- bermanfaat untuk mencari data semacam:
- barang apa saja yang mengandung huruf ‘be’
- perlu menyebutkan tanda wilcard berupa garis bawah ( _ ) atau persen (%).
• tanda _ berarti sebuah karakter apa saja
contoh:
a_i bisa berati ani, ali, abi, dll
• tanda % berarti cocok dengan karakter apa saja dan berapapun panjangnya
contoh:
- %a% cocok dengan apa saja yang mengandung karakter a atau A.
- %a cocok dengan yang berakhiran a atau A, hanya berlaku untuk yang bertipe VARCHAR
- a% cocok dengan yang berawalan a atau A
contoh:
- %a% cocok dengan apa saja yang mengandung karakter a atau A.
- %a cocok dengan yang berakhiran a atau A, hanya berlaku untuk yang bertipe VARCHAR
- a% cocok dengan yang berawalan a atau A
contoh:
- menampilkan nama mahasiswa yang berawalan “PAR”
SELECT nama FROM mahasiswa WHERE nama LIKE “PAR%”
- menampilkan nama mahasiswa yang berawalan “PAR”
SELECT nama FROM mahasiswa WHERE nama LIKE “PAR%”
SELECT * FROM Barang WHERE Nama LIKE ‘b%’;
SELECT * FROM Barang WHERE Nama LIKE ‘%p’;
SELECT * FROM Barang WHERE Nama LIKE ‘%u%’;
SELECT * FROM Barang WHERE Nama LIKE ‘_u%’;
Kalau ditambah NOT berarti menampilkan selain kata yang berawalan b
SELECT * FROM Barang WHERE Nama NOT LIKE ‘b%’;
SELECT * FROM Barang WHERE Nama LIKE ‘%p’;
SELECT * FROM Barang WHERE Nama LIKE ‘%u%’;
SELECT * FROM Barang WHERE Nama LIKE ‘_u%’;
Kalau ditambah NOT berarti menampilkan selain kata yang berawalan b
SELECT * FROM Barang WHERE Nama NOT LIKE ‘b%’;
- Operator IS NULL dan IS NOT NULL
Jika ingin menampilkan data stok yang berisi NULL:
SELECT * FROM barang WHERE stok IS NULL;
Jika ingin menampilkan data stok yang berisi NULL:
SELECT * FROM barang WHERE stok IS NULL;
Jika ingin menampilkan semua barang yang stok nya tidak berisi NULL, anda bisa memakai operator IS NOT NULL
SELECT * FROM barang WHERE stok IS NOT NULL;
SELECT * FROM barang WHERE stok IS NOT NULL;
Mengurutkan data dengan ORDER BY
- Menampilkan semua barang yang ada di tabel barang secara urut naik berdasarkan kode barang
SELECT * FROM barang ORDER BY harga;
- Menampilkan semua barang yang ada di tabel barang secara urut naik berdasarkan kode barang
SELECT * FROM barang ORDER BY harga;
- Mengurutkan barang berdasar nama secara urut naik (ascending)
SELECT kode, nama FROM barang ORDER BY nama;
SELECT kode, nama FROM barang ORDER BY nama;
- Mengurutkan secara urut turun (descending)
SELECT kode, nama FROM barang ORDER BY nama DESC;
SELECT kode, nama FROM barang ORDER BY nama DESC;
- Mengurutkan barang menurut jenis dan nama
SELECT kode, jenis, nama FROM barang ORDER BY jenis, nama;
SELECT kode, jenis, nama FROM barang ORDER BY jenis, nama;
- Mengurutkan barang menurut jenis (descending) dan nama (ascending)
SELECT kode, jenis, nama FROM barang
ORDER BY jenis DESC, nama;
SELECT kode, jenis, nama FROM barang
ORDER BY jenis DESC, nama;
atau
SELECT kode, jenis, nama FROM barang
ORDER BY jenis , nama DESC;
- Mengurutkan barang menurut kolom 2 (jenis)
SELECT kode, jenis, nama FROM barang ORDER BY 2;
ORDER BY jenis , nama DESC;
- Mengurutkan barang menurut kolom 2 (jenis)
SELECT kode, jenis, nama FROM barang ORDER BY 2;
SELECT kode,jenis,nama FROM barang ORDER BY 2 DESC;
Mengelompokkan data dengan GROUP BY (hampir sama dengan DISTINCT)
Mengetahui jurusan apa saja dalam tabel mhs
SELECT jurusan FROM mhs GROUP BY jurusan;
Mengelompokkan data dengan GROUP BY (hampir sama dengan DISTINCT)
Mengetahui jurusan apa saja dalam tabel mhs
SELECT jurusan FROM mhs GROUP BY jurusan;
hasilnya:
+———+
| jurusan |
+———+
| KA |
| MI |
| TI |
| TK |
———–
+———+
| jurusan |
+———+
| KA |
| MI |
| TI |
| TK |
———–
SELECT jenis FROM barang GROUP BY jenis;
Klausa HAVING (pengganti WHERE)
• Klausa HAVING terkait dengan klausa GROUP BY
• Gunanya untuk menentukan kondisi bagi GROUP BY
• Kelompok yang memenuhi HAVING saja yang akan dihasilkan
Klausa HAVING (pengganti WHERE)
• Klausa HAVING terkait dengan klausa GROUP BY
• Gunanya untuk menentukan kondisi bagi GROUP BY
• Kelompok yang memenuhi HAVING saja yang akan dihasilkan
- Menampilkan jurusan dari tabel mhs berdasarkan kelompok jurusan, selain jurusan KA
SELECT jurusan FROM mhs group by jurusan
having jurusan <> ‘KA’;
having jurusan <> ‘KA’;
hasilnya:
+———+
| jurusan |
+———+
| MI |
| TI |
| TK |
+———+
+———+
| jurusan |
+———+
| MI |
| TI |
| TK |
+———+
perintah ini dapat diganti dengan:
SELECT jurusan FROM mhs WHERE jurusan <> ‘KA’
GROUP BY jurusan;
GROUP BY jurusan;
- Menampilkan jenis dari tabel barang berdasarkan kelompok jenis, yang jenisnya MA
SELECT jenis FROM barang group by jenis
having jenis = ‘MA’;
Penggunaan Fungsi Agregat
Daftar Fungsi Agregat
Fungsi Agregat Keterangan
AVG Memperoleh nilai rata-rata
COUNT Menghitung cacah data
MAX Menghasilkan nilai terbesar
MIN Menghasilkan nilai terkecil
SUM Memperoleh penjumlahan data
Fungsi AVG
- Menghitung harga rata-rata barang
SELECT AVG(harga) FROM barang;
having jenis = ‘MA’;
Penggunaan Fungsi Agregat
Daftar Fungsi Agregat
Fungsi Agregat Keterangan
AVG Memperoleh nilai rata-rata
COUNT Menghitung cacah data
MAX Menghasilkan nilai terbesar
MIN Menghasilkan nilai terkecil
SUM Memperoleh penjumlahan data
Fungsi AVG
- Menghitung harga rata-rata barang
SELECT AVG(harga) FROM barang;
- Menghasilkan rata-rata ipkum
SELECT AVG(ipkum) FROM mhs;
SELECT AVG(ipkum) FROM mhs;
- Menghitung harga rata-rata per jenis
SELECT jenis, AVG(harga) FROM barang GROUP BY jenis;
SELECT jenis, AVG(harga) FROM barang GROUP BY jenis;
- Menghasilkan rata-rata ipkum dikelompokkan berdasar jurusan
SELECT jurusan, AVG(ipkum) FROM mhs GROUP BY jurusan;
SELECT jurusan, AVG(ipkum) FROM mhs GROUP BY jurusan;
- Menghasilkan rata-rata ipkum mhs yang mempunyai jurusan MI
SELECT AVG(ipkum) FROM mhs WHERE jurusan = ‘MI’;
SELECT AVG(ipkum) FROM mhs WHERE jurusan = ‘MI’;
- Menampilkan rata-rata harga dari tabel barang yang jenis MI
SELECT AVG(harga) FROM barang WHERE jenis = ‘MI’;
SELECT AVG(harga) FROM barang WHERE jenis = ‘MI’;
atau
SELECT AVG(harga) FROM barang GROUP BY jenis HAVING jenis = ‘MI’;
Fungsi COUNT
- Menghasilkan cacah baris dari tabel mhs. Kolom nim dalam COUNT dapat diganti dengan kolom apa saja (hanya 1 field) atau cukup ditulis * (sembarang).
Fungsi COUNT
- Menghasilkan cacah baris dari tabel mhs. Kolom nim dalam COUNT dapat diganti dengan kolom apa saja (hanya 1 field) atau cukup ditulis * (sembarang).
SELECT COUNT(nim) FROM mhs;
SELECT jurusan, COUNT(*) FROM mhs GROUP BY jurusan;
menghasilkan:
+———+———-+
| jurusan | count(*) |
+———+———-+
| KA | 1 |
| MI | 2 |
| TI | 2 |
| TK | 1 |
+———+———-+
+———+———-+
| jurusan | count(*) |
+———+———-+
| KA | 1 |
| MI | 2 |
| TI | 2 |
| TK | 1 |
+———+———-+
- catatan: kolom kedua bisa diganti nama kolomnya dengan klausa AS (untuk memberi nama lain terhadap suatu keluaran):
SELECT jurusan, COUNT(*) AS cacah FROM mhs GROUP BY jurusan;
menghasilkan:
+———+———-+
| jurusan | cacah |
+———+———-+
| KA | 1 |
| MI | 2 |
| TI | 2 |
| TK | 1 |
+———+———-+
+———+———-+
| jurusan | cacah |
+———+———-+
| KA | 1 |
| MI | 2 |
| TI | 2 |
| TK | 1 |
+———+———-+
- Menghitung cacah/jml barang per jenis, khusus untuk yang jumlahnya lebih dari 2
SELECT jenis, COUNT(*) FROM barang GROUP BY jenis HAVING COUNT(jenis) > 2;
- Menghitung cacah jenis yang tertera dalam tabel barang
SELECT COUNT(DISTINCT jenis) FROM barang;
SELECT COUNT(DISTINCT jenis) FROM barang;
Fungsi MAX
Untuk memperoleh nilai terbesar
- Menampilkan harga terbesar
SELECT MAX(harga) FROM barang;
SELECT nama, MAX(harga) FROM barang;
Untuk memperoleh nilai terbesar
- Menampilkan harga terbesar
SELECT MAX(harga) FROM barang;
SELECT nama, MAX(harga) FROM barang;
- Menampilkan harga terbesar per jenis
SELECT jenis, MAX(harga) FROM barang GROUP BY jenis;
SELECT jenis, nama, MAX(harga) FROM barang GROUP BY jenis;
SELECT jenis, MAX(harga) FROM barang GROUP BY jenis;
SELECT jenis, nama, MAX(harga) FROM barang GROUP BY jenis;
Fungsi MIN
Untuk memperoleh nilai yang terkecil
- Menampilkan harga terkecil
SELECT MIN(harga) FROM barang;
SELECT nama, MIN(harga) FROM barang;
Untuk memperoleh nilai yang terkecil
- Menampilkan harga terkecil
SELECT MIN(harga) FROM barang;
SELECT nama, MIN(harga) FROM barang;
- Menampilkan harga terkecil per jenis
SELECT jenis, MIN(harga) FROM barang GROUP BY jenis;
SELECT jenis, nama, MIN(harga) FROM barang GROUP BY jenis;
SELECT jenis, MIN(harga) FROM barang GROUP BY jenis;
SELECT jenis, nama, MIN(harga) FROM barang GROUP BY jenis;
Fungsi SUM
Untuk melakukan penjumlahan data
- Menghasilkan jumlah seluruh ipkum
SELECT SUM(ipkum) FROM mhs;
Untuk melakukan penjumlahan data
- Menghasilkan jumlah seluruh ipkum
SELECT SUM(ipkum) FROM mhs;
- Menampilkan seluruh stok barang
SELECT SUM(stok) FROM barang;
SELECT SUM(stok) FROM barang;
- Menampilkan total stok untuk setiap jenis
SELECT jenis, SUM(stok) FROM barang GROUP BY jenis;
SELECT jenis, SUM(stok) FROM barang GROUP BY jenis;
Klausa LIMIT
untuk membatasi jumlah baris yang ditampilkan,
- SELECT * FROM mhs LIMIT 3;
hanya menampilkan 3 record dari atas
untuk membatasi jumlah baris yang ditampilkan,
- SELECT * FROM mhs LIMIT 3;
hanya menampilkan 3 record dari atas
- SELECT nama, harga FROM barang LIMIT 4;
Penggunaan Ekspresi
SELECT harga FROM barang;
Penggunaan Ekspresi
SELECT harga FROM barang;
- Misal harga diskon 10%
SELECT nama,harga * 0.1 FROM barang;
SELECT nama,harga * 0.1 FROM barang;
- berarti harga yang di bayarkan 90%
SELECT nama,harga * 0.9 AS hargabr FROM barang;
SELECT nama,harga * 0.9 AS hargabr FROM barang where Kd_brg=’B07’;
SELECT nama,harga * 0.9 AS hargabr FROM barang;
SELECT nama,harga * 0.9 AS hargabr FROM barang where Kd_brg=’B07’;
Ctt:kolom harga diberi judul hargabr
- Untuk melihat kekayaan per barang
SELECT harga * stok FROM barang;
SELECT harga * stok FROM barang;
- Melihat total kekayaan
SELECT sum(harga * stok) FROM barang;
SELECT sum(harga * stok) FROM barang;
Hasil Praktikum
Persiapan praktek : Gunakan tabel mahasiswa dan fakultas pada pertemuan 3. Tambahkan kolom gender di tabel mahasiswa kemudian update data mahasiswa. Insert data mahasiswa hingga 7 baris.
1.
Berdasarkan tabel sebelumnya yaitu bab 3, tampilkan data mahasiswa
dengan nama dari kolomnya berubah menjadi nomor_identitas, nama,
alamat,nama_fakultas tanpa harus merubah nama kolom secara permanen.
2.
Tampilkan nama mahasiswa fakultas saintek yang berjenis kelamin
laki-laki. Kemudian nama mahasiswa fakultas saintek atau berjenis
kelamin laki-laki
3.
Suatu tabel mahasiswa terdapat 7 baris data mahasiswa. Tampilkan data
mahasiswa dari nomor 3 sampai dengan 5, kemudian tampilkan juga data
mahasiswa yang bukan dari nomor 3 sampai dengan 5 menggunakan between
dan tanpa menggunakan between.
4. Tampilkan mahasiswa dengan nomor 2,3,5 menggunakan operator IN.
| ||||
5. Tampilkan semua data mahasiswa yang namanya mempunyai awalan huruf “a”.
6. Tampilkan semua data mahasiswa yang namanya mempunyai akhiran “a” dan huruf ke-3 dari nama tersebut terdapat huruf “n”.
7. Tampilkan nomor fakultas di tabel mahasiswa dengan nomor harus tidak ada yang sama dari baris pertama sampai akhir.
8. Tampilkan data mahasiswa 3 baris saja.
9.
Tampilkan data mahasiswa dengan ciri-ciri memiliki nama awalan a
kemudian kata selanjutnya boleh r atau boleh t atau boleh d. misalkan
yang memenuhi kriteria ciri tersebut seperti adi, atik, arif, adam dll.
*Boleh dengan awalan dan ciri yang lain namun karakteristiknya harus sesuai soal
10. Buatlah tabel dengan nama organ_dalam dan organ_luar sebagai berikut :
a. Tabel organ_dalam1Jantung
2Paru-paru
3Tenggorokan
NomorNama
1Hidung
2Mata
3Tenggorokan
Tampilkan data dari kedua tabel tersebut menggunakan UNION, EXCEPT dan INTERSECT
Evaluasi Perbandingan 2 DBMS
PostgreSQL vs MySQL
Saat ini
dengan mudah kita bisa mengatakan, dua produk database open source paling
terkenal dan banyak digunakan adalah MySQL dan PostgreSQL. “Mana yang lebih
bagus?” adalah pertanyaan yang hingga akhir zaman nanti akan selalu terlontar.
Kami tahu pertanyaan ini tidak ada artinya, dan tidak membantu sama sekali.
Namun di artikel ini kami mencoba menyusun beberapa aspek dari kedua database
yang berbeda satu sama lain. Harapan kami, perbandingan ini membantu Anda
menjawab pertanyaan “mana yang sebaiknya dipakai untuk [sebutkan kebutuhan Anda
di sini].” Jangan lupa pula, sebelum memutuskan selalu ceklah dulu homepage
kedua database sebab dari waktu ke waktu fitur tiap database berubah/bertambah.
Perbandingan di artikel ini sendiri menggunakan versi MySQL 3.23.49/4.0.1 dan
PostgreSQL 7.2.
Dari
semula latar belakang dikembangkannya kedua database ini sudah berbeda. MySQL
berkembang dari solusi yang dipakai oleh pembuatnya, TcX AB, dalam memroses
data untuk aplikasi Web. Fokusnya adalah pada kecepatan. PostgreSQL, di lain
pihak, berkembang dari riset akademik. Fokus pengembangan PostgreSQL adalah
pada fitur OO, reliabilitas, dan dukungan SQL yang mantap. Namun, seiring kedua
produk ini bertambah matang, keduanya semakin banyak memiliki sifat-sifat ini.
MySQL versi 4.x misalnya, berjanji menambahkan fitur-fitur yang sejak lama
diidamkan pemakainya: subselect, view, dsb. Sementara PostgreSQL, yang sempat
memiliki masalah stabilitas dan skalabilitas di seri awal versi 6.x, juga kini
telah amat menarik dari segi kecepatan.
Pengembangan
MySQL diatur secara sentral oleh perusahaan komersial di Swedia bernama MySQL
AB (sebelumnya TcX AB). Perusahaan ini memperoleh pemasukan utamanya dari
menjual layanan support dan konsultasi MySQL. PostgreSQL dikembangkan secara
lebih terdesentralisasi dan merakyat, namun tetap diatur oleh sebuah kelompok
online bernama PostgreSQL Development Group.
MySQL
dirilis dalam satuan yang lebih sering (sebulan bisa lebih dari satu kali),
sementara PostgreSQL sekitar 4–6 bulan sekali.
Menurut
MySQL AB, saat ini jumlah instalasi MySQL sekitar 3 juta. PostgreSQL sendiri
tidak diketahui pasti berapa jumlah penggunanya; kemungkinan masih berada di
bawah MySQL karena banyaknya situs Web dan perusahaan webhosting yang hanya
menggunakan MySQL. Plus secara keseluruhan popularitas MySQL (trafik milis,
tutorial/artikel yang membahas, dsb) lebih besar daripada PostgreSQL. Tapi
karena PostgreSQL juga disertakan secara default di distro-distro Linux seperti
Red Hat dan SuSE, jumlah penggunanya pun sudah pasti banyak.
MySQL
memiliki arsitektur multithreading, sementara PostgreSQL multiproses (forking).
Ini berarti PostgreSQL potensial memiliki stabilitas yang lebih tinggi, sebab
satu proses anak yang mati tidak akan menyebabkan seluruh daemon mati—meskipun
pada kenyataannya, dulu ini sering terjadi. Di sisi lain, arsitektur dengan
forking ini sulit diterapkan ke Windows, sebab Windows amat thread-oriented.
Karena itulah, baru MySQL yang memiliki port natif ke Windows. PostgreSQL
sendiri saat ini bisa dijalankan di Windows, tapi melalui lapisan emulasi
Cygwin.
Sampai
sekarang masih banyak yang bilang MySQL itu tidak ACID-compliant. Padahal sejak
2 tahun lalu MySQL sudah mempunyai handler tabel BerkeleyDB, dan belakangan ini
InnoDB, sehingga MySQL sudah mendukung transaksi. Handler tabel MySQL yang
lama, ISAM dan MyISAM, tidak ACID-compliant. PostgreSQL sendiri sejak lama
telah ACID-compliant.
Lisensi
PostgreSQL lebih liberal. Inilah sebabnya ada banyak produk closed-source dan
komersial yang bisa dikembangkan dari source code PostgreSQL. MySQL, karena
dilisensi di bawah GPL, tidak boleh dimodifikasi menghasilkan produk turunan
yang closed-source.
Soal
kecepatan ini relatif dan kadang juga jadi isu sensitif. Baik kedua pihak,
maupun pihak ketiga, pernah menerbitkan benchmark yang lalu ditepis atau
dicibir karena tidak objektif.
Pada
dasarnya perbandingan kecepatan keduanya seperti ini: MySQL terkenal cepat
dalam melakukan query sederhana. Dengan kata lain, dapat memroses lebih banyak
SQL per satuan waktu. Tapi dalam kondisi load tinggi (jumlah koneksi simultan
besar), PostgreSQL sering mengalahkan MySQL untuk query dengan klausa JOIN yang
kompleks, seperti dialami Tim Perdue saat mencoba kedua database untuk
diimplementasikan di SourceForge.net. Penyebab utamanya adalah karena MySQL
menggunakan locking level table dalam UPDATE,
sehingga koneksi yang lain tidak bisa membaca table ybs sama sekali. Locking
inilah juga sebabnya mengapa pada banyak benchmark, MySQL menunjukkan penurunan
kinerja yang cukup drastis untuk kondisi jumlah klien simultan tinggi.
PostgreSQL mendukung locking di level yang lebih rendah, yaitu row. Table
handler baru di MySQL, InnoDB, juga mendukung row level locking. Benchmark
InnoDB pada jumlah koneksi tinggi menunjukkan hasil yang cukup menjanjikan (www.innodb.com/bench.html).
Masalah
locking tabel bisa diakali dengan membelah-belah tabel, agar satu kelompok row
dapat dilock tanpa mengganggu kelompok row lain. Bahkan ada pengguna MySQL yang
membelah sebuah tabel besar berisi jutaan record menjadi ribuan tabel
kecil-kecil.
Keduanya
sudah bisa dibilang cukup hingga amat stabil. Tapi perlu diingat bahwa database
manapun—bahkan Oracle—sesekali dapat menyebabkan kerusakan data. Karena itu
backup/history periodik dan incremental tetap diperlukan.
MySQL
terkenal kaya fungsi built-in, seperti modifikasi string (REPLACE, RIGHT, LTRIM, LCASE),
matematika (LOG, LOG10), tanggal, dsb. Dalam hal ini MySQL lebih unggul.
Keduanya
sudah amat solid. Mulai dari API C/C++, driver database Perl/Python/PHP/Tcl,
ODBC, JDBC telah didukung. Anda tidak akan kesulitan menggunakan database ini
dari berbagai sistem dan bahasa pemrograman. MySQL juga mendukung OLEDB dan
memiliki versi embedded untuk dilink bersama aplikasi buatan Anda sendiri.
MySQL
mendukung indeks full text secara natif. PostgreSQL mendukung full text
searching lewat program lain (contohnya: OpenFTS, openfts.sourceforge.net) yang memanfaatkan tipe data
arraynya untuk menyimpan indeks dokumen. Secara umum dapat dikatakan bahwa
indexing dengan MySQL lebih praktis, tapi dengan program ketiga lebih banyak
fitur dan opsi yang bisa diatur (mis: stemming, parsing kata non-Inggris, dsb).
MySQL juga, tentu saja, dapat dipakai sebagai backend bagi program search
eksternal (contoh: DBIx::KwIndex, search.cpan.org/search?dist=DBIx-KwIndex), meski mungkin tidak seefisien
dibandingkan array di PostgreSQL.
sudah memiliki replikasi, meski replikasi di MySQL barulah satu arah. Replikasi
di PostgreSQL sendiri belum disertakan dalam distribusi standarnya, namun Anda
dapat mengunjungi situs gborg.postgresql.org/project/pgreplication/ (proyek pgreplication).
Kedua
database menyimpan informasi user di sebuah database khusus. Sistem perizinan
MySQL lebih mendetil daripada PostgreSQL. Misalnya, kita dapat mengeset agar
user tertentu yang datang dari host tertentu hanya bisa membaca tabel saja
tanpa bisa UPDATE. Di PostgreSQL ini masih bisa dilakukan dengan VIEW misalnya.
Untuk
masalah enkripsi koneksi, keduanya mendukung SSL. Ada ekstensi PKIX bagi
PostgreSQL yang menarik, sebab dapat membuat tabel terenkripsi: http://www.dimensional.com/~bgiles/pkixdoc/.
MySQL AB
mengklaim lebih banyak tool grafis/web yang tersedia untuk MySQL, dan ini
nampaknya cukup benar.
PostgreSQL
lebih kaya dalam hal tipe data (terutama yang domain-specific seperti tipe data
geometris dan MONEY), tapi MySQL sudah mendukung
semua tipe data umum.
Di
PostgreSQL sebelum 7.1, masih ada keterbatasan yang cukup menyesakkan yaitu
ukuran data BLOB maksimum adalah 8–32KB. Sejak 7.1, PostgreSQL juga dapat
menyimpan data BLOB besar.
CHAR dan VARCHAR di PostgreSQL dapat menampung hingga 8 juta
karakter (bandingkan dengan MySQL yang hanya 255).
MySQL
lebih fleksibel dalam ALTER
TABLE.
PostgreSQL sendiri terbatas hanya bisa melakukan penambahan kolom, penggantian
nama kolom, dan penggantian nama tabel. MySQL mendukung penambahan/penghapusan
kolom, penggantian definisi kolom, dsb.
Dalam
waktu beberapa tahun PostgreSQL akan tetap memiliki fitur yang lebih lengkap
dibandingkan MySQL. Lebih banyak fitur dari standar SQL92 yang diimplementasi
oleh PostgreSQL. MySQL bahkan belum mendukung subselek. View, trigger, foreign
key checking (meski ini sudah ada di InnoDB) dan stored procedure semua hanya
ada di PostgreSQL. Sebagai pengembang yang memutuskan memilih salah satu
database, Anda perlu menanyakan kepada diri sendiri dulu apakah ingin lebih
bersusah-payah melakukan code around fasilitas-fasilitas yang tidak ada di
MySQL tersebut melalui bahasa pemrograman (misalnya, stored procedure diganti
dengan user-defined function, subselek diganti beberapa kali SQL yang dibungkus
dengan locking, dan tidak ada “trigger” berarti Anda harus melakukan pengecekan
secara manual). Jika tidak ingin repot, lebih baik memilih PostgreSQL. Tapi jika
tidak butuh fitur SQL yang rumit-rumit, Anda masih punya kebebasan memilih satu
dari dua.
Di
samping itu MySQL pun tidak memiliki fitur OO seperti pewarisan tabel dan tipe
data, atau tipe data array yang kadang praktis untuk menyimpan banyak item data
di dalam satu record.
MySQL
memiliki arsitektur yang memungkinkan sebuah database terdiri dari beberapa
jenis tabel, misalnya: yang transaksional dan tidak, yang berbasis di memori
atau di disk, yang terkompresi dan yang read-only. MySQL mendukung protokol
terkompresi yang bisa menghemat bandwidth dan mengurangi latensi.
PostgreSQL
memiliki tipe data array, pewarisan tabel dan tipe data, serta sistem rule.
PostgreSQL memiliki tipe-tipe data “antik.” Di PostgreSQL Anda dapat menulis
stored procedure (atau procedural language, istilah di PostgreSQL) dalam
beberapa bahasa: PL/Perl, PL/Tcl, atau PL/PgSQL. PostgreSQL mendukung
set/himpunan.
Kesimpulan
- Rangkuman
SELECT untuk menampilkan data
INSERT untuk menambahkan data baru
UPDATE untuk mengubah data yang sudah ada
DELETE untuk menghapus data.
Saat ini dengan mudah kita bisa mengatakan, dua produk database open source paling terkenal dan banyak digunakan adalah MySQL dan PostgreSQL. “Mana yang lebih bagus?” adalah pertanyaan yang hingga akhir zaman nanti akan selalu terlontar. Kami tahu pertanyaan ini tidak ada artinya, dan tidak membantu sama sekali. Namun di artikel ini kami mencoba menyusun beberapa aspek dari kedua database yang berbeda satu sama lain. Harapan kami, perbandingan ini membantu Anda menjawab pertanyaan “mana yang sebaiknya dipakai untuk [sebutkan kebutuhan Anda di sini].” Jangan lupa pula, sebelum memutuskan selalu ceklah dulu homepage kedua database sebab dari waktu ke waktu fitur tiap database berubah/bertambah. Perbandingan di artikel ini sendiri menggunakan versi MySQL 3.23.49/4.0.1 dan PostgreSQL 7.2.
-Kritik
Pada hakekatnya kalau untuk hardware mungkin kita kalah dengan negara maju, tapi untuk softwrae/perangkat lunak kita tidak kalah bahkan bersaing dengan negara maju. Tetapi budaya copas/plagiatisme yang sudah mendarah daging di kalangan bangsa Indonesia itulah yang membuat kita sulit untuk bersaing dengan negara maju.
-Saran
Gunakanlah script anti copas/plagiatisme pada blog anda sehingga artikel tidak bisa di copas juga supaya mental bangsa Indonesia bisa diperbaiki agar tidak hobi copas supaya bisa bersaing dengan bangsa-bangsa di negara maju.Dengan begitu tidak akan ada lagi yang bisa memandang kita dengan sebelah mata.
-Manfaat bagi pembaca
Dengan membaca blog saya ini para pembaca akan mendapatkan banyak manfaat meliputi akan paham materi tentang PostgreSQL dan MySQL baik dari kemudahan atau kelebihan dan kelemahannya. Juga akan paham tentang ERD dan juga database dari ERD yang telah saya buat.














