SQL

18
Dasar-Dasar Structure Query Language(SQL) SQL adalah sekumpulan perintah yang berfungsi untuk mendefinisikan struktur database, menyimpan dan me-manage data di dalam database, serta berfungsi untuk mengontrol akses ke data tersebut. Ketika membuat sebuah SQL statement, diharapkan kita mengacu pada sintak-sintak perintah yang tertera pada dokumentasinya. Sintaks ini memberikan sebuah pegangan bagaimana sebuah SQL statement dapat dibuat sehingga RDBMS dapat mengartikan statement tersebut. Setiap perintah SQL memiliki struktur tertentu, Elemen yang dibutuhkan pada setiap statement dan pilihan-pilihan yang dapat digunakan pada statement tersebut. Saat pertama kali melihat sintak yang lengkap dari sebuah statement mungkin kita akan melihat sesuatu yang sangat membingungkan. Ada statement yang hanya memiliki sedikit elemen sehingga lebih mudah dimengerti. Namun, ada juga statement yang memiliki elemen yang cukup panjang. Latihan yang terus menerus akan membuat seseorang dapat mengerti seluruh sintak-sintak ini walaupun sangat kompleks. Berikut adalah contoh sintaks yang akan kita temukan pada dokumentasi MySQL. Sintaks ini tidak memperlihatkan bagaiman membuat sebuah perintah CREATE TABLE secara keseluruhan, namun hanya memperlihatkan komponen-komponen penting dalam sebuah pembuatan tabel. Keterangan untuk contoh di atas adalah sebagai berikut : Vertical Bar ( | ) : ini bisa diartikan sebagai atau, dimana kita bisa memilih salah satu atau beberapa dari pilihan yang diberikan. Kurung kotak ( [ ] ) : ini berarti optional, jadi sintaks yang berada dalam kurung kotak ini bisa digunakan bisa juga tidak. <table definition>::= CREATE [TEMPORARAY] TABLE [IF NOT EXISTS] <table name> (<table element> [{, <table element>}...]) [ENGINE = {BDB | MEMORY | ISAM | INNODB | MERGE | MRG_MYISAM | MYISAM }] <table element>::= {< column name> <type> [NOT NULL | NULL] [DEFAULT <value>] [AUTO_INCREMENT]} | {PRIMARY KEY (<column name> [{, <column name>}...])} | INDEX [<index name>] (<column name> [{, <column name>}...])}

description

Structure Query Language

Transcript of SQL

Page 1: SQL

Dasar-Dasar Structure Query Language(SQL)

SQL adalah sekumpulan perintah yang berfungsi untuk mendefinisikan struktur database,

menyimpan dan me-manage data di dalam database, serta berfungsi untuk mengontrol akses ke data

tersebut.

Ketika membuat sebuah SQL statement, diharapkan kita mengacu pada sintak-sintak perintah

yang tertera pada dokumentasinya. Sintaks ini memberikan sebuah pegangan bagaimana sebuah SQL

statement dapat dibuat sehingga RDBMS dapat mengartikan statement tersebut. Setiap perintah SQL

memiliki struktur tertentu, Elemen yang dibutuhkan pada setiap statement dan pilihan-pilihan yang

dapat digunakan pada statement tersebut.

Saat pertama kali melihat sintak yang lengkap dari sebuah statement mungkin kita akan melihat

sesuatu yang sangat membingungkan. Ada statement yang hanya memiliki sedikit elemen sehingga

lebih mudah dimengerti. Namun, ada juga statement yang memiliki elemen yang cukup panjang.

Latihan yang terus menerus akan membuat seseorang dapat mengerti seluruh sintak-sintak ini

walaupun sangat kompleks.

Berikut adalah contoh sintaks yang akan kita temukan pada dokumentasi MySQL.

Sintaks ini tidak memperlihatkan bagaiman membuat sebuah perintah CREATE TABLE secara

keseluruhan, namun hanya memperlihatkan komponen-komponen penting dalam sebuah pembuatan

tabel.

Keterangan untuk contoh di atas adalah sebagai berikut :

➢ Vertical Bar ( | ) : ini bisa diartikan sebagai atau, dimana kita bisa memilih salah satu

atau beberapa dari pilihan yang diberikan.

➢ Kurung kotak ( [ ] ) : ini berarti optional, jadi sintaks yang berada dalam kurung kotak ini

bisa digunakan bisa juga tidak.

<table definition>::= CREATE [TEMPORARAY] TABLE [IF NOT EXISTS] <table name> (<table element> [{, <table element>}...]) [ENGINE = {BDB | MEMORY | ISAM | INNODB | MERGE | MRG_MYISAM | MYISAM }]

<table element>::= {< column name> <type> [NOT NULL | NULL] [DEFAULT <value>] [AUTO_INCREMENT]} | {PRIMARY KEY (<column name> [{, <column name>}...])} | INDEX [<index name>] (<column name> [{, <column name>}...])}

Page 2: SQL

➢ Kurung segitiga ( < > ) : sintaks yang berada dalam tanda kurung ini harus diberi sebuah

nilai.

➢ Kurung kurawal ({ } ) : segala sesuatu yang berada dalam kurung kurawal ini harus

diperlakukan sebagai sebuah kesatuan atau unit.

➢ Tiga titik ( . . . ) : artinya bahwa sintak yang sebelum tanda titik tiga ini dapat

diulangi sebanyak mungkin.

Untuk dapat lebih memahami perintah SQL ini, kita akan melihat sebuah contoh dalam

membuat sebuah tabel barang.

1. DDL (Data Definition Language)

2. DML (Data Manipulation Language)

Pertama sekali yang harus kita ingat bahwa CREATE TABLE adalah perintah tunggal yang

ditandai dengan sebuah titik koma ( ; ), yang apda umumnya dianggap sebagai akhir dari sebuah

statement.

/* membuat tabel barang */

Baris ini merupakan baris komentar dan tidak akan dieksekusi oleh MySQL. Bahkan, pada umumnya

komentar tidak akan dimasukkan ketika bekerja secara langsung dengan MySQL.

CREATE TABLE barang

Baris kedua ini adalah statement untuk membuat sebuah tabel dengan nama barang. Seperti yang kita

sebelumnya pada sintak dokumentasi mengenai pembuatan tabel yaitu

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] <table name>

/* membuat tabel barang */ CREATE TABLE barang (

id_barang INT NOT NULL,nama_barang VARCHAR(40) NOT NULL,id_cat INT NOT NULL,PRIMARY KEY (id_barang)

) ENGINE = MYISAM;

Page 3: SQL

sehingga dapat ditarik kesimpulan bahwa TEMPORARY dan IF NOT EXISTS adalah bagian optional

dari sintaks ini dan dibolehkan untuk tidak digunakan. Jadi, dalam pembuatan tabel barang hanya

menggunakan element-elemen wajib saja. Baris berikutnya adalah definisi <table element> sebagai

berikut

(

id_barang INT NOT NULL,

nama_barang VARCHAR(40) NOT NULL,

id_cat INT NOT NULL,

PRIMARY KEY (id_barang)

)

pada bagian ini dapat kita lihat ada empat <table element> komponen. Untuk tiga yang pertama

merupakan definisi kolom dan yang terakhir adalah pembuatan primary key. Seluruh elemen berada

dalam tanda kurung dan setiap element dipisahkan oleh sebuah koma (,). dalam tiap terlihat adanya

pendefinisian kolom, contohnya adalah pada kolom id_barang seperti berikut

id_barang INT NOT NULL,

untuk contoh di atas, maka nama kolomnya adalah id_barang yang bertipe data INT (angka) dan tidak

dijinkan untuk memasukkan data kosong (NULL). Berikut adalah perbandingan dengan sintak pada

dokumentasi.

<column name> <type> [NOT NULL | NULL] [DEFAULT <value>] [AUTO_INCREMENT]

sehingga dapat disimpulkan bahwa id_barang adalah nilai untuk <column name> dan INT adalah

nilai dari <type>. Pada contoh di atas satu-satu nya pilihan optional yang digunakan adalah NOT NULL.

Untuk pendefinisian primary key pada contoh ini adalah sebagai berikut

PRIMARY KEY (id_barang)

Pada baris tersebut hanya terdapat satu kata kunci PRIMARY KEY dan sebuah nama kolom. Karena ini

Page 4: SQL

merupakan <table element> yang terakhir maka tidak dibutuhkan koma (,) pada akhir baris.

Perbandingan dengan sintak pada dokumentasi adalah sebagai berikut

{PRIMARY KEY (<column name> [{, <column name>}...])

sehingga jelas terlihat bahwa tidak ada satu pun dari pilihan optional yang digunakan, hanya elemen

yang dibutuhkan saja.

TIPE-TIPE SQL STATEMENT

Setelah melihat berbagai perintah SQL, dapat dipahami bahwa perintah SQL dapat digunakan

untuk berbagai tipe perintah. Pada dasarnya perintah SQL dapat dikategorikan menjadi 3 kategori, yaitu

data definition language (DDL), data manipulation language (DML) dan data control language (DCL).

Data Definition Language (DDL)

Pada MySQL yang termasuk dalam perintah ini adalah membuat, merubah dan menghapus

struktur dalam database. Statement DDL mendefinisikan struktur dari MySQL database dan

menentukan tipe data apa saja yang dapat disimpan ke database serta bagaimana menyimpan data.

Secara khusus statement DDL berfungsi untuk :

1. Membuat dan menghapus database (CREATE DATABASE, DROP DATABASE)

2. Membuat, memperbaiki/merubah, dan menhapus tabel (CREATE TABLE, ALTER TABLE,

RENAME TABLE, DROP TABLE)

3. Membuat dan menghapus index (CREATE INDEX, DROP INDEX)

Berikut merupakan pengertian dasar dari database, tabel dan index

➢ Database : kumpulan dari data yang saling berhubungan yang memiliki struktur

tertentu.

➢ Tabel : tempat untuk menyimpan data yang memiliki kolom dan baris yang

merepresentasika sebuah entiti dalam sebuah database.

➢ Index : adalah list dari nilai-nilai yang diambil dari sebuah kolom tertentu. Index

digunakan untuk mempercepat proses pencarian data.

Page 5: SQL

Data Manipulation Language (DML)

Perbedaan mendasar dari DDL dan DML adalah pada DML lebih menitikberatkan pada data

yang disimpan pada database daripada terhadap struktur database itu sendiri. Contohnya pada DML

kita dapat meminta informasi dari sebuah database, memasukkan data, mengedit/merubah data dan

menghapus data. Namun, kita tidak akan menggunakan DML untuk membuat dan merubah tabel yang

menyimpan data. Secara khusus statement DML berfungsi untuk :

➢ Meminta data yang khusus baik dari sebuah tabel atau beberapa tabel(SELECT)

➢ Menambahkan data ke dalam tabel(INSERT, REPLACE, LOAD DATA INFILE)

➢ Merubah/mengedit data dalam sebuah tabel(UPDATE)

➢ Menghapus data dari sebuah tabel(DELETE FROM, TRUNCATE TABLE)

SELECT biasanya merupakan perintah yang paling sering digunakan. Perintah SELECT ini dapat

digunakan untuk menarik/menampilkan data dari satu tabel atau lebih. SELECT bisa jadi sangat

sederhana dan bisa juga menjadi sangat rumit/kompleks tergantung pada informasi yang ingin ditarik

dari sebuah database.

Perintah SELECT berikut berfungsi untuk menampilkan/menarik data dari tabel barang yang

telah dibuat sebelumnya.

Data Control Language (DCL)

DCL berfungsi untuk mengontrol hak akses ke sebuah database. Secara khusus statement DCL

berfungsi untuk :

➢ Memberikan hak akses ke user (GRANT)

➢ Mengambil kembali hak akses dari user (REVOKE)

Pemberian hak akses ke seorang user, sehingga seorang user dapat memiliki hak akses untuk

tabel tertentu saja dan dapat juga diberikan hak akses untuk seluruh tabel dalam database.

SELECT nama_barang, id_barang, id_catFROM barangWHERE id_cat < 600ORDER BY nama_barang;

GRANT SELECT, INSERTON test.barangTO sayed@localhostIDENTIFIED BY 'password';

Page 6: SQL

Statement di atas terbagi menjadi empat bagian, pada baris pertama GRANT statement memberikan

user hak untuk SELECT dan INSERT, sehingga user hanya dapat melakukan perintah SELECT dan

INSERT pada database tertentu. Statement berungsi untuk menentukan pada tabel atau database mana

saja user tersebut dapat melakukan perintah SELECT dan INSERT. TO statement menyatakan akun

user yang akan diberikan hak akses dan pada baris terakhir merupakan password dari si user.

Page 7: SQL

L A T I H A N

1. Login ke MySQL

untuk dapat menggunakan MySQL kita harus terlebih dahulu login ke MySQL server sesuai

dengan username dan password kita. Apabila MySQL server berada pada localhost maka dapat

digunakan perintah sebagai berikut

Apabila MySQL server berada pada komputer yang lain dapat digunakan perintah sebagai

berikut :

tampilan dari perintah ini dapat dilihat pada gambar berikut ini, untuk username root dan berada

pada localhost.

jika login berhasil maka kita akan diberikan mysql command prompt seperti pada gambar di

atas.

2. Membuat Database

Setelah kita berada pada MySQL command prompt, maka sekarang kita dapat memasukkan

perintah SQL. Untuk latihan ini, kita akan membuat database yang bernama pemrograman

dengan perintah berikut.

mysql -u <username> -p

mysql -h <alamat_server> -u <username> -p

CREATE DATABASE pemrograman;

Page 8: SQL

Adapun tampilan dari perintah ini adalah sebagai berikut,

Kalau perintah ini berhasil maka MySQL akan merespon dengan pesan

seperti pada gambar berikut

3. Membuat Tabel

Sebelum dapat membuat tabel kita harus memberitahukan kepada MySQL server tempat di

mana tabel ini akan diletakkan. Perintah yang digunakan adalah sebagai berikut

Query OK, x row affected (x.xx sec)

Page 9: SQL

jika perintah ini berhasil, maka MySQL akan merespon dengan pernyataan bahwa database

telah berubah. Seperti berikut,

untuk lebih jelasnya dapat kita lihat pada screenshot berikut.

USE <nama_database>;

Database changed

Page 10: SQL

Setelah proses ini kita dapat membuat tabel dalam database pemrograman. Dengan perintah

yang telah kita pelajari sebelumnya. Untuk proses pembuatan tabel ini, kita akan membuat

sebuah tabel yang bernama users dan terdiri dari 3 fields/kolom, yaitu kolom id yang bertipe

data integer, kolom username yang bertipe data string dan kolom password yang juga bertipe

data string. Panjang field untuk ketiga kolom tersebut secara beurutan adalah 3, 16 dan 255.

sebagai tambahan, semua kolom tidak boleh menerima data kosong (NULL) dan username

tidak boleh sama, serta untuk kolom id harus bersifat AUTO_INCREMENT.

Maka dari keterangan di atas, perintah SQL untuk membuat tabel tersebut adalah

tampilan layar ketika perintah ini dijalankan adalah sebagai berikut.

Jika perintah tersebut berhasil maka MySQL akan merespon seperti berikut

CREATE TABLE users (

id INT(3) NOT NULL AUTO_INCREMENT,username VARCHAR(16) NOT NULL,Password VARCHAR(255)NOT NULL,PRIMARY KEY (id),UNIQUE KEY username (username)

);

Query OK, x rows affected (x.xx sec)

Page 11: SQL

dan dapat kita lihat pada gambar berikut ini

4. Memasukkan Data

untuk memasukkan data ke dalam sebuah tabel, kita menggunakan perintah INSERT seperti

pada contoh berikut ini.

kali ini kita akan mencoba memasukkan sebuah record dengan username=slank dan

password=virus. Sebelum password dimasukkan, terlebih dahulu kita enkrip dengan md5.

Sehingga perintahnya menjadi seperti berikut

berikut ini adalah tampilan dari perintah dan respon MySQL untuk perintah tersebut

INSERT INTO <table_name>(field_name, ...) VALUES(<values>, ...)

INSERT INTO users(username, password) VALUES(“ slank” , md5(“ virus” ));

Page 12: SQL

5. Melihat Data

Untuk dapat melihat/menarik seluruh data yang telah kita masukkan, kita akan menggunakan

perintah seperti berikut ini.

Untuk tabel users yang kita gunakan pada latihan kali ini, maka perintahnya menjadi

dan tampilan dari screen capture adalah sebagai berikut

SELECT * FROM <table_name>;

SELECT * FROM users;

Page 13: SQL

Jika perintah ini berhasil maka seluruh data akan ditampilkan ke layar seperti pada gambar

berikut

6. Mengubah Data

Untuk mengubah data, perintah yang digunakan adalah UPDATE dengan diikuti SET untuk field

yang nilainya mau diganti. Untuk sintak-nya adalah sebagai berikut

Sehingga perintah lengkapnya menjadi seperti berikut untuk perubahan password pada

username slank menjadi worm dari sebelumnya virus

untuk lebih jelasnya dapat kita lihat serangkain gambar berikut yang mengambarkan perubahan

pada field password setelah data dirubah. Untuk melihat perubahan tersebut kita menggunakan

perintah SELECT.

UPDATE <table_name> SET <field_name>=<new_value> WHERE <field_name>=<value>

UPDATE users SET password=md5(“ worm” ) WHERE username=” slank” ;

Page 14: SQL
Page 15: SQL

Pada rangkaian gambar berikut akan kita lihat, dimana data password yang sudah di ubah

menjadi worm, kita rubah kembali menjadi virus.

Page 16: SQL

7. Menghapus Data

untuk menghapus data kita menggunakan perintah DELETE FROM <table_name>, perintah ini

akan menghapus sebuah record dari tabel. Sintak lengkapnya dari perintah ini adalah sebagai

Page 17: SQL

berikut.

Sehingga untuk menghapus record yang memiliki username slank, maka perintahnya adalah

sebagai berikut :

adapun tampilan layar untuk SQL statement dan server respon adalah sebagai berikut.

DELETE FROM <table_name> WHERE <field_name>=<value>

DELETE FROM users WHERE username=” slank” ;

Page 18: SQL

Sehingga ketika kita tampilkan data dari tabel users, maka tampilannya menjadi seperti berikut

PERTANYAAN :

1. Apa perbedaan antara perintah TRUNCATE dan DELETE pada sebuah tabel?

2. Apa Fungsi tanda * pada perintah SELECT?

3. Sebutkan perintah untuk menampilkan username saja dari tabel users di atas?

4. Sebutkan perintah untuk menampilakan username dan password saja pada users di atas?

5. Apakah perintah UPDATE bisa digunakan untuk memasukkan record baru?

6. Apa fungsi dari md5 pada perintah INSERT di atas?

7. Adakah fungsi enkripsi yang lain pada MySQL selain md5?

8. Bagaimana cara menghapus sebuah tabel?

9. Bagaimana cara menghapus sebuah database?

10. Bagaimana cara menggunakan perintah REPLACE?