Materi Sistem Basis Data

(1)

BAB I

PENDAHULUAN

I.1

RDBMS MYSQL

Kebanyakan dari database tergantung pada Database Management System (DBMS) untuk mengelola data yang tersimpan dalam sistem database dan menyiapkan data agar tersedia bagi pengguna yang ingin mengakses informasi tertentu. Sebuah DBMS terdiri atas satu perangkat server dan client yang

komprehensif (meliputi banyak hal) yang mendukung berbagai macam tugas-tugas administratif dan yang berhubungan dengan data. Beberapa perangkat DBMS menyediakan beberapa tipe perangkat client, yang mengijinkan anda untuk berinteraksi secara langsung dengan data yang tersimpan dalam database.

Minimal sekali, sebuah DBMS harus dapat menyimpan data dan mengijinkan data tersebut dapat diambil kembali dan dimodifikasi, sekaligus melindungi data terhadap suatu operasi yang dapat merusak atau menyebabkan ketidakkonsistenan (inkonsistensi) data. Bagaimanapun, kebanyakan sistem menyediakan lebih banyak kemampuan. Secara umum, beberapa DBMS saat ini mendukung tipe-tipe fungsional berikut:

 Managing storage  Maintaining security  Maintaining metadata  Managing transactions  Supporting connectivity  Optimizing performance

 Providing back-up and recovery mechanisms

 Processing requests for data retrieval and modification

RDBMS = Relational Database Management System.

Beberapa RDBMS: MySQL, Oracle, DB2, SQL Server, dan PostgreSQL. Produk-produk ini sebagaimana perangkat DBMS, mengijinkan Anda untuk mengakses dan mengelola kebutuhan metadata untuk menentukan data yang disimpan. Perbedaan utama anta DBMS dan RDBMS adalah bahwa RDBMS lebih spesifik ke database relasional. Tidak hanya mendukung penyimpanan data dalam struktur seperti tabel, namun juga sebuah relationship


(2)

(keterhubungan) di antara tabel-tabel tersebut. MySQL termasuk salah satu “pemain” besar dalam pasar RDBMS.

I.2

FITUR-FITUR MYSQL

1. Scalability

MySQL saat ini dapat menangani database yang cukup besar. Beberapa organisasi atau perusahaan yang telah menerapkannya antara lain: Yahoo!, Cox Communications, Google, Cisco, Texas Instruments, UPS, Sabre Holdings, HP, The Associated Press, dan lain-lain. Bahkan NASA dan Biro Sensus US telah mengimplementasikan MySQL Solutions. Menurut dokumentasi produk MySQL, beberapa database yang digunakan oleh MySQL AB, perusahaan yang membuat MySQL, berisi 50 juta rekod, dan beberapa pengguna MySQL melaporkan bahwa database mereka berisi 60.000 tabel dan 5 milyar baris. 2. Portability

Beberapa sistem operasi yang dapat menjalankan MySQL: Unix, Linux, Windows, OS/2, Solaris, dan MacOS. MySQL juga dapat berjalan pada arsitektur yang berbeda-beda, mulai dari PC pada level bawah sampai level tinggi seperti mainframe.

3. Connectivity

MySQL mendukung jaringan secara penuh dan socket TCP/IP, socket Unix, dan named pipes (penamaan). Di lain hal, MysQL dapat diakses dari manapun pada internet, dan multiple (banyak) pengguna dapat mengakses database MySQLsecara simultan (bersamaan). MySQL juga menyediakan API (Application Programming Interface) untuk mendukung konektivitas dengan beberapa aplikasi yang ditulis dengan menggunakan C, C++, Perl, PHP, Java, dan Python.

4. Security

MySQL meliputi sistem yang handal untuk mengontrol akses ke data. System menggunakan sebuah host dan struktur berbasis client yang mengontrol siapa saja yang dapat mengakses informasi tertentu dan tingkatan akses ke informasi tersebut. MySQL juga mendukung protokol SSL (Secure Sockets Layer) untuk membuat suatu koneksi yang terenkripsi.

5. Speed

Jumlah waktu yang diperlukan sebuah database MySQL untuk merespon request data sama cepatnya bahkan lebih cepat ketimbang RDBMS komersil lainnya. Web site MySQL


(3)

(www.mysql.com) menyediakan hasil-hasil tes benchmark yang menunjukkan hasil kecepatan dalam penerapan MySQL.

6. Ease of Use

MySQL mudah untuk di-instal dan diterapkan. Pengguna dapat mendapatkannya dan menjalankannya dalam beberapa menit setelah men-downloadnya. Pada tingkat administratif, MySQL secara relatif mudah dioptimalkan, terutama jika dibandingkan dengan produk RDBMS lainnya.

7. Open Source Code MYSQL AB menyediakan source code MYSQL bagi siapa saja untuk men-download dan menggunakannya. Filosofi dari open source adalah mengijinkan audiens umum untuk berpartisipasi dalam me-review, menguji coba, dan mengembangkan kode.

I.3

PENGGUNAAN MYSQL SAAT INI

1. Database Backend for a Web Site 2. Usage Logger

3. Data Warehousing 4. Integrated Database 5. Embedded Database

I.4

LISENSI MYSQL

MySQL merupakan proyek open source, sehingga source code dari MySQL tersedia secara bebas. Sejak Juni 2000 (versi 3.23.19) GNU Public License (GPL) telah valid untuk MySQL. Hal ini meyakinkan bahwa MySQL akan terus berlanjut menjadi bebas tersedia.

I.5

PENGGUNAAN MYSQL DENGAN LISENSI OPEN SOURCE

 MySQL dapat digunakan tanpa biaya/ongkos jka aplikasi dikembangkan secara lokal dan digunakan tidak untuk tujuan komersil.

Free use for those who never copy, modify, or distribute.

 MySQL dapat digunakan secara bebas dalam website. Demikian juga, sebuah ISP bisa menyediakan MySQL pada pelanggannya tanpa harus membayar lisensi MySQL.

 MySQL dapat digunakan secara gratis untuk semua proyek yang berjalan di bawah lisensi gratis.


(4)

I.6

PENGGUNAAN MYSQL DENGAN LISENSI KOMERSIL

 Anda tidak boleh mengubah atau memperluas MySQL (database server) atau menjual versi baru atau produk yang dibuat tanpa menyediakan source code yang tersedia secara bebas.

 Dilarang mengembangkan produk komersil, misal program penyimpanan data pembukuan yang berbasiskan MySQL sebagai database tanpa membuat source code yang dibuat tersedia secara open source.


(5)

BAB

STALASI MYSQL

MySQL adalah aplikasi yang relatif mudah untuk menginstal, dan dapat diinstal pada sejumlah platform. Untuk menginstal MYSQL, kita harus membuat beberapa keputusan awal persis apa yang ingin kita instal, dan kemudian kita harus men download file yang diperlukan.

Memilih Versi MYSQL

Software MySQL dalam berbagai versi dapat Anda download. kita juga dapat mengikuti produk terbaru yang paling stabil atau men-download versi MySQL pada tingkat pengembangan tertentu. Dalam memilih versi MySQL kita juga harus mempertimbangkan dari segi kestabilan dan fitur yang disediakan. Kedua hal ini terkadang tidak didapati pada satu versi tertentu.

Jenis-jenis versi download dalam berbagai tingkatan :

Alpha:

Versi pada tingkatan ini belum mengalami uji testing sepenuhnya, perubahan besar masih bisa saja terjadi, dan fitur-fitur baru juga masih ada kemungkinan ditambahkan.

Beta:

Versi berikut dari alpha. Pada tingkatan ini, semua kode telah diuji dan tidak ada penambahan fitur baru / utama. Versi MySQL dalam tahap beta ini bisa dianggap sudah stabil.

Gamma atau Release Candidate (RC)

Saat versi beta telah diluncurkan dan dianggap stabil, kemudian berjalan tanpa menghadapi masalah yang cukup signifikan, maka produk ini akan dipromosikan ke tingkatan atau tahapan gamma. Pada poin ini, hanya perbaikan kecil saja yang akan dilakukan.

Production atau Generally Available (GA)

Produk pada versi ini sudah dianggap paling stabil. Telah berjalan pada site (tempat) yang berbeda-beda dengan tanpa masalah yang cukup berarti. Pada tahapan ini, hanya perbaikan yang sifatnya kritis saja yang akan diterapkan.

MySQL 3.23.n

Versi pertamanya adalah 3.23.0, diluncurkan pada Agustus 1999. Sejak versi 3.23.32 (Januari 2001), MySQL 3.23.n sudah dianggap stabil. Versi terbarunya adalah 3.23.58.


(6)

MySQL 3.23 merupakan versi yang paling banyak digunakan oleh penyedia Internet (ISP).

MySQL 4.0.n

Versi pertama pada seri ini adalah 4.0.0, diluncurkan pada Oktober 2001.Sejak Maret 2003 (versi 4.0.12), MySQL 4.0.n telah dianggap stabil dan direkomendasikan untuk penggunaan produksi. Versi terbarunya adalah 4.0.23. Dibanding versi 3.23, versi terbarunya muncul hanya untuk memperbaiki bug.

MySQL 4.1.n

Versi pertama adalah 4.1.0, sudah bisa di-download sejak April 2003. Sejak Oktober 2004 (versi 4.1.7) telah dianggap stabil dan direkomendasikan untuk penggunaan produksi. MySQL 5.0.n Versi pertama adalah 5.0.0. Telah tersedia sejak Desember 2003 untuk didownload. Versi terbarunya adalah 5.0.25 (September 2006).

MySQL 5.1.n

Versi minor terakhir pada versi ini (September 2006) adalah 5.1.22 Untuk versi MySQL yang lebih lengkap Anda bisa mengunjungi www.mysql.com

Semua produk, dalam tahap / tingkat apapun mereka diluncurkan, tentunya sudah diuji apakah mereka sudah aman digunakan.

MEMILIH PLATFORM

Anda dapat meng-instal MySQL dalam berbagai macam sistem operasi dan arsitektur komputer.

 Linux

Kita dapat menjalankan MySQL pada berbagai versi Linux dan banyak tipe dari arsitektur komputernya, meliputi : x86, S/390, IA64, Alpha, PPC, dan AMD64.

 Windows

Kita dapat menjalankan MySQL pada berbagai versi Windows, meliputi: Windows 95, Windows 98, Windows ME, Windows NT, Windows 2000, Windows XP, dan Windows 2003.

 Solaris

Kita dapat menjalankan MySQL pada Solaris 8 dan 9 pada banyak tipe arsitektur komputer, meliputi: 32-bit SPARC, 64-bit SPARC, dan 32-bit x86.


(7)

Kita dapat menjalankan MySQL pada FreeBSD pada banyak tipe arsitektur, meliputi: x86 dan LinuxThreads.

 Mac OS X

Kita dapat menjalankan pada Mac OS X 10.2 dan 10.3

Platform yang tersebut di atas tidak menampilkan daftar lengkapnya, hanya menyediakan gambaran umum dari berbagai macam pilihan yang dapat Kita gunakan.

Pada akhirnya, pilihan platform kita mungkin akan menjadi terbatas karena lingkungan di mana kita bekerja atau karena kita tidak ingin main-main dengan upgrade dan perubahan platform sampai kita menghabiskan waktu bekerja dengan MySQL. Untuk keperluan hanya belajar MYSQL , pilihan platform tidak begitu penting pada saat ini, meskipun dapat menjadi faktor penting di masa depan. Dalam hal apapun, selalu pastikan untuk memeriksa platform terbaru yang ada.

MEMILIH TIPE DISTRIBUSI

Jenis distribusi mengacu pada format yang MySQLYANG tersedia untuk download dan instalasi. Distribusi MySQL mendukung dua jenis:

 Binaries

Merupakan paket instalasi yang sudah dikompres dan berisi file-file yang sudah di-compile sehingga Anda dapat meng-instal MySQL tanpa harus bekerja atau memanipulasi source code –nya. Tipe binaries tersedia untuk beberapa system operasi (misal, Linux, Solaris, dan FreeBSD) dan dikemas dalam file tar terkompres. Selain dalam bentuk file yang biasanya untuk meng-instal tersedia juga dalam bentuk file terkompresi. Untuk instalasi linux, tersedia tipe RPM Package Manager (RPM), tipe .dmg untuk Mac OS X, dan file zip untuk Windows.

 Source Code

Distribusi ini berisi source code untuk MySQL. Kode yang didistribusikan belum dicompile, jadi terserah Anda untuk meng-compile–nya dulu sebelum instalasi. File source code disimpan dalam tiga jenis format : RPM untuk linux dan file zip untuk Windows.

MEMILIH EDISI MYSQL


(8)

 Standard:

Ini adalah edisi dasar dari MySQL dan dalam edisi ini sudah mencakup fungsifungsi yang tersedia, yang sudah diuji secara penuh.

 Max

Edisi ini meliputi semua fitur-fitur yang tersedia dalam edisi Standar ditambah fitur-fitur yang banyak tidak diperlukan pengguna atau mereka belum pernah diuji secara penuh. Edisi ini juga meliputi the Berkeley DB storage engine.

 Debug

Binary debug di-compile dengan tambahan data debug, yang dapat mempengaruhi performansi. Binary-binary tidak dimaksudkan untuk penggunaan dalam lingkungan produksi.

Untuk kebanyakan pengguna, termasuk pengguna MySQL pemula, edisi Standar telah menyediakan pada Anda semua fitur yang Anda perlukan untuk mempelajari MySQL dan membuat aplikasi yang terhubung ke MYSQL.

MENDOWNLOAD FILE DISTRIBUSI

Tahap-tahap untuk mendownload file-file yang diperlukan: 1. Buka http://dev.mysql.com/downloads.

2. Klik link untuk versi database dan klient yang anda ingin install. 3. Dari daftar file, cari platform yang berlaku, jenis distribusi, dan edisi..

4. Klik link mirror untuk mendownload file yang anda innginkan, kemudian pilih sebuah mirror.

5. Download file

Bila Anda men-download file dari situs MySQLWeb, perhatikan bahwa file mengikuti penamaan khusus konvensi. Untuk file biner dasar, file menggunakan format berikut:

mysql-<edition>-<version>-<platform>.tar.gz

MENGINSTAL MYSQL

Anda dapat menginstal MySQL pada berbagai platform, namun tidak mungkin untuk mendiskusikan proses instalasi untuk setiap salah satu platform . Berikut ini akan dipaparkan cara instalasi MySQL di sistem operasi berbasis Windows,DENGAN MENGGUNAKAN Microsoft Windows XP Profesional Edition SP2.


(9)

Berikut langkah-langkah instalasi:

1. Log In di Windows dengan akun yang mempunyai hak administrative 2. Windows Explorer, dan cari file setup MySQL atau file zip.

3. Jalankan file setup tersebut. Setelah itu akan muncul gambar Setup Wizard

4. Klik Next, maka akan muncul pilihan yang menggambarkan tipe-tipe setup yang dapat Anda lakukan.

Sebaiknya anda memilih instalasi Typical. Dalam tipe ini semua fungsional yang anda butuhkan sudah disuguhkan. Setelah anda sudah terbiasa, jika ingin lebih mengetahui apa yang anda insta, pilih custom dan pilih komponen-komponen yang ingin anda install.

5. Klik next,akan muncul tampilan Ready to Install the Program,yang akan menyajikan detail dari instalasi.


(10)

6. Klik install untuk memulai instalasi. Akan muncul layar Installing MySQL Server yang menyajikan kepada anda progress instalasi yang terjadi,

Setelah bagian utama dari proses instalasi selesai, akan muncul layar MySQL.com Sign-Up, menyajikan pilihan untuk membuat akun di MySQL.com jika Anda ada koneksi ke internet.


(11)

Untuk kali ini, lewati saja pembuatan akunnya dan lanjutkan dengan instalasi. Anda dapat membuat akun kapan saja.

7. Pilih opsi Skip Sign-Up, dan klik Next. Layar Wizard Completed

8. Pastikan bahwa pilihan Configure the MySQL Server now terpilih, dan klik Finish.

MENGKONFIURASI MYSQL SERVER

Setelah Anda menyelesaikan tahapan instalasi MySQL, Anda dapat menjalankan MySQL Server Instance Configuration Wizard untuk mengatur system anda. Panduan ini memungkinkan Anda untuk menentukan tipe konfigurasi, install MySQL sebagai service, dan mengatur inisial security setting (keamanan). Jika Anda memilih pilihan Configure the MySQL Server now pada layar terakhir dari MySQL

Setup Wizard, MySQL Server Instance Configuration Wizard secara otomatis dipanggil. Anda juga dapat memanggil panduannya dari Start Menu Windows (sebagai bagian dari grup program MySQL).

Setelah Anda menjalankan MySQL Server Instance Configuration Wizard, Anda dapat mengikuti langkah-langkah berikut untuk mengatur MySQL Server:


(12)

2. Klik Next. Layar berikutnya akan menyajikan pada Anda panduan untuk memilih tipe konfigurasi. MySQL Server Instance Configuration Wizard memungkinkan Anda untuk memilih pilihan Detailed Configuration atau pilihan Standard Configuration. Pilihan Detailed Configuration mengajak Anda untuk menuju proses identifikasi konfigurasi setting yang spesifik dengan lingkungan Anda. Misal, Anda dapat menspesifikasikan apakah Anda bekerja pada komputer developer, server, atau dedicated. Anda juga dapat menspesifikasikan setting konfigurasi sebagaimana tipe-tipe utama dari database yang ditunjang, jumlah pengguna secara konkuren, dan setting port. Jika Anda memilih opsi Standard Configuration, MySQL Server akan di-set dengan konfigurasi untuk tujuan umum. Untuk saat ini Anda pilih saja yang Standar.


(13)

Pada layar tersebut juga terdapat pilihan yang mengijinkan Anda untuk mengatur MySQL sebagai service. Jika Anda bekerja pada Windows NT/2000/XP/Server 2003, Anda dapat menjalankan MySQL sebagai service, dimana hal ini memang direkomendasikan untuk digunakan. Secara default, pilihan Install as Windows Service terpilih, MySQL dipilih dalam daftar drop-down untuk Service Name, dan pilihan Launch the MySQL Server automatically juga terpilih. Selain itu, pada MySQL versi 5 ini juga disediakan layanan pilihan Include Bin

Directory in Windows PATH. Secara default pilihan ini tidak terpilih. Jika Anda memilihnya maka setiap aplikasi yang ada di direktori Bin (MySQL) dapat dipanggil dari direktori manapun pada struktur direktori Windows, misal dari command line atau Run

4. Pastikan setting default terpilih; lalu klik Next. pada tampilan ini mengijinkan Anda untuk memodifikasi inisial security settings

Dalam layar ini, Anda dapat memodifikasi inisial security settings dengan memasukkan password ke akun pengguna root, akun pengguna administratif utama/primer secara


(14)

otomatis dibuat di MySQL. Jika Anda memilih opsi Modify Security Settings, Anda juga dapat memilih Root mungkin hanya koneksi dari localhost pilihan, yang digunakan untuk menentukan bahwa user root tidak dapat terhubung ke server MySQL jarak jauh. Namun untuk keamanan sebaiknya Anda tidak memilihnya. Sehingga akun Root hanya bisa diakses oleh/dari localhost saja. Anda juga dapat memilih opsi Create An Anonymous Account, dimana mengijinkan Anda untuk membuat akun anonymous (tidak diketahui) pada MySQL server.

5. Pastikan Anda memilih opsi Modify Security Settings, kemudian masukkan password root yang baru di textbox New root password dan di textbox Confirm. Pastikan bahwa hanya root koneksi dari localhost dan bahwa pilihan Create An Anonymous Account opsi tidak dipilih. Kemudian klik Next.

6. Klik Execute. Akan muncul layar seperti yang menyediakan dengan laporan status (dengan opsi yang di-checklist) yang menandakan bahwa setiap tugas telah dikerjakan. Jika proses konfigurasi telah lengkap, semua tugas seharusnya di-checklist.

Sebagaimana Anda lihat, pada layar menunjukkan bahwa file konfigurasi telah dibuat, MySQL telah di-instal sebagai service, dan service telah dimulai, juga security settings telah diterapkan.


(15)

7. Klik Finish. Panduan konfigurasi akan tertutup, dan MySQL siap untuk digunakan.

EDISI MYSQL SERVER

Sekarang setelah Anda meng-instal MySQL dan memulainya, Anda sudah siap untuk menguji hasil instalasi. Prosesnya cukup sederhana, yaitu dimaksudkan untuk memverifikasi bahwa MySQL server sedang berjalan dan dabatase administratif mysql telah dengan benar diinisialisasi


(16)

BAB III

BEKERJA DENGAN MYSQL

Database Dasar

✑✟☛✟✒✟✓✔ ✏✕ ✓✖✄ ✟✠✏ ☎✞☎✓☛✗✟✓☎ ✠✟☛ ✟✒✟✓✔ ✕✟✞✘ ✒✔✗☎✓☎ ☛✟✒✔✄ ✕✟✞✘ ✒✔✗✙✟☎☛✟✞ ✠✔✞✘✟✞ ✚✔✞✘✟✏✟✞✟✞☎✞✓☛✟✄ ✟✓☎✛ ✕✌✜✢, ✠☎☛✔☛✟✚✙✟✞✚✔✞✘ ✘✣✞✟✏✔✞✕☎✏✚✟✞✆✣✞✘ ✓☎, ✠✟✞✏✔✏✒✔ ✗☎✙✟✞✠✟☛ ✟ ✕✟✞✘ ☛✔✗✙✟☎☛ ✠✔✞✘✟✞ ✓☎✓☛✔✏ ✒✟✞☛✣✟✞ ✛✕✌✜✢ ✠✟✞ ✣✞☛✣✙ ✤✎ ✞✟ ✥✟✙☛✣✆✣✞✘ ✓☎✎ ✞✟✄ ☎☛✟✓✦✑✟☛✟✒✟✓✔ ✏✕ ✓✖✄✡✟✗✣✓✠☎☎✞☎✓☎ ✟✄ ☎✓✟✓☎✓✔✒✔✄✣✏✂ ✞✠✟✠✟✚✟☛✏✣✄ ✟☎✏✔✞✘ ✘ ✣✞✟✙✟✞✛ ✕✌✜✢.

✧✟✠✟✠✟✓✟✗✞✕✟☞✠✟☛ ✟✒✟✓✔✏✕✓✖✄☛✔ ✗✏✟✓✣✙ 15 ☛✟✒✔✄. ★✟✒✔✄✒✔ ✗☎✙✣☛✏✔✏✒✔ ✗☎✙✟✞✘✟✏✒✟✗✟✞ ✓☎✞✘✙✟☛✠✟☛ ✟✕✟✞✘✠☎✓✔✗☛✟✙✟✞✠✟✄ ✟✏✓✔☛☎✟✚☛✟✒✔✄.

✑☎✗✔✙☛✎✗☎ ✩ ✓☎

✪✎✄✣✏ ✞✓_priv Berisi data kontrol akses untuk setiap kolom dalam tabel tertentu.

db Mengandung hak akses data yang mendefinisikan

jenis hak pengguna diberikan pada database tertentu. func Berisi data tentang fungsi-fungsi yang ditetapkan

pengguna yang telah

telah ditambahkan ke MySQL. help_category, help_keyword,

help_relation, help_topic

Berisi data yang terkait dengan sistem bantuan MySQL.

host Mengandung hak akses data yang mendefinisikan

jenis keistimewaan sebuah host yang diberikan pada database tertentu.

tables_priv Berisi hak akses untuk setiap tabel dalam database tertentu.

time_zone,

time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type

Berisi data yang terkait dengan fungsi zona waktu di MySQL.

user Mengandung hak akses data yang mendefinisikan

bahwa pengguna dapat melakukan koneksi ke server MySQL, dari komputer para pengguna untuk


(17)

mengakses MySQL, dan jenis hak global bahwa pengguna memiliki hak untuk mengakses database MySQL.

The Grant Tables

Sebuah tabel grant adalah salah satu tabel dalam database mysql yang digunakan untuk mengontrol akses ke MySQL dan database MySQL. Secara default, MySQL membuat lima tabel grant berikut ini:

• columns_priv • db

• host • tables_priv • user

Tabel grant menentukan pengguna mana yang dapat mengakses MySQL, dari komputer mana dia dibolehkan mengakses, aksi apa yang dapat dilakukan pengguna tersebut, dan pada obyek mana aksi tersebut dapat dilakukan. Misal, tabel grant mengijinkan Anda untuk menspesifikasikan pengguna mana yang dapat menampilkan data pada database tertentu dan pengguna mana yang dapat mengupdate data secara aktual.

Aksi-aksi yang diijinkan untuk dapat dilakukan oleh pengguna dan data yang dapat merekan akses dikontrol oleh sekumpulan privileges (hak). Berikut ini adalah table yang mendaftar masing-masing hak yang tersedia dalam MySQL dan aksi-aksi apa saja yang diijinkan untuk dapat dilakukan oleh pengguna.

Perintah isi

Select_priv Querydata ke database.

Insert_priv Memasukkan data ke dalam database. Update_priv Update data dalam database.

Delete_priv Menghapus data dalam database. Create_priv Membuat suatu tabel dalam database. Drop_priv Menghapus suatu tabel ddalam database. Reload_priv Mengambil data di tabel grant ke dalam MySQL. Shutdown_priv Mematikan server MySQL.

Process_priv Menampilkan daftar proses-proses dari MySQ File_priv Mengekspor data dari database ke dalam file.


(18)

Grant_priv Memberikanprivileges(hak) pada obyek-obyek database. References_priv Fungsionalitas ini belum didukung, namun maksud dari hak ini

muncul agar mengijinkan pengguna mengkonfigurasi batasanforeign key(kunci tamu/asing)

Index_priv Membuat dan menghapus indeks dalam database. Alter_priv Mengubah obyek-obyek dalam database.

Show_db_priv Menampilkan semua database.

Super_priv Mengerjakan tugas administratif tingkat lanjut. Create_tmp_table_pri Membuat tabel temporer.

Lock_tables_priv Menempatkanlock(kunci) pada tabel.

Execute_priv Menjalankan stored procedure (prosedur tersimpan). Pada versi 5.0 sudah mulai didukung.

Repl_slave_priv Membaca log binary untuk suatu master replikasi.

Repl_client_priv Meminta informasi mengenai servermasterdanslaveyang digunakan untuk replikasi.

Table_priv Mengakses tabel tertentu dalam database.

Column_priv Mengakses kolom tertentu pada tabel dalam database.

Tabel User

Tabel user merupakan tabel grant utama dalam database mysql. Tabel ini mengontrol siapa yang bisa membuat koneksi ke MySQL, dari host mana mereka bisa terkoneksi, dan hak superuser yang mana yang mereka miliki. Sebuah hak superuser diterapkan secara global ke MySQL. Sebuah pengguna yang merupakan superuser dapat mengerjakan tugas-tugas yang ditentukan oleh hak tersebut pada database manapun dalam sistem. Setiap pengguna MySQL didaftar dalam table user, baik diberikan hak dalam tabel tersebut atau tidak. Tabel user menyediakan jangkauan terluas dalam implementasi MySQL, kemudian diikuti tabel db dan host. Jika seorang pengguna tidak terdaftar dalam tabel user, maka pengguna tersebut tidak dapat terkoneksi ke MySQL.


(19)

MENGGUNAKAN PROGRAM-PROGRAM DALAM MYSQL

Menspesifikasikan Pilihan Program

Sebagian besar program MySQL mendukung banyak pilihan yang dapat Anda tentukan ketika Anda menjalankan program. Sejumlah pilihan yang mungkin Anda memilih untuk menyertakan dengan satu program mungkin menjadi sedikit berat, terutama jika Anda harus mengetikkan pilihan mereka berulang-ulang. Sehingga, MySQL mendukung berbagai cara untuk menentukan pilihan yang tersedia untuk program-program anda:

Command prompt entries:

anda dapat menentukan pilihan dan, ketika diketikan perintah pada command prompt.

Configuration files:

Anda dapat menambahkan opsi untuk file konfigurasi yang spesifik untuk suatu program atau tersedia untuk semua program-program client.

Aliases:

Jika sistem operasi Anda mendukung pembuatan alias, Anda dapat membuat alias yang mendefinisikan pilihan spesifik yang ingin Anda tetapkan.

Scripts:

Anda dapat membuat sebuah shell script yang mendefinisikan program dan pilihan,kemudian Anda dapat memanggil script tersebut dari dalam shell.

Environment variables:

Anda dapat mengatur variabel lingkungan yang mempengaruhi operasional program MySQL.

Menspesifikasikan Pilihan di Command Prompt

Beberapa perintah yang dapat dilakukan untuk menentukan pilihan:

direktori Deskripsi

mysqlaccess --help menentukan pilihan yang tersedia dengan menggunakan pilihan bantuan.

lso access help by using a shorter version of the command:

mysqlaccess -?

mengakses petunjuk dengan menggunakan versi pendek.


(20)

nama pendek untuk setiap opsi.dan memiliki banyak pilihan.

mysql -u root Menentukan pilihan dengan menggunakan nama pendek untuk pilihan itu,

mysql -uroot Menentukan pilihan dengan menggunakan nama pendek untuk pilihan itu, tanpa memisahkan nama dari nilai-nilai.

mysql -u root -p Menentukan pilihan dengan tambahan password pilihan (-p).

mysql test -u root -p Menentukan pilihan dengan mengetikan nama database setelah nama program.

Menentukan Pilihan dalam File Konfigurasi

Sebuah file konfigurasi (atau pilihan file) dikutip oleh sejumlah program MySQL ketika program-program diluncurkan. Berisi file konfigurasi pengaturan yang sebanding dengan pilihan yang dapat Anda tentukan pada baris perintah saat Anda menjalankan program. Setiap pilihan yang tersedia pada baris perintah tersedia untuk digunakan dalam file konfigurasi. Untuk memasukkan pilihan pengguna dalam file konfigurasi, yang dapat dimasukan dalam command prompt, sebagai berikut:

mysqladmin --user=root

Jika Anda akan menyertakan pilihan ini pada sebuah file konfigurasi, anda akan mengetikan berikut:

user=root

Anda kemudian dapat menambahkan lebih banyak pilihan pada baris di bawahnya, seperti pilihan menggunakan perintah baris, tempat pilihan dalam file konfigurasi di baris terpisah, sebagai berikut:

[mysqladmin] host=server12 user=root user=pw1

Baik Linux dan Windows (dan juga sistem operasi lain) mendukung file-file konfigurasi. File-file konfigurasi adalah cara mudah untuk menentukan pilihan program Anda. Hal ini terutama berguna untuk program-program yang membutuhkan beberapa pilihan atau bahwa Anda menjalankan lagi dan lagi. Dengan sebuah file


(21)

konfigurasi, yang Anda butuhkan untuk menentukan adalah nama program pada prompt perintah, sedangkan Pilihan diterapkan secara otomatis.

File-file Lybrary, Script, dan Program Server

MySQL menyertakan sejumlah file-file program, script, dan library yang berkaitan dengan operasi server. Tabel berikut menyediakan deskripsi dari masing-masing file. Untuk mempelajari opsi mana yang tersedia untuk tiap-tiap file, ketikka nama file, bersamaan dengan opsi --help di command prompt, dan tekan Enter.

File Terkait Server Deskripsi

libmysqld File library yang digunakan untuk meng-embed(menanam) server MySQL ke aplikasi lain. File libmysqld sebenarnya bukan merupakan program, namun dia dapat digunakan dengan program stand-alonelain sehingga mereka bisa menyertakan server MySQL.

mysql.server Filescriptyang dapat Anda gunakan di sistem Unix untuk memulai dan mengakhiri server MySQL secara otomatis.

mysql_install_db Filescriptyang membuat dan mendiami inisial database (mysql dan test) setelah MySQL telah di-instal.

mysqld File program server MySQL. Program mysqld harus sedang berjalan untuk mendukung koneksi client dikarenakan akses ke data harus melalui server.

mysqld-max File program server MySQL yang menyertakan tambahan fitur yang terdapat pada file program mysqld standar. mysqld_multi Filescriptyang dapat Anda gunakan untuk mengelola

banyak proses mysqld.Scriptdapat memulai dan mengakhiri server sebagaimana laporan status terkini mereka.

mysqld_safe Filescriptyang memulai server MySQL secara otomatis, restartjika diperlukan, dan mengawasinya. Penggunaan script mysqld_safe merupakan cara yang


(22)

Program-program Client

Program-program client MySQL mengijinkan Anda untuk berinteraksi dengan server

MySQL dan data yang tersimpan di MySQL. Tabel berikut ini menjelaskan programprogram client yang terdapat dalam MySQL.

Program Client Deskripsi

myisamchk Memeriksa dan memperbaiki tabel MyISAM. Sebaiknya Anda tidak menggunakan utilitas myisamchk saat server sedang berjalan.

myisampack Mengkompres tabel MyISAM ke tabelread-onlyuntuk mengurangi kebutuhan penyimpanan.

mysql Mendukung akses data di database MyQL. Anda dapat menggunakan utilitas ini dalam mode interaktif atau batch. Mode interaktif mengijinkan Anda untuk mengakses data secara langsung dan melakukanqueryterhadap database. Mode batch mengijinkan Anda untuk mengeksekusi query yang tersimpan dalam filescriptdan menyimpan hasilqueryke file. mysqladmin Menyediakan antarmuka administratif untuk instalasi MySQL.

Anda dapat mengerjakan berbagai macam tugas-tugas

administratif, seperti mendapatkan informasi konfigurasi MySQL, mengatur password, menghentikan server, membuat dan

menghapus database, dan menerapkan hak akses.

mysqlbinlog Menampilkan file log update biner dalam suatu format teks. mysqlcheck Memeriksa dan memperbaiki tabel MyISAM. Anda harus

menggunakan utilitas mysqlcheck saat server sedang jalan, dimana berbeda dari myisamchk, dimana Anda seharusnya tidak mengunakannya saat server sedang jalan.

mysqldump Menyalin data dalam tabel database ke dalam file teks. Hal ini dapat berguna jika Anda ingin mem-backupdata, membuat database pengujian, atau memindahkan database ke server lainnya.

mysqlimport Menyalin data dari file teks ke dalam tabel dalam database MySQL.


(23)

daftar tabel dalam database, atau informasi mengenai tabel tertentu.

perror Menampilkan deskripsi dari kodeerror(kesalahan) sistem atau kodeerrorpenanganan tabel untuk tabel MyISAM, ISAM, dan DBD.

UTILITAS MYSQL

1. Menggunakan MYSQL mode interaktif

Ketika Anda menggunakan utilitas mysql dalam mode interaktif, Anda memanggil tool dari command prompt. Misal, Anda ingin login di host dengan nama SERVER1 pada database mysql dengan user root. Untuk melakukannya Anda akan menspesifikasikan perintah berikut ini:

mysql mysql –h SERVER1 –u root –p

Jika Anda menyertakan opsi ini dalam file konfigurasi, maka Anda tidak perlu menspesifikasikannya di command prompt, kecuali Anda ingin menimpa opsi-opsi yang telah ditentukan dalam file konfigurasi. Jika Anda tidak ingin menimpa opsiopsi yang sudah ditentukan, maka Anda hanya perlu menuliskan nama filenya saja.

Untuk menampilkan perintah apa saja yang terdapat dalam mysql client utility, Anda dapat mengetikkan help di mysql prompt-nya.

Help

2. Menggunakan MYSQL dalam mode batch

Menggunakan utilitas client mysql dalam mode batch menyediakan pada Anda jalan untuk mengeksekusi pernyataan-pernyataan dalam file dari shell command prompt, tanpa harus ke utilitas mysql. Perintahnya adalah:

mysql –u nama_user –p < <file sumber>

File sumber dapat berupa file teks yang berisi pernyataan SQL dan perintah mysql. Jika Anda mengeksekusi perintah ini, hasil yang dikembalikan oleh query ditampilkan di command prompt. Anda juga dapat menyimpan hasilnya ke file lain, yaitu dengan perintah:

mysql –u nama_user –p < <file sumber> > <file target>

ASSIGNING ACCOUNT PASSWORD

Dengan menggunakan utilitas mysqladmin, kita dapat membuat akun password baru atau mengganti passsword baru tanpa harus berhubungan dengan tabel dalam database secara langsung lewat query.


(24)

Misal, kita ingin memberikan password baru pada akun pengguna

mysqladmin –u nama_user password pasw_baru

Untuk selanjutnya pengguna tersebut harus menggunakan password baru yang telah diberikan. Jika ingin mengubah password lama yang sudah diberikan sebelumnya, maka Anda harus menyediakan passwordnya yang lama, ketika ditanya untuk memasukkan password lama.

mysqladmin –u nama_user –p password pasw_baru

Selain cara di atas, Anda juga bisa memberikan password melalui utilitas mysql client. Setelah Anda login di mysql client, berikan perintah berikut:


(25)

BAB V

✫ ✬✭✮✯✰ ✱

A

✲✮✳

A

A

✵✶✷ ✸✹✸✺✻✼✽ ✽✺✾✿ ✺❀ ✺✿ ✺❁ ✺✸✿ ✺❀ ✺❂ ✺✻✹✸❃ ✻❄❁

Sebelum Anda dapat melakukan hal apapun dengan data dalam database, data harus sudah ada. Untuk alasan inilah, pernyataan SQL yang perlu Anda pelajari adalah memasukkan data dalam database. Ketika Anda menambahkan data dalam database, sebenarnya Anda menambahkannya ke tabel-tabel secara individu dalam database tersebut.

✵✶✷ ✶✷ ✸✹✾❅❅✼✾✺✽✺✾❆ ✹❇ ✾❃ ✺❀ ✺✺✾❈✾✻✹❇❀✼✾❀✼✽✸✹✾✺✸❂ ✺❉ ✽ ✺✾✿✺❀ ✺

Pernyataan INSERT merupakan metode yang paling umum digunakan untuk memasukkan data secara langsung ke dalam sebuah tabel.

Berikut ini adalah sintaks dalam pernyataan INSERT :

<pernyataan insert>::=

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] {<opsi nilai> | <opsi set> | <opsi❊❋●❋❍t>}

< opsi nilai >::=

<nama tabel> [(<nama kolom> [{, < nama kolom >}...])]

VALUES ({<ekspresi> | DEFAULT} [{, {< ekspresi > | DEFAULT}}...]) [{, ({<ekspresi > | DEFAULT} [{, {< ekspresi > | DEFAULT}}...])}...]

< opsi set >::= < nama tabel >

SET < nama kolom >={< ekspresi > | DEFAULT} [{, < nama kolom >={< ekspresi > | DEFAULT}}...]

< opsi❊❋●❋❍t>::=


(26)

<pernyataan■❏❑❏▲t>

Anda dapat menggunakan pernyataan INSERT untuk menambahkan data ke tabel manapun dalam database MySQL. Ketika Anda menambahkan data Anda harus melakukannya dari baris ke baris, Anda harus memasukkannya dengan tepat satunilai per kolom. Jika Anda menspesifikasikan nilai yang lebih sedikit dari jumlah kolom yang ada, nilai default atau null akan dimasukkan ke kolom yang nilainya tidak dispesifkasikan.

Sekarang perhatikan baris pertama sintaks pada pernyataan INSERT:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO]

Sebagaimana Anda lihat, pada bars pertama memerlukan kata kunci INSERT dan sejumlah opsi-opsi. Opsi pertama adalah LOW_PRIORITY dan DELAYED. Anda dapat menyertakan salah satu dari opsi ini, tidak bisa keduanya. Jika Anda menspesifikasikan LOW_PRIORITY, pernyataan tidak akan dieksekusi sampai tidak ada koneksi klien yang sedang mengakses tabel yang sama dimana pernyataan INSERT juga sedang mengakses. Hal ini dapat menyebabkan penundaan yang lama sementara Anda menunggu pernyataan tersebut dieksekusi. Pada saat itu, Anda tidak dapat melakukan aksi apapun. Jika Anda menspesifikasikan DELAYED, eksekusi juga akan ditunda, namun Anda dapat melanjutkan untuk melakukan aksi lain sementara pernyataan INSERT berada dalam antrian. Opsi LOW_PRIORITY dan DELAYED dapat digunakan hanya untuk memasukkan data terhadap tabel MyISAM dan ISAM.

Opsi berikut yang dapat Anda tentukan adalah klausa IGNORE. Opsi ini diterapkan terutama pada pernyataan INSERT yang menambahkan banyak baris ke suatu tabel. Jka Anda menspesifikasikan IGNORE, baris-baris yang ditambahkan akan diacuhkan jika mereka berisi sebuah nilai yang terduplikasi terhadap nilai dari ▼ ◆ ❖P◗ ◆y❘❏y atau❖❙ ❚❏x unik. Pernyataan INSERT melanjutkan untuk

menambahkan baris-baris yang tersisa. Jika Anda tidak menspesifikasikan IGNORE, nilai-nilai yang terduplikasi akan membatalkan proses penambahan data.

Menggunakan alternatif <opsi nilai> pada pernyataan INSERT

Alternatif <opsi nilai> pada pernyataan INSERT mengijinkan Anda untuk menambahkan satu atau lebih baris ke suatu tabel. Sintaksnya adalah sebagai berikut:


(27)

<nama tabel> [(<nama kolom> [{, < nama kolom >}...])]

VALUES ({<ekspresi> | DEFAULT} [{, {<ekspresi> | DEFAULT}}...]) [{, ({<ekspresi> | DEFAULT} [{, {<ekspresi> | DEFAULT}}...])}...]

Sebagaimana Anda lihat dalam sintaks, Anda harus menyediakan nama tabel dan sebuah klausa VALUES. Anda juga mempunyai pilihan untuk menspesifikasikan satu atau lebih kolom setelah nama tabel. Jika Anda menspesifikasikan nama kolom, mereka harus ditutup dalam tanda kurung dan dipisahkan oleh koma.

Sekali Anda menspesifikasikan nama tabel dan kolom opsional, Anda harus menspesifikasikan klausa VALUES. Klausa harus menyertakan minimal satu nilai, dimana direpresentasikan oleh <ekspresi> atau kata kunci DEFAULT. Jika Anda menyertakan nama kolom setelah nama kolom, klausa VALUES harus menyertakan sebuah nilai untuk setiap kolom, sesuai dengan daftar kolom yang ada. Jika Anda tidak menentukan nama kolom, Anda harus menyediakan sebuah nilai untuk setiap kolom dalam tabel, sesuai dengan daftar kolom yang terdefinisi dalam tabel.

Kita akan membuat pernyataan pemasukan data berdasarkan definisi tabel berikut:

CREATE TABLE CD (

IDCD SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, NamaCD VARCHAR(50) NOT NULL,

Copyright YEAR,

JumlahDisk TINYINT UNSIGNED NOT NULL DEFAULT 1, JumlahStok TINYINT UNSIGNED,

JumlahCadangan TINYINT UNSIGNED NOT NULL, JumlahTersedia TINYINT UNSIGNED NOT NULL, TipeCD VARCHAR(20),

WaktuPenambahan TIMESTAMP );

Jika Anda lupa dengan penjelasan elemen-elemen dalam definisi tabel silakan dibaca modul pada pertemuan sebelumnya.


(28)

Tabel dalam definisi ini, dimana bernama CD, menyimpan informasi mengenai compact disks. Anggap saja Anda ingin menggunakan pernyataan INSERT untuk menambah informasi mengenai CD Anda yang bernamaSurgamu – Koleksi Ungu. Anda dapat menset pernyataan Anda dalam berbagai cara. Pertama adalah menentukan nilai dari setiap kolom, tanpa menspesifikasikan nama dari kolom, contoh:

INSERT INTO CD

VALUES (NULL, ‘Surgamu – Koleksi Ungu’,2006, 2, 10, 3, JumlahStok - JumlahCadangan, ‘Slow’, NULL);

Dalam pernyataan ini, baris pertama berisi kata kunci perintah INSERT, opsional kata kunci INTO, dan nama tabel (CD). Klausa VALUES meliputi sebuah nilai untuk setiap kolom, dimasukkan secara berurut dimana sesuai dengan urutan penampakan kolom dalam definisi tabel. Nilai-nilai ditutup dalam tanda kurung dan dipisahkan oleh koma.

Kolom pertama diisi dengan NULL. Nilai ini digunakan pada kolom IDCD, dimana dikonfigurasi dengan opsi AUTO_INCREMENT dan merupakanprimary key. Dengan menspesifikasikan NULL, nilai inkrementasi berikutnya secara otomatis ditambahkan pada kolom tersebut ketika Anda menambahkan baris ini ke tabel. Karena ini adalah baris pertama yang ditambahkan ke tabel, nilai 1 dimasukkan ke kolom IDCD.

Nilai berikut dalam klausa VALUES adalah menunjuk pada kolom NamaCD. Karena nilainya string, dia ditutup dengan tanda kutip satu pada kedua sisinya.

Catatan, untuk menambahkan karakter tertentu dalam string , Anda harus memakai tanda

backslash. Misal:

 String = ’Do’a Ibu’

Anda harus menuliskan ’Do\’a Ibu’

 Begitu juga untuk tanda kutip ganda (”),backslash(\), persen (%), danunderscore(_). Empat nilai berikut yang ditentukan dalam klausa VALUES adalah data tanggal dan numerik yang menunjuk kolom-kolom dalam definisi tabel (Copyright = 2006, JumlahDisk =2, JumlahStok = 10, dan JumlahCadangan = 3).


(29)

Nilai yang diberikan untuk kolom JumlahTersedia (JumlahStok-JumlahCadangan) adalah merupakan ekspresi yang menggunakan dua nama kolom dan tanda operator aritmatika minus (-) untuk mengurangi nilai sebanyak pada kolom JumlahCadangan dari nilai pada kolom JumlahStok untuk memperoleh jumlah total CD yang tersedia untuk dijual. Dalam hal ini totalnya adalah 7.

Nilai berikutnya adalah Slow, dimana dimasukkan pada kolom TipeCD. Nilai terakhir adalah NULL, dimana digunakan untuk kolom WaktuPenambahan. Kolom dikonfigurasi sebagai kolom TIMESTAMP, yang berarti bahwa waktu dan tanggal sekarang ditambahkan secara otomatis pada kolom tersebut.

Cara lain untuk menambahkan tanggal sekarang adalah dengan menggunakan fungsi NOW(), daripada NULL. Jika hanya tanggal saja, Anda dapat mengugnakan fungsi CURDATE() atau CURTIME() untuk waktu.

Berikut ini juga contoh untuk menambahkan data ke tabel CD:

INSERT LOW_PRIORITY INTO CD (NamaCD, Copyright, JumlahDisk, JumlahStok, JumlahCadangan, JumlahTersedia, TipeCD)

VALUES (‘Opick – Semesta Bertasbih’, 2006, DEFAULT, 13, 2, JumlahStok - JumlahCadangan, ‘Nasyid’);

Dalam pernyataan ini, kolom IDCD dan WaktuPenambahan tidak dispesifikasikan. Karena IDCD merupakan kolom AUTO_INCREMENT, sebuah nilai inkrementasi secara otomatis ditambahkan ke kolom tersebut. Dan karena kolom WaktuPenambahan merupakan kolom TIMESTAMP, waktu dan tanggal sekarang dimasukkan ke kolomnya.

Untuk kolom JumlahDisk, DEFAULT digunakan. Ini menandakan bahwa nilai default harus dimasukkan ke kolom. Dalam hal ini, nilai 1. Sebaliknya, nilai yang tertera sama dengan nilai yang Anda lihat sebelumnya. Dalam contoh terakhir ini terdapat opsi LOW_PRIORITY dalam klausa INSERT. Sehingga, pernyataan ini tidak diproses dan klien akan terus menunggu sampai semua koneksi klien telah selesai mengakses tabel yang dituju.

Sekarang kita akan menampilkan sebagian data dari tabel CD, misal IDCD, NamaCD, dan JumlahDisk, hasilnya :


(30)

+---+---+--- + | IDCD | NamaCD | JumlahDisk |

+---+---+--- + | 1 | Surgamu – Koleksi Ungu | 2 |

| 2 | Opick – Semesta Bertasbih | 1 |

+---+---+--- + 2 rows in set (0.00 sec)

Contoh lain yang lebih sederhana:

INSERT INTO CDs (NamaCD) VALUES (‘GIGI ’);

Sedangkan berikut ini contoh untuk menambahkan banyak baris sekaligus:

INSERT INTO CDs (NamaCD, Copyright, JumlahDisk, JumlahStok, JumlahCadangan, JumlahTersedia, VALUES (‘Slank 99’, 1999, 1, 9, 0,

JumlahStok-JumlahCadangan, ‘Blues’), (‘Metallica The Unforgiven’, 1990, 1, 14, 2, JumlahStok-JumlahCadangan, ‘Metal’), (‘Boomerang – Bawalah Aku’, 1988, 1, 6, 1, JumlahStok-JumlahCadangan, ‘Rock’);

❯❱❲ ❱❳ ❨❩❬❭❭ ❪ ❬❫❴❫ ❬❵ ❩❛ ❬❜❫❝❫❫ ❬❛ ❩❵❞❫❡ ❩❪ ❬❝ ❪❴❨❩❬❫ ❨❢❫ ❣❴❫ ❬❤❫❝❫

Selain pernyataan INSERT untuk menambahkan data ke dalam tabel, Anda juga dapat menggunakan pernyataan REPLACE. Perbedaan dengan INSERT adalah bagaimana nilai dalam kolom primary key

dan indeks uniquediperlakukan. Dalam pernyataan INSERT, jika Anda mencoba memasukkan baris yang berisi nilai indeks uniqueatauprimary keyyang sudah terdapat dalam tabel, Anda tidak bisa


(31)

menambahkannya dalam baris tersebut. Pernyatan REPLACE akan menghapus baris lama dan menambahkan baris yang baru.

Sintaksnya adalah:

Sedangkan berikut ini contoh untuk menambahkan banyak baris sekaligus:

<pernyataan replace>::=

REPLACE [LOW_PRIORITY | DELAYED] [INTO] {< opsi nilai > | < opsi set > | < opsi select >

<opsi nilai>::=

< nama tabel > [(<nama kolom > [{, < nama kolom >}...])]

VALUES ({<ekspresi > | DEFAULT} [{, {< ekspresi > | DEFAULT}}...]) [{, ({<ekspresi > | DEFAULT} [{, {< ekspresi > | DEFAULT}}...])}...]

<opsi set>::= <nama tabel>

SET < nama kolom >={<ekspresi> | DEFAULT} [{, < nama kolom >={<ekspresi> | DEFAULT}}...]

<opsi select>::=

<nama tabel> [(<nama kolom> [{, < nama kolom >}...])] <pernyataan select>

Contoh.

Terdapat definisi tabel sebagai berikut:

CREATE TABLE Inventori (

IDProduk SMALLINT UNSIGNED NOT NULL PRIMARY KEY, JumlahStok SMALLINT UNSIGNED NOT NULL,

JumlahPemesanan SMALLINT UNSIGNED NOT NULL, TanggalUpdate DATE


(32)

Karakteristik utama dalam tabel Inventori adalah kolom IDProduk dikonfigurasi sebagaiprimary key. Dia tidak menggunakan opsi AUTO_INCREMENT, sehingga Anda harus menyediakan sebuah nilai untuk kolom ini. Berikut ini contoh pernyataan REPLACE untuk menambahkan data pada setiap kolom dalam tabel Inventori:

REPLACE LOW_PRIORITY INTO Inventori VALUES (101, 20, 25, ‘2006-10-14’);

Anda dapat menampilkan nilai-nilai yang telah Anda tambahkan dalam tabel Inventori dengan mengeksekusi perintah SELECT berikut:

SELECT * FROM Inventori

Misalkan Anda ingin menambahkan data baru sebagai berikut:

REPLACE LOW_PRIORITY INTO Inventori VALUES (101, 10, 25, ‘2006-10-16’);

Dalam pernyataan tersebut juga disertakan nilai 101. Hasilnya, baris yang asli dengan nilai IDProduk tersebut akan dihapus dan baris baru akan ditambahkan.

✐❥❦ ❧♠♥♦ ♣qrst ♠rstsrs✉s ❧rst s✈s ✇♠❧① ✇② ✉

Pernyataan utama yang digunakan untuk memodifikasi data dalam database MySQL adalah pernyataan UPDATE. Sintaksnya adalah sebagai berikut :

<pernyataan update>::=

UPDATE [LOW_PRIORITY] [IGNORE]

<single table update> | <joined table update>

<single table update>::= <nama tabel>


(33)

SET <nama kolom>=<ekspresi> [{, <nama kolom>=<ekspresi>}...] [WHERE <definisi where>]

[ORDER BY <nama kolom> [ASC | DESC] [{, <nama kolom> [ASC | DESC]}...]] [LIMIT <jumlah baris>]

<joined table update>::=

<nama tabel> [{, <nama tabel>}...]

SET <nama kolom>=<ekspresi> [{, <nama kolom>=<ekspresi>}...] [WHERE <definisi where>]

Baris pertama dari sintaks berisi kata kunci perintah UPDATE bersamaan dengan opsi LOW_PRIORITY dan IGNORE, keduanya seperti yang Anda lihat pada pernyataan INSERT. Anda sebaiknya menggunakan opsi LOW_PRIORITY ketika Anda ingin menunda eksekusi pernyataan UPDATE sampai tidak ada lagi koneksi klien yang sedang mengakses tabel target. Anda sebaiknya menggunakan opsi IGNORE jika Anda ingin update dilanjutkan meskipun ditemukan nilai duplikat padaprimary keydan indeksunique. (Baris dengan nilai duplikat tidak diupdate).

③④⑤⑥ ⑦⑧⑨⑩❶ ④❶ ⑩❷④❸❶⑦⑤⑥⑥ ⑩ ❸(SINGLE TABLE)

Untuk mengupdate tabel tunggal dalam database MySQL, dimana tidak ada kondisi join yang diambil ke dalam akun untuk melakukan peng-update-an, Anda sebaiknya membuat pernyataan UPDATE yang menggunakan alternatif <single table update>, dimana ditunjukkan sintaks berikut ini :

<single table update>::= <nama tabel>

SET <nama kolom>=<ekspresi> [{, <nama kolom>=<ekspresi>}...] [WHERE <definisi where>]

[ORDER BY <nama kolom> [ASC | DESC] [{, <nama kolom> [ASC | DESC]}...]] [LIMIT <jumlah baris>]

Sebagaimana terlihat pada sintaks, Anda harus menspesifikasikan nama tabel dan klausa SET. Klausa SET meliputi, minimal, sebuah nama kolom dan ekspresi yang berhubungan, dihubungkan dengan tanda sama dengan (=). Informasi mengeset sebuah nilai untuk satu kolom tertentu. Jika Anda ingin


(34)

menyertakan lebih dari satu kolom, Anda harus memisahkan pasangan kolom/ekspresi dengan koma.

❹❺❻❼ ❺❽❾

Membuat tabel Buku.

CREATE TABLE Buku (

IDBuku SMALLINT NOT NULL PRIMARY KEY, NamaBuku VARCHAR(40) NOT NULL, Stok SMALLINT NOT NULL

)

ENGINE=INNODB;

Memasukkan data ke dalam tabel Buku.

INSERT INTO Buku

VALUES (101, ‘Noncomformity: Writing on Writing’, 12), (102, ‘The Shipping News’, 17),

(103, ‘Hell\’s Angels’, 23),

(104, ‘Letters to a Young Poet’, 32), (105, ‘A Confederacy of Dunces’, 6), (106, ‘One Hundred Years of Solitude’, 28);

Tabel berikut adalah tabel Pembelian, yang menyertakan foreign key yang mereferensi ke tabel Buku.

CREATE TABLE Pembelian (

IDPembelian SMALLINT NOT NULL PRIMARY KEY, IDBuku SMALLINT NOT NULL,

Kuantitas TINYINT (40) NOT NULL DEFAULT 1, TanggalBeli TIMESTAMP,

FOREIGN KEY (IDBuku) REFERENCES Buku (IDBuku) )


(35)

ENGINE=INNODB;

Memasukkan data ke dalam tabel Pembelian.

INSERT INTO Pembelian

VALUES (1001, 103, 1, ‘2006-10-12 12:30:00’), (1002, 101, 1, ‘2006-10-12 12:31:00’),

(1003, 103, 2, ‘2006-10-12 12:34:00’), (1004, 104, 3, ‘2006-10-12 12:36:00’), (1005, 102, 1, ‘2006-10-12 12:41:00’), (1006, 103, 2, ‘2006-10-12 12:59:00’), (1007, 101, 1, ‘2006-10-12 13:01:00’), (1008, 103, 1, ‘2006-10-12 13:02:00’), (1009, 102, 4, ‘2006-10-12 13:22:00’), (1010, 101, 2, ‘2006-10-12 13:30:00’), (1011, 103, 1, ‘2006-10-12 13:32:00’), (1012, 105, 1, ‘2006-10-12 13:40:00’), (1013, 106, 2, ‘2006-10-12 13:44:00’), (1014, 103, 1, ‘2006-10-12 14:01:00’), (1015, 106, 1, ‘2006-10-12 14:05:00’), (1016, 104, 2, ‘2006-10-12 14:28:00’), (1017, 105, 1, ‘2006-10-12 14:31:00’), (1018, 102, 1, ‘2006-10-12 14:32:00’), (1019, 106, 3, ‘2006-10-12 14:49:00’), (1020, 103, 1, ‘2006-10-12 14:51:00’);

Perhatikan bahwa nilai-nilai yang ditambahkan ke kolom IDBuku meliputi hanya nilai-nilai yang terdapat dalam kolom IDBuku pada tabel Buku. Kolom IDBuku di Pembelian merupakan kolom yang mereferensi/mengkait, dan kolom IDBuku di tabel Buku merupakan kolom yang direferensi/dikait. Setelah membuat tabel dan menambahkan data pada tabel-tabel tersebut, Anda dapat memodifikasi datanya. Contoh:

UPDATE Buku SET Stok=Stok+10;


(36)

Dalam pernyataan ini karena tidak kondisi khusus yang harus dipenuhi, berarti akan mengubah seluruh nilai dari kolom Stok ditambahkan dengan 10.

Sedangkan untuk memodifikasi data dengan memnuhi kondisi tertentu, Anda bisa menambahkannya dengan klausa WHERE.

UPDATE Pembelian SET Kuantitas=2

WHERE IDPembelian=1001;

Dalam pernyataan di atas berarti akan mengupdate kolom Kuantitas menjadi 2 dimana IDPembelian = 1001.

UPDATE Pembelian SET Kuantitas=Kuantitas+1 WHERE IDPembelian=1001;

Sedangkan dalam pernyataan di atas, baris dengan IDPembelian = 1001, nilai dari kuantitasnya yang lama akan ditambahkan dengan 1.

UPDATE LOW_PRIORITY Buku SET Stok=Stok+10

WHERE Stok<30;

Setiap rekod/baris pada tabel Buku yang mempunyai Stok lebih kecil dari 30 akan ditambah dengan 10.

UPDATE Pembelian SET Kuantitas=Kuantitas+1 WHERE IDBuku=103

ORDER BY TanggalPembelian DESC LIMIT 5;


(37)

Mengupdate tabel Pembelian yang mempunyai IDBuku = 103, dimana nilai Kuantitas ditambah 1. Diurutkan berdasarkan TanggalPembelian secara DESCENDING pada 5 baris pertama.

❿➀➁➂ ➃➄➅➆➇ ➀➇ ➆➈➀➉JOIN (JOINED TABLE)

Dalam contoh pernyataan UPDATE sebelumnya Anda telah melihat bahwa update hanya dilakukan pada tabel-tabel secara individual tanpa menjoinkannya dengan tabel lain. Meskipun tabel-tabel berisiforeign keyyang direferensi/dikait oeh tabel lain, Anda tidak menspesifikasikan kondisino join

dalam pernyataan UPDATE. Sintaksnya adalah sebagai berikut:

<joined table update>::=

<nama tabel> [{, <nama tabel>}...]

SET <nama kolom>=<ekspresi> [{, <nama kolom>=<ekspresi>}...] [WHERE <definisi where>]

Contoh.

UPDATE Buku, Pembelian

SET Buku.Stok = Buku.Stok - Pembelian.Kuantitas WHERE Buku.IDBuku= Pembelian.IDBuku

AND Pembelian.IDPembelian=1002;

Dalam pernyataan di atas berarti, mengupdate tabel Buku, dimana kolom Stok yang baru merupakan hasil pengurangan kolom Stok yang lama dengan kolom Kuantitas pada tabel Pembelian dengan syarat IDBuku di tabel Buku sama dengan IDBuku di tabel Pembelian dan IDPembelian di tabel Pembelian = 1002.

Lihatlah pada pernyataan di atas. Dalam klausa UPDATE disertakan nama dari kedua tabel yaitu Buku dan Pembelian. Meskipun Anda hanya melakukan peng-update-an pada tabel Buku, Anda harus menspesifikasikan kedua tabel karena keduanya Anda sertakan dalam tabel yang saling join (joined tables). Perhatikan bahwa nama-nama tabel dipisahkan oleh koma.


(38)

Klausa SET pada pernyataan ini menggunakan nama kolom qualified untuk memberikan ekspresi pada kolom Stok. Sebuah nama kolomqualifiedadalah didahului oleh nama tabel dan sebuah tanda titik. Hal ini mengijinkan MySQL (dan Anda) untuk membedakan antara kolom-kolom pada tabel yang berbeda-beda yang mempunyai nama yang sama. Misal, kolom pertama (Buku.Stok) menunjuk pada kolom Stok pada tabel Buku.

Berikut ini contoh mengupdate tabel join dengan banyak nilai sekaligus:

UPDATE Buku, Pembelian

SET Pembelian.Kuantitas = Pembelian.Kuantitas + 2, Buku.Stok= Buku.Stok - 2

WHERE Buku.IDBuku= Pembelian. IDBuku AND Pembelian.IDPembelian = 1002;

➊➋➌ ➍➎➏➐ ➑➒➓➔→➣➒↔➒➣➒↕➒ ➍➣ ➒↔➒➙➒→➎➍➛→➜↕

Sintaksnya adalah sebagai berikut:

<pernyataan delete>::=

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]

{<single table delete> | <from join delete> | <using join delete>

<single table delete>::= FROM <nama tabel> [WHERE <definisi where>]

[ORDER BY <nama kolom> [ASC | DESC] [{, <nama kolom> [ASC | DESC]}...]] [LIMIT <jumlah baris>]

<from join delete>::=

<nama tabel>[.*] [{, <nama tabel>[.*]}...] FROM <nama tabel> [{, <nama tabel>}...] [WHERE <definisi where>]


(39)

<using join delete>::=

FROM <nama tabel>[.*] [{, <nama tabel>[.*]}...] USING <nama tabel> [{, <nama tabel>}...] [WHERE <definisi where>]

Contoh menghapus pada tabel tunggal.

DELETE FROM Pembelian

DELETE FROM Pembelian WHERE IDPembelian=1020;

DELETE LOW_PRIORITY FROM Pembelian WHERE IDBuku=103

ORDER BY TanggalPembelian DESC LIMIT 1;

Menghapus padaJoined Tables.

DELETE Pembelian.* FROM Buku, Pembelian

WHERE Buku.IDBuku = Pembelian.IDBuku


(40)

BAB

VI

SELEKSI TABEL

Satu hal fungsi terpenting yang harus ada dalam RDBMS yaitu dalam mengakses data yang ada dalam tabel di sistem. Fungsi yang disediakan dalam MYSQL yaitu fungsi SELECT yang berguna dalam mengakses data baik secara kolom maupun baris, dari satu tabel maupun lebih. Ketika anda megeksekusi fungsi tersebut, maka fungsi tersebut akan mengeluarkan berupahasil yang kita butuhkan. Dalam hal ini kita akan belajar tentang :

1. Mengetahui cara membuat statement yang mengandung informasi seluruh isi tabel maupun spesifik tabel.

2. Menambahkan fungsi optional pada statement SELECT.

3. Menambahkan clausa pilihan pada statement SELECT yang membatasi baik dari baris,group, dan lainnya.

VI.1 SELECT statement

Fungsi SELECT merupakan fungsi yang sering digunakan. Fungsi ini dapat memberikan hasil berupa data yang ada pada tabel baik berupa baris maupun kolom. Dibawah ini merupakan syntax SELECT pada MYSQL :

<select statement>::= SELECT

[<select option> [<select option>...]] {* | <select list>}

[<export definition>] [

FROM <table reference> [{, <table reference>}...] [WHERE <expression> [{<operator> <expression>}...]] [GROUP BY <group by definition>]

[HAVING <expression> [{<operator> <expression>}...]] [ORDER BY <order by definition>]

[LIMIT [<offset>,] <row count>]

[PROCEDURE <procedure name> [(<argument> [{, <argument>}...])]] [{FOR UPDATE} | {LOCK IN SHARE MODE}]

]


(41)

{ALL | DISTINCT | DISTINCTROW} | HIGH_PRIORITY

| {SQL_BIG_RESULT | SQL_SMALL_RESULT} | SQL_BUFFER_RESULT

| {SQL_CACHE | SQL_NO_CACHE} | SQL_CALC_FOUND_ROWS | STRAIGHT_JOIN

<select list>::=

{<column name> | <expression>} [[AS] <alias>] [{, {<column name> | <expression>} [[AS] <alias>]}...] <export definition>::=

INTO OUTFILE ‘<filename>’ [<export option> [<export option>]] | INTO DUMPFILE ‘<filename>’

<export option>::= {FIELDS

[TERMINATED BY ‘<value>’]

[[OPTIONALLY] ENCLOSED BY ‘<value>’] [ESCAPED BY ‘<value>’]}

| {LINES

[STARTING BY ‘<value>’] [TERMINATED BY ‘<value>’]} <table reference>::=

<table name> [[AS] <alias>]

[{USE | IGNORE | FORCE} INDEX <index name> [{, <index name>}...]] <group by definition>::=

<column name> [ASC | DESC] [{, <column name> [ASC | DESC]}...] [WITH ROLLUP]

<order by definition>::= <column name> [ASC | DESC] [{, <column name> [ASC | DESC]}...]

Dilihat dari syntax yang diatas, beberapa element terdapat dalam fungsi SELECT. Beberapa fungsi tambahan dalam SELECT memiliki kegunaan masing-masing.


(42)

Jika dilihat dari syntax : SELECT

{* | <select list>}

<select list> mengandung clausa-clausa/ ekspresi untuk menampilkan kolom yang diinginkan. Secara syntax isi <select list>seperti ini :

<select list>::=

{<column name> | <expression>} [[AS] <alias>] [{, {<column name> | <expression>} [[AS] <alias>]}...]

Seperti yang dijelaskan diatas bahwa minimal terdapat satu clausa pada fungsi SELECT. Jika terdapat lebih dari satu clausa,pembatasnya diberi tanda koma(,). Pada ekspresi itu juga dapat diberi alias yang dapat digunakan pada fungsi SELECT lainnya. Clausa SELECT hanya bisa digunakan pada fungsi SELECT dan data belum bisa dieksekusi sebelum mengisi nama tabel setelah clausa FROM. Clausa dapat diisi lebih dari satu tabel.

Inilah syntax pada FROM nya:

FROM <table reference> [{, <table reference>}...] <table reference>::=

<table name> [[AS] <alias>]

[{USE | IGNORE | FORCE} INDEX <index name> [{, <index name>}...]]

Untuk lebih jelasnya kita akan masuk pada contoh berikut : CREATE TABLE Angkot

(

AngkotID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, NamaSupir VARCHAR(50) NOT NULL,

Jurusan VARCHAR(50) NOT NULL,

JenisMobil ENUM (‘Toyota ‘,’Daihatsu’) NOT NULL, JumlahMobil INT(2) NOT NULL,

MaxPenumpang INT(2) NOT NULL, TahunAktif YEAR,


(43)

DataUpdate TIMESTAMP NOT NULL );

Kemudian kita akan memasukkan datanya

INSERT INTO Angkot (NamaSupir, Jurusan, JenisMobil, JumlahMobil, MaxPenumpang,TahunAktif )

VALUES ( “Adi”,”Cicaheum-Ciroyom”,’Toyota’,4,9,1990), ( “Ari”,”Dago-Kelapa”,’Toyota’,6,7,1995),

( “Andi”,”Cicaheum-Ciroyom”,’Daihatsu’,10,4,1996), ( “Budi”,”Dago-Kelapa”,’Daihatsu’,3,7,1989),

( “Cecep”,”Kelapa-Ledeng”,’Toyota’,9,8,1997), ( “Dika”,”Kalapa-Ledeng”,’Daihatsu’,5,6,1986), ( “Edi”,”Sadangserang-Caringin”,’Toyota’,4,8,1991), ( “Eka”,”Sadangserang-Caringin”,’Daihatsu’,5,9,1988);

Setelah data telah masuk dalam tabel,kita akan mencoba untuk memeriksa pakah data yang telah kita masukkan tadi sudah ada atau tidak,yaitu dengan cara menjalankan statement berikut :

SELECT * FROM Angkot ;

Penjelasan :

SELECT <’ * ‘ menandakan semua data pada tabel akan ditampilkan > FROM <nama tabel> ; Dan data yang akan ditampilkan setelah di eksekusi adalah :

+---+---+---+---+---+---+---+---+

| AngkotID | NamaSupir | Jurusan | JenisMobil | JumlahMobil | MaxPenumpang | TahunAktif | DataUpdate |

+---+---+---+---+---+---+---+---+ | 1 | Adi | Cicaheum-Ciroyom | Toyota | 4 | 9 | 1990 | 2009-12-30 21:55:28 | | 2 | Ari | Dago-Kelapa | Toyota | 6 | 7 | 1995 | 2009-12-30 21:55:28 | | 3 | Andi | Cicaheum-Ciroyom | Daihatsu | 10 | 4 | 1996 | 2009-12-30 21:55:28 | | 4 | Budi | Dago-Kelapa | Daihatsu | 3 | 7 | 1989 | 2009-12-30 21:55:28 | | 5 | Cecep | Kelapa-Ledeng | Toyota | 9 | 8 | 1997 | 2009-12-30 21:55:28 | | 6 | Dika | Kalapa-Ledeng | Daihatsu | 5 | 6 | 1986 | 2009-12-30 21:55:28 | | 7 | Edi | Sadangserang-Caringin | Toyota | 4 | 8 | 1991 | 2009-12-30 21:55:28 | | 8 | Eka | Sadangserang-Caringin | Daihatsu | 5 | 9 | 1988 | 2009-12-30 21:55:28 | +---+---+---+---+---+---+---+---+


(44)

Secara umum, data yang ada pada tabel akan selalu berubah dan memiliki data yang banyak. Jika kita hanya memrlukan beberapa berdasarkan kolomnya (AngkotID, NamaSupir,Jurusan,JenisMobil, JumlahMobil, MaxPenumpang, TahunAktif, DataUpdate), maka perintahnya sbb :

SELECT AngkotID, Jurusan, JenisMobil FROM Angkot ;

Penjelasan :

SELECT <kolom pada tabel yang akan ditampilkan> FROM <nama tabel> ; Dan jika di eksekusi maka tampilannya :

+---+---+---+ | AngkotID | Jurusan | JenisMobil | +---+---+---+ | 1 | Cicaheum-Ciroyom | Toyota | | 2 | Dago-Kelapa | Toyota | | 3 | Cicaheum-Ciroyom | Daihatsu | | 4 | Dago-Kelapa | Daihatsu | | 5 | Kelapa-Ledeng | Toyota | | 6 | Kalapa-Ledeng | Daihatsu | | 7 | Sadangserang-Caringin | Toyota | | 8 | Sadangserang-Caringin | Daihatsu | +---+---+---+ 8 rows in set (0.00 sec)

Adapun pengunaan alias pada fungsi SELECT yaitu sbb :

SELECT NamaSupir AS Supir, Jurusan AS Tujuan FROM Angkot ;

Penjelasan :

SELECT <nama kolom pada tabel> AS <nama kolom yg baru> FROM <nama tabel> Dan jika di eksekusi maka tampilannya :

+---+---+ | Supir | Tujuan | +---+---+ | Adi | Cicaheum-Ciroyom |


(45)

| Ari | Dago-Kelapa | | Andi | Cicaheum-Ciroyom | | Budi | Dago-Kelapa | | Cecep | Kelapa-Ledeng | | Dika | Kalapa-Ledeng | | Edi | Sadangserang-Caringin | | Eka | Sadangserang-Caringin | +---+---+ 8 rows in set (0.05 sec)

Mengunakan Ekspresi dalam fungsi SELECT

Pada ekspresi ini, fungsi SELECT dapat dikombinasi dengan operator(aritmathic),nama kolom dan fungsi lainnya.

Untuk lebih lengkapnya seperti contoh berikut :

SELECT NamaSupir , JumlahMobil + MaxPenumpang AS Total FROM Angkot ;

Penjelasan :

SELECT < jumlah antar 2 kolom yang memiliki jenis yang sama > AS <nama kolom baru> FROM <nama tabel> ;

Dan jika di eksekusi maka tampilannya : +---+---+

| NamaSupir | Total | +---+---+ | Adi | 13 | | Ari | 13 | | Andi | 14 | | Budi | 10 | | Cecep | 17 | | Dika | 11 | | Edi | 12 | | Eka | 14 | +---+---+


(46)

8 rows in set (0.00 sec) Kolom Total terbentuk dari 2 kolom JumlahMobil dan MaxPenumpang. Ekspresi diatas dapat dikombinasikan lebih dari dua variabel (kolom). Oleh karena itu kombinasi ini dapat digunakan sesuai kebutuhan yang ada.

Menggunakan variabel langsung pada SELECT statement

Fungsi ini merupakan cara lain dalam menggantikan variabel kolom. Secara syntax yaitu : @<variable name>:={<column name> | <expression>} [[AS] <alias>]

Contohnya :

SELECT @Supir:=NamaSupir, @Tujuan:=Jurusan FROM Angkot

WHERE TahunAktif= 1991;

Penjelasan :

SELECT @<nama variabel><” := “ titik dua( : ) dan sama dengan ( = ) ><nama variabel baru> FROM <nama tabel>

WHERE <kolom tabel kondisi>;

Fungsi ini sama dengan fungsi AS yang menggantikan nama kolom. Jadi penggunaannya disesuaikan menurut keperluan.

Menggunakan statement SELECT untuk menampilkan nilai

Contoh ini menampilkan fungsi SELECT yang lain, sehingga tidak hanya berpatokan pada contoh yang ada sebelumnya.

SELECT 1+3, ‘CD Inventory’, NOW() AS ‘Date/Time’;

Penjelasan :

SELECT <merupakan perhitungan sesuai elementnya>, <list dari elemennya>, <fungsi waktu>;


(47)

Pada saat membuat fungsi SELECT, clausa SELECT dapat digunakan lebih dari satu. Adapun syntaxnya sebagai berikut:

<select option>::=

{ALL | DISTINCT | DISTINCTROW} | HIGH_PRIORITY

| {SQL_BIG_RESULT | SQL_SMALL_RESULT} | SQL_BUFFER_RESULT

| {SQL_CACHE | SQL_NO_CACHE} | SQL_CALC_FOUND_ROWS | STRAIGHT_JOIN

Untuk lebih jelasnya,kita akan implementasikan : SELECT ALL Jurusan , JenisMobil

FROM Angkot;

Penjelasan :

SELECT ALL <nama - nama kolom> FROM <nama tabel>;

Kegunaannya yaitu menampilkan semua data yang ada pada jurusan dan jenis mobil,walaupun datanya banyak yang sama dan yang ditampilkan semua data yang ada pada kolom tersebut. Hasilnya sebagai berikut

+---+---+ | Jurusan | JenisMobil | +---+---+ | Cicaheum-Ciroyom | Toyota | | Dago-Kelapa | Toyota | | Cicaheum-Ciroyom | Daihatsu | | Dago-Kelapa | Daihatsu | | Kelapa-Ledeng | Toyota | | Kalapa-Ledeng | Daihatsu | | Sadangserang-Caringin | Toyota | | Sadangserang-Caringin | Daihatsu |


(48)

+---+---+ 8 rows in set (0.01 sec)

SELECT DISTINCT Jurusan , JenisMobil FROM Angkot;

Penjelasan :

SELECT ALL <nama - nama kolom> FROM <nama tabel>;

Kegunaannya yaitu menampilkan semua data yang ada pada jurusan dan jenis mobil,serta data yang ditampilkan tidak ada yang sama untuk mengurangi duplikasi.. Hasilnya sebagai berikut :

+---+---+ | Jurusan | JenisMobil | +---+---+ | Cicaheum-Ciroyom | Toyota | | Dago-Kelapa | Toyota | | Cicaheum-Ciroyom | Daihatsu | | Dago-Kelapa | Daihatsu | | Kelapa-Ledeng | Toyota | | Kalapa-Ledeng | Daihatsu | | Sadangserang-Caringin | Toyota | | Sadangserang-Caringin | Daihatsu | +---+---+

8 rows in set (0.01 sec)

VI.2 Clausa WHERE

Clausa WHERE digunakan untuk membuat satu atau lebih kondisi pada SELECT statement. Secara syntax adalah sebagai berikut :


(49)

Jika dilihat dari syntaxnya maka minimal kondisi yang ada yaitu satu kondisi. Dan jika terdapat lebih dari satu kondisi maka kondisi-kondisi tersebut harus saling terhubung dengan fungsi AND atau OR.

Sekarang kita lihat contohnya :

SELECT NamaSupir, Jurusan FROM Angkot

WHERE TahunAktif= 1991;

Penjelasan:

SELECT <nama kolom> FROM <nama tabel> WHERE <kondisi >;

Pada contoh ini data yang akan ditampilkan berdasarkan tahunaktif yang telah dispesifikkan yaitu tahun 1991. Kondisi ini bisa dirubah sesuai dengan penggunaaannya.

Inilah hasilnya :

+---+---+ | NamaSupir | Jurusan | +---+---+ | Edi | Sadangserang-Caringin | +---+---+ 1 row in set (0.00 sec)

Dan inilah contoh untul multiple condition

SELECT NamaSupir, Jurusan FROM Angkot

WHERE TahunAktif= 1989 AND NamaSupir =”Budi”;

Inilah hasilnya : +---+---+ | NamaSupir | Jurusan | +---+---+


(50)

| Budi | Dago-Kelapa | +---+---+ 1 row in set (0.00 sec)

Fungsi clausa GROUP BY

Fungsi group by ini minimal terdiri dari satu kolom yang terdefinisi. Fungsi GROUP ini digunakan untuk mengelompokan kolom-kolom berdsarkan urutan kolom yang telah terdefinisi pada tabel. Dalam fungsi ini jjg dapat diataur baik secra ascending maupun descending. Inilah syntax secar umumnya

GROUP BY <group by definition> <group by definition>::=

<column name> [ASC | DESC] [{, <column name> [ASC | DESC]}...] [WITH ROLLUP]

Untuk lebih jelasnya kita lihat contoh berikut :

SELECT Jurusan, COUNT(*) AS Total FROM Angkot

WHERE JenisMobil =‘Toyota’ GROUP BY Jurusan;

Penjelasan :

SELECT <nama kolom pilihan>, < menghitung total baris pada baris kolom yang dipilih> AS Total

FROM <nama tabel> WHERE <kondisi >

GROUP BY <kolom pilihan>;

Hasil yang akan diperoleh yaitu data yang akan ditampilkan berdasarkan gruop yang telah dipilih. Inilah hasilnya


(51)

+---+---+ | Jurusan | Total | +---+---+ | Cicaheum-Ciroyom | 1 | | Dago-Kelapa | 1 | | Kelapa-Ledeng | 1 | | Sadangserang-Caringin | 1 | +---+---+ 4 rows in set (0.05 sec)

Inilah contoh untuk multiple group

SELECT Jurusan, JenisMobil, COUNT(*) AS Total FROM Angkot

GROUP BY Jurusan,JenisMobil;

Maka hasilnya :

+---+---+---+ | Jurusan | JenisMobil | Total | +---+---+---+ | Cicaheum-Ciroyom | Toyota | 1 | | Cicaheum-Ciroyom | Daihatsu | 1 | | Dago-Kelapa | Toyota | 1 | | Dago-Kelapa | Daihatsu | 1 | | Kalapa-Ledeng | Daihatsu | 1 | | Kelapa-Ledeng | Toyota | 1 | | Sadangserang-Caringin | Toyota | 1 | | Sadangserang-Caringin | Daihatsu | 1 | +---+---+---+


(52)

VI.3 Clausa HAVING

Fungsi clausa HAVING hampir sama dengan clausa WHERE. Pada fungsi ini dapet memasukkan aggregate. Fungsi agregate aalah fungsi untuk menghasilkan summarize seperti fungsi COUNT(). Syntax secara umum yaitu

HAVING <expression> [{<operator> <expression>}...]

Untuk memahaminya, kita langsung ke contohnya

SELECT Jurusan, COUNT(*) AS Total FROM Angkot

WHERE JenisMobil=’Toyota’ GROUP BY Jurusan

HAVING Total <2;

Data yang akan tampil yaitu data yang memiliki nilai Total yang kurag dari 10. Dan inilah hasilnya

+---+---+ | Jurusan | Total | +---+---+ | Cicaheum-Ciroyom | 1 | | Dago-Kelapa | 1 | | Kelapa-Ledeng | 1 | | Sadangserang-Caringin | 1 | +---+---+ 4 rows in set (0.00 sec)

VI.4 Clausa ORDER BY

Clausa ORDER BY pada statement SELECT Secara umum syntaxnya

ORDER BY <order by definition> <order by definition>::=


(53)

<column name> [ASC | DESC] [{, <column name> [ASC | DESC]}...]

Paada syntax dapat dilihat bahwa minimal terdapat satu kolom. Jika terdapat lebih dari satu kolom maka sebagai pembatasnya maka harus diberi koma( , ). Dan inilah contoh ORDER BY

SELECT NamaSupir , JenisMobil, MaxPenumpang FROM Angkot

WHERE MaxPenumpang >6 ORDER BY NamaSupir DESC;

Hasilnya yaitu data yang akan ditampilkan akan diurutkan berdasarkan NamaSupir menurut ukuran alphabet paling akhir ke awal. Inilah tampilannya

+---+---+---+

| NamaSupir | JenisMobil | MaxPenumpang | +---+---+---+

| Eka | Daihatsu | 9 | | Edi | Toyota | 8 | | Cecep | Toyota | 8 | | Budi | Daihatsu | 7 | | Ari | Toyota | 7 | | Adi | Toyota | 9 | +---+---+---+ 6 rows in set (0.00 sec)

Adapun fungsi ORDER BY dengan 2 kolom

SELECT NamaSupir , JenisMobil, MaxPenumpang FROM Angkot

WHERE MaxPenumpang >6

ORDER BY NamaSupir DESC, JenisMobil ASC;

Dan hasilnya yatu

+---+---+---+


(54)

+---+---+---+ | Eka | Daihatsu | 9 | | Edi | Toyota | 8 | | Cecep | Toyota | 8 | | Budi | Daihatsu | 7 | | Ari | Toyota | 7 | | Adi | Toyota | 9 | +6 rows in set (0.00 sec) ---+---+---+ 6 rows in set (0.00 sec)

VI.5 Clausa LIMIT

Claus a LIMIT sama dengan fungsi ORDER BY namun fungsi ini akan lebih efektif pada statement SELECT.Clausa LIMIT menggunakan 2 argumen dan secara umum syntaxnya

LIMIT [<offset>,] <row count>

Pilihan pertama<offset> merupakan pilihan optional. Nilai defaultnya 0. Dan pada argument kedua<row count> menunjukan jumlah aris yang akan ditampilkan.

Inilah contohnya

SELECT NamaSupir , JenisMobil, MaxPenumpang FROM Angkot

WHERE MaxPenumpang=6 ORDER BY NamaSupir DESC LIMIT 2;

Dan hasilnya

+---+---+---+

| NamaSupir | JenisMobil | MaxPenumpang | +---+---+---+


(55)

+---+---+---+ 1 row in set (0.00 sec)

Dan dibawah ini merupakan fungsi LIMIT dengan Offset

SELECT NamaSupir , JenisMobil, MaxPenumpang FROM Angkot

WHERE MaxPenumpang >6

ORDER BY NamaSupir DESC, MaxPenumpang ASC LIMIT 3,4;

Dan hasilnya

+---+---+---+

| NamaSupir | JenisMobil | MaxPenumpang | +---+---+---+

| Budi | Daihatsu | 7 | | Ari | Toyota | 7 | | Adi | Toyota | 9 | +---+---+---+ 3 rows in set (0.00 sec)


(56)

BAB V

➝➝

➞ ➟➠➡➡

UNAKAN OPERATOR

Pada bab-bab sebelumnya, banyak ekspresi-ekspresi yang menggunakan yang mnggunakan fungsi operator. Clausa –clausa yang diabungkan dengan operator merupakan salah satu formula untuk menggunakan perintah dalam MYSQL. Di lain hal fungsi operator pada clausa juga dapat membatasi range dari kondisi yang diciptakan. Untuk lebih jelasnya kita akan membahas lebih dalam pada bab ini.

Di bawah ini merupakan operator-operator yang digunakan dalam SQL 1. BINARY, COLLATE

2. NOT (logical negation), ! (logical negation) 3. - (unary minus), ~ (unary bit inversion) 4. ^ (bitwise exclusive OR comparison) 5. * (multiplication), / (division), % (modulo) 6. - (subtraction), + (addition)

7. << (bitwise shift left), >> (bitwise shift right) 8. & (bitwise AND)

9. | (bitwise OR)

10. All comparison operators except BETWEEN and NOT BETWEEN 11. BETWEEN, NOT BETWEEN

12. AND (logical addition), && (logical addition)

13. OR (logical OR comparison), | | (logical OR comparison), XOR (logical exclusive OR comparison)

Penomoran ini juga dimaksudkan untuk mengetahui prioritas mna yang lebih didahulukan jika digunakan pada SQL.

Operator Arithmetic

Operator ini digunakan untuk menghitung 2 argument yang sama. Contohnya seperti dibawah ini

Operator Description

+ (addition) Adds the two arguments together.

- (subtraction) Subtracts the second argument from the first argument.


(1)

1 Alif Finandhita, S.Kom

BAB XIV

ADMINISTRASI MYSQL

Dalam BAB ini, kita akan mempelajari pengaturan administrasi bagaimana program MYSQL akan berjalan. Selain kita dapat melihat pengaturan administrasi yang sudah ada, kita juga dapat mengganti pengaturan yang sudah ada, kita juga bisa mengatur sistem variabel dan penerapan pencatatan proses yang berjalan.

XIV.1

Menampilkan kumpulan tugas administrasi

Untuk dapat menampilkan tugas administrasi MYSQL, instalasi MYSQL memasukkan mysqladmin client utility, yang memberikan layanan administrative kepada MYSQL server. Dengan adanya tools ini, kita dapat mengatur bermacam-macam administrasi MYSQL seperti mengganti password, memulai server, membuat dan menghapus databases, dan mengatur kembali hak-hak istimewa. Syntax yang digunakan adalah:

Program Option mendefinisikan bagaimana cara untuk terhubung dengan mysql server dan untuk menjalankan mysqladmin utility. Berikut ini program option yang dapat digunakan pada mysqladmin utility:

Option Syntax Keterangan

--character-set-dir=<path> Spesifikasi directory dimana kumpulan karakter disimpan.

--compress | -C Meringkas (compress) data yang dikirim

antara server dan client. Keduanya harus mendukung peringkasan.

--connect_timeout=<second> Menelaskan waktu yang diberikan ketika mencoba koneksi ke mysql server.

--count=<number> | -c <number> Menjelaskan jumlah perulangan yang dibuat ketika pilihan –sleep digunakan untuk mengeksekusi mysqladmin command berulangkali.

--force | -f Menyebabkan mysql melaksanakan

mysqladmin [<program option> [<program option>...]]


(2)

2 Alif Finandhita, S.Kom

penghapusan database tanpa menanyakan konfirmasi. Juga menghilangkan pelaksanaan multiple mysqladmin command jika eror disebabkan oleh salah satu perintah.

--help | -? Menampilkan informasi tentang pilihan yang

tersedia di mysqladmin

--host=<host name> | -h <host name> Spesifikasi nama dari host dimana mysql server dijalankan.

--password[=<password>] | -p[<password>]

Spesifikasi password yang digunakan untuk koneksi ke mysql server. Dalam penggunaanya untuk –p, password diketikkan tanpa spasi dan menempel tepat dibelakang huruf p.

--port=<port number> | -P < port number >

Spesifikasi port yang digunakan ketika berhubungan dengan mysql server

--protocol = {TCP | SOCKET | PIPE | MEMORY}

Spesifikasi protokol koneksi yang digunakan ketika berhubungan dengan mysql server

--silent | -s Keluar tanpa menyediakan keluaran jika

mysqladmin tidak bisa terhubung dengan server.

--sleep=<second> | -i <second> Spesifikasi mysqladmin command dapat dilaksanakan berulangkali. Waktu menunjukan berapa lama jeda antar pelaksanaan.

--user=<username> | -u <username> Spesifikasi account pengguna ketika berhubungan dengan mysqlserver.

-version | -V Menampilkan versi dan informasi lain tentang

mysqladmin sebaik informasi tentang mysqlserver.

--wait[=<number>] | -w[<number>] Mencoba kembali terhubung dengan myswl server jika koneksi tidak bisa dilakukan. Waktu merupakan waktu yang diberikan untuk mencoba kembali. Jika menggunakan –w

maka penulisan angka untuk waktu tepat langsung dibelakang huruf w, tanpa spasi.


(3)

3 Alif Finandhita, S.Kom

Berikut ini perintah yang dapat digunakan dengan mysqladmin utility.

Commands Syntax Keterangan

create <database > Mmbuat database baru

drop <database> Menghapus database

extended-status Menampilkan nama dan nilai dari status

server

flush-hosts Menghalau host yang disembunyikan

flush-logs Menutup kemudian membuka kembali log

files. Untuk beberapa tip log file, mysql membuat file baru.

flush-privileges Mengisi ulang tabel yang diperbolehkan.

flush-status Menghapus status variabel dan mengatur

ulang beberapa counter menjadi nol

flush-tables Menghalau tabel yang disembunyikan

flush-threads Menghalau ancaman yang disembunyikan

kill <thread ID> [<thread ID>...] Memhilangkan ancaman. Sebuah ancaman berhubungan dengan satu koneksi, jadi jika kamu menghilangkan ancaman itu, maka koneksi nya pun akan di hentikan. Kamu dapat menggunakan perintah processlist untuk menampilkan daftar ancaman yang aktif.

password <new password> Merubah password

ping Memastikan bahwa mysql server dapat

berjalan

processlist Menampilkan daftar ancaman yang aktif.

reload Mengisi ulang tabel yang diperbolehkan.

Sama dengan perintah flush-privileges.

refresh Menghalau tabel yang disembunyikan,

menutup dan membuka kembali log files, dan mengisi ulang tabel yang diperbolehkan.

shutdown Memberhentikan mysql server.

start-slave Memulai tiruan pada server bawahan.


(4)

4 Alif Finandhita, S.Kom

tentang mysql server

stop-slave Menghentikan tiruan pada server bawahan

variables Menampilkan nama dan nilai dari variabel

server

version Menampilkan informasi versi tentang mysql

server terbaru.

Kita dapat menggunakan perintah - -help untuk dapat melihat perintah-perintah option dan command yang dapat digunakan.

XIV.2

Mengatur System Variabel

Pada setiap operasi pada mysql srver, kita menggunakan pengaturan default untuk system variabel. Tapi mysql menyediakan fasilitas untuk dapat mengubah system variabel. Ada 3 tipe system variabel yang dapat digunakan, antara lain:

a. Server system variables

Sekelompok system variabel yang menentukan bagaimana mysql akan berjalan dan bagaimana client dapat berinteraksi dengan server.

b. Dynamic system variables

Bagian dari server system variables yang pengaturannya dapat di lakukan pada runtime. c. Server status variables

Sekelompok system variabel yang tujuan utamanya adalah untuk menyediakan informasi status-related tentang operasi server.

XIV.2.1Mendapatkan pengaturan system variabel

Merupakan metode yang digunakan untuk melihat pengaturan system variabel, tergantung pada tipe dari system variabel.

XIV.2.1.1Menggunakan pernyataan SHOW VARIABLES untuk Server System Variables

Syntax yang digunakan:

SHOW [GLOBAL | SESSION] VA‘IABLES [LIKE <value> ] Contoh:

SHOW GLOBAL VARIABLES;

→Aka e a pilka se ua varia el glo al a g ada. “HOW “E““ION VA‘IABLE“ LIKE % hara ter% ;


(5)

5 Alif Finandhita, S.Kom

→Aka e a pilka se ua varia le pada sessio a g seda g dijala ka , a g e ga du g kata hara ter .

XIV.2.1.2Menggunakan pernyataan SELECT

Syntax yang digunakan:

SELECT @@[global.]<variable> [{, @@[global.]<variable>}...]

Contoh:

SELECT @@global.max_binlog_size;

→Aka e a pilka data a _ i log_size pada varia el glo al.

Kita dapat menyeleksi lebih dari satu perintah, yaitu dengan menggunakan tanda koma(,) sebagai pemisah antar perintah.

XIV.2.1.3Menggunakan pernyataan SHOW STATUS untuk mendapatkan pengaturan Server Status Variable

Syntax yang digunakan: “HOW “TATU“ [LIKE <value> ]

→ Jika pernyataan Like tidak digunakan, maka akan menampilkan semua data, sedangkan jika menggunakan pernyataan Like, maka hanya yang memiliki karakter yang disebutkan dalam value pada pernyataan Like daja yang di tampilkan.

XIV.2.2Modifikasi pengaturan server

XIV.2.2.1Spesifikasi pengaturan system pada Command Line

Untuk mengatur pada command line, kita dapat langsung menulis kan seperti contoh di bawah ini:

Mysqld - -variabel yang akan di atur=pengaturan baru Mysql - -query_cache_limit=100000 - -wait_timout=500

XIV.2.2.2Spesifikasi pengaturan system pada Option File

Untuk mengatur pada Option File, hampir sama dengan pengaturan pada command line, hanya berbeda sedikit penulisannya, yaitu seperti contoh dibawah ini:

[mysqld]

Query_cache_limit=100000 Wait_timeout=500


(6)

6 Alif Finandhita, S.Kom

XIV.2.2.3Spesifikasi pengaturan system pada RunTime

Untuk mengatur pada runtime, kita menggunakan perintah SET, seperti contoh dibawah ini:

SET GLOBAL query_cache_limit=100000;

XIV.3

Mengatur Log Files

Pengaturan default log pada saat kita menginstal mysql adalah error log files, tapi kita dapat menerapkan tipe lain dari logging, yaitu binary logging dan query logging.

XIV.3.1Bekerja dengan Error Log Files

Log file akan mencatat semua proses yang terjadi termasuk yang menghasilkan error. Contoh penggunaannya:

Log-error=<path/filename>

XIV.3.2Memperbolehkan Query dan Binary Logging

Tidak seperti eror logging yang secara otomatis diterapkan, kita harus memberi izin untuk menerapkan query logging dan binary logging.

XIV.3.2.1Mengatur Query Logging

Akan memcatat semua query atau perintah yang dijalankan. Syntax penggunaannya:

Log[=<path/filename>]

XIV.3.2.2Mengatur Binary Logging

Mencatat dengan format binary yang lebih efisien dibandingkan dengan query logging. Syntax penggunaannya:

Log-bin[=<path/filename>]

→U tuk e ggu aka i ar loggi g log-bin-index[=<path/filename>]

→U tuk e gatur o er i de file i a g ter e tuk ketika kita mengatur log pada binary logging

mysqlbinlog <host>-bin.<numeric suffix>