Praktikum
Desain Basis data 4
Pengenalan
Operator Dasar
SQL
Shell Vs CMD mysql Pada XAMPP
Landasan Teori
Pada minggu ini, saya akan membahas tentang opertor dasar. Saya ingin mengingatkan kembali kembali tentang PostgreSQL.
PostgreSQL, sering kita sebut "Postgres", adalah sebuah sistem manajemen database object-relational (ORDBMS) dengan penekanan pada diperpanjang dan standar-kepatuhan. Sebagai server database, fungsi utamanya adalah untuk menyimpan data, aman dan mendukung praktik terbaik, dan mengambilnya kemudian, seperti yang diminta oleh aplikasi perangkat lunak lain, baik itu orang-orang di komputer yang sama atau yang berjalan di komputer lain melalui jaringan (termasuk Internet).
(http://en.wikipedia.org/wiki/PostgreSQL)
Ada beberapa cara untuk query data dari tabel dengan menggunakan SELECT statement. saya akan mulai dengan data dasar seperti memilih kolom, penyaringan baris, dan menyortir hasil set. Selain itu, kita akan membahas beberapa teknik seleksi data canggih seperti inner join, left join, union, dan subquery.
# Pilih pernyataan - memilih data dari tabel.
PostgreSQL, sering kita sebut "Postgres", adalah sebuah sistem manajemen database object-relational (ORDBMS) dengan penekanan pada diperpanjang dan standar-kepatuhan. Sebagai server database, fungsi utamanya adalah untuk menyimpan data, aman dan mendukung praktik terbaik, dan mengambilnya kemudian, seperti yang diminta oleh aplikasi perangkat lunak lain, baik itu orang-orang di komputer yang sama atau yang berjalan di komputer lain melalui jaringan (termasuk Internet).
(http://en.wikipedia.org/wiki/PostgreSQL)
Ada beberapa cara untuk query data dari tabel dengan menggunakan SELECT statement. saya akan mulai dengan data dasar seperti memilih kolom, penyaringan baris, dan menyortir hasil set. Selain itu, kita akan membahas beberapa teknik seleksi data canggih seperti inner join, left join, union, dan subquery.
# Pilih pernyataan - memilih data dari tabel.
# Order By - macam set hasil yang dikembalikan oleh SELECT pernyataan.
# Select distinct - menyembunyikan duplikat baris dalam hasil set.
# Select distinct - menyembunyikan duplikat baris dalam hasil set.
# Where - menyaring baris berdasarkan kondisi.
# In - memilih data yang sesuai dengan nilai dalam daftar nilai.
# In - memilih data yang sesuai dengan nilai dalam daftar nilai.
# Between - memilih data yang rentang nilai.
# As - Data memilih berdasarkan pencocokan pola.
# Union - menggabungkan set hasil yang dikembalikan oleh beberapa query ke dalam hasil set.
# Inner join - memilih baris dari satu tabel yang memiliki baris yang sesuai dalam tabel lainnya.
# left join - memilih baris dari satu tabel yang mungkin atau mungkin tidak memiliki baris yang sesuai dalam tabel lainnya.
# Grup by - membagi baris ke dalam kelompok dan menerapkan fungsi agregat pada masing-masing kelompok.
# Having - berlaku kondisi untuk kelompok dibagi dengan GROUP BY klausa.
# Subquery - menulis query bersarang di dalam permintaan yang lain.
(http://www.postgresqltutorial.com/)
Dari data yang di atas, ada beberapa operator relasi yang di gunakan atau di butuhkan untuk menampilkan data, yaitu :
# Union - menggabungkan set hasil yang dikembalikan oleh beberapa query ke dalam hasil set.
# Inner join - memilih baris dari satu tabel yang memiliki baris yang sesuai dalam tabel lainnya.
# left join - memilih baris dari satu tabel yang mungkin atau mungkin tidak memiliki baris yang sesuai dalam tabel lainnya.
# Grup by - membagi baris ke dalam kelompok dan menerapkan fungsi agregat pada masing-masing kelompok.
# Having - berlaku kondisi untuk kelompok dibagi dengan GROUP BY klausa.
# Subquery - menulis query bersarang di dalam permintaan yang lain.
(http://www.postgresqltutorial.com/)
Dari data yang di atas, ada beberapa operator relasi yang di gunakan atau di butuhkan untuk menampilkan data, yaitu :
ada juga operator logika yang sering digunakan adalah AND, OR dan NOT.
(dasarSQL.pdf)
Regular Expression atau Regex, merupakan sebuah teknik atau cara untuk mencari persamaan - presamaan string atau data dan memanipulasinya. Biasanya lebih sering digunakan untuk string. Didalam PostgreSQL disimbolkan dengan “~”. Pada operator regexp ini, ada beberapa variasi operator, yaitu :
- ~ attempts a case sensitive match
- ~* attempts a case insensitive match
- !~ attempts a case sensitive match, and returns true if the regex does not match any part of the subject string
- !~* attempts a case insensitive match, and returns true if the regex does not match any part of the subject string
(http://www.regular-expressions.info/postgresql.html)
(dasarSQL.pdf)
Regular Expression atau Regex, merupakan sebuah teknik atau cara untuk mencari persamaan - presamaan string atau data dan memanipulasinya. Biasanya lebih sering digunakan untuk string. Didalam PostgreSQL disimbolkan dengan “~”. Pada operator regexp ini, ada beberapa variasi operator, yaitu :
- ~ attempts a case sensitive match
- ~* attempts a case insensitive match
- !~ attempts a case sensitive match, and returns true if the regex does not match any part of the subject string
- !~* attempts a case insensitive match, and returns true if the regex does not match any part of the subject string
(http://www.regular-expressions.info/postgresql.html)
Hasil praktikum
Menggunakan SQL Shell (PSQL)
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.
Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]: ayu
Password for user ayu:
psql (9.3.5)
WARNING: Console code page (850) differs from Windows code page (1252)
8-bit characters might not
work correctly. See psql reference
page "Notes for
Windows users" for details.
Type "help" for help.
postgres=> \c ayu13650039
WARNING: Console code page (850) differs from Windows code page (1252)
8-bit characters might not
work correctly. See psql reference
page "Notes for
Windows users" for details.
You are now connected to database "ayu13650039" as user
"ayu".
ayu13650039=> Select * from mahasiswa;
nim_mah | nama_mah | alamat_mah |
id_fak | no_tlp | gender
---------+----------+------------+--------+-------------+--------
14 | luki | ponorogo |
2 | 08257656879 | L
(1 row)
ayu13650039=> alter table mahasiswa add column gender varchar (20);
ERROR: column "gender"
of relation "mahasiswa" already exists
ayu13650039=> Select * from fakultas;
id_fak | nama_fak
--------+-----------
2 | Psikologi
3 | humaniora
(2 rows)
ayu13650039=> insert into fakultas values (1, 'SAINTEK'), (4,
'Tarbiyah'), (5, '
Ekonomi');
INSERT 0 3
ayu13650039=> Select * from fakultas;
id_fak | nama_fak
--------+-----------
2 | Psikologi
3 | humaniora
1 | SAINTEK
4 | Tarbiyah
5 | Ekonomi
(5 rows)
ayu13650039=> insert into mahasiswa values (11, 'Sinta', 'malang', 1,
'085678901
2', 'P'), (12, 'Binta', 'mojokerto', 3, '985245678213', 'P'), (13,
'Wana', 'kedi
ri', 4, '085345673645', 'P'), (15, 'adi', 'malang', 1, '089873654353',
'L'), (16
, 'Egi', 'mojokerto', 1, '085765432123', 'P'), (17, 'runi', 'bali', 1,
'0857789012',
'P');
INSERT 0 6
ayu13650039=> Select * from mahasiswa;
nim_mah | nama_mah | alamat_mah |
id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
14 | luki | ponorogo |
2 | 08257656879 | L
11 | Sinta | malang
| 1 | 0856789012 | P
12 | Binta | mojokerto
| 3 | 985245678213 | P
13 | Wana | kediri |
4 | 085345673645 | P
15 | adi | malang |
1 | 089873654353 | L
16 | Egi | mojokerto |
1 | 085765432123 | P
17 | runi | bali |
1 | 0857789012 | P
(7 rows)
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.
ayu13650039=> Select nim_mah as nomor_identitas, nama_mah as nama,
alamat_mah as
alamat, id_fak as nama_fakultas
from mahasiswa;
nomor_identitas | nama |
alamat | nama_fakultas
-----------------+-------+-----------+---------------
14 | luki | ponorogo
| 2
11 | Sinta |
malang | 1
12 | Binta |
mojokerto | 3
13 | Wana | kediri
| 4
15 | adi | malang
| 1
16 | Egi | mojokerto | 1
17 | runi | bali
| 1
(7 rows)
2. Tampilkan nama
mahasiswa fakultas saintek
yang berjenis kelamin
laki-laki.
Kemudian nama mahasiswa fakultas saintek atau berjenis kelamin
laki-laki.
ayu13650039=> select * from mahasiswa where id_fak=1 and gender='L';
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
15 | adi | malang |
1 | 089873654353 | L
(1 row)
ayu13650039=> select * from mahasiswa where id_fak=1 or gender='L';
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
14 | luki | ponorogo |
2 | 08257656879 | L
11 | Sinta | malang
| 1 | 0856789012 | P
15 | adi | malang |
1 | 089873654353 | L
16 | Egi | mojokerto |
1 | 085765432123 | P
17 | runi | bali |
1 | 0857789012 | P
(5 rows)
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.
Menggunakan Between dan tanpa menggunakan Between
ayu13650039=> select * from mahasiswa where nim_mah between 13 and
15;
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
13 | Wana | kediri |
4 | 085345673645 | P
14 | luki | ponorogo |
2 | 08257656879 | L
15 | adi | malang |
1 | 089873654353 | L
(3 rows)
ayu13650039=> select * from mahasiswa where nim_mah >=13 and
nim_mah <= 15;
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
13 | Wana | kediri |
4 | 085345673645 | P
14 | luki | ponorogo |
2 | 08257656879 | L
15 | adi | malang |
1 | 089873654353 | L
(3 rows)
Menggunakan Not Between dan
tanpa menggunakan Not Between
ayu13650039=> select * from mahasiswa where nim_mah not between 13
and 15;
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
11 | Sinta | malang
| 1 | 0856789012 | P
12 | Binta | mojokerto
| 3 | 985245678213 | P
16 | Egi | mojokerto |
1 | 085765432123 | P
17 | runi | bali |
1 | 0857789012 | P
(4 rows)
ayu13650039=> select * from mahasiswa where nim_mah <13 or
nim_mah >15;
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
11 | Sinta | malang
| 1 | 0856789012 | P
12 | Binta | mojokerto
| 3 | 985245678213 | P
16 | Egi | mojokerto |
1 | 085765432123 | P
17 | runi | bali |
1 | 0857789012 | P
(4 rows)
4. Tampilkan mahasiswa dengan nomor 2,3,5
menggunakan operator IN.
ayu13650039=> select * from mahasiswa where nim_mah in (12, 13, 15);
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
12 | Binta | mojokerto
| 3 | 985245678213 | P
13 | Wana | kediri |
4 | 085345673645 | P
15 | adi | malang |
1 | 089873654353 | L
(3 rows)
5. Tampilkan semua data mahasiswa yang namanya
mempunyai awalan huruf “a”.
ayu13650039=> select * from mahasiswa where nama_mah like 'a%';
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp
| gender
---------+----------+------------+--------+--------------+--------
15 | adi | malang |
1 | 089873654353 | L
(1 row)
6. Tampilkan semua
data mahasiswa yang namanya mempunyai akhiran “a” dan huruf
ke-3 dari nama tersebut terdapat huruf “n”.
ayu13650039=> select * from mahasiswa where nama_mah like '__n%%a';
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
11 | Sinta | malang
| 1 | 0856789012 | P
12 | Binta | mojokerto
| 3 | 985245678213 | P
13 | Wana | kediri |
4 | 085345673645 | P
(3 rows)
7. Tampilkan nomor
fakultas di tabel
mahasiswa dengan nomor
harus tidak ada
yang
sama dari baris pertama sampai akhir.
ayu13650039=> select distinct id_fak from mahasiswa;
id_fak
--------
4
1
3
2
(4 rows)
8. Tampilkan data mahasiswa 3 baris saja.
ayu13650039=> select * from mahasiswa limit 3;
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
14 | luki | ponorogo |
2 | 08257656879 | L
11 | Sinta | malang
| 1 | 0856789012 | P
12 | Binta | mojokerto
| 3 | 985245678213 | P
(3 rows)
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.
ayu13650039=> select * from mahasiswa where nama_mah ~ 'a[rtd]';
nim_mah | nama_mah | alamat_mah
| id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
15 | adi | malang |
1 | 089873654353 | L
(1 row)
10. Buatlah tabel dengan nama
organ_dalam dan organ_luar sebagai berikut :
ayu13650039=> create table organ_dalam (nomor integer not null
primary key, nama
varchar (20));
CREATE TABLE
ayu13650039=> insert into organ_dalam values (1, 'jantung'), (2,
'paru-paru'), (
3, 'tenggorokkan');
INSERT 0 3
ayu13650039=> select * from organ_dalam;
nomor | nama
-------+--------------
1 | jantung
2 | paru-paru
3 | tenggorokkan
(3 rows)
ayu13650039=> create table organ_luar (nomor integer not null
primary key, nama
varchar (20));
CREATE TABLE
ayu13650039=> insert into organ_luar values (1, 'hidung'), (2,
'mata'), (3, 'ten
ggorokkan');
INSERT 0 3
ayu13650039=> select * from organ_luar;
nomor | nama
-------+--------------
1 | hidung
2 | mata
3 | tenggorokkan
(3 rows)
Tampilkan data dari kedua
tabel tersebut menggunakan
UNION, EXCEPT dan INTERSECT
ayu13650039=> select *from organ_dalam union select *from
organ_luar;
nomor | nama
-------+--------------
2 | paru-paru
1 | jantung
2 | mata
1 | hidung
3 | tenggorokkan
(5 rows)
ayu13650039=> select *from organ_dalam except select *from
organ_luar;
nomor | nama
-------+-----------
2 | paru-paru
1 | jantung
(2 rows)
ayu13650039=> select *from organ_dalam intersect select *from
organ_luar;
nomor | nama
-------+--------------
3 | tenggorokkan
(1 row)
ayu13650039=>
Pekerjaan rumah
Menggunakan CMD mysql pada XAMPP
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.
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Ayu>cd..
C:\Users>cd..
C:\>cd xampp\x\mysql\bin
C:\xampp\x\mysql\bin>mysql -u root -p
Enter password:
Welcome to the MySQL monitor.
Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.20 MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights
reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
mysql> use ayu13650039;
Database changed
mysql> Select * from fakultas;
+--------+-----------+
| id_fak | nama_fak |
+--------+-----------+
| 2 | Psikologi |
| 3 | Humaniora |
+--------+-----------+
2 rows in set (0.10 sec)
mysql> insert into fakultas values (1, 'SAINTEK'), (4, 'Tarbiyah'),
(5, 'Ekonomi');
Query OK, 3 rows affected (0.06 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> Select * from fakultas;
+--------+-----------+
| id_fak | nama_fak |
+--------+-----------+
| 1 | SAINTEK |
| 2 | Psikologi |
| 3 | Humaniora |
| 4 | Tarbiyah |
| 5 | Ekonomi |
+--------+-----------+
5 rows in set (0.00 sec)
mysql> Select * from mahasiswa;
+---------+----------+------------+--------+-------------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp |
+---------+----------+------------+--------+-------------+
| 14 | luki | ponorogo |
2 | 08257656879 |
+---------+----------+------------+--------+-------------+
1 row in set (0.03 sec)
mysql> alter table mahasiswa add column gender varchar (2);
Query OK, 0 rows affected (0.15 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> update mahasiswa set gender = 'L' where nim_mah=14;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> Select * from mahasiswa;
+---------+----------+------------+--------+-------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+-------------+--------+
| 14 | luki | ponorogo |
2 | 08257656879 | L |
+---------+----------+------------+--------+-------------+--------+
1 row in set (0.00 sec)
mysql> insert into mahasiswa values (11, 'Sinta', 'malang', 1,
'085672837462', '
P'), (12, 'binta', 'mojokerto', 3, '092837480912', 'P'), (13, 'wana',
'kediri',
4, '098765432123', 'P'), (15, 'adi', 'malang', 1, '053647586978', 'L'),
(16, 'Eg
i', 'mojokerto', 1, '085726354766', 'P'), (17, 'runi', 'bali', 1,
'087736452623'
, 'L');
Query OK, 6 rows affected (0.01 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> Select * from mahasiswa;
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 11 | Sinta | malang
| 1 | 085672837462 | P |
| 12 | binta | mojokerto
| 3 | 092837480912 | P |
| 13 | wana | kediri |
4 | 098765432123 | P |
| 14 | luki | ponorogo | 2 | 08257656879 | L
|
| 15 | adi | malang |
1 | 053647586978 | L |
| 16 | Egi | mojokerto |
1 | 085726354766 | P |
| 17 | runi | bali |
1 | 087736452623 | L |
+---------+----------+------------+--------+--------------+--------+
7 rows in set (0.00 sec)
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.
mysql> Select nim_mah as nomor_identitas, nama_mah as nama,
alamat_mah as alamat
, id_fak as nama_fakultas from mahasiswa;
+-----------------+-------+-----------+---------------+
| nomor_identitas | nama |
alamat | nama_fakultas |
+-----------------+-------+-----------+---------------+
| 11 | Sinta |
malang | 1 |
| 12 | binta |
mojokerto | 3 |
| 13 | wana | kediri
| 4 |
| 14 | luki | ponorogo
| 2 |
| 15 | adi | malang
| 1 |
| 16 | Egi | mojokerto | 1 |
| 17 | runi
| bali | 1 |
+-----------------+-------+-----------+---------------+
7 rows in set (0.00 sec)
2. Tampilkan nama
mahasiswa fakultas saintek
yang berjenis kelamin
laki-laki.
Kemudian nama mahasiswa fakultas saintek atau berjenis kelamin
laki-laki
mysql> select * from mahasiswa where id_fak=1 and gender='L';
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 15 | adi | malang |
1 | 053647586978 | L |
| 17 | runi | bali |
1 | 087736452623 | L |
+---------+----------+------------+--------+--------------+--------+
2 rows in set (0.00 sec)
mysql> select * from mahasiswa where id_fak=1 or gender='L';
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 11 | Sinta | malang
| 1 | 085672837462 | P |
| 14 | luki | ponorogo |
2 | 08257656879 | L |
| 15 | adi | malang |
1 | 053647586978 | L |
| 16 | Egi | mojokerto |
1 | 085726354766 | P |
| 17 | runi | bali |
1 | 087736452623 | L |
+---------+----------+------------+--------+--------------+--------+
5 rows in set (0.00 sec)
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.
Menggunakan Between dan tanpa menggunakan Between
mysql>
select * from mahasiswa where nim_mah between 13 and 15;
+---------+----------+------------+--------+--------------+--------+
| nim_mah |
nama_mah | alamat_mah | id_fak | no_tlp
| gender |
+---------+----------+------------+--------+--------------+--------+
| 13 | wana | kediri |
4 | 098765432123 | P |
| 14 | luki | ponorogo |
2 | 08257656879 | L |
| 15 | adi | malang |
1 | 053647586978 | L |
+---------+----------+------------+--------+--------------+--------+
3 rows in
set (0.00 sec)
mysql>
select * from mahasiswa where nim_mah >= 13 and nim_mah <= 15;
+---------+----------+------------+--------+--------------+--------+
| nim_mah |
nama_mah | alamat_mah | id_fak | no_tlp
| gender |
+---------+----------+------------+--------+--------------+--------+
| 13 | wana | kediri |
4 | 098765432123 | P |
| 14 | luki | ponorogo |
2 | 08257656879 | L |
| 15 | adi | malang |
1 | 053647586978 | L |
+---------+----------+------------+--------+--------------+--------+
3 rows in
set (0.00 sec)
Menggunakan Not Between dan tanpa menggunakan Not Between
mysql> select * from mahasiswa where nim_mah not between 13 and 15;
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 11 | Sinta | malang
| 1 | 085672837462 | P |
| 12 | binta | mojokerto
| 3 | 092837480912 | P |
| 16 | Egi | mojokerto |
1 | 085726354766 | P |
| 17 | runi | bali |
1 | 087736452623 | L |
+---------+----------+------------+--------+--------------+--------+
4 rows in set (0.00 sec)
mysql> select * from mahasiswa where nim_mah < 13 or nim_mah >
15;
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 11 | Sinta | malang
| 1 | 085672837462 | P |
| 12 | binta | mojokerto
| 3 | 092837480912 | P |
| 16 | Egi | mojokerto |
1 | 085726354766 | P |
| 17 | runi | bali |
1 | 087736452623 | L |
+---------+----------+------------+--------+--------------+--------+
4 rows in set (0.00 sec)
4. Tampilkan mahasiswa dengan
nomor 2,3,5 menggunakan operator IN.
mysql> select * from mahasiswa where nim_mah in (12,13,15);
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 12 | binta | mojokerto
| 3 | 092837480912 | P |
| 13 | wana | kediri |
4 | 098765432123 | P |
| 15 | adi | malang |
1 | 053647586978 | L |
+---------+----------+------------+--------+--------------+--------+
3 rows in set (0.00 sec)
5. Tampilkan semua data
mahasiswa yang namanya mempunyai awalan huruf “a”.
mysql> select * from mahasiswa where nama_mah like 'a%';
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 15 | adi | malang |
1 | 053647586978 | L |
+---------+----------+------------+--------+--------------+--------+
1 row in set (0.00 sec)
6. Tampilkan semua
data mahasiswa yang namanya mempunyai akhiran “a” dan huruf
ke-3 dari nama tersebut terdapat huruf “n”.
mysql> select * from mahasiswa where nama_mah like '__n%%a';
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 11 | Sinta | malang
| 1 | 085672837462 | P |
| 12 | binta | mojokerto
| 3 | 092837480912 | P |
| 13 | wana | kediri |
4 | 098765432123 | P |
+---------+----------+------------+--------+--------------+--------+
3 rows in set (0.00 sec)
7. Tampilkan nomor
fakultas di tabel
mahasiswa dengan nomor
harus tidak ada
yang
sama dari baris pertama sampai akhir.
mysql> select distinct id_fak from mahasiswa;
+--------+
| id_fak |
+--------+
| 1 |
| 3 |
| 4 |
| 2 |
+--------+
4 rows in set (0.00 sec)
8. Tampilkan data mahasiswa 3
baris saja.
mysql> select * from mahasiswa limit 3;
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 11 | Sinta | malang
| 1 | 085672837462 | P |
| 12 | binta | mojokerto
| 3 | 092837480912 | P |
| 13 | wana | kediri |
4 | 098765432123 | P |
+---------+----------+------------+--------+--------------+--------+
3 rows in set (0.00 sec)
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.
mysql> select * from mahasiswa;
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 11 | Sinta | malang
| 1 | 085672837462 | P |
| 12 | binta | mojokerto
| 3 | 092837480912 | P |
| 13 | wana | kediri |
4 | 098765432123 | P |
| 14 | luki | ponorogo |
2 | 08257656879 | L |
| 15 | adi | malang |
1 | 053647586978 | L |
| 16 | Egi | mojokerto |
1 | 085726354766 | P |
| 17 | runi | bali |
1 | 087736452623 | L |
+---------+----------+------------+--------+--------------+--------+
7 rows in set (0.05 sec)
mysql> select * from mahasiswa where nama_mah ~ 'a [rtd]';
ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that
corresponds to your MySQL server version for the right syntax to use
near '~ 'a
[rtd]'' at line 1
mysql> select * from mahasiswa where nama_mah regexp 'a[rtd]';
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 15 | adi | malang |
1 | 053647586978 | L |
+---------+----------+------------+--------+--------------+--------+
1 row in set (0.09 sec)
10. Buatlah tabel dengan nama organ_dalam dan organ_luar sebagai
berikut :
mysql>create table organ_dalam ( nomor integer not null primary key,
nama varchar (20));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into organ_dalam values (1, 'jantung'), (2,
'paru-paru'), (3, 'tenggorokan');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> Select * from organ_dalam;
+-------+-------------+
| nomor | nama |
+-------+-------------+
| 1 | jantung |
| 2 | paru-paru |
| 3 | tenggorokan |
+-------+-------------+
3 rows in set (0.00 sec)
mysql> create table organ_luar ( nomor integer not null primary key,
nama varchar (20));
Query OK, 0 rows affected (0.08 sec)
mysql> insert into organ_luar values (1, 'hidung'), (2, 'mata'), (3,
'tenggorokan');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> Select * from organ_luar;
+-------+-------------+
| nomor | nama |
+-------+-------------+
| 1 | hidung |
| 2 | mata |
| 3 | tenggorokan |
+-------+-------------+
3 rows in set (0.00 sec)
Tampilkan data dari kedua
tabel tersebut menggunakan
UNION, EXCEPT dan INTERSECT
mysql> select * from organ_dalam union select * from organ_luar;
+-------+-------------+
| nomor | nama |
+-------+-------------+
| 1 | jantung |
| 2 | paru-paru |
| 3 | tenggorokan |
| 1 | hidung |
| 2 | mata |
+-------+-------------+
5 rows in set (0.01 sec)
mysql> select * from organ_dalam except select * from organ_luar;
ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that
corresponds to your MySQL server version for the right syntax to use
near 'select * from organ_luar' at line 1
mysql> Select nama from organ_dalam where nama not in (Select nama
from organ_luar);
+-----------+
| nama |
+-----------+
| jantung |
| paru-paru |
+-----------+
2 rows in set (0.02 sec)
mysql> Select * from organ_dalam intersect select * from organ_luar;
ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that
corresponds to your MySQL server version for the right syntax to use near
'select * from organ_luar' at line 1
mysql> Select nama from organ_dalam where nama in (Select nama from
organ_luar);
+-------------+
| nama |
+-------------+
| tenggorokan |
+-------------+
1 row in set (0.12 sec)
mysql>
Perbandingan Antara SQL
Shell (psql) dan CMD mysql pada XAMPP
(evaluasi meliputi perbedaan
atau kesamaan, kelebihan
atau kekurangan, tambahan dari penulis)
Setelah melihat dari hasil praktikum menggunakan Postgress SQL dan pada
hasil pekerjaan rumah menggunakan CMD mysql pada XAMPP, ada beberapa query yang
memiliki kesamaan, yaitu pada query AS, AND, OR, BETWEEN, NOT BETWEEN, IN,
NOT IN, LIKE, DISTINCT, LIMIT dan
trakhir yaitu UNION.
Selain ada kesamaan, juga ada beberapa query yang berbeda. Yaitu sebagai
berikut :
1.
Perbedaan pertama
ayu13650039=> select * from mahasiswa
where nama_mah ~ 'a[rtd]';
nim_mah | nama_mah | alamat_mah | id_fak
| no_tlp | gender
---------+----------+------------+--------+--------------+--------
15 | adi | malang |
1 | 089873654353 | L
(1 row)
( Perbedaan pertama yaitu pada
query Regular Expression atau regexp.
Jika menggunakan psql, regexp bisa di simbolkan dengan ‘ ~ ’ (perhatikan query
di atas). Tetapi pada CMD mysql, jika memakai simbol itu (~), maka akan Error. Sehingga pada CMD
mysql, regexp tidak boleh di simbolkan dan tetap menggunakan ‘regexp’(Perhatikan
query di bawah ini). )
mysql> select * from mahasiswa where
nama_mah ~ 'a [rtd]';
ERROR 1064 (42000): You have an error in
your SQL syntax; check the manual that
corresponds to your MySQL server version
for the right syntax to use near '~ 'a
[rtd]'' at line 1
mysql> select * from mahasiswa where
nama_mah regexp 'a[rtd]';
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah |
id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
|
15 | adi | malang |
1 | 053647586978 | L |
+---------+----------+------------+--------+--------------+--------+
1 row in set (0.09 sec)
2.
Perbedaan ke-2
ayu13650039=>
select *from organ_dalam except select *from organ_luar;
nomor
| nama
-------+-----------
2 | paru-paru
1 | jantung
(2
rows)
( Perbedaan kedua yaitu pada query except. Pada psql, except
di gunakan untuk menampilkan query pertama saja, sedangkan
hasil query kedua dan yang sama dengan hasil query kedua
tidak akan ditampilkan. Tetapi pada CMD mysql except tidak bisa digunakan atau
akan Error jika digunakan, melainkan menggunakan ‘NOT IN’. Maka hasilnya juga
akan sama. )
mysql> select * from organ_dalam
except select * from organ_luar;
ERROR 1064 (42000): You have an error in
your SQL syntax; check the manual that
corresponds to your MySQL server version
for the right syntax to use near 'select * from organ_luar' at line 1
mysql> Select nama from organ_dalam
where nama not in (Select nama from organ_luar);
+-----------+
| nama |
+-----------+
| jantung |
| paru-paru |
+-----------+
2 rows in set (0.02 sec)
3.
Perbedaan ke-3
ayu13650039=> select *from organ_dalam
intersect select *from organ_luar;
nomor | nama
-------+--------------
3 | tenggorokkan
(1 row)
( Perbedaan
ketiga yaitu pada query intersect. Pada psql, intersect digunakan untuk menampilkan semua
isi dari data yang memiliki kesamaan diantara kedua hasil query tersebut. Tetapi pada CMD mysql jika
menggunakan intersect, maka akan Error. Sehingga pada CMD mysql menggunakan
‘IN’ maka hasilnya juga akan sama. )
mysql> Select * from organ_dalam
intersect select * from organ_luar;
ERROR 1064 (42000): You have an error in
your SQL syntax; check the manual that
corresponds to your MySQL server version
for the right syntax to use near 'select * from organ_luar' at line 1
mysql> Select nama from organ_dalam
where nama in (Select nama from organ_luar);
+-------------+
| nama |
+-------------+
| tenggorokan |
+-------------+
1 row in set (0.12 sec)
4.
Perbedaanke-4
Pada perbedaan ke empat, saya tidak membicarakan
tentang query yang berbeda, tetapi tentang tampilan hasil antara 2 DBMS tersebut
(Postgress SQL dan CMD mysql pada XAMPP).
Pada PSQL, hasil tampilannya itu menurut data
yang di inputkan dan tidak bisa langsung berurutan. Bisa dilihat di tabel
mahasiswa pada urutan nim_mah sebelum di inputkan dan setelah di inputkan. Dan
juga pada tabel fakultas pada id_fak nya. Berikut querynya :
Sebelum di inputkan :
ayu13650039=> Select * from mahasiswa;
nim_mah | nama_mah | alamat_mah | id_fak
| no_tlp | gender
---------+----------+------------+--------+-------------+--------
14 | luki | ponorogo |
2 | 08257656879 | L
(1 row)
Sesudah di inputkan :
ayu13650039=> insert into mahasiswa values (11, 'Sinta', 'malang', 1,
'0856789012', 'P'), (12, 'Binta', 'mojokerto', 3, '985245678213', 'P'), (13,
'Wana', 'kediri', 4, '085345673645', 'P'), (15, 'adi', 'malang', 1,
'089873654353', 'L'), (16, 'Egi', 'mojokerto', 1, '085765432123', 'P'), (17,
'runi', 'bali', 1, '0857789012', 'P');
INSERT 0 6
ayu13650039=> Select * from mahasiswa;
nim_mah | nama_mah | alamat_mah |
id_fak | no_tlp | gender
---------+----------+------------+--------+--------------+--------
14 | luki | ponorogo |
2 | 08257656879 | L
11 | Sinta | malang
| 1 | 0856789012 | P
12 | Binta | mojokerto
| 3 | 985245678213 | P
13 | Wana | kediri |
4 | 085345673645 | P
15 | adi | malang | 1 | 089873654353 | L
16 | Egi | mojokerto |
1 | 085765432123 | P
17 | runi | bali |
1 | 0857789012 | P
(7 rows) (nim_mah 14 tetap di atas.)
Sebelum di inputkan :
ayu13650039=> Select * from fakultas;
id_fak
| nama_fak
--------+-----------
2
| Psikologi
3
| humaniora
(2 rows)
Sesudah di inputkan :
ayu13650039=> insert into fakultas values (1, 'SAINTEK'), (4,
'Tarbiyah'), (5, 'Ekonomi');
INSERT 0 3
ayu13650039=> Select * from fakultas;
id_fak | nama_fak
--------+-----------
2 | Psikologi
3 | humaniora
1 | SAINTEK
4 | Tarbiyah
5 | Ekonomi
(5 rows) (id_fak 2 dan 3 tetap di atas)
Tidak seperti pada CMD mysql yang langsung tertata berurutan. Berikut
buktinya pada tabel mahasiswa dan tabel fakultas :
Sebelum di inputkan data :
mysql> Select * from mahasiswa;
+---------+----------+------------+--------+-------------+
| nim_mah | nama_mah | alamat_mah | id_fak
| no_tlp |
+---------+----------+------------+--------+-------------+
|
14 | luki | ponorogo |
2 | 08257656879 |
+---------+----------+------------+--------+-------------+
1 row in set (0.03 sec)
Sesudah di inputkan data :
mysql> insert into mahasiswa values (11, 'Sinta', 'malang', 1, '085672837462',
'P'), (12, 'binta', 'mojokerto', 3, '092837480912', 'P'), (13, 'wana',
'kediri', 4, '098765432123', 'P'), (15, 'adi', 'malang', 1, '053647586978',
'L'), (16, 'Egi', 'mojokerto', 1, '085726354766', 'P'), (17, 'runi', 'bali', 1,
'087736452623', 'L');
Query OK, 6 rows affected (0.01 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> select * from mahasiswa;
+---------+----------+------------+--------+--------------+--------+
| nim_mah | nama_mah | alamat_mah | id_fak | no_tlp | gender |
+---------+----------+------------+--------+--------------+--------+
| 11 | Sinta | malang
| 1 | 085672837462 | P |
| 12 | binta | mojokerto
| 3 | 092837480912 | P |
| 13 | wana | kediri |
4 | 098765432123 | P |
| 14 | luki | ponorogo |
2 | 08257656879 | L |
| 15 | adi | malang |
1 | 053647586978 | L |
| 16 | Egi | mojokerto |
1 | 085726354766 | P |
| 17 | runi | bali
| 1 | 087736452623 | L |
+---------+----------+------------+--------+--------------+--------+
7 rows in set (0.05 sec)
Sebelum di inputkan data :
mysql> Select * from fakultas;
+--------+-----------+
| id_fak | nama_fak |
+--------+-----------+
|
2 | Psikologi |
|
3 | Humaniora |
+--------+-----------+
2 rows in set (0.10 sec)
Sesudah di inputkan data :
mysql> insert into fakultas values (1, 'SAINTEK'), (4, 'Tarbiyah'),
(5, 'Ekonomi');
Query OK, 3 rows affected (0.06 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> Select * from fakultas;
+--------+-----------+
| id_fak | nama_fak |
+--------+-----------+
| 1 | SAINTEK |
| 2 | Psikologi |
| 3 | Humaniora |
| 4 | Tarbiyah |
| 5 | Ekonomi |
+--------+-----------+
5 rows in set (0.00 sec)
Itulah salah satu kelebihan dari CMD mysql,
yaitu tanpa harus di urutkan terlebih dulu, data yang di inputkan akan
menyesuaikan sendiri.
Kesimpulan
Kesimpulan dari hasil praktikum menggunakan Postgress
SQL, hasil pekerjaan rumah menggunakan CMD mysql XAMPP dan juga perbandingan
antara kedua DBMS tersebut adalah pada dasarnya terdapat :
# kesamaan query yaitu jika query ini dijalan pada PSQL dan CMD mysql
maka tidak akan Error, yaitu pada query AS, AND, OR, BETWEEN, NOT BETWEEN, IN,
NOT IN, LIKE, DISTINCT, LIMIT dan
trakhir yaitu UNION
# perbedaan query yaitu jika query pada PSQL di jalankan pada CMD mysql
maka akan Error, yaitu pada query regexp, except dan intersect. Pada CMD mysql,
except bisa di ganti dengan ‘NOT IN’ dan intersect bisa di ganti dengan ‘IN’.
# begitu juga tentang salah satu kelebihan CMD mysql yang tanpa di
urutkan menurut primary keynya, maka akan urut sendiri (menyesuaikan sendiri).
# berarti salah satu kekurangan CMD mysql adalah harus di urutkan
terlebih dahulu karena datanya setelah di inputkan itu tidak urut/tidak bisa
menyesuikan sendiri.
Kritik /Saran
Tidak ada manusia yang terlahir sempurna, itulah
sebuah nyanyian. Begitu juga tentang laporan ini yang hanya di buat oleh
manusia biasa. Saya pribadi membutuhkan kritikan dari pembaca untuk membuat
blog ini bisa sedikit lebih sempurna.
Saran saya, jika menginputkan banyak data dan harus
urut nomor_idnya, maka gunakanlah CMD mysql. Tapi jika anda menginputkan data
dan harus tidak urut melainkan sesuai dengan waktu/urutan data saat di
inputkan, maka gunakanlah Postgress SQL. Tidak bosan saya mengingatkan lagi
untuk selalu berdoa sebelum dan sesudah mengerjakannya.
Semoga bermanfaat untuk pembaca.. ^_^
Tidak ada komentar:
Posting Komentar