Mengenal dan Menggunakan MySQL
Ragil Turyanto
[email protected]
Pendahuluan
Pertama-tama saya ucapkan terima kasih kepada Editor Ilmukomputer.com yang menerbitkan artikel ini di situsnya dan yang telah bekerja keras dalam pengeditan artikel ini ,semoga kita bisa belajar bersama-sama.
Langsung aja ,..kali ini kita akan berkenalan dengan MySQL,tentunya kebanyakan dari pembaca sudah tidak asing lagi dengan kata MySQL dan pastinya sudah biasa menggunakannya.Mysql sangat populer dikalangan Web Developer ataupun Pengagum PHP dengan MySQL sebagai database utamanya.
Pengenalan
Banyak aplikasi yang ingin web developer gunakan untuk mempermudah penggunaan dan standarisasi database untuk menyimpan,mengatur dan mengakses informasi.Mysql adalah bersifat Open Source (GPL) Standard Query Language(SQL)database yang cepet,stabil,mudah digunakan dan cocok dengan aplikasi dari berbagai jenis ukuran.SQL adalah standard ANSI query language yang digunakan sebagaian besar database.
Mysql dapat digabungkan dengan Perl dengan menggunakan Module DBI(DataBase Independent Interface).DBI adalah interface program aplikasi(API) yang memungkinkan Perl untuk dikoneksikan kebeberapa jenis SQL database (MySQL,mSQL,PostgreSQL,Oracle,Sybase dan Informix).
Dalam tutorial kali ini kita tidak membahas tentang pengoneksian Mysql dengan Perl,tetapi kita hanya akan belajar menggunakan perintah perintah dasar yang terdapat pada MySQL,J.
Tutorial ini menggunakan Mandrake Linux sebagai system operasinya dan tidak menutup kemungkinan untuk dijalankan di Distro Linux lainnya.
Memulai MySQL
Untuk memulai bagian ini,kita akan membuat simple database yang berisi informasi tentang personalia.
Pertama-tama,kita akan mencoba koneksi dengan MySQL server sebagai root:
Jika output jawaban atas perintah diatas adalah seperti dibawah ini,berarti server MySQL anda sudah dapat digunakan atau dalam keadaan running.$ mysql -u root
Lain halnya jika output jawaban adalah seperti berikut,berarti MySQL Server belum running.[ragilt@www ragilt]$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.0.15
Type help; or \h for help. Type \c to clear the buffer.
Mysql>
[ragilt@www ragilt]$ mysql -u root
ERROR 2002: Cant connect to local MySQL server through socket /var/lib/mysql/mysql.sock (2)
[ragilt@www ragilt]$
Untuk mengatasi masalah diatas dapat dilakukan dengan manggunakan perintah chkconfig dan masuk sebagai user root.
[root@www ragilt]# chkconfig mysql on
[root@www ragilt]# /etc/init.d/mysql start
Starting MySQL Server [ OK ]
[root@www ragilt]#
Catatan:
User root MySQL berbeda dengan user root pada linux.User root MySQL hanya digunakan untuk mengatur Server MySQL.
Sekarang kita bisa connect dengan MySQL (Catatan :menggunakan user biasa $)
[ragilt@www ragilt]$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.0.15
Type help; or \h for help. Type \c to clear the buffer.
mysql>
[/QUOTE]
Untuk mengetahui command apa saja yang terdapat pada MySQL,kita bisa menggunakan perintah help; disertai dengan menekan enter.
mysql> help;
For the complete MySQL Manual online visit:
http://www.mysql.com/documentation
For info on technical support from MySQL developers visit:
http://www.mysql.com/support
For info on MySQL books, utilities, consultants, etc. visit:
http://www.mysql.com/portal
List of all MySQL commands:
(Commands must appear first on line and end with ;)
help (\h) Display this help.
? (\?) Synonym for `help.
clear (\c) Clear command.
connect (\r) Reconnect to the server. Optional arguments are db and host.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
nopager (\n) Disable pager, print to stdout.
notee (\t) Dont write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute a SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
use (\u) Use another database. Takes database name as argument.
Connection id: 1 (Can be used with mysqladmin kill)
mysql>
Untuk lebih memahami tentang command-command yang ada di atas kita akan coba membuat database yang diberinama personalia yang berisi data berupa nama orang dan umurnya.
1. Perintah show databases dan create database.
Pertama-tama kita perlu membuat database baru.Kita bisa mengecek database yang sudah ada untuk memastikan bahwa database yang kita buat belum ada.Jika sudah dicek dan tidak ada nama datanbase yang akan kita buat maka baru kita membuat database tersebut:
mysql> show databases;
+-+
| Database |
+-+
| mysql |
| test |
| tmp |
+-+
3 rows in set (0.00 sec)
mysql> create database personalia;
Query OK, 1 row affected (0.00 sec)
mysql>show databases;
++
| Database |
++
| mysql |
| personalia |
| test |
| tmp |
++
4 rows in set (0.00 sec)
Perintah SQL dan subcommand (pada contoh diatas,adalah create adalah perintah utama; database adalah subcommand ,yang berupa case sensitif (huruf besar dan kecil dibedakan).
Satu hal yang terfikirkan bahwa dalam database tardapat beberapa table yang terrelasikan.table terdiri dari kolom yang tiap kolomnya menyimpan data untuk satu record, setiap record berisi beberapa bagian informasi yang disebut fields.
2. Perintah use.
Sebelum melakukan sesuatu terhadap database yang baru dibuat,kita harus mengkoneksikan database tersebut terlebih dahulu dengan menggunakan perintah use:
mysql> use personalia;
Database changed
mysql>
3. Perintah create table dan show tables.
Setiap table dalam database harus didefinisikan dan dibuat.Hal ini dapat dilakukan dengan menggunakan perintah create table.
Kita akan membuat tabel dengan nama info_umur yang berisi nama depan,nama belakang,dan umur.Pada perintah SQL(MySQL) membutuhkan informasi jenis data yang akan disimpan pada tiap-tiap field.Pada contoh ini nama depan dan nama belakang adalah kerakter strings yang memiliki lebar data lebih dari 20 charakter, dan umur berisi data integer:
mysql> use personalia;
Database changed
mysql> create table info_umur (
-> namadepan char(20),
-> namabel char(20),
-> umur int);
Query OK, 0 rows affected (0.00 sec)
mysql>
[/QUOTE]
Disini terlihat bahwa tebel telah sukses dibuat,untuk meyakinkan kita bisa menggunakan perintah show tables; ,jika terjadi error kita bisa menghapus tabel tersebut dengan perintah drop info_umur;
Ketika database pada MySQL dibuat,ada direktory yang dibuat dengan nama yang sama dengan nama database yang telah kita buat (personalia):
[root@www ragilt]# ls -l /var/lib/mysql
total 24
drwxxx 2 mysql mysql 4096 Mar 1 07:04 mysql/
srwxrwxrwx 1 mysql mysql 0 Mar 1 14:49 mysql.sock=
drwx 2 mysql mysql 4096 Mar 1 15:26 personalia/
drwxr-xr-x 2 mysql mysql 4096 Sep 14 22:19 test/
drwx 2 mysql mysql 4096 Mar 1 07:04 tmp/
Berdasarkan direktori tiap tabel terdiri dari 3 buah files:
[root@www ragilt]# ls -l /var/lib/mysql/personalia
total 16
-rw-rw- 1 mysql mysql 8618 Mar 1 15:26 info_umur.frm
-rw-rw- 1 mysql mysql 0 Mar 1 15:26 info_umur.MYD
-rw-rw- 1 mysql mysql 1024 Mar 1 15:26 info_umur.MYI
mysql> show tables;
+-+
| Tables_in_personalia |
+-+
| info_umur |
+-+
1 row in set (0.00 sec)
Ccontoh tipe data pada MySQL: character strings, integer dan tipe data yang lainnya bisa di lihat di http://www.mysql.com/documentation/m...l#column_types ):
4. Perintah describe
Perintah describe memberikan informasi tentang fields pada tebel.
mysql> describe info_umur;
++-++++-+
| Field | Type | Null | Key | Default | Extra |
++-++++-+
| namadepan | char(20) | YES | | NULL | |
| namabel | char(20) | YES | | NULL | |
| umur | int(11) | YES | | NULL | |
++-++++-+
3 rows in set (0.00 sec)
Perintah show coloumns from info_umur; juga akan menghasilkan informasi yang sama dengan perintah describe info_umur; untuk melakukan perintah describe info_umur; kita bisa juga menggunakan singkatan desc sehingga perintahnya menjadi desc info_umur;
mysql> desc info_umur;
++-++++-+
| Field | Type | Null | Key | Default | Extra |
++-++++-+
| namadepan | char(20) | YES | | NULL | |
| namabel | char(20) | YES | | NULL | |
| umur | int(11) | YES | | NULL | |
++-++++-+
3 rows in set (0.00 sec)
5. Perintah insert
Supaya tabel yang kita buat dapat berguna,kita perlu menambahkan/mengisi informasi kedalamnya.Kita bisa melakukan dengan perintah insert:
mysql> insert into info_umur
-> (namadepan,namabel,umur)
-> values (Ragil,'Turyanto,19);
Query OK, 1 row affected (0.00 sec)
Syntax perintah insert into,diikuti nama tabel yang akan diisi,nama field yang akan diisi dan values/isi data yang akan dimasukkan.
6.Perintah select
Memilih record dalam database MySQL menggunakan perintah select.Ketika perintah ini dieksekusi dari shell,MySQL mencetak semua record yang cocok dengan query yang di masukkan.Perintah yang paling gampang adalah:
Tanda * berarti menampilkan isi dari semua field pada tabel; from tabel yang akan dibuka.Pada hasil diatas terlihat bahwa record Ragil Turyanto telah di masukkan dengan sukses.Untuk berlatih dengan perintah select kita perlu untuk menambahkan beberapa record lagi,:mysql> select * from info_umur;
++-++
| namadepan | namabel | umur |
++-++
| Ragil | Turyanto | 19 |
++-++
1 row in set (0.00 sec)
mysql> insert into info_umur
-> (namadepan,namabel,umur)
-> values (Sri,'Haryani,18);
Query OK, 1 row affected (0.00 sec)
mysql> insert into info_umur
-> (namadepan,namabel,umur)
-> values(Dewi,'Rachman,16);
Query OK, 1 row affected (0.00 sec)
mysql> insert into info_umur
-> (namadepan,namabel,umur)
-> values (Budi,'Priyatno,20);
Query OK, 1 row affected (0.00 sec)
mysql> select * from info_umur;
++-++
| namadepan | namabel | umur |
++-++
| Ragil | Turyanto | 19 |
| Sri | Haryani | 18 |
| Dewi | Rachman | 16 |
| Budi | Priyatno | 20 |
++-++
4 rows in set (0.01 sec)
Ada banyak cara untuk menggunakan perintah select,pertama-tama kita akan menyortir table berdasarkan nama belakang:
mysql> select * from info_umur
-> order by namabel;
++-++
| namadepan | namabel | umur |
++-++
| Sri | Haryani | 18 |
| Budi | Priyatno | 20 |
| Dewi | Rachman | 16 |
| Ragil | Turyanto | 19 |
++-++
4 rows in set (0.00 sec)
Sekarang kita hanya akan menampilkan field nama belakang dan diurutkan berdasarkan nama belakang(namabel):
mysql> select namabel from info_umur
-> order by namabel;
+-+
| namabel |
+-+
| Haryani |
| Priyatno |
| Rachman |
| Turyanto |
+-+
4 rows in set (0.00 sec)
Menampilkan umur dengan pengurutan descending:
mysql> select umur from info_umur order by umur desc;
++
| umur |
++
| 20 |
| 19 |
| 18 |
| 16 |
++
4 rows in set (0.00 sec)
Menampilkan nama belakang dengan kriteria yang berumur >18:
Melakukan hal yang sama dengan diatas tetapi diurutkan berdasrkan namabelakang:mysql> select namabel from info_umur where umur > 18;
+-+
| namabel |
+-+
| Turyanto |
| Priyatno |
+-+
2 rows in set (0.01 sec)
mysql> select namabel from info_umur where umur > 18 order by namabel;
+-+
| namabel |
+-+
| Priyatno |
| Turyanto |
+-+
2 rows in set (0.00 sec)
7. Perintah update.
Pada database personalia berisi informasi tentang seseorang jadi informasi tersebut bisa saja berubah.Dalam hal ini tanggal lahir pasti tetap tetapi umur akan bertambah.Untuk merubah umur tersebut kita bisa menggunakan perintah update tabel.Sebagai contoh umur Sri Haryani menjadi 19 maka:
mysql> select * from info_umur;
++-++
| namadepan | namabel | umur |
++-++
| Ragil | Turyanto | 19 |
| Sri | Haryani | 18 |
| Dewi | Rachman | 16 |
| Budi | Priyatno | 20 |
++-++
4 rows in set (0.00 sec)
mysql> update info_umur set umur = 19
-> where namadepan = Sri;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from info_umur;
++-++
| namadepan | namabel | umur |
++-++
| Ragil | Turyanto | 19 |
| Sri | Haryani | 19 |
| Dewi | Rachman | 16 |
| Budi | Priyatno | 20 |
++-++
4 rows in set (0.00 sec)
Jangan Lupa terhadap perintah where,karena jika kita hanya memberikan perintah update info_umur set umur = 19 ,maka semua umur dalam tebel tersebut akan menjadi 19.
8. Perintah delete.
Kadang kadang kita perlu untuk menghapus sebuah record yang terdapat pada sebuah tabel.untuk menghapus record dalam tabel kita menggunakan perintah delete:
mysql> delete from info_umur where namabel = Rachman;
Query OK, 1 row affected (0.00 sec)
mysql> select * from info_umur;
++-++
| namadepan | namabel | umur |
++-++
| Ragil | Turyanto | 19 |
| Sri | Haryani | 19 |
| Budi | Priyatno | 20 |
++-++
3 rows in set (0.00 sec)
Dewi Rachman itu orangnya cantik,saya kepengin memasukkannya lagi ke tabel maka:
mysql> insert into info_umur
-> (namadepan,namabel,umur)
-> values(Dewi,'Rachman,18);
Query OK, 1 row affected (0.00 sec)
mysql> select * from info_umur;
++-++
| namadepan | namabel | umur |
++-++
| Ragil | Turyanto | 19 |
| Sri | Haryani | 19 |
| Dewi | Rachman | 18 |
| Budi | Priyatno | 20 |
++-++
4 rows in set (0.00 sec)
9. Contoh Administrasi pada MySQL.
Pada bagian ini kita akan melakukan sedikit adminsitrasi pada MySQL,dan pada contoh kali ini semuanya dilakukan pada MySQL User Root.
Untuk yang pertama-tama kita akan merubah atau mengisi password MySQL ketika pertama kali loging ke server MySQL:
# mysqladmin password ragil
Sekarang ketika MySQL dijalankan password harus disertakan dengan menambahkan switch -p .Berikut ini contoh jika kita lupa dengan switch -p tersebut:
[ragilt@www ragilt]$ mysql -u root
ERROR 1045: Access denied for user: root@localhost (Using password: NO)
Sekarang kita coba lagi menggunakan switch -p .Ketika prompt password ditampilkan ,kita isi dengan password yang kita isikan tadiragil):
[ragilt@www ragilt]$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 4.0.15
Type help; or \h for help. Type \c to clear the buffer.
mysql>
Note:User MySQL berbeda dengan User di Linux.Perintah mysqladmin digunakan untuk merubah password User MySQL saja. Tidak seperti User di Linux.Untuk alasan keamanan sebaiknya password MySQL jangan sama dengan password yang digunakan untuk loing pada machine Linux.
Melakukan semua perintah SQL pada database personalia sebagai MySQL root adalah sesuatu yang kurang bagus.Maka kali ini kita akan membuat user baru.yaitu dengan memodifikasi database mysql,yang berisi semua informasi administrasi untuk MySQl server,pertama-tama kita gunakan database mysql dan kemudian mengatur kewenangan untuk user mysql dengan perintah grant:
mysql> grant select,insert,update,delete
-> on personalia.*
-> to anto@localhost
-> identified by ani;
Query OK, 0 rows affected (0.02 sec)
User anto diberi kewenangan pada database personalia untuk melakukan hampitr semua perintah,SQL termasuk menghapus masukkan pada tabel di database personalia,tetapi user anto tidak memiliki akses untuk menghapus database personalia.Dan User anto hanya bisa mengakses database personalia hanya melalui localhost.
cara lain :GRANT ALL PRIVILEGES ON personalia .* TO anto@localhost IDENTIFIED BY 'ani';
Pada bagian identified by yang di set pada user anto berisi password yang digunakan pada saat pertama login ke mysql.Ketika user anto diberi kewenangan pada database lainnya maka password tidak perlu diset ulang.
Untuk melihat perubahan yang terjadi log in sebagai anto:
[ragilt@www ragilt]$ mysql -u anto -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 4.0.15
Type help; or \h for help. Type \c to clear the buffer.
Mysql>
mysql> use personalia;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-+
| Tables_in_personalia |
+-+
| info_umur |
+-+
1 row in set (0.00 sec)
mysql> select * from info_umur;
++-++
| namadepan | namabel | umur |
++-++
| Ragil | Turyanto | 19 |
| Sri | Haryani | 19 |
| Dewi | Rachman | 18 |
| Budi | Priyatno | 20 |
++-++
4 rows in set (0.00 sec)
Ringkasan:
Pada kesempatan ini kita telah belajar dasar dari MySQL:
Show databases
Create database
Use
Create table
Show table
Describe
Insert
Select
Update
Delete
Grant
Daftar Pustaka:
http://www.mysql.com
link asli
Using the MySQL Client
If you have shell access to your web server, are comfortable with using the command line, and your MySQL user has the permissions to create MySQL users and databases, you may follow the example session below to create your WordPress username and database.
$ mysql -u adminusername -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5340 to server version: 3.23.54
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE DATABASE databasename;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON databasename.* TO "wordpressusername"@"hostname"
-> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> EXIT
Bye
$
In the above:
* adminusername will typically be root, unless you have another high-privileged account set up.
* wordpress or blog are good values for databasename.
* wordpress is a good value for wordpressusername.
* hostname will usually be localhost. If you don't know what this value should be, check with your system administrator. If you are the system administrator, figure out what this value should be.
* password should be a difficult-to-guess password, ideally containing a combination of upper- and lower-case letters, numbers, and symbols.
Write down the values you used for databasename, wordpressusername, hostname, and password.
Share This Thread