Anda di halaman 1dari 11

LAPORAN PRAKTIKUM PRAKTIKUM BASIS DATA

JOBSHEET 6

DOSEN PENGAMPU :
SYUKHRI,S.t,MCIO

OLEH :
RIZKY ANDIKA PUTRA
22343011

PROGRAM STUDI INFORMATIKA


DEPARTEMEN TEKNIK ELEKTRONIKA
FAKULTAS TEKNIK
UNIVERSITAS NEGERI PADANG
2024
A. TUJUAN
Diharapkan mahasiswa mampu :
1. Mahasiswa mampu mengenal dan memahami klausa REGEX;
2. Mahasiswa mampu mengenal dan memahami klausa ANY;
3. Mahasiswa mampu mengenal dan memahami klausa INTERSECT;
4. Mahasiswa mampu mengenal dan memahami klausa EXCEPT;
5. Mahasiswa mampu mengenal dan memahami fungsi tanggal dan waktu;
6. Mahasiswa mampu memanipulasi data dalam basis data MySQL menggunakan fungsi tanggal
dan waktu serta klausa REGEX, ANY, IN, NOT IN.

B. ALAT DAN BAHAN


1. Personal Computer
2. Xampp, MySQL server

C. TEORI SINGKAT

Perintah SELECT adalah perintah untuk menampilkan data yang ada di dalam suatu tabel, yang
mana dalam pengembangannya perintah ini akan menjadi sebuah perintah yang sangat penting dan
berpengaruh hingga saat pemrograman di stored procedures dan triggers. Selain perintah-perintah
SELECT yang telah dibahas sebelumnya, masih ada banyak perintah-perintah SELECT lain yang
lebih luas lagi dalam penggunaannya. Beberapa klausa dan atau operator bisa dikombinasikan
dalam penggunaan SELECT agar memperoleh hasil secara spesisik dan sesuai dengan kebutuhan.

REGEX

Regular Expression (REGEX) adalah konstruksi bahasa untuk mencocokkan teks berdasarkan pola
tertentu, terutama untuk kasus-kasus kompleks. Contoh misalkan mencari teks berawalan karakter
tertentu, memiliki jumlah perulangan dari suatu teks, dan lain sebagainya. Selain itu, REGEX juga
sangat manjur (powerful) terutama untuk proses penguraian kata (text parsing).

MySQL maupun MariaDB menggunakan 3 operator untuk REGEX, yaitu :

1. REGEXP : melakukan pencocokan pola (pattern matching) menggunakan Regular


Expresssion.
2. NOT REGEXP : negasi dari REGEXP.
3. RLIKE : sama dengan REGEXP.

Sintaks Umum:
expression [NOT] REGEXP expression
atau
expression [NOT] RLIKE expression

ANY

Operator ANY akan mengembalikan TRUE jika salah satu nilai subkueri memenuhi ketentuan.
Sintaks Umum:
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name FROM table_name WHERE condition);

INTERSECT

Merupakan operator yang digunakan untuk memperoleh data dari dua buah query dimana data
yang ditampilkan adalah yang memenuhi kedua query tersebut dengan ketentuan jumlah, nama
dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus sama.
Sintaks Umum:
SELECT * FROM namatabel1
INTERSECT
SELECT * FROM namatabel2
MySQL tidak memiliki operator INTERSECT, namun sebagai gantinya dapat menggunakan
operator IN yang bisa diperdalam di bagian Nested Queries.

EXCEPT
Merupakan operator yang digunakan untuk memperoleh data dari dua buah query dimana data
yang ditampilkan adalah data yang ada pada hasil query 1 dan tidak terdapat pada data dari hasil
query 2 dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan
ditampilkan datanya harus sama. Sintaks Umum:
SELECT * FROM namatabel1
EXCEPT
SELECT * FROM namatabel2
MySQL tidak memiliki operator EXCEPT, namun sebagai gantinya dapat menggunakan
operator NOT IN yang bisa diperdalam di bagian Nested Queries.

FUNGSI TANGGAL DAN WAKTU


MySQL dan atau MariaDB menyediakan fungsi tanggal dan waktu. Fungsi ini bisa digunakan saat
diperlukan.
CURDATE()
NOW()
SYSDATE()
Contoh Penggunaan:
SQL Hasil Eksekusi
Select date_format(curdate(), "%M, %d %Y"); October, 06 2010
Select date_format(curdate(), "%M, %e %Y"); October, 6 2010
Select date_format(now(),"%M, %e %Y %H:%i: October, 6 2010 18:55:55
%s");

D. LANGKAH KERJA

1. Unduh Database Sample


Unduh database sample yang disediakan baik oleh MySQL maupun MariaDB. Database
sample untuk MySQL dapat diunduh melalui tautan
https://dev.mysql.com/doc/employee/en/. Sedangkan database sample untuk MariaDB
dapat diunduh melalui tautan https://mariadb.com atau
https://www.mariadbtutorial.com/wp-content/uploads/2019/10/nation.zip.

Setelah diunduh, silahkan ekstrak dan simpan pada folder yang diinginkan.

2. Buat Basis Data Baru


a. Jalankan MySQL atau MariaDB server;
b. Login ke konsol MySQL atau MariaDB server sebagai ROOT; root@debian:/#
mariadb –uroot –p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.1.40-MariaDB mariadb.org binary
distribution Copyright (c) 2000, 2018, Oracle, MariaDB
Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the


current input statement.
MariaDB [(none)]>
c. Buat basis data baru dengan nama nation;

MariaDB [(none)]> create database nation;


Query OK, 0 rows affected (0.05 sec)
d. Gunakan basis data nation;
MariaDB [(nation)]> use nation;
Database changed

e. Kemudian import database sample ke basis data nation


MariaDB [(nation)]> \. [path file database sample .sql];

f. Keluar dari konsol MySQL atau MariaDB server.


MariaDB [(nation)]> quit
g. Login kembali ke konsol MySQL atau MariaDB server sebagai ROOT;

root@debian:/# mariadb –uroot –p


Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.1.40-MariaDB mariadb.org binary
distribution Copyright (c) 2000, 2018, Oracle, MariaDB
Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the


current input statement.
MariaDB [(none)]>

3. Klausa REGEX a. Mencari nama negara yang


mengandung kata “ndo”
MariaDB [nation]> use nation;
MariaDB [nation]> select country_id,name from countries
where name REGEXP 'ndo'; +------------+-----------+ |
country_id | name | +------------+-----------+ |
6 | Andorra |
| 99 | Indonesia | +------------
+-----------+
2 rows in set (0.06
sec)

b. Mencari nama negara yang memiliki


awalan kata “UNITED”
MariaDB [nation]> select country_id,name from countries
where name REGEXP '^UNITED';
+------------+--------------------------------------+
| country_id | name |
+------------+--------------------------------------+
| 8 | United Arab Emirates |
| 77 | United Kingdom |
| 222 | United States Minor Outlying Islands |
| 224 | United States |
+------------+--------------------------------------+
4 rows in set (0.00 sec)
c. Mencari nama benua yang tidak memiliki
kata “AMERICA”
Kueri untuk melihat isi tabel continents:

MariaDB [nation]> select continent_id,name from continents;


+--------------
+---------------+ |
continent_id | name |
+--------------
+---------------+ |
1 | North America |
| 2 | Asia |
| 3 | Africa |
| 4 | Europe |
| 5 | South America |
| 6 | Oceania |
| 7 | Antarctica | +--------------
+---------------+
7 rows in set (0.00 sec)

Apabila hanya ingin menampilkan nama benua yang tidak memiliki kata “AMERICA”,
dapat menggunakan kueri sebagai berikut:

MariaDB [nation]> select continent_id,name from continents


where name NOT RLIKE 'America'; +--------------
+------------+ | continent_id | name |
+--------------+------------+ | 2 | Asia |
| 3 | Africa |
| 4 | Europe |
| 6 | Oceania |
| 7 | Antarctica | +--------------
+------------+
5 rows in set (0.00 sec)

d. Mencari nama negara yang terdiri dari 15


karakter
MariaDB [nation]> select country_id,name from countries
where name REGEXP "^.{15}$"; +------------
+-----------------+ | country_id | name |
+------------+-----------------+ | 191 | Solomon
Islands | +------------+-----------------+
1 row in set (0.01 sec)

4. Operator ANY
Menampilkan nama negara yang berada pada benua tertentu (Amerika Utara, continent_id=5)
MariaDB [nation]> select name from countries where region_id =
ANY
(select region_id from regions where
continent_id=5);
+------------------+
| name |
+-----------------
-+ | Argentina
|
| Bolivia |
| Brazil |
| Chile |
| Colombia |
| Ecuador |
| Falkland Islands |
| French Guiana |
| Guyana |
| Peru |
| Paraguay |
| Suriname |
| Uruguay |
| Venezuela |
+------------------+
14 rows in set (0.00
sec)

Amati kueri dan hasilnya !

5. INTERSECT
MariaDB [nation]> select continent_id,name from continents
where continent_id IN (select continent_id from regions);

+--------------
+---------------+ |
continent_id | name |
+--------------
+---------------+ |
1 | North America |
| 2 | Asia |
| 3 | Africa |
| 4 | Europe |
| 5 | South America |
| 6 | Oceania |
| 7 | Antarctica | +--------------
+---------------+
7 rows in set (0.00
sec)

Amati kueri dan hasilnya !

6. EXCEPT
MariaDB [nation]> select countries.country_id from countries
where countries.country_id NOT IN (select
country_stats.country_id from country_stats);

+-----------
-+ |
country_id |
+-----------
-+ |
4 |
| 7 |
| 82 |
| 146 |
| 147 |
| 229 |
| 80 |
| 226 |
| 236 |
| 72 |
| 90 |
| 47 |
| 158 |
| 167 |
| 210 |
| 233 |
| 12 |
| 13 |
| 35 |
| 94 |
| 188 |
| 39 |
| 53 |
| 155 |
| 101 |
| 151 |
| 180 |
| 189 |
| 181 |
| 196 |
| 212 |
| 174 |
| 218 |
| 190 |
| 66 |
| 222 |
+------------+
36 rows in set (0.01 sec)

Amati kueri dan hasilnya !

7. Menghitung Waktu
Berikut adalah kueri dan hasilnya untuk mengetahui sudah berapa tahun sebuah negara
merdeka. Perhatikan kueri dan hasil kuerinya

MariaDB [nation]> select name, national_day, current_date AS


Sekarang,(year(current_date) - year(national _day))-
(right(current_date,5) < right(national_day,5)) AS UsiaMerdeka
from countries limit 5;

+-------------+--------------+------------+-------------+
| name | national_day | Sekarang | UsiaMerdeka |
+-------------+--------------+------------+-------------+
| Aruba | NULL | 2023-03-12 | NULL |
| Afghanistan | 1919-08-19 | 2023-03-12 | 103 |
| Angola | 1975-11-11 | 2023-03-12 | 47 |
| Anguilla | 1967-05-30 | 2023-03-12 | 55 |
| Albania | 1912-11-28 | 2023-03-12 | 110 |
+-------------+--------------+------------+-------------+
5 rows in set (0.00 sec)
E. EVALUASI/KASUS

Berdasarkan database sample yang digunakan pada latihan sebelumnya:

1. Buat kueri yang menampilkan ID_Negara | Nama_Negara | Tanggal_Kemerdekaan, khusus


untuk negara yang nama awal negaranya dimulai dengan karakter H sampai dengan karaker J;

2. Buat kueri yang menampilkan informasi Nama_Negara | Nama_Benua |


Usia_Kemerdekaan, khusus hanya untuk negara yang berada di benua Asia
3. Buat minimal 2 kueri yang menggunakan klausa IN, kemudian jelaskan hasilnya.
4. Buat minimal 2 kueri yang menggunakan klausa NOT IN, kemudian jelaskan hasilnya.
5. Buat minimal 2 kueri yang menggunakan operator ANY, kemudian jelaskan hasilnya

Anda mungkin juga menyukai