Anda di halaman 1dari 94

Nota Kursus MYSQL DATABASE & SQL MANIPULATION

Disediakan Oleh:

MOHD SAFFUAN BIN SUNTONG RAZALI BIN MOHAMAD

Isi Kandungan
Hari 1 Modul Penyediaan Sistem Pengoperasian dan MySQL Database Membuat penyediaan MySQL Database seperti berikut: a) Penyediaan Server Centos 5.5. b) Membuat pemasangan Apache, PHP dan MySQL Database. c) Membuat konfigurasi MySQL Database. Pengurusan MySQL menggunakan aplikasi Mempelajari cara pengurusan database MySQL menggunakan perisian tertentu: a) Pemasangan dan pengurusan perisian PhpMyAdmin. b) Pemasangan perisian MySQL Workbench. c) Pengurusan database MySQL menggunakan MySQL Workbench. 2 Sintaks SQL Statement Mempelajari sintaks SQL Statement yang asas dan rumit: a) CREATE DATABASE, ALTER DATABASE, DROP DATABASE b) CREATE TABLE, ALTER TABLE, DROP TABLE c) SELECT, UPDATE, DELETE, INSERT INTO d) DISTINCT, WHERE, AND & OR, ORDER BY, GROUP BY e) LIMIT, LIKE, IN, BETWEEN, ALIAS f) Normal Joins, INNER JOIN, LEFT JOIN, RIGHT JOIN, UNION, FULL JOIN g) Lain-lain seperti SELECT INTO, SELECT bersarang, Operasi Aritmetik dan build-in function seperti AVG(), COUNT(), FIRST(), LAST(), MAX(), MIN(), SUM(), UCASE(), LCASE(), MID(), LEN(), ROUND(), NOW(), FORMAT(). Muka Surat 1 Tempoh (Jam)

2 jam 16 19

20

27 35

1 jam 3 jam

55 3 jam 56 58 61 66 72 81

3 jam

MODUL 1: PENYEDIAAN SISTEM PENGOPERASIAN DAN MYSQL DATABASE 1. Mula membuat Installation a. Masukkan DVD Centos 5.5 Installer ke dalam DVD-ROM dan pastikan server akan boot bermula dengan CD/DVD Device. b. Tekan <ENTER>

c. Pilih OK sekiranya hendak membuat media test (mengambil masa beberapa minit) atau Skip media test.

d. Pilih Next.

ii

e. Pilih bahasa yang digunakan untuk Installation - default: English (English) dan klik pada Next.

f.

Pilih jenis keyboard yang digunakan default: U.S. English dan klik Next.

g. Warning mengatakan partition table tidak dapat dibaca disebabkan belum di Initialized. Klik Yes untuk initialized dan padam semua data di partition table.

2. Membuat hard disk partition a. Pilih Remove all partitions on selected drives and create default layout untuk format dan padam segala data dan partition di dalam hard disk. b. Tick pada Review and modify partitioning layout dan klik Next.

c. Warning mengatakan semua partition pada hard disk akan dibuang. Klik Next.

d. Kebiasaannya, hard disk di dalam linux dikenali sebagai sd(turutan) atau hd(turutan). Sd(turutan) selalunya digunakan hard disk adalah SATA, SCSI atau USB manakala hd(turutan) digunakan sekiranya hard disk adalah IDE. Turutan mewakili bilangan ke berapa hard disk di dalam server. Sebagai contoh: i. Sda Hard disk SATA/SCSI/USB pertama ii. Sdb Hard disk SATA/SCSI/USB kedua Konsep yang sama digunakan bagi hard disk IDE seperti hda, hdb, hdc dan seterusnya. Di dalam hard disk pula, ia akan dipecahkan lagi ke beberapa partition dan dikenalpasti dengan nombor dibelakang seperti: i. Sda1 Partition pertama bagi sda ii. Sdb2 Partition kedua bagi sda Secara default, partition akan dilaksanakan seperti berikut:
Partition Mount point/RAID/ Volume /boot VolGroup00 Jenis Filesystem Ext3 LVM Saiz Nota

sda1 sda2

100MB Baki saiz partition

Kebiasaannya sistem akan mengambil 100MB sahaja bagi direktori boot. Baki hard disk dijadikan LVM (Logical Volume) dan digunakan oleh lain-lain struktur direktori dan swap memory.

Bagi LVM pula, secara default akan dilaksanakan seperti berikut:


Volume Group VolGroup01 Mount point/RAID / Volume Jenis Filesystem swap Saiz Nota

2GB atau lain

VolGroup02

ext3

Baki saiz volume group

Beberapa volume space akan diperuntukkan bagi dijadikan swap memory. Kebiasaannya saiz swap memory adalah 2x saiz fizikal memory (RAM). Direktori / merupakan root atau permulaan kepada direktori lain seperti /var, /usr, /opt dan lain-lain. Pengguna boleh menggunakan sepenuhnya volume group ke direktori / atau memecahkan lagi struktur direktori ke volume group lain mengikut kesesuaian.

Jenis filesystem yang selalu digunakan bagi Linux pada masakini adalah ext3.Namun terdapat pilihan filesystem seperti ext2, ext4, reiserFS, reiser4, jfs, xfs dan lain-lain.

Berikut adalah penerangan kepada struktur direktori utama dalam Linux:

Direktori / /root /home /bin /sbin /proc /usr /boot /lib /dev /etc /var /opt /mnt /tmp

Penerangan Root atau permulaan bagi struktur direktori Direktori home bagi pengguna root Direktori home bagi pengguna lain Menyimpan arahan linux semasa boot dan arahan yang biasa digunakan pengguna biasa Sama seperti /bin tetapi arahan bukan untuk pengguna biasa Merupakan virtual directory yang digunakan untuk menyimpan process Menyimpan segala arahan, library, fail manual dan lain-lain bagi pengguna biasa Menyimpan fail yang digunakan semasa proses boot oleh bootloader seperti GRUB atau LILO. Juga menyimpan kernel images. Shared libraries yang diperlukan bagi program pada filesystem. Menyimpan fail driver bagi peranti seperti hard disk, serial ports dan lain-lain. Fail konfigurasi spesifik bagi mesin. Mengandungi fail yang berubah seperti mail, printer spool, fail sementara Menyimpan pakej perisian yang tidak wajib. Mount point bagi membuat mount sementara oleh pentadbir sistem. Menyimpan fail sementara.

Setelah konfigurasi partition dibuat, klik pada Next.

e. Pastikan The GRUB boot loader will be installed on /dev/sda ditandakan. Sekiranya hendak meletakkan katalaluan pada boot loader, pilih Use a boot loader password. Klik Next.

3. Membuat konfigurasi rangkaian a. Kebiasannya Server akan diberi Alamat IP yang statik. Bagi membuat konfigurasi IP, klik pada Edit.

b. Pastikan Enable IPv4 support bertanda. Masukkan alamat IP dan Subnet Mask ke dalam ruang yang disediakan dan klik OK. Tanda pada Enable IPv6 Support sekiranya mahu membolehkan sokongan IPv6 pada server.

c. Pada bahagian hostname, setkan secara manual dengan memasukkan hostname bagi server. Masukkan juga konfigurasi Gateway, Primary DNS dan Secondary DNS sekiranya ada. Tekan Next.

4. Menyambung proses installation. a. Pilih region Asia/Kuala_Lumpur dan Tekan Next.

b. Masukkan Root Password 2 kali dan tekan Next.

c. Software installation akan dibuat secara manual, oleh itu boleh terus tekan Next.

d. Tekan Next.

10

e. Tunggu sehingga proses installation tamat.

f.

Setelah proses installation tamat, tekan Reboot dan PC akan restart.

11

g. Setelah PC restart, tunggu sehingga skrin ini keluar dan klik pada Forward.

5. Membuat pemasangan aplikasi Firewall a. Pastikan Firewall diset pada Enabled. Pada bahagian Trusted services, tandakan pada bahagian SSH. Konfigurasi Firewall bagi services yang lain akan dilakukan kemudian secara manual

6. Menyambung proses installation. a. Pada SELinux Setting, pilih Disabled disebabkan ciri-ciri ini tidak perlu digunakan. Tekan Forward. 12

b. Warning berkenaan SELinux dipaparkan. Tekan Yes.

13

c. Pada bahagian Date and Time, pastikan maklumat tarikh dan masa adalah tepat dan tekan Forward. Sekiranya hendak menggunakan fungsi Network Time Protocol (NTP), tekan pada tab Network Time Protocol.

d. Tandakan pada Enable Network Time Protocol. Secara default terdapat 3 NTP Server yang disediakan tetapi perlukan capaian ke Internet. Sekiranya terdapat NTP Server sendiri atau lain, tambah dengan tekan pada Add. Tekan Forward setelah tamat konfigurasi.

14

7. Mencipta pengguna server a. Sistem akan meminta pengguna mencipta 1 pengguna server (selain root) dan secara default, pengguna yang akan dicipta ini mempunyai hak Administrator. Masukkan username, nama penuh dan kata laluan dan tekan Forward.

8. Menyambung proses installation. a. Tekan Sound test untuk menguji Sound Card. Tekan Forward untuk teruskan.

15

b. Tekan Finish untuk menamatkan proses Installation dan server akan Reboot semula.

9. Pemasangan web server Apache 2, PHP dan MySQL. a. Pemasangan akan menggunakan versi perisian seperti berikut: i. Apache Apache 2.2++ ii. PHP PHP 5.3++ iii. MySQL MySQL 5.1.x b. Dengan menggunakan Yum Install, segala proses installation akan dilakukan secara automatik dan installer file juga tidak perlu dicari. Namun bagi menginstall versi terkini Apache dan PHP, kita perlu menggunakan Yum Repository yang terkini daripada Fedora Redhat Epel dan Remi Repository. Jalankan arahan berikut untuk tujuan tersebut:
# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm # wget http://rpms.famillecollet.com/el5.i386/remi-release-5-8.el5.remi.noarch.rpm # rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

Kemudian buka fail /etc/yum.repos.d/remi.repo dan pada baris ke-5, gantikan enabled=0 dengan enabled=1 dan simpan fail.

16

c. Buat installation Apache Web Server dan PHP dengan menggunakan arahan berikut. Tunggu sehingga proses installation selesai. Jawab Y (Yes) pada semua soalan. # yum install httpd php mysql mysql-server php-mysql Dengan ini Apache 2.2.3, PHP 5.3.3 dan MySQL 5.1.52 telah selesai diinstall. d. Jalankan arahan berikut bagi menetapkan Apache Web Server dan MySQL agar dijalankan secara automatik setiap kali server mula beroperasi. # chkconfig httpd on # chkconfig mysqld on e. Untuk memulakan servis Apache Web Server, jalankan arahan berikut: # service httpd start # service mysqld start f. Buka Internet Browser di dalam server dan taip http://localhost/. Sekiranya page seperti di bawah muncul maka installation berjaya.

Cipta fail phpinfo.php di /var/www/html/ jika belum dicipta. Buka Internet Browser di dalam server dan taip http://localhost/phpinfo.php.Scroll ke bawah dan cari bahagian mySQL. Sekiranya tedapat maklumat MySQL di dalam page phpinfo.php seperti di bawah maka integrasi di antara PHP dan MySQL telah berjaya dilaksanakan.

17

g. Masukkan arahan berikut menggunakan Putty atau Terminal untuk tetapkan katalaluan bagi user root MySQL. # mysqladmin -u root password 'katalaluan' // Untuk mengubah katalaluan # mysqladmin --user=root --password='katalaluan' password 'katalaluan-baru' h. Untuk masuk ke MySQL command-line tool, masukkan arahan berikut dan masukkan katalaluan yang telah ditetapkan. Shell mysql> akan dipaparkan sekiranya berjaya: # mysql -u root p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.1.52 MySQL Community Server (GPL) by Remi Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

18

10. Membuat konfigurasi MySQL Database. a. Database MySQL juga boleh dikonfigurasi seperti port no., socket path, buffer size dan lain-lain. Fail konfigurasi bagi database MySQL terletak di /etc/my.cnf. Bagi database MySQL yang dibangunkan menggunakan Yum Install atau RPM Install, konfigurasi telah dibuat secara automatik dan jika dilihat dalam fail /etc/my.cnf, tidak banyak parameter yang dipaparkan kerana parameter yang tiada disitu akan mengambil value default yang diberikan oleh server. b. Untuk melihat parameter konfigurasi yang lebih banyak, buka fail /etc/my.cnf di server yang dibangun menggunakan Tarball. Berikut adalah beberapa parameter yang perlu diketahui dan kadangkala diubah. Parameter [mysqld] port = 3306 socket = /tmp/mysql.sock Penerangan Port No. default yang digunakan untuk server MySQL menghoskan servicenya. Path bagi socket MySQL yang digunakan oleh program/aplikasi lain untuk connect ke database MySQL. Dengan function ini, database MySQL hanya boleh diakses dari aplikasi yang dihoskan pada local IP Address. Sekiranya database MySQL ini dihos berasingan dengan server aplikasi, maka database ini perlu dibuka ke network agar server aplikasi dapat mengakses database tersebut. Untuk membolehkan capaian terus ke database daripada tempat lain, comment baris tersebut: # skip-networking Path di mana fail database disimpan.

skip-networking

datadir=/var/lib/mysql

Setiap perubahan yang dibuat dalam fail my.cnf memerlukan pentadbir pangkalan data mengrestart service MySQL agar perubahan dapat dikuatkuasakan.

19

MODUL 2: PENGURUSAN MYSQL MENGGUNAKAN APLIKASI 1. Pemasangan Perisian PhpMyAdmin. a. PhpMyAdmin merupakan aplikasi atau tools yang biasa digunakan oleh pentadbir sistem dan pangkalan data untuk menguruskan database MySQL. Ini kerana ia sangat mudah digunakan dan difahami. Dalam panduan ini, kita akan membuat installation dengan 2 cara iaitu menggunakan Yum Install dan juga Tarball. b. Untuk pemasangan PhpMyAdmin menggunakan Yum Install, jalankan sahaja arahan berikut (hanya boleh digunakan dengan repository tambahan seperti Remi Repository): # yum install phpmyadmin Apabila arahan tersebut dijalankan, didapati terdapat banyak komponen tambahan lain yang perlu diinstall bagi membolehkan PhpMyAdmin berjalan dengan sempurna seperti php-gd, php-mbstring, libmcrypt dan lain-lain. Setelah installation tamat, restart service Apache dengan arahan: # service httpd restart c. Buka Internet Browser di dalam server dan taip http://localhost/phpmyadmin. Sekiranya page seperti di bawah muncul maka PhpMyAdmin 3.3.8 telah berjaya diinstall. Masukkan username database serta katalaluan untuk masuk ke dalam aplikasi PhpMyAdmin.

20

d. Setelah berjaya login, paparan seperti di bawah akan muncul. Melalui PhpMyAdmin, pentadbir sistem dan pangkalan data boleh membuat segala pengurusan database seperti mencipta database, mencipta table, mengubah struktur table, memasukkan data, menghapus data, import dan export table dan lain-lain lagi fungsi berkaitan database.

2. Pengurusan database MySQL menggunakan phpMyAdmin. a. Untuk membuat konfigurasi user priveleges pada database MySQL, kita akan menggunakan tools yang telah diinstall sebelum ini iaitu PhpMyAdmin. Tetapi sebelum itu Apache perlu dilakukan sedikit dikonfigurasi agar PhpMyAdmin boleh dibuka daripada komputer lain selain dari server itu sendiri. b. Buka terminal di server yang diinstall menggunakan Yum Install dan buka fail /etc/httpd/conf.d/phpMyAdmin.conf. Cari bahagian berikut: <Directory /usr/share/phpMyAdmin/> order deny,allow deny from all allow from 127.0.0.1 allow from ::1 </Directory>

21

Gantikan syntax tersebut dengan syntax berikut: <Directory /usr/share/phpMyAdmin/> order deny,allow allow from all </Directory> Restart service Apache dengan # service httpd restart. Kemudian buka Internet Explorer di komputer anda dan buka URL http://www.edaftar.com/phpmyadmin.Akan tetapi kemungkinan berlaku masalah login sekiranya menggunakan Internet Explorer, maka buka URL tersebut menggunakan Mozilla Firefox.Login menggunakan user root dan katalaluan yang telah disetkan sebelum ini. c. Setelah login ke PhpMyAdmin, cipta dahulu sebuah database baru bernama aplikasidb.

d. Cipta table baru bernama maklumatstaffdan Number of Field = 5. Kemudian masukkan butiran berikut untuk structure bagi setiap field dan kemudian Simpan: Field staffid namastaff bahagian jantina tarikhlahir Type INT VARCHAR VARCHAR CHAR DATE Length/Values Index PRIMARY 100 50 1 A_I (Auto Inc.) X

22

e. Masukkan sedikit data ke dalam table maklumat staff seperti contoh di bawah menggunakan tab Insert. Setelah data selesai dimasukkan, tekan butang Go. StaffID Tidak perlu Tidak perlu f. Namastaff Ali Fatimah Bahagian BPTM BSWP Jantina L P TarihkLahir 1/1/1980 26/11/1984

Untuk browse data-data yang terdapat dalam table maklumatstaff, tekan pada tab Browse.

g. Sekarang kita akan buat satu user database MySQL baru dan setkan privileges bagi user tersebut ke database aplikasidb. Tekan icon Home di atas sebelah kiri dan tekan tab Privileges. Kemudian tekan link Add a new User di bawah page tersebut. Masukkan maklumat user tersebut seperti contoh dan tekan butang Go bila sudah selesai: Username: Host: Password: Re-type: Use text field Any host Use text field sysadmin [masukkan katalaluan] [masukkan katalaluan]

23

h. Pergi ke bahagian Database-specific privileges dan pada pilihan Add privileges on the following database:, pilih database yang hendak diberi privileges kepada sysadmin iaitu aplikasidb. Kemudian edit privileges bagi user sysadmin bagi database aplikasidb mengikut kesesuaian, seperti contoh berikut semua kotak ditandakan kecuali pada bahagian Administration kerana privileges tersebut lebih menjurus kepada tugas Pentadbir Pangkalan Data atau DBA Admin. Setelah selesai menanda privileges, tekan butang Go.

i.

Tekan semula tab Privileges dan akan didapati user sysadmin tersenarai di senarai tersebut. Tekan icon Action Edit Privileges bagi user sysadmin. Pada page Edit Privileges, scroll ke bawah pada bahagian Change Login Information / Copy User. Pada combo box Host, pilih Local dan tekan butang Go. Selepas itu scroll ke bahagian yang sama sekali lagi dan pada combo box Host, kali ini pilih Use text field: dan masukkan 127.0.0.1 pada text box di sebelahnya dan tekan Go.

24

j.

Tekan semula tab Privileges dan akan didapati terdapat 3 baris bagi pengguna sysadmin, sama seperti user root. Sekarang keluar dan logout daripada aplikasi PhpMyAdmin.

k. Pada login page PhpMyAdmin, login sebagai user sysadmin yang baru dicipta tadi dan masukkan katalaluan.

25

l.

Setelah login masuk sebagai user sysadmin, didapati database yang boleh dilihat hanya aplikasidb dan information_schema. Ini kerana database aplikasidb telah diberi privileges kepada user sysadmin manakala table information_schema hanya merupakan database informasi mengenai MySQL. User sysadmin ini juga tidak boleh mencipta database baru dan mempunyai function Database Administration yang terhad.

m. Dengan membuat pengguna database lain dan mengkonfigurasi privileges database kepada pengguna database tertentu, pengurusan database dapat dikawalselia dengan lebih terurus.Hanya pengguna yang sah kepada database itu sahaja dapat melihat dan mengurus database mereka sendiri. Ini juga dapat mengelakkan daripada penggunaan pengguna database DBA Admin iaitu root secara berleluasa dan tidak terkawal.Setiap aplikasi yang dibangunkan oleh pembangun sistem boleh membuat connection ke databasenya menggunakan user mereka tersendiri.

26

3. Pemasangan perisian MySQL Workbench. a. PENGENALAN MYSQL WORKBENCH MySQL Workbench ialah satu perisian yang menyediakan Tool Grafik Atau GUI untuk membolehkan kita bekerja dengan MySQL Database Server. MySQL Workbench juga menyokong sepenuhnya MySQL Server versi 5.1 dan ke atas. Dan juga serasi dengan MySQL Server 5.0, tapi tidak semua ciri-ciri dari 5.0 mungkin disokong oleh MySQL Workbench. MySQL Workbench tidak menyokong versi MySQL Server 4.x. MySQL Workbenchs melibatkan tiga fungsi utama iaitu: SQL Development Data Modeling Server Administration Gambaran ringkas mengenai fungsi ini. Fungsi SQL Development Keterangan Membolehkan anda membuat dan menetapkan connection ke database. Serta membolehkan anda untuk menyediakan parameter Sambungan, MySQLWorkbench menyediakan kemampuan untuk mengakses query SQL pada database Sambungan menggunakan built-in SQL Editor. Fungsi ini menggantikan fungsi yang digunakan sebelum ini perisian Browser Query stand-alone. Membolehkan anda wujudkan model-model skima pangkalan data anda secara grafik, jurutera terbalik dan ke hadapan antara satu skema dan live database , dan sunting semua aspek pangkalan data anda menggunakan Table Editor komprehensif. Table Editor menyediakan kemudahan mudah untuk digunakan untuk menyunting Tables, Columns, Indexes, Triggers, Partitioning, Options, Inserts and Privileges, Routines and Views.

Data Modeling

Server Administration Membolehkan anda wujudkan dan mentadbirkan instance server. Fungsi ini menggantikan fungsi yang disediakan oleh itu perisian MySQL Administrator stand-alone.

27

b. EDISI MYSQL WORKBENCH MySQL Workbench dikeluarkan dalam dua edisi. 1) Community Edition 2) Standard Edition Community edition boleh dimuat turun daripada Mysql Worbench website secara percuma dan standard edition pula menyediakan ciri-ciri tambahan, seperti kebolehan menghasilkan dokumentasi untuk pangkalan data, pada kos rendah.

Perbezaan Edisi Community dan Edisi Standard Edisi Komuniti (OSS) open source software Community Edition ialah asas kepada semua edisi-edisi MySQL Workbench. Kesemua edisi MySQL Workbench berdasarkan Community Edition dan semua penambahbaikan pada masa akan datang (update) untuk rangka kerja asas dan cirriciri baru akan dimasukkan dalam versi ini.

Standard Edition ialah tambahan kepada community edition yang dikomersialkan dengan penambahan modul-modul dan plugins, yang membolehkan proses aliran kerja dijalankan dengan lebih optimum. Tambahan modul dan plugins adalah MySQL Specific Schema Validation Model Validation General Schema Validation DBDoc Database documentation

DBDoc provides the following features: Document complex database schemata Document all SQL object types Document output available in different file formats A comparison of edition features can be found at MySQL Workbench Developer Central.

28

c. INSTALLING AND LAUNCHING MYSQL WORKBENCH MySQL Workbench disediakan untuk platform-platform berikut : Windows Linux Mac OS X Seksyen-seksyen berikut menjelaskan proses pemasangan untuk setiap platformplatform ini. Hardware Requirements Keperluan peralatan yang paling minimum untuk membolehkan MySQL Workbench berjalan dengan lancar : CPU Cores RAM Graphic Accelerators nVidia or ATI with support of OpenGL 1.5 or higher Core or Xeon 3GHz (or Dual Core 2GHz) or equal AMD CPU Intel Single (Dual/Quad Core is recommended) 4 GB (6 GB recommended) nVidia or ATI with support of OpenGL 1.5 or high 12801024 is recommended, 1024768 is minimum

Software Requirements The following operating systems are officially supported: Windows 7 (64-bit, Professional level or higher) Mac OS X 10.6.1+ Ubuntu 9.10 (64bit) Ubuntu 8.04 (32bit/64bit) Windows XP SP3, Vista Mac OSX (10.5 and 10.6) Intel Ubuntu 8.04 (i386/x64) Ubuntu 9.04 (i386/x64) Fedora 11 (i386/x64) Keperluan Asas untuk membolehkan MySQL Workbench bekerja: The Microsoft .NET 4.0 Framework. ( windows ) Cairo 1.6.0 or later glib-2.10 libxml-2.6 libsigc++ 2.0 Libzip

29

d. INSTALLING MICROSOFT NET 4.0 F e. RAMEWORK Microsoft net 4.0 framework yang juga dikenali sebagai .net (dot net) ialah software frame network bagi windows OS, ia nya digunakan untuk mengendalikan mana-mana bahasa pengaturcaraan didalam environment windows. .net perlu di install terlebih dahulu sebelum proses pemasangan perisian Mysql WB dilakukan : Langkah

i) Download fail .net daripada Microsoft Download Center


http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2 d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en klick Run, untuk memulakan proses instalasi. klick Save, untuk muat turun ke dalam computer. Klik Cancel, untuk membatalkan proses instalasi. Tick I Have read and accept the license term dan Klik butang Install

ii) iii) iv) v)

vi) Tunggu sehingga proses installasi selesai

30

vii) Klik Butang Finish

# Nota Tambahan : Untuk windows xp service pack perlu di upgrade kepada sp3 untuk membolehkan ia menyokong .net 4.0 Framework. Ia nya boleh boleh diperolehi di link berikut :http://www.microsoft.com/downloads/en/details.aspx?FamilyID=28e2fdb2-1aa54c84-8255-b3142ca2fe85 Arahan Klick Run untuk meneruskan proses instalasi. Klick Save untuk download ke komputer. Klik next

Pilih Agree dan Klik butang Next

31

Tunggu proses instalasi selesai.

Klik butang Finish

32

f.

INSTALLING MYSQL WORKBENCH ON WINDOWS Langkah langkah Pemasangan MySQL Workbench di atas platform windows boleh dilakukan dengan menggunakan Window Installer Package (.msi) atau juga boleh dibuat secara manual daripada ZIP fail. Pemasangan MySQL Workbench menggunakan Windows Installer (.msi) 1. Muat turun MySQL Workbench Installer Package fail daripada Mysql Workbench website, mysql-workbench-version-win32.msi dimana version adalah versi Mysql Workbench yang hendak digunakan. link : mysql-workbench-gpl-5.2.32-win32.msi 2. Right-click MSI fail dan select install atau double-clik fail tersebut untuk memulakan pemasangan. 3. Seterusnya klik next

4. Klik butang change untuk menukar directory path atau gunakkan default directory yang dicadangkan seterusnya klik butang Next.

33

5. Klik Next untuk teruskan instalasi.

6. Tunggu sehingga proses instalasi selesai

7. Klik butang Finish.

34

4. Pengurusan database MySQL menggunakan MySQL Workbench. Launching MySQL Workbench on Windows Untuk memulakan MySQL Workbench Klik START, PROGRAMS, MYSQL dan pilih MySQL Workbench. Paparan GUI untuk MySQL Workbench akan dipaparkan dan ianya dinamakan Home Screen.

ToolBars Plug-ins

Workspace

Dalam paparan Home Screen terdapat tiga bahagian utama iaitu : 1) Toolbars 2) Modul Plug-ins 3) Workspace Di rekabentuk untuk memudahkan capaian bagi setiap modul didalam WorkBench. Ia nya dibahagikan kepada tiga kawasan utama, dan disusun mengikut fungsi setiap modul: i) ii) iii) SQL Development Data Modeling Server Administration

35

A) MENTADBIR MySQL DATABASE ( SERVER ADMINISTRATION ) Dalam seksyen ini anda akan menyaksikan bagaimana untuk kita menggunakan MySQL Workbench bagi membuat hubungan diantara server bagi melaksanakan fungsi-fungsi Adminisration.

Untuk menguruskan MySQL Database dengan menggunakan modul Server Administration kita perlu membuat connection kepada Database terlebih dahulu. Terdapat 2 cara untuk membuat connection iaitu dengan memilih localhost untuk database yang digunakan pada host PC atau pun Remote Host bagi database yang berada di server. A -1.1 ) MEMBUAT CONNECTION KEPADA LOCALHOST ( XAMPP ) 1. Daripada Home Screen klik New Server Instance, dan CREATE NEW SERVER INSTANCE PROFILE wizard akan dipaparkan.

36

2. Pilih localhost dan Klik Next.

3. Di bahagian Database Connection kita akan masukkan criteria-kriteria yang diperlukan bagi membolehkan connection dibuat kepada database, klik Next.

4. Test DB Connection connection kepada database akan dijalankan dan sekiranya semuanya Berjaya, Klik Next.

37

Nota Tambahan :

Sekiranya kita menggunakan localhost ( xamp ) sebagai mysql database server error berikut akan dipaparkan. Ini kerana MySQL WB tidak menjumpai service mysql didalam host system yang kita gunakan untuk mengatasi masalah ini lakukan arahan seperti berikut : i) Buka Xamp control panel

ii) Klik stop button untuk menghentikan Mysql Database Server. iii) Tick pada Svc dan klik butang OK untuk install MySql Service. iv) Setelah selesai klik butang Start Untuk menjalankan MySql database Server.

38

5. Setelah selesai pergi kepada MySql WB dan Klik butang Back dan ulangi langkah 5. Sekiranya Berjaya paparan maklumat berikut akan diperolehi.

Klik Next, 6. Seterusnya pengujian akan dilakukan keatas host machine,

Klik Next.

Klik Continue untuk teruskan.

39

7. Klik Finish 8. Setelah configuration selesai dilakukan satu connection database akan dipaparkan didalam workspace Server Administration

Double-click pada connection tersebut untuk melihat status server berkenaan.

40

A -1.2 ) MEMBUAT CONNECTION KEPADA REMOTE HOST ( SERVER ) 1. Daripada Home Screen klik New Server Instance, dan CREATE NEW SERVER INSTANCE PROFILE wizard akan dipaparkan.

2. Pilih Remote Host dan Klik Next.

41

3. Masukkan IP Server, Username, Password Server dan juga Username serta Password untuk MySQL Database, Klik Next.

4. Status connection bejaya, Klik Next.

5. Klik Next. 6. Server Instance Name, Klik Finish.

42

SERVER ADMINISTRATION WORKSPACE.

Berikut adalah paparan bagi Server Administration Workspace dimana pada menu sebelah kiri mengandungi 4 module utama bagi membolehkan kita menguruskan MySQL Server. Module 1 MANAGEMENT Server Status Pemantauan keatas status server yang telah dihubungkan kepada MySql WB yang mana ia menunjukkan keadaan semasa server merangkumi penggunaan Cpu, Memory dan juga memaparkan pengguna yang sedang aktif. Startup/Shutdown Digunakan untuk stop/start MySql Service. Status and System Variables Senarai status dan sistem variable yang digunakan didalam MySql. Server Logs Senarai Log yang digunakan oleh MySql. Module 2 CONFIGURATION Option File Module ini memaparkan configuration yang digunakan oleh Mysql.

43

Module 3 SECURITY User and Privileges Digunakan untuk menguruskan pengguna untuk capaian ke database.

Module 4 DATA EXPORT / RESTORE Data Export and Restore Digunakan untuk menguruskan proses backup atau restore bagi sesebuah database.

44

B) SQL DEVELOPMENT Dalam seksyen ini anda akan menyaksikan bagaimana untuk menggunakan MySQL Workbench bagi membuat hubungan keatas database yang sedia ada untuk membolehkan proses Query, SQL script, manipulasi rekod serta mengurus objek-objek didalam database dapat dijalankan.

B 1.1) MEMBUAT CONNECTION PADA MySQL DATABASE. Proses untuk membuat connection bagi Modul SQL Development adalah sama seperti mana yang dipelajari di Bahagian (A) sebelum ini. Untuk membuat connection klik pada New Connection dibahagian bawah workspace SQL Development.

Paparan berikut akan diperolehi, masukkan nama connection yang dikehendaki dan klik butang Test Connection untuk menguji connection yang dibuat dan klik butang OK.

Bagi Localhost

45

Pilih Connection Method : Standard (TCP/IP) Masukkan Hostname : 127.0.0.1 / localhost Klik OK.

Bagi Server pula Pilih Connection Method : Standard (TCP/IP) over SSH Masukkan Hostname : <IP SERVER > Masukkan Username: <username SERVER > Masukkan Password: < password SERVER > Masukkan Username: <username MySQL DB > Masukkan Password: <password MySQL DB > Klik OK.

Setelah selesai Double-klik pada connection yang baru dibuat sebentar tadi.

46

Overview SQL Development Object Browser Senarai Database akan dipaparkan pada bahagian ini.

Overview Kerja-kerja editing pada database dilakukan pada bahagian ini.

47

B) DATA MODELING Dibahagian Data Modeling MySQL WB menyediakan beberapa cirri tertentu bagi membolehkan pengguna memanipulasi pangkalan data yang mana ia merangkumi cirri-ciri seperti berikut : Merekabentuk dan memanipulasi model dalam bentuk grafik. Reverse engineer daripada live database kepada bentuk model Foward engineer model kepada script atau database

Daripada workspace MySQL WB kita dapat melihat modul data modeling

B.1) MEMBUAT MODEL BARU Untuk membuat model baru Klik pada Create New EER Model pada bahagian Data Modeling

48

B.1) REVERSE ENGINEERING A LIVE DATABASE Pilih Database, Reverse Engineer ... daripada main menu. Ia akan memaparkan Reverse Engineer Database wizard. Rajah b.01.

Masukkan maklumat connection sebagai mana yang telah diperlajari sebelum ini. Dan Klik Next. Rajah b.02.

Jika Execution Completed Successfully Klik Next, Jika Error Klik Butang Back untuk memperbetulkan maklumat yang telah dimasukkan tadi.

49

Rajah b.03.

Pilih Database yang dikehendaki dan Klik butang Next. Rajah b.04.. Fetch Object Info

Retrieve Completed Successfully klik Next

50

Rajah b.05. Select Objects

Klik butang Show Filter untuk memaparkan kandungan database yang telah dipilih. Rajah b.06.

Pilih table yang diperlukan, dan Klik butang execute

51

Rajah b.07.

Klik Next, dan Finish.

52

B.1.0) FORWARD ENGINEERING USING SQL SCRIPTS B.1.1) FORWARD ENGINEERING SQL ALTER SCRIPTS Forward Engineering dengan menggunakan SQL Scripts hampir menyerupai konsep arahan mysqldump yang biasa digunakan diperingkat console Mysql. Pilih File, Export, Forward Engineer SQL CREATE Script paparan Forward Engineer SQL Script wizard. Rajah b.1.0. Creating a Schema

Masukkan Output SQL Script File path bagi menentukan tempat sql script file akan disimpan. Setelah itu pilih Sql Option yang hendak digunakan dan klik butang Next. Rajah b.1.1. SQL Object Export Filter

Klik Next,

53

Rajah b.1.2. Review Generated Script

Klik Finish, B.1.2) FORWARD ENGINEERING SQL ALTER SCRIPTS Forward Engineering SQL alter script digunakan untuk memasukkan atau mengabungkan 2 script yang berlainan kepada satu fail. Pilih File, Export, Forward Engineer SQL ALTER Script untuk membuka paparan Foward Engineer an ALTER Script wizard.

Pilihan fail yang hendak digabungkan pada bahagian Input fail dan pilih fail yang hendak digabungkan pada bahagian Output Fail. Dan Klik Next dan seterusnya Execute.

54

MODUL 3: SINTAKS SQL STATEMENT Download sample daripada http://www.sqltutorial.org/DownloadHandler.ashx?pg=ee43b06f-d7084cd5-8c4f-cd66dfb52e23&section=19484d36-9779-4ba0-a164c33da15e02a5&file=northwindMySQL.zip dan unzip fail tersebut. Cipta satu database baru di MySQL bernama northwind dan dengan menggunakan WinSCP, copy file tersebut ke dalam server dan run command berikut menggunakan putty dan masukkan password MySQL: # mysql -u root -p -h localhost northwind < /home/datacenter/northwind.sql Sekiranya terdapat error mesej, runkan command berikut dan masukkan password MySQL: #mysql_upgrade -p Berikut adalah struktrur dan relationship database Northwind:

55

1. CREATE DATABASE, ALTER DATABASE, DROP DATABASE a. CREATE DATABASE Bagi mencipta Database baru boleh menggunakan sintaks berikut: CREATE DATABASE testdb DEFAULT CHARACTER SET latin1; b. ALTER DATABASE Bagi mengubah Database sedia ada, gunakan sintaks berikut: ALTER DATABASE testdb DEFAULT CHARACTER SET ascii; c. DROP DATABASE Bagi membuang Database sedia ada, gunakan sintaks berikut: DROP DATABASE testdb;

2. CREATE TABLE, ALTER TABLE, DROP TABLE a. CREATE TABLE Bagi mencipta Table baru boleh menggunakan sintaks berikut: CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type, .... ) Sebagai contoh, untuk mencipta satu Table bernama Persons dan mempunyai 5 column seperti berikut: Nama Table: Persons Column: P_Id LastName FirstName Address City Type: int varchar(255) varchar(255) varchar(255) varchar(255)

56

Gunakan sintaks berikut: CREATE TABLE Persons ( P_Id int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )

b. ALTER TABLE Bagi mengubah Table sedia ada boleh menggunakan sintaks berikut; Menambah column baru: ALTER TABLE Persons ADD DateOfBirth date Mengubah Jenis Column sedia ada: ALTER TABLE Persons MODIFY COLUMN DateOfBirth year Membuang Column sedia ada: ALTER TABLE Persons DROP COLUMN DateOfBirth c. DROP TABLE Bagi membuang Table sedia ada, gunakan sintaks berikut: DROP TABLE Persons

57

3. SELECT, UPDATE, DELETE, INSERT INTO a. SELECT SELECT statement merupakan statement yang paling asas dan banyak digunakan di manamana aplikasi yang dibangunkan. Ia digunakan untuk mengambil data daripada Database untuk digunakan. Hasil daripada SELECT statement ini disimpan di dalam result table yang dipanggil result-set. SELECT statement yang paling asas adalah seperti berikut: SELECT column_name(s)/* FROM table_name Seperti contoh, sekiranya hendak mengambil semua data yang berada di dalam sesebuah table (Contohnya table Customers), gunakan sintaks seperti berikut: SELECT * FROM customers Result-set bagi sintaks di atas adalah seperti berikut:

Sekiranya hanya hendak mengambil data daripada Column tertentu, gunakan sintaks seperti berikut: SELECT CompanyName, ContactName FROM customers Result-set bagi sintaks di atas adalah seperti berikut di mana hanya 2 column diambil:

58

b. INSERT INTO INSERT INTO statement digunakan untuk memasukkan data ke dalam sesuatu table. Ia boleh digunakan dengan cara berikut; Memasukkan data yang penuh berdasarkan urutan column secara default: INSERT INTO table_name VALUES (value1, value2, value3,...) Seperti contoh untuk memasukkan data ke dalam table shippers: INSERT INTO shippers VALUES (7,'Pos Laju','1-800-888-8888') Anda akan lihat data yang baru telah berjaya dimasukkan ke dalam table.

Kemasukan data juga boleh dimasukkan dengan hanya memasukkan data ke column tertentu seperti berikut: INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...) Seperti contoh untuk memasukkan data ke dalam table employees hanya untuk column LastName, FirstName dan Title manakala yang lain dibiarkan kosong: INSERT INTO employees (LastName, FirstName, Title) VALUES ('Mohd','Ali','Mr.') Anda akan lihat hanya column yang ditetapkan akan dimasukkan data. Bagi EmployeeID, data akan dimasukkan secara automatik secara increment number kerana column tersebut telah disetkan dengan Auto_Increment.

59

c. UPDATE UPDATE statement digunakan untuk membuat perubahan pada data yang terdapat di dalam table. Statementnya adalah seperti berikut: UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value

Seperti contoh, kita akan membuat perubahan CompanyName Pos Laju di dalam table shippers ke Pos Malaysia dan Phone ke 1-800-777-7777. UPDATE shippers SET CompanyName='Pos Malaysia', Phone='1-800-777-7777' WHERE ShipperID=7 Jika dilihat data column CompanyName dan Phone bagi data ShipperID=7 akan berubah.

Apa akan jadi sekiranya kita menjalankan sintaks berikut: UPDATE shippers SET CompanyName='Pos Malaysia', Phone='1-800-777-7777' Semua data di dalam table shippers akan berubah column CompanyName dan Phone kerana kita tidak menentukan data mana yang hendak diubah dengan WHERE. WHERE adalah di mana kita meletakkan kondisi data manakah yang hendak diubah. Sekiranya tidak diletakkan WHERE, semua data di column yang hendak di ubah akan berubah.

d. DELETE DELETE statement digunakan bagi memadam data didalam table. Statementnya adalah seperti berikut: DELETE FROM table_name WHERE some_column=some_value Sebagai contoh, kita akan memadam data ShipperID=7 di dalam table shippers: DELETE FROM shippers WHERE ShipperID=7 Jika dilihat data dalam table tersebut, data bagi ShipperID=7 sudah tiada.

Namun apa akan berlaku sekiranya kita menjalankan sintaks berikut: 60

DELETE FROM shippers Semua data di dalam table shippers akan dipadam dan dikosongkan. Berhati-hati dengan statement ini kerana ia tidak boleh diundur. Data yang telah dipadam tidak boleh diperolehi semula melainkan mempunyai backup.

4. SELECT DISTINCT, WHERE, AND & OR, ORDER BY, GROUP BY a. SELECT DISTINCT Dalam sesebuah table, kebiasaannya terdapat banyak data yang sama atau duplicate data bagi sesuatu column. Seperti contoh jika dilihat pada table orders, pada column ShipCountry terdapat banyak data yang berulang-ulang seperti Brazil, France, Switzerland dan sebagainya. Dengan menggunakan SELECT DISTINCT, kita akan dapat data yang unik dan tidak berulang bagi column yang dipilih.

Seperti contoh jalankan sintaks berikut: SELECT DISTINCT ShipCountry FROM orders

61

Dengan itu kita akan dapat data ShipCountry yang unik dan tidak berulang seperti berikut:

b. WHERE Sintaks WHERE boleh digunakan bersama SELECT, UPDATE dan DELETE statement. Ia digunakan untuk menapis atau filter suatu rekod berdasarkan kriteria yang dimasukkan. Berikut adalah contoh penggunaannya: SELECT column_name(s) FROM table_name WHERE column_name operator=value Lihat pada table suppliers terdapat column Country di mana terdapat pelbagai nama Negara di dalamnya.

Sebagai contoh kita hanya mahu memilih data di mana Negaranya adalah Japan, oleh itu kitab boleh gunakan sintaks seperti berikut: SELECT * FROM suppliers WHERE Country='Japan' Hasilnya hanya data dengan Negara Japan akan dipilih seperti berikut:

62

Sintaks WHERE ini juga boleh digunakan dengan operator terutama bagi data yang berjenis integer seperti berikut: Operator Keterangan = Sama dengan <> Tidak sama dengan. Sesetengah SQL menggunakan != > Lebih besar daripada < Kurang daripada >= Lebih besar atau sama <= Kurang daripada atau sama BETWEEN Di antara lingkungan tertentu Contoh penggunaan operator adalah seperti berikut, di mana hanya data Quantity lebih besar daripada 100 di dalam table order_details akan dipilih: SELECT * FROM order_details WHERE Quantity > 100 Hasilnya akan dipapar seperti berikut di mana data dengan Quantiti > 100 akan dipilih:

c. AND & OR AND merupakan operator yang boleh digunakan untuk memilih data apabila semua kondisi adalah betul (TRUE), manakala OR merupakan operator yang akan memilih data apabila mana-mana kondisi adalah betul walaupun ada yang tidak menepati kondisi (FALSE).

63

Seperti contoh, sintaks berikut akan memilih data yang hanya ContactTitle Owner DAN Country Mexico. SELECT * FROM customers WHERE ContactTitle='Owner' AND Country='Mexico'

Kali ini kita tukarkan AND kepada OR dan lihat hasilnya. Data yang akan dipilih adalah data yang samada ContactTitle Owner ATAU Country Mexico. SELECT * FROM customers WHERE ContactTitle='Owner' OR Country='Mexico'

Kita juga boleh menggabungkan penggunaan operator AND dan OR dalam satu statement seperti berikut: SELECT * FROM customers WHERE ContactTitle='Owner' AND (Country='Mexico' OR Country='USA') Hasilnya data yang dipilih adalah ContactTitle Owner DAN Country samada Mexico ATAU USA.

64

d. ORDER BY Sintaks ORDER BY digunakan bagi menyusun data yang dipaparkan secara berturutan mengikut abjad atau terbalik. Secara default, ORDER BY akan menyusun data secara berturutan atau boleh diikuti dengan katakunci ASC (Ascending), manakala bagi menyusun data secara terbalik perlu diikuti dengan katakunci DESC (Descending). Format statement adalah seperti berikut: SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC Seperti contoh, kita akan mengeluarkan data dari table employees dan susun berturutan mengikut abjad berdasarkan column LastName. SELECT * FROM employees ORDER BY LastName

Kali ini cuba letakkan DESC selepas ORDER BY LastName dan lihat apa yang berlaku.

e. GROUP BY Penggunaan sintaks GROUP BY hampir sama seperti DISTINCT, tetapi ia digunakan untuk mengumpulkan set data yang sama beserta column yang mempunyai aggregate function seperti SUM(). Contoh penggunaan GROUP BY adalah seperti berikut: SELECT column_name, aggregate_function(column_name) FROM table_name GROUP BY column_name

65

Seperti contoh, set data di dalam table order_details mempunyai banyak OrderID yang sama tetapi Quantity yang berlainan.

Sekiranya kita hendak kumpulkan OrderID yang sama dan dapatkan jumlah kuantiti keseluruhan bagi setiap OrderID, boleh gunakan sintaks GROUP BY seperti berikut: SELECT OrderID, SUM(Quantity) FROM order_details GROUP BY OrderID Dengan statement di atas, dapat kita kumpul dan jumlahkan kuantiti bagi setiap OrderID yang sama.

5. LIMIT, LIKE, IN, BETWEEN, ALIAS a. LIMIT Sintaks LIMIT digunakan untuk menghadkan rekod jumlah baris result-set yang diperolehi. Format statement adalah seperti berikut: SELECT column_name(s) FROM table_name LIMIT number Seperti contoh, jika kita jalankan statement berikut, kita akan perolehi semua data di dalam table shippers iaitu sebanyak 6 data: SELECT * FROM shippers 66

Tetapi sekiranya kita setkan LIMIT seperti berikut, kita hanya akan dapat 2 baris data daripada keseluruhan data di dalam table shippers: SELECT * FROM shippers LIMIT 2

Ia juga boleh digunakan untuk mengambil data di tengah-tengah seperti berikut: SELECT * FROM shippers LIMIT 2,2 Dengan menggunakan sintaks LIMIT 2,2, hanya 2 data yang akan diambil bermula selepas baris ke-2.

Sekiranya sintaks LIMIT 2,3, hanya 3 data yang akan diambil bermula selepas baris ke-2.

* Sintaks LIMIT hanya di dalam database MySQL sahaja. ORACLE menggunakan ROWNUM.

b. LIKE Dengan menggunakan sintaks LIKE, kita boleh memilih data berdasarkan pattern yang dimasukkan dengan bantuan Wildcard % ketika menggunakan sintaks WHERE seperti berikut : SELECT * FROM customers WHERE CustomerID LIKE 'FR%'

67

Hasil daripada sintaks tersebut, hanya CustomerID yang bermula dengan FR akan dipilih.

Berikut adalah keterangan mengenai kedudukan Wildcard % apabila digunakan sintaks LIKE: Kedudukan Keterangan Wildcard ABC% Akan memaparkan data yang bermula dengan ABC %ABC Akan memaparkan data yang berakhir dengan ABC %ABC% Akan memaparkan data yang ditengah-tengahnya mengandungi ABC A%C Akan memaparkan data yang bermula dengan A dan berakhir dengan C

c. IN Sintaks IN membolehkan pemilihan data dibuat berdasarkan pelbagai kriteria dalam sesuatu column. Format penggunaan seperti berikut: SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...) Seperti contoh, kita mahu memilih data daripada table customers yang Country hanya Germany, UK dan Brazil. Kita boleh menggunakan sintaks OR seperti berikut: SELECT * FROM customers WHERE Country='Germany' OR Country='UK' OR Country='Brazil' Dengan menggunakan sintaks IN, statement kita akan lebih mudah seperti berikut: SELECT * FROM customers WHERE Country IN ('Germany','UK','Brazil') Hasilnya tetap sama di mana hanya data yang Country nya Germany, UK dan Brazil akan dipilih.

Apa akan jadi jika gunakan NOT IN seperti berikut: SELECT * FROM customers WHERE Country NOT IN ('Germany','UK','Brazil')

68

Data yang diperolehi adalah yang Country selain daripada 'Germany','UK' dan 'Brazil'.

d. BETWEEN Sintaks BETWEEN boleh digunakan dengan WHERE untuk mencari data berdasarkan lingkungan tertentu. Lingkungan tersebut kebiasaannya adalah Integer atau Tarikh. Berikut merupakan format statement yang mengandungi sintaks BETWEEN: SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 Sebagai contoh, daripada table order_details kita hanya hendak memilih data yang mempunyai kuantiti antara 10 sehingga 20, statement adalah seperti berikut: SELECT * FROM order_details WHERE Quantity BETWEEN 10 AND 20 Oleh itu kita akan dapat data yang mana kuantiti hanya antara 10 sehingga 20.

Contoh menggunakan sintaks BETWEEN berdasarkan lingkungan tarikh: SELECT * FROM orders WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-10'

69

Dengan menggunakan statement di atas hanya data yang OrderDate bermula 1/7/1996 sehingga 10/7/1996 akan dipilih:

Anda juga boleh menggunakan NOT BETWEEN bagi memilih data selain daripada lingkungan yang dinyatakan seperti berikut: SELECT * FROM order_details WHERE Quantity NOT BETWEEN 10 AND 100 Dengan statement di atas, semua data kecuali yang Kuantitinya antara 10 sehingga 100 akan dipilih:

e. ALIAS Kita boleh menamakan semula Table atau Column dengan nama lain yang dipanggil Alias. Bagi menamakan semula Table, statement berikut boleh digunakan: SELECT column_name(s) FROM table_name AS alias_name Seperti contoh, kita akan menamakan table categories ke Kategori: SELECT * FROM categories AS Kategori Bagi menamakan semula Column, statement berikut boleh digunakan: SELECT column_name AS alias_name FROM table_name Seperti contoh, kita akan menamakan column CategoryName ke NamaKategori: SELECT CategoryName AS NamaKategori FROM categories

70

Hasilnya adalah seperti berikut:

Untuk apakah menamakan semula Table dan Column? Ia bertujuan memudahkan kita membuat statement yang panjang terutama apabila kita menggabungkan 2 table atau lebih seperti berikut: SELECT c.CategoryName AS NamaKategori, p.ProductName AS NamaProduk FROM categories AS c, products AS p WHERE c.CategoryID = p.CategoryID Sekiranya tidak menggunakan alias, statement tersebut akan lebih panjang seperti berikut: SELECT categories.CategoryName AS NamaKategori, products.ProductName AS NamaProduk FROM categories, products WHERE categories.CategoryID = products.CategoryID Hasil keputusan bagi statement di atas adalah seperti berikut:

6. Normal Joins, INNER JOIN, LEFT JOIN, RIGHT JOIN, UNION, FULL JOIN a. Normal Joins Kebiasaannya bagi menggabungkan 2 atau lebih table di dalam sesebuah statement, kita akan menggunakan Normal Joins di mana table akan dihubungkan menggunakan keys yang berkaitan di setiap table berdasarkan Database Relationship. Sebagai contoh, table Suppliers dan Products berhubung dengan menggunakan key SuppliersID di kedua-dua table manakala table Products dan Categories berhubung dengan menggunakan key CategoryID di keduadua table.

71

Normal Joins ini menggunakan keys di kedua table yang hendak digabungkan sebagai kunci utama penggabungan yang dihubungkan dengan menggunakan =. Sebagai contoh, kita ingin memaparkan data daripada column CompanyName dan ContactName daripada table Suppliers dan column ProductName dan UnitPrice daripada table Products. Oleh itu kita perlu menggabungkan kedua table menggunakan key SupplierID seperti statement berikut: SELECT s.CompanyName, s.ContactName, p.ProductName, p.UnitPrice FROM suppliers AS s, products AS p WHERE s.SupplierID=p.SupplierID Hasil statement gabungan 2 table Suppliers dan Products adalah seperti berikut:

Contoh berikut pula akan menggabungkan 3 table iaitu Suppliers, Products dan Categories: SELECT s.CompanyName, s.ContactName, p.ProductName, p.UnitPrice, c.CategoryName FROM suppliers AS s, products AS p, categories AS c WHERE s.SupplierID=p.SupplierID AND c.CategoryID=p.CategoryID

72

Normal Joins hanya akan memaparkan data yang keys di kedua-dua table adalah match seperti contoh A=A, B=B. Sekiranya A terdapat di table 1 dan tidak di table 2, maka data tidak akan dipaparkan.

b. INNER JOINS Konsep INNER JOINS adalah sama dengan Normal Joins, di mana semua data yang match di kedua-dua table akan dipaparkan. Dengan menggunakan Venn diagram, konsep INNER JOINS adalah seperti berikut:

Table A dan Table B mempunyai set data yang tersendiri, dengan menggunakan INNER JOINS, data yang keynya match sahaja yang akan dipaparkan (warna gelap). Format statement: SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name Contoh statement: SELECT productID, productName, categoryName FROM products INNER JOIN categories ON products.categoryID = categories.categoryID Jumlah data yang diperolehi adalah 77:

73

Cuba kita guna cara Normal Joins seperti berikut: SELECT p.productID, p.productName, c.categoryName FROM products p, categories c WHERE p.categoryID = c.categoryID Kita akan tetap mendapat jumlah data sebanyak 77:

c. LEFT JOIN Teknik LEFT JOIN adalah menggabungkan dua table, A dan B dengan memaparkan semua data di Table A manakala data di Table B hanya yang keynya match sahaja dengan Table A. Oleh itu column di Table A yang tidak match dengan Table B akan kosong atau NULL.

Format statement seperti berikut: SELECT column_name(s) 74

FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name Untuk contoh ini kita akan lihat hubungan table Shippers sebagai Table A (LEFT) dan table Orders sebagai Table B (RIGHT) di mana ia dihubungkan dengan shippers.ShipperID=orders.OrdersID.

Di dalam table Shippers, terdapat 6 jenis shippers:

Manakala di dalam table Orders, jika dilakukan SELECT DISTINCT pada column ShipVia, kita akan mendapati hanya 3 jenis shippers sahaja iaitu ShipperID 1, 2 dan 3.

Sekiranya menggunakan Normal Joins atau INNER JOINS seperti berikut, kita hanya akan mendapat 830 data yang hanya key di table Orders dan Shippers yang match melalui column orders.ShipVia = shippers.ShipperID. SELECT ShipperID, CompanyName, orderID FROM shippers INNER JOIN orders ON shippers.ShipperID=orders.ShipVia

75

Dengan menggunakan LEFT JOIN seperti berikut, data yang diperolehi adalah 833, di mana terdapat 3 baris data lebih yang orderIDnya NULL. SELECT ShipperID, CompanyName, orderID FROM shippers LEFT JOIN orders ON shippers.ShipperID=orders.ShipVia

d. RIGHT JOIN Teknik RIGHT JOIN adalah seperti LEFT JOIN iaitu menggabungkan dua table, A dan B tetapi terbalik, dengan memaparkan semua data di Table B manakala data di Table A hanya yang keynya match sahaja dengan Table B. Oleh itu column di Table B yang tidak match dengan Table A akan kosong atau NULL.

76

Format statement seperti berikut: SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name Seperti contoh LEFT JOIN, kita akan terbalikkan Shippers sebagai Table B (RIGHT) dan Orders sebagai Table A (LEFT). SELECT orderID, ShipperID, CompanyName FROM orders RIGHT JOIN shippers ON orders.ShipVia= shippers.ShipperID Hasil daripada statement tersebut, semua data di Table B (RIGHT) iaitu Shippers akan dipaparkan manakala Table A hanya akan memaparkan data yang keynya match sahaja, yang tidak match akan dipapar sebagai NULL.

f. UNION 77

Sintaks UNIONS digunakan untuk menggabungkan 2 result-set atau lebih hasil daripada SELECT Statement dan akan memaparkan data penuh bagi kedua-dua table yang digabungkan dalam satu column. Pergabungan table tidak semestinya mempunyai relationship key yang sama. Format statement adalah seperti berikut: SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 Seperti contoh, kita akan menggabungkan 2 table yang tiada relationship iaitu Customers dan Categories. SELECT Country FROM customers UNION SELECT CompanyName FROM shippers Hasilnya semua data dari column Country table Customers dan data dari column CompanyName table Shippers akan digabungkan sebagai satu column dan paparan data adalah unik di mana tiada data yang berulang seperti penggunaan DISTINCT atau GROUP BY.

Tetapi sekiranya kita menggunakan UNION ALL seperti berikut: SELECT Country FROM customers UNION ALL SELECT CompanyName FROM shippers

Kita akan mendapati kedua table digabungkan dan datanya tidak unik dan terdapat pengulangan. 78

e. FULL JOIN Dengan menggunakan FULL JOINS, semua rekod di kedua Table A dan B akan dipaparkan walaupun keynya tidak match. Bagi data yang keynya tidak match, column tersebut akan dipaparkan sebagai kosong atau NULL.

Format statement adalah seperti berikut: SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name Akan tetapi di dalam MySQL tiada sintaks FULL JOINS tetapi konsep FULL JOINS boleh digunakan dengan menggabungkan LEFT JOIN, RIGHT JOIN dan UNION. Bagi melihat konsep FULL JOINS dilakukan, pergi ke table Shippers dan tukarkan ShipperID=2 ke ShipperID=8 dengan menjalankan sintaks ini: 79

UPDATE shippers SET ShipperID=10 WHERE ShipperID=2 Sekarang jalankan statement berikut: SELECT orderID, ShipVia, ShipperID, CompanyName FROM orders LEFT JOIN shippers ON orders.ShipVia= shippers.ShipperID UNION SELECT orderID, ShipVia, ShipperID, CompanyName FROM orders RIGHT JOIN shippers ON orders.ShipVia= shippers.ShipperID Hasilnya seperti berikut:

* Tukar semula ShipperID=10 ke ShipperID=2

7. Lain-lain seperti SELECT INTO, SELECT bersarang, Operasi Aritmetik dan build-in function seperti AVG(), COUNT(), FIRST(), LAST(), MAX(), MIN(), SUM(), UCASE(), LCASE(), MID(), LEN(), ROUND(), NOW(), FORMAT(). a. SELECT INTO Kita juga boleh membuat Table baru dengan menggunakan Table sedia ada dengan menggunakan sintaks SELECT INTO. Kebiasaannya ia digunakan untuk membuat backup table sedia ada ke table lain. Contoh statement SELECT INTO adalah seperti berikut: SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename MySQL tidak menyokong statement SELECT INTO, tetapi jika hendak menggunakan konsep yang sama boleh menggunakan statement berikut, sebagai contoh kita akan membuat table lain daripada table Employees: 80

CREATE TABLE employees_backup SELECT *FROM employees Dengan menjalankan statement ini, table employees_backup akan dicipta dengan struktur dan data yang sama dengan table employees.

b. SELECT Bersarang (Nested SELECT) SELECT Bersarang adalah SELECT statement yang dijalankan di dalam SELECT statement yang lain. Seperti contoh: SELECT c.CompanyName, ordersmore100.OrderID, ordersmore100.Quantity FROM customers AS c, ( SELECT a.OrderID, a.CustomerID, b.Quantity FROM orders AS a, order_details AS b WHERE a.OrderID=b.OrderID AND b.Quantity > 100 ) AS ordersmore100 WHERE c.CustomerID= ordersmore100.CustomerID Statement di atas akan menjalankan dulu SELECT statement di dalam sarang ( ) dan mengeluarkan record-set. Record-set ini dinamakan semula sebagai ordersmore100. Selepas itu record-set Ordersmore100 akan digunakan bagi melaksanakan SELECT statement di luar sarang dengan menggabungkan dengan table Customers. Berikut adalah result statement tersebut:

81

SELECT Bersarang boleh digunakan banyak kali dengan sarang yang paling dalam akan dilaksanakan terlebih dahulu kemudian sarang di luarnya dan seterusnya: SELECT statement #4 ( SELECT statement #3 ( SELECT statement #2 ( SELECT statement #1 ) ) )

c. Operasi Aritmetik MySQL membolehkan kita membuat operasi aritmetik asas seperti Tambah, Tolak, Darab dan Bahagi secara terus di dalam SQL statement seperti berikut: SELECT OrderID, UnitPrice, Quantity, (UnitPrice * Quantity) AS TotalPrice FROM order_details

82

d. Build-in Function AVG() Fungsi AVG() akan memulangkan jumlah purata bagi value integer set data yang dipilih, seperti contoh: SELECT AVG(UnitsInStock) AS PurataStok FROM products Hasil statement itu akan menghasilkan jumlah purata bagi colum UnitsInStock dalam table Products:

e. Build-in Function COUNT() Fungsi COUNT() akan mengira jumlah bilangan data atau baris yang diperolehi daripada statement dan kondisi yang dimasukkan. Seperti contoh, jika kita melaksanakan statement berikut, kita akan mendapati 13 baris data dipaparkan. SELECT Quantity FROM order_details WHERE Quantity > 100

Tetapi jika menggunakan fungsi COUNT() SELECT COUNT(Quantity) AS CntQuantity FROM order_details WHERE Quantity > 100

83

Kita akan mendapat bilangan baris data yang diperolehi dari statement tersebut iaitu sebanyak 13 baris data.

f. Build-in Function FIRST() Funsi FIRST() akan memilih data yang pertama di dalam table berdasarkan criteria dan kondisi yang dimasukkan seperti contoh: SELECT FIRST(column_name) FROM table_name Akan tetapi MySQL tidak menyokong fungsi FIRST(), bagi membuat perkara yang sama boleh menggunakan sintaks LIMIT seperti berikut: SELECT CompanyName FROM shippers LIMIT 1 Dengan ini hanya data yang pertama akan dipilih.

g. Build-in Function LAST() Funsi LAST() akan memilih data yang terakhir di dalam table berdasarkan criteria dan kondisi yang dimasukkan seperti contoh: SELECT LAST(column_name) FROM table_name Akan tetapi MySQL tidak menyokong fungsi LAST(), bagi membuat perkara yang sama boleh menggunakan sintaks LIMIT dengan cara menyusun result-set secara terbalik dan gunakan LIMIT 1 seperti berikut: SELECT CompanyName FROM shippers ORDER BY CompanyName DESC LIMIT 1

84

h. Build-in Function MAX() Fungsi MAX() digunakan untuk memilih nilai integer yang paling tertinggi di dalam column yang dipilih seperti contoh: SELECT MAX(UnitsInStock) AS StokMaks FROM products

i. Build-in Function MIN() Fungsi MIN() digunakan untuk memilih nilai integer yang paling terkecil di dalam column yang dipilih seperti contoh: SELECT MIN(UnitsInStock) AS StokMin FROM products

j. Build-in Function SUM() Fungsi SUM() digunakan untuk memberi jumlah keseluruhan atau sum up bagi nilai integer column yang dipilih: SELECT SUM(Quantity) AS JumlahKuantiti FROM order_details

Fungsi SUM() biasanya digunakan bersama GROUP BY di mana kita boleh menjumlahkan nilai column berdasarkan kumpulan seperti berikut: SELECT p.ProductName, SUM(o.Quantity) AS JumlahKuantiti FROM products AS p, order_details AS o WHERE p.ProductID= o.ProductID GROUP BY p.ProductName

85

k. Build-in Function UCASE() Fungsi UCASE() digunakan untuk memaparkan column yang dipilih dengan Huruf Besar atau Uppercase seperti berikut: SELECT UCASE(Description) AS UPPERCASE_DESCRIPTION FROM categories

l. Build-in Function LCASE() Fungsi LCASE() pula digunakan untuk memaparkan column yang dipilih dengan Huruf Kecil atau Lowercase seperti berikut: SELECT LCASE(Description) AS UPPERCASE_DESCRIPTION FROM categories

86

m. Build-in Function MID() Fungsi MID() digunakan untuk mengambil karakter daripada column teks seperti contoh berikut, MID(CategoryName,1,4) akan mengambil 4 karakter bermula daripada huruf yang pertama pada column CategoryName. SELECT MID(CategoryName,1,4) AS 4HurufKategori FROM categories

Contoh berikut akan mengambil 5 karakter bermula daripada huruf ke-3 pada column CategoryName: SELECT MID(CategoryName,1,4) AS 4HurufKategori FROM categories

87

n . Build-in Function LEN() Fungsi LEN() akan memberitahu kita berapa panjang aksara atau karakter bagi data di column yang dipilih. Di dalam MySQL function yang digunakan bagi tujuan ini adalah LENGTH() seperti contoh: SELECT CategoryName, LENGTH(CategoryName) AS BilAksaraKategori FROM categories

o . Build-in Function ROUND() Fungsi ROUND() digunakan untuk membundarkan nombor atau nombor perpuluhan ke nombor atau titik perpuluhan yang terdekat. Seperti contoh di bawah menggunakan sintaks ROUND(UnitPrice,0) bermaksud tiada titik perpuluhan: SELECT ProductName, UnitPrice, ROUND(UnitPrice,0) AS HargaNoBulat FROM products

Statement berikut pula akan membundarkan UnitPrice ke 2 titik perpuluhan terdekat: SELECT ProductName, UnitPrice, ROUND(UnitPrice,2) AS HargaNoBulat FROM products

88

p . Build-in Function NOW() Fungsi NOW() akan memaparkan tarikh dan masa terkini sebagai satu column: SELECT ProductName, UnitPrice, Now() AS TarikhMasaKini FROM products

q . Build-in Function FORMAT() Fungsi FORMAT() digunakan untuk memaparkan data mengikut format yang ditetapkan, kebiasaannya digunakan oleh data berbentuk Tarikh dan Integer. Akan tetapi bagi data berjenis Tarikh, function yang digunakan di dalam MySQL adalah DATE_FORMAT seperti berikut: SELECT ProductName, UnitPrice, DATE_FORMAT(Now(),'%e %M %Y') AS TarikhMasaKini FROM products

Format tarikh yang boleh dibentuk adalah seperti jadual berikut:

89

90

Sekiranya hendak memaparkan Integer dalam bentuk format tertentu (secara default ia akan menggunakan pembahagian koma , bagi setiap ribu seperti #,###,###) boleh gunakan statement berikut: SELECT FORMAT(SUM(Quantity),0) AS JumlahKuantiti FROM order_details

Bagi meletakkan titik perpuluhan di belakang nombor boleh ditentukan seperti berikut: SELECT FORMAT(SUM(Quantity),2) AS JumlahKuantiti FROM order_details

8. KUIZ Dapatkan result-set dengan memaparkan column berikut dengan menggabungkan table seperti berikut: Column Table OrderID order_details CompanyName AS Customer customers OrderDate (Format: DD/MM/YYYY) AS OrderDate orders ProductName products CategoryName AS ProductCategory categories CompanyName AS Supplier suppliers UnitPrice (Bundarkan ke 2 titik perpuluhan) AS UnitPrice order_details Quantity order_details TotalPrice (based on Unit Price & Quantity) (Bundarkan ke 2 titik order_details perpuluhan) DiscountedPrice (based on TotalPrice & Discount) (Bundarkan ke order_details 2 titik perpuluhan) CompanyName AS ShipBy shippers ShipCountry orders Susun berturutan berdasarkan OrderID.

91

SEKIAN, TERIMA KASIH

92