Selasa, 23 September 2014

PRAKTIKUM DESAIN BASIS DATA 1

PRAKTIKUM DESAIN BASIS DATA
Pengenalan dan instalasi
PostgreSQL vs mysql pada XAMPP

Landasan teori dan materi

PostgreSQL
PostgreSQL merupakan database RDMBS ‘bebas’ yang powerful dan tidak kalah dengan database komersil sekelasnya Oracle, maupun Sybase, dan Informix, seperti Blue Elephant yang menjadi gambar logonya. Pengembang PostgreSQL selama ini adalah ratusan orang di banyak universitas dan organisasi yang melakukan kominikasi lewat internet.
Berbagai fitur yang ada di PostgreSQL, merupakan jawaban untuk mereka  yang memerlukan fasilitas tersebut tapi belum menemukannya di MySQL. Anda akan diajak pula dari melakukan instalasi sampai mempergunakan tool-tool berbasis gratis untuk melakukan pemeliharaan database dan sebagai user PostgreSQL. Kelebihan Postgres dibandingkan dbms lainnya adalah: sifatnya yang free dan open-source, dukungan dokumentasinya yang luar biasa, fleksibilitasnya dan fitur-fiturnya yang tidak kalah dengan dbms komersial. Selain mendukung model data object-relational, postgres juga mendukung penggunaan basis data spasial (biasanya untuk penggunaan Sistem informasi geografis). Postgres, juga mendukung operasi multi-user dan multi-threaded, bahkan mungkin lebih bagus dari mysql dari sisi keamanan.
PostgreSQL tersedia baik berupa kode sumber maupun paket binari untuk berbagai distribusi Linux, Mac OS X, FreeBSD, Solaris dan MS-Windows yang semuanya dapat diunduh di situs pengembangnya.
Berikut cara penginstallannya :
Setelah mendownload file postgresql di link ini : http://www.enterprisedb.com/products-services-training/pgdownload, klik ganda file tersebut. kemudian akan tampilkan halaman awal instalasi postgresql seperti yang ditunjukan pada gambar di bawah ini.
  1. Tampilan awal proses instalasi PostgreSQL. Kemudian klik  tombol Next.
  2. Pilih direktori tempat penginstalan, biarkan saja defaultnya atau ganti sesuai keinginan anda. Kemudian klik tombol Next.
  3. Pilih direktori tempat penyimpanan data, tetapi saya sarankan agar tidak merubahnya dan melih secara default saja. Kemudian tekan tombol Next.
  4. Kemudikan isikan password yang akan digunakan untuk koneksi ke database PostgreSQL setelah proses instalasi selesai. Misalnya kita masukan password “root”.
  5. pada jendela setup port biarkan saja secara default yaitu “5432”. Kemudian klik tombol next
  6. Dijendela setup advance options biarkan saja secara default seperti yang terlihat dalam gambar. Kemudian klik tombol next.
  7. Pada jendela  setup ready to install klik tombol next. Kemudian akan muncul jendela yang menunjukan proses instalasi sedang berlangsung, tunggu beberapa saat hingga peoses instalasi selesai.
  8. Proses instalasi selesai. Uncheck kotak Launch Stack Builder, sebab jika diberi tanda check maka proses instalasi akan dilanjutkan dengan mendownload beberapa program pendukung seperti pendukung koneksi dengan basis data, dan sebagainya: kemudian klik tombol Finish.



  9. Untuk menjalankan PostgreSQL, lewat menu Start klik all program trus cari PostgreSQL 9.3. Lalu klik pgAdmin III. Kemudian akan jendela kerja PostgreSQL seperti pada gambar dibawah ini.

    (http://sharingk.com/berita-160-instalasi-postgresql-di-windows.html)
     
Karena kita akan lebih mendalami bahasa pemrogramannya, maka kita kita akan jarang menggunakan pgAdmin III tersebut, tetapi menggunakan SQL Shell atau biasa disebut psql. Yang mana psql ini akan di bahas di pembahasan hasil praktikum dan tampilan awalnya hanya hitam putih seperti ini :
                
Hasil praktikum Desain Basis Data

Menggunakan PosgresSQL tepatnya SQL Shell (psql)

Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
Password for user postgres:
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.
1.  Buatlah user baru dengan nama user nama depan pribadi mahasiswa dan password menggunakan nim masing – masing.
postgres=# create user ayu with createdb password '13650039';
CREATE ROLE
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 ayu       | Create DB                                      | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

2.  Buatlah 2 database dengan nama : namaNIM masing-masing praktikan. Misal : “aziz05550057” dan
nama database : contoh1.

postgres=# create database ayu13650039;
CREATE DATABASE
postgres=# \l
                                                 List of databases
    Name     |  Owner   | Encoding |          Collate          |           Ctype
           |   Access privileges
-------------+----------+----------+---------------------------+----------------
-----------+-----------------------
 ayu13650039 | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 |
 postgres    | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 |
 template0   | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 | =c/postgres          +
             |          |          |                           |
           | postgres=CTc/postgres
 template1   | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 | =c/postgres          +
             |          |          |                           |
           | postgres=CTc/postgres
(4 rows)

postgres=# create database contoh1;
CREATE DATABASE
postgres=# \l
                                                 List of databases
    Name     |  Owner   | Encoding |          Collate          |           Ctype
           |   Access privileges
-------------+----------+----------+---------------------------+----------------
-----------+-----------------------
 ayu13650039 | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 |
 contoh1     | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 |
 postgres    | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 |
 template0   | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 | =c/postgres          +
             |          |          |                           |
           | postgres=CTc/postgres
 template1   | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 | =c/postgres          +
             |          |          |                           |
           | postgres=CTc/postgres
(5 rows)

3.  Hapuslah database contoh1.

postgres=# drop database contoh1;
DROP DATABASE
postgres=# \l
                                                 List of databases
    Name     |  Owner   | Encoding |          Collate          |           Ctype
           |   Access privileges
-------------+----------+----------+---------------------------+----------------
-----------+-----------------------
 ayu13650039 | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 |
 postgres    | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 |
 template0   | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 | =c/postgres          +
             |          |          |                           |
           | postgres=CTc/postgres
 template1   | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_Indo
nesia.1252 | =c/postgres          +
             |          |          |                           |
           | postgres=CTc/postgres
(4 rows)

4.  Jawablah soal matematika berikut menggunakan query buffer 9 - 5 + 5 x 0 + 3 : 2 = .... ?

postgres=# select 9-5+5*0+3/2;
 ?column?
----------
        5
(1 row)


postgres=# select 9-5+5*0+3/2::float; (untuk menjadikan pecahan)
 ?column?
----------
      5.5
(1 row)


postgres=# select round (9-5+5*0+3/2::float); (untuk membulatkan hasil)
 round
-------
     6
(1 row)

5.  Jawablah soal matematika berikut menggunakan query buffer 5%2=...?

postgres=# select 5%2;
 ?column?
----------
        1
(1 row)

6.  Tampilkan qurey untuk memperoleh tanggal dan jam sekarang?

postgres=# select current_timestamp;
            now
----------------------------
 2014-09-20 08:56:20.703+07
(1 row)


postgres=# select current_date;
    date
------------
 2014-09-20
(1 row)

7.  Tampilkan selisih hari dalam untuk pengurangan waktu sekarang dengan waktu lahir
praktikan?

postgres=# select extract (day from now () -cast ('1995-01-01' as "timestamp"));

 date_part
-----------
      7202
(1 row)

postgres=# select (cast ('2014-09-20' as "timestamp")) -(cast ('1995-01-01' as "
timestamp"));
 ?column?
-----------
 7202 days
(1 row)

postgres=#
 

Pekerjaan rumah

Pada pekerjaan rumah ini, saya memakai cmd mySQL pada XAMPP untuk membandingkan dengan SQL Shell pada PostdreSQL. Berikut sedikit pengertiannya :
XAMPP merupakan singkatan dari X yaitu4 sistem opertasi apapun, Apache, MySQL, PHP, Perl. XAMPP merupakan tool yang menyediakan paket perangkat lunak ke dalam satu buah paket yang mana paketnya sudah terdapat Apache yaitu web server, MySQL yaitu database, PHP yaitu server sidw scripting, Perl, FTP server, phpMyAdmin dan berbagai pustaka bantu lainnya. Sehingga dengan menginstall XAMPP maka XAMPP akan menginstall dan mengkonfigurasikan semua itu secara otomatis. Selain itu, XAMPP tersedia untk Linux, Windows, Mac OS X maupun Solaris sehingga memudahkan membuat webserver multiplatform. XAMPP juga 100% open source, tersedia bebas dan legal.
MySQL pada XAMPP perkembangannya disebut SQL yang merupakan kepanjangan dari Structure Query Language. SQL ini merupakan bahasa terstruktur yang khusus digunakan untuk mengolah database. Tidak kalah dengan PostgreSQL, SQL ini juga bisa mengelola database mulai dari yang terkecil hingga terbesar dan mengelola database-database yang ada di dalamnya.
  
menggunakan cmd >> mysql xampp

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Ayu>cd..(cd ini di gunakan untuk untuk keluar dari direktori (karena awal masuk di Command Prompt kita berada di direktori Users\ayu))

C:\Users>cd.. (cd ini di gunakan untuk untuk keluar dari direktori (karena awal masuk di Command Prompt kita berada di direktori Users))

C:\>cd\xampp\xampp terbaru\xampp\mysql\bin (ini untuk masuk ke xampp\bin)

C:\xampp\xampp terbaru\xampp\mysql\bin>mysql -u root -p (ini untuk masuk ke bin\mysql)
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 149
Server version: 5.5.25a MySQL Community Server (GPL)

Copyright (c) 2000, 2011, 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.

1.  Buatlah user baru dengan nama user nama depan pribadi mahasiswa dan password menggunakan nim masing – masing.

mysql> create user ayu identified by '13650039';
Query OK, 0 rows affected (0.00 sec)

2.  Buatlah 2 database dengan nama : namaNIM masing-masing praktikan. Misal : “aziz05550057” dan
nama database : contoh1.

mysql> create database ayu13650039;
Query OK, 1 row affected (0.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ayu13650039        |
| cdcol              |
| mysql              |
| performance_schema |
| phpmyadmin         |
| test               |
| webauth            |
+--------------------+
8 rows in set (0.00 sec)

mysql> create database contoh1;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ayu13650039        |
| cdcol              |
| contoh1            |
| mysql              |
| performance_schema |
| phpmyadmin         |
| test               |
| webauth            |
+--------------------+
9 rows in set (0.00 sec)

3.  Hapuslah database contoh1.

mysql> drop database contoh1;
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ayu13650039        |
| cdcol              |
| mysql              |
| performance_schema |
| phpmyadmin         |
| test               |
| webauth            |
+--------------------+
8 rows in set (0.00 sec)

mysql> select 9-5+5*0+3/2;
+-------------+
| 9-5+5*0+3/2 |
+-------------+
|      5.5000 |
+-------------+
1 row in set (0.01 sec)

mysql> select round (9-5+5*0+3/2);
+---------------------+
| round (9-5+5*0+3/2) |
+---------------------+
|                   6 |
+---------------------+
1 row in set (0.03 sec)

4.  Jawablah soal matematika berikut menggunakan query buffer 9 - 5 + 5 x 0 + 3 : 2 = .... ?

mysql> select 9-5+5*0+3/2::float;
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 '::flo
at' at line 1 (tidak bisa dengan ‘float’)

5.  Jawablah soal matematika berikut menggunakan query buffer 5%2=...?

mysql> select 5%2;
+------+
| 5%2  |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

6.  Tampilkan qurey untuk memperoleh tanggal dan jam sekarang?

mysql> select current_timestamp;
+---------------------+
| current_timestamp   |
+---------------------+
| 2014-09-20 12:34:31 |
+---------------------+
1 row in set (0.00 sec)

mysql> select current_date;
+--------------+
| current_date |
+--------------+
| 2014-09-20   |
+--------------+
1 row in set (0.00 sec)

7.  Tampilkan selisih hari dalam untuk pengurangan waktu sekarang dengan waktu lahir
praktikan?

mysql> select extract (day from now()-cast ('1995-01-01' as "timestamp"));
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 'from
now()-cast ('1995-01-01' as "timestamp"))' at line 1
mysql> select (cast ('2014-09-20'as "timestamp"))-cast ('1995-01-01' as "timesta
mp"));
ERROR 1305 (42000): FUNCTION cast does not exist (syntax tidak sama seperti di SQL Shell)

mysql> select to_days(now())-to_days('01-01-1995');
+--------------------------------------+
| to_days(now())-to_days('01-01-1995') |
+--------------------------------------+
|                                 NULL |
+--------------------------------------+
1 row in set, 1 warning (0.00 sec) (format tgl tidak bisa ‘tgl-bln-thn’, harus ‘thn-bln-tgl’)

mysql> select to_days(now())-to_days('1995-01-01'postgres=# select extract (day from now () -cast ('1995-01-01' as "timestamp"));
postgres=# select (cast ('2014-09-20' as "timestamp")) -(cast ('1995-01-01' as "
timestamp"));
mysql> select extract (day from now()-cast ('1995-01-01' as "timestamp"));
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 'from
now()-cast ('1995-01-01' as "timestamp"))' at line 1
mysql> select (cast ('2014-09-20'as "timestamp"))-cast ('1995-01-01' as "timesta
mp"));
ERROR 1305 (42000): FUNCTION cast does not exist (syntax tidak sama seperti di SQL Shell)
mysql> select to_days(now())-to_days('01-01-1995');
+--------------------------------------+
| to_days(now())-to_days('01-01-1995') |
+--------------------------------------+
|                                 NULL |
+--------------------------------------+
1 row in set, 1 warning (0.00 sec) (format tgl tidak bisa ‘tgl-bln-thn’, harus ‘thn-bln-tgl’)

mysql> select to_days(now())-to_days('1995-01-01'
);
+--------------------------------------+
| to_days(now())-to_days('1995-01-01') |
+--------------------------------------+
|                                 7202 |
+--------------------------------------+
1 row in set (0.00 sec)
mysql>


Perbandingan dengan cmd mysql pada XAMPP

Menurut hasil praktikum dan hasil pekerjaan rumah yang telah saya kerjakan, tidak banyak perbedaan antara SQL Shell dan cmd mysql pada Xampp. Hanya beberapa syntax pada SQL Shell yang tidak bisa di baca di dalam cmd mysql pada Xampp, seperti berikut :

-syntax pada soal create user :
postgres=# create user ayu with createdb password '13650039';
dan
mysql> create user ayu identified by '13650039';
-syntax pada soal perhitungan 9-5+5*0+3/2, pada postgres jika tidak ditambah kan “::float” maka hasilnya pasti bilangan bulat, bukan pecahan. Tidak seperti di mysql, jika ditambahkan “::float” maka hasilnya akan ERROR, dan jika tidak ditambahkan “::float” maka hasilnya pasti pecahan atau hasil aslinya. Berikut syntaxnya  :
postgres=# select 9-5+5*0+3/2;
mysql> select 9-5+5*0+3/2;

-selain itu, syntax untuk mengetahui sudah berapa hari kita lahir juga tidak sama, apabila syntax di postgres di jalankan di mysql maka hasilnya akan error. Sehingga di my sql menggunakan syntax yang berbeda. Tetapi pada psql dan cmd mysql mempunyai kesamaan pada format tanggalnya, yaitu th-bl-tgl. Jika dibalik maka hasilnya akan NULL seperti pembahasan di atas.

postgres=# select extract (day from now () -cast ('1995-01-01' as "timestamp"));
postgres=# select (cast ('2014-09-20' as "timestamp")) -(cast ('1995-01-01' as "
timestamp"));

mysql> select extract (day from now()-cast ('1995-01-01' as "timestamp"));
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 'from
now()-cast ('1995-01-01' as "timestamp"))' at line 1

mysql> select (cast ('2014-09-20'as "timestamp"))-cast ('1995-01-01' as "timestamp"));
ERROR 1305 (42000): FUNCTION cast does not exist (syntax tidak sama seperti di SQL Shell)

mysql> select to_days(now())-to_days('1995-01-01'); (ini syntax yg di gunakan pada mysql)
                Pada psql, untuk mendeteksi kesahalan atau eror itu cukup jelas tidak seperti di cmd mysql yang hanya di beritahukan eror. Seperti dibawah ini :
postgres=# create user ayu with creatdb password '13650039';
ERROR:  unrecognized role option "creatdb"
LINE 1: create user ayu with creatdb password '13650039';
         ^
mysql> select extract (day from now()-cast ('1995-01-01' as "timestamp"));
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 'from
now()-cast ('1995-01-01' as "timestamp"))' at line
                Begitulah perbandingan menurut saya, yang mana perbandingannya tidak begitu banyak. hanya beberapa syntax yang berbeda, dan pendeteksi error yang lebih baik pada postgres (SQL Shell) dan hasil perhitungan yang lebih rinci saat menggunakan cmd mysql pada XAMPP. 


kesimpulan
      Kesimpulan dari hasil praktikum dan pekerjaan rumah yang telah saya kerjakan adalah :

-          # Pada SQL Shell dan cmd mySQL mempunyai kelebihan masing-masing.

-          # Pada psql maupun pada cmd mysql, syntaxnya sangat sensitif.dan apabila terdeteksi kesalahan  tulis , maka pendeteksi lebih spesifik adalah adalah pada SQL Shell.
-          # Pada cmd mySQL  (XAMPP), hasil perhitungannya lebih rinci tanpa di tambah syntax.


    Kritik dan saran
                Kritik ini untuk para pemula yang baru belajar tentang pembuatan database agar memperhatikan dasar-dasarnya, dan untuk para senior agar membantu mengembangkan blog ini.
Saran saya untuk para pembaca yaitu agar lebih teliti dan lebih memperhatikan jika menulis syntax dan sebelum melakukan agar berdoa terlebih dahulu supuya sukses dan berhasil saat membuat program. Semoga blog ini bermanfaat bagi pembaca khusus para pemula seperti saya untuk memulai belajar PostgreSQL dan MySQL pada XAMPP. Terakhir, terimakasih telah membaca blog saya.. ^_^










-           

 

Tidak ada komentar:

Posting Komentar