SQL (Structured Query Language)
BAB I PENDAHULUAN Sistem managemen basis data ( DBMS ) pada umumnya menyediakan utilitas yang dapat digunakan secara interaktif untuk melakukan berbagai operasi terhadap basis data, seperti pembuatan tabel, penghapusan tabel, penambahan data, pengubahan data, pencarian data, penghapusan data, dan lain sebagainya. Untuk kepentingan yang sama DBMS juga memberikan fasilitas command line, yaitu suatu sekumpulan perintah-perintah yang dituliskan oleh pemakai sendiri untuk menunjang kepentingannya. Keistimewaan dari command line adalah bahwa perintah-perintah ini dapat diinputkan dan dieksekusi oleh DBMS melalui utilitas lain yang juga disediakan oleh DBMS atau melalui program atau aplikasi yang diciptakan oleh pemakai sendiri. Kumpulan dari perintah-perintah inilah yang kemudian disebut dengan bahasa basis data ( database language ). Perusahaan pembuat perangkat lunak ( vendor ) untuk mengelola basis data dan development tool yang fungsinya untuk menulis aplikasi basa data terkadang belum tentu membuat DBMS sendiri, oleh karena itu untuk mempermudah pemakai diperlukan bahasa basis data yang sifatnya standart, sehingga pemakai dapat menggunakan bahasa tersebut untuk mengakses data dimanapun, tanpa mempedulikan DBMS yang digunakan. Atau sebaliknya pemakai dapat mengakses data ysng dikelola oleh suatu DBMS tanpa mempedulikan development tool yang digunakan. Dengan demikian dapat tercipta ketidak bergantungan antara DBMS dan development tool. Terdapat berbagai bahasa basis data yang digunakan oleh masing-masing DBMS, namun dari sekian banyaknya bahasa tersebut, yang digunakan sebagai standart bahasa adalah SQL ( structured query language ). Pada dasarnya SQL terdiri dari dua kategori bahasa yang masingmasing diantaranya memiliki karakteristik dan fungsi yang berbeda, kategori yang pertama adalah DDL ( data definition language ) dan kategori kedua adalah DML ( data manipulation language ). Sebagai sebuah standart, SQL mengalami beberapa perubahan seiring dengan perkembangan teknologi basis data yang ditunjang dengan perkembangan teknologi komputer. SQL dibuat pada tahun 1970 dengan nama sequel. Standarisasi yang pertama dibuat pada tahun 1986 oleh ANSI ( american national standards institute ) dan ISO ( international standards organization ) dengan nama SQL-86. Pada tahun 1989 SQL-86 diperbaharui dengan SQL-89. Standart terakhir yang dibuat dan berlaku sampai sekarang adalah SQL-92 yang dukeluarkan pada tahun 1992. Meskipun SQL cenderung merujuk pada query lqnguage, namun perintah-perintah yang menjadi standart bukan hanya perintah perintah yang berhubungan dengan query data saja. Selain mencakup DML, SQL juga telah dilengkapi dengan perintah-perintah yang tergolong DDL dan perintah kontrol transaksi ( transaction control ).
BAB II DASAR-DASAR SQL
SQL menyediakan peritah dan fungsi dalam jumlah yang cukup banyak untuk menunjang aktifitas yang berhubungan dengan penelitian dan manipulasi data pada DBMS. Berikut ini akan diuraikan mengenai dasar-dasar SQL;
v JENIS DEKLARASI PADA SQL Deklarasi atau perintah dalam SQL dikategorikan menjadi dua yaitu DDL
( data
definition language ) dan DML ( data manipulation language ), kategori ini didasarkan pada karakteristik dan fungsi dari masing-masing. A. DDL ( data definition language ) DDL adlah bagian dari SQL yang digunakan untuk mendefinisikan data dan obyek pada basis data. Perintah-perintah yang tergolong pada kategori ini adalah: PERINTAH
KETERANGAN
CREATE TABLE
Membuat tabel
CREATE INDEX
Membuat index
ALTER TABLE
Mengubah atau menyisipkan kolom ke tabel
DROP TABLE
Menghapus tabel dari basis data
DROP INDEX
Menghapus index
GRANT
Memberi izin akses pada pemakai
B. DML ( data manipulation language ) DML adalah bagian dari SQL yang digunakan untuk memulihkan dan memanipulasi data. Perintah ini digunakan untuk memberikan query dan perubahan yang dilakukan di dalam tabel. Perintah-perintah yang tergolong dalam kategori ini adalah : PERINTAH
KETERANGAN
SELECT
Perintah utama dari SQL. Digunakan untuk memilih data dari tabel
INSERT
Menyisipkan baris pada tabel
DELETE
Menghapus baris pada tabel
UPDATE
Mengubah isi kolom pada tabel
COMMIT
Menuliskan perubahan pada disk
ROLLBACK
Membatalkan perubahan dari perintah COMMIT
v TIPE-TIPE DATA Tipe data digunakan ketika membuat suatu tabel, pemakai harus menentukan informasi tertentu pada saat pembuatan tabel. Ada beberapa tipe data yang disimpan dalam basis data, diantaranya adalah : INTEGER
KETERANGAN
BIT
Integer dengan niali 0 atau 1
INT
Nilai
interger
antara
–2.147.483.648
s/d
2.147.483.647 SMALLINT
Nilai antara –32.768 s/d 32.767
TINYINT
Nilai antara 0 s/d 255
DECIMAL / NUMERIC
Akurasi angka tetap antara –10^38-1s/d 10^38-1
MONEY
Data moneter dari –2^63 s/d 2^63-1, dengan tingkat
akurasi
hingga
sepersepuluh
ribu
unit
moneter SMALLMONEY
-214.748,3648 s/d 214.748,3647 dengan tingkat akurasi sepersepuluh ribu unit moneter
FLOAT
-1.79E+308 s/d 1.79E+308
REAL
-3.40E+38 s/d 3.40E+38
DATETIME
1 januari 1753 s/d 31 desember 9999
SMALLDATETIME
1 januari 1900 s/d 6 juni 2079
RUPA-RUPA
KETERANGAN
CURSOR
Referensi ke kursosr
TIMESTAMP
Angka eklusif yang dikenali oleh basas data
UNIQUEIDENTIFIER
Pengenal global yang eklusif
STRING
KETERANGAN
CHAR
Field tetap dengan ukuran max 8000 byte
VARCHAR
Field tetap dengan ukuran max 8000 byte
TEXT
Variabel dengan ukuran 2^31-1 byte
UNICODE STRING
KETERANGAN
NCHAR
Karakter unicode dengan ukuran 4000 byte
NVARCHAR
Karter unicode dengan ukuran berfariasi 4000 byte Variaber berukuran 2^30-1 byte
NTEXT
BINARY STRING
KETERANGAN
BINARY
Ukuran tetap hingga 8000 byte
VARBINARY
Ukuran bervariasi 8000 byte
IMAGE
Ukuran bervariasi hingga 2^31-1 byte
v EKSPRESI DAN OPERATOR Pada SQL operator bertindak berdasarkan operand, yaitu elemen yang dianalisa oleh operator. Terdapat dua jenis operator, yaitu operator unary yang bertindak berdasarkan satu operand saja, dan operator binary yang bertindak berdasarkan dua atau lebih operator. Apabila pada sebuah ekspresi terdapat lebih dari satu operator, maka operator-operator tersebut akan dievaluasi berdasarkan urutan sebagai berikut ; ♦
+ ( positif ), - ( negatif ), ~ ( bitwise NOT )
♦
* ( perkalian ), / ( pembagian ), % ( modulus )
♦
+ ( penjumlahan ), + ( penggabungan ), - ( pengurangan )
♦
+, >, <, >=, <=, <>, !=, !>, !<
♦
^ ( bitwise exclusive OR ), & ( bitwise AND ), | ( bitwise OR )
♦
NOT
♦
AND
♦
ALL, ANY, BETWEEN, IN, LIKE, OR, SOME
♦
= ( penugasan )
BAB III STRUKTUR DASAR SQL
Sebuah ekspresi SQL dasar sebenarnya hanya terdiri dari tiga klausa yaitu; klausa where, from, dan where. •
Klausa select
: digunakan untuk menetapkan daftar atribut yang diinginkan
sebagai query. •
Klausa from : digunakan untuk menetapkan tabel ( atau gabungan tabel ) yang akan ditelusuri selama query data dilakukan.
•
Klausa where
: digunakan untuk predikat ( sebagai kriteria ) yang harus
dipenuhi dalam memperoleh hasil query. Sintaks ( cara penulisan ) pada ekspresi SQL dasar yang memanfaatkan tiga klausa tersebut adalah : select A1 [ from
,A2, …,An] T1 [
[ where
, T2, …,Tn]
P]
keterangan : •
A1, A2, …, An
: daftar atribut
•
T1, T2, …, Tn
:daftar tabel
•
P
: predikat query
•
[]
: tanda opsional ( boleh digunakan boleh tidak )
A. KLAUSA SELECT Sesuai dengan penjelasan diatas bahwa klausa select digunakan untuk menetapkan daftar atribut yang dinginkan sebagai hasil query, maka berikut ini akan dijelaskan lebih lanjut tentang klausa select dengan menyertakan contohnya. Sebagai contoh pada tabel mahasiswa berikut; TABEL 1 : MAHASISWA NIM
NAMA
SEX
ASAL
TGL.LHR
FAK
PRODI
9961001
BUDI
L
KUDUS
02/02/80
MIPA
BIOLOGI
9961002
NINA
P
BLORA
03/11/79
SASTRA
INDONESIA
9961003
ABI
L
ACEH
30/10/78
TI
TI
9961004
DONI
L
BANTUL
23/07/81
MIPA
ILKOM
9961005
ANI
P
PATI
07/06/78
MIPA
ILKOM
Contoh perintah select: v Contoh 1 select NAMA from
MAHASISWA
Ekspresi diatas memerintahkan untuk menampilkan nama mahasiswa dari tabel mahasiswa yang telah ada. Sehingga tampilannya : NAMA BUDI NINA ABI DONI ANI v Contoh 2 select NIM, NAMA, SEX from
MAHASISWA
Ekspresi diatas memberikan perintah untuk menampilkan NIM, nama mahasiswa, dan jenis kelaminnya dari tabel mahasiswa. Tampilannya : NIM
NAMA
SEX
9961001
BUDI
L
9961002
NINA
P
9961003
ABI
L
9961004
DONI
L
9961005
ANI
P
v Contoh 3 select distinct
SEX
from
MAHASISWA
Pada tabel mahasiswa tersebut jenis kelamin ditulis secara berulang-ulang, dengan perintah distinct ini maka penulisan kan ditulis sekali saja. Kasus lain ; misalkan dalam sebuah tabel mahasiswa terdapat nama mahasiswa yang sama maka bila menggunakan ekspresi distinct maka nama yang sama hanya ditampilkan satu saja. Keunikan diatas hanya untuk nilai atribut yang disebutkan dalam klausa select, bukan pada keseluruhan atribut yang ada di tabel yang disebutkan pada klausa form. Tampilan dari contoh di atas adalah : SEX L P
v Contoh 4 select * from
MAHASISWA
Ekpresi diatas menampilkan seluruh atribut yang ada pada tabel yang disebutkan pada klausa form. Tampilannya : NIM
NAMA
SEX
ASAL
TGL_LHR
FAK
PRODI
9961001
BUDI
L
KUDUS
02/02/80
MIPA
BIOLOGI
9961002
NINA
P
BLORA
03/11/79
SASTRA
INDONESIA
9961003
ABI
L
ACEH
30/10/78
TI
TI
9961004
DONI
L
BANTUL
23/07/81
MIPA
ILKOM
9961005
ANI
P
PATI
07/06/78
MIPA
ILKOM
v Contoh 5 select NIM, NAMA as NAMA_MHS, SEX as JENIS_KELAMIN from
MAHASISWA
Fungsi dari ekspresi as pada select adalah untuk mengganti tampilan header ( kepala tampilan tabular ). Tampilannya menjadi :
NIM
NAMA_MHS
JENIS_KELAMIN
9961001
BUDI
L
9961002
NINA
P
9961003
ABI
L
9961004
DONI
L
9961005
ANI
P
B. KLAUSA WHERE Klausa ini digunakan untuk menetapkan predikat atau kriteria yang harus dipenuhi dalam menampilkan query. Klausa ini boleh tidak digunakan, yang artinya query dilakukan untuk semua record di dalam tabel yang disebutkan pada klausa from. Berikut ini akan diberikan contoh beserta penjelasan dari pemanfaatan klausa where. Contoh- contoh yang akan diberikan mengacu pada tabel kuliah berikut ini ;
TABEL 2 : KULIAH KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
M001
BASIS DATA
6
3
L022
M002
OR-KOM
3
3
L023
P001
SIMULASI
6
2
L024
F001
SISTEM BERKAS
4
3
L025
K001
PANCASILA
3
2
L026
v Contoh 1 select * from
KULIAH
where KODE_KUL = ‘ M001 ‘ Ekpresi diatas digunakan untuk menampilkan semua atribut untuk mata kuliah dengan kode mata kuliah M001. Nilai M001 diapit dengan tanda kutip tunggal. Penggunaan tanda kutip ini berlaku untuk nilai yang bertipe string ( sesuai dengan type dari atribut kode kuliah ). Sehingga tampilannya adalah : KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
M001
BASIS DATA
6
3
L022
v Contoh 2 Select * From
KULIAH
Where SEMESTER = 6 and SKS >= 3 Ekspresi diatas menerapkan penggunaan predikat dengan operator relasi, serta mengkombinasikannya dengan operator logika. Maksud dari ekspresi diatas adalah menampilkan semua atribut dari tabel kuliah yang termasuk dalam kriteria semester 6 dan memiliki jumlah sks lebih dari atau sama dengan 2. Nilai 6 dan 3 diatas tidak diapit dengan tanda kutip tunggal. Hal ini dikarenakan nilai tersebut bertype numeric ( sesuai dengan type atributnya ). Tampilannya : KODE_KUL
NAMA_KULIAH
SEMESTER
SKA
KODE_DOSEN
M001
BASIS DATA
6
3
L022
P001
SIMULASI
6
2
L024
v Contoh 3 select * from where
KULIAH SEMESTER between 3 and 5
Query dengan kriteria yang berbentuk range nilai tertentu dapat menggunakan tambahan klausa between. Pada contoh diatas akan menampilkan record-record kuliah yang diselenggarakan antara semester 3 s/d semster 5. Tampilannya adalah : KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
M002
OR-KOM
3
3
L023
F001
SISTEM BERKAS
4
3
L025
K001
PANCASILA
3
2
L026
v Contoh 4 Select From
* KULIAH
Where
NAMA_KULIAH like ‘ S%’
Untuk atribut yang bertype string dapat melakukan pencarian dengan pola tertentu, dengan memanfaatkan karakter percent ‘ % ‘atau ‘ _ ‘, dengan menambahkan klausa like pada klausa where. Pada contoh diatas akan menampilkan record-record KULIAH yang nama mata kuliahnya diawali dengan huruf ‘ S ‘. Sehingga tampilannya adalah : KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
P001
SIMULASI
6
2
L024
F001
SISTEM BERKAS
4
3
L025
v Contoh 5 Select * from
KULIAH
where NAMA_KULIAH like ‘ _ A% ‘ Ekspresi diatas akan menampilkan record-record pada tabel kuliah tentang mata kuliah yang huruf / karakter dari nama mata kuliah nya adalah ‘ A ‘. Tamplannya adalah : KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
M001
BASIS DATA
6
3
L022
K001
PANCASILA
3
2
L026
C. KLAUSA FROM Klausa ini digunakan untuk menetapkan tabel yang kita jadikan sebagai sumber pencarian data. Basis data terdiri dari beberapa tabel yang saling berhubungan, oleh karena itu sering kali dibutuhkan query dari satu tabel atau dari lebih dari satu tabel sekaligus. Atribut-atribut yang akan kita tampilkan dalam hasil query tidak hanya berasal dari satu tabel , namun bisa jadi dari sejumlah tabel, pada kasus seperti inilah klausa from
akan sangat berperan penting. Pada
contoh-contoh terdahulu hanya ditampilkan query dari satu tabel. Namun untuk ulasan kali ini akan diberikan contoh query yang menggambarkan hubungan antar tabel. TABEL 3 : DOSEN KODE_DOSEN
NAMA_DOSEN
STATUS
ASAL
L022
ISMAYA
TETAP
MEDAN
L023
GUNAWAN
TETAP
LAMPUNG
L024
BUDIHARJO
KONTRAK
SRAGEN
L025
WARDATI
TETAP
SEMARANG
L026
HARTATI
KONTRAK
JAKARTA
Tabel dosen diatas akan direlasikan dengan tabel kuliah yang telah dibuat sebelumnya. v Contoh 1 select * from
KULIAH, DOSEN
where KULIAH . KODE_DOSEN = DOSEN . KODE_DOSEN Untuk melakukan query antara dua tabel atau lebih, tidak bisa dilakukan dengan sembarangan. Tabel_tabel yang akan dijadikan query haruslah memiliki hubungan. Pada contoh diatas hubungan pada tabel kuliah dengan tabel dosen diwakili oleh kode dosen, dimana atribut ini dimiliki oleh kedua tabel tersebut. Tampilannya adalah : KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
NAMA_DOSEN
STATUS
ASAL
M001
BASIS DATA
6
3
L022
ISMAYA
TETAP
MEDAN
M002
OR_KOM
3
3
L023
GUNAWAN
TETAP
LAMPUNG
P001
SIMULASI
6
2
L024
BUDIHARJO
KONTRAK
SRAGEN
F001
SISTEM BERKAS
4
3
L025
WARDATI
TETAP
SEMARANG
K001
PANCASILA
3
2
L026
HARTATI
KONTRAK
JAKARTA
v Contoh 2 Select * from
KULIAH K, DOSEN
D
where K . KODE_DOSEN = D . KODE_DOSEN Ekspresi diatas merupakan contoh penggunaan alias, dimana tabel kuliah dialiaskan dengan K dan tabel dosen dialiaskan dengan D. tampilan yang akan diperoleh sama dengan tampilan diatas. v Contoh 3 select K.KODE_KUL, K.NAMA_KULIAH, D.NAMA_DOSEN from
KULIAH K, DOSEN
D
where K . KODE_DOSEN = D . KODE_DOSEN
Ekspresi di atas akan menampilkan record-record pada atribut kode kuliah, nama mata kuliah dari tabel kuliah dan record-record dari atribut nama dosen dari tabel dosen. Tampilannya adalah : KODE_KUL
NAMA_KULIAH
NAMA_DOSEN
M001
BASIS DATA
ISMAYA
M002
OR-KOM
GUNAWAN
P001
SIMULASI
BUDIHARJO
F001
SISTEM BERKAS
WARDATI
K001
PANCASILA
HARTATI
v Contoh 4 select K . KODE_KUL as KODE, K . NAMA_KULIAH as KULIAH, D . NAMA_DOSEN as DOSEN from
KULIAH K, DOSEN
D
where K . KODE_DOSEN = D . KODE_DOSEN and SEMESTER = 4
Ekspresi diatas akan menampilkan record-record pada atribut kode kuliah dengan nama baru yaitu kode, atribut nama kuliah dengan nama baru yaitu kuliah dan atribut nama dosen dengan nama baru yaitu dosen. Atribut- atribut tersebut diambil dari tabel kuliah dan tabel dosen, dengan syarat kuliah yang ditampilkan diajarkan pada semester 4. Tampilanya adalah : KODE
KULIAH
DOSEN
F001
SISTEM BERKAS
WARDATI
D. PENGURUTAN HASIL QUERY Pengurutan record-record hasil query disesuaikan dengan struktur penyimpanan yang kita terapkan pada tabel query. Terdapat dua jenis struktur penyimpanan, yaitu : 1. Struktur penyimpanan heap Dimana pada struktur penyimpaanan ini hasil query akan ditampilkan berdasarkan kronologis ( waktu ) penyimpanan. 2. Struktur penyimpanan sekuensial berindeks Pada struktur penyimpanan ini hasil query akan ditampilkan sesuai dengan atribut yang menjadi dasar indeks. Terdapat dua jenis mode pengurutan, yaitu pengurutan naik dan pengurutan turun. Kedua mode pengurutan tersebut sama-sama mengunakan klausa order by, hanya saja pada
pengurutan turun ditambahkan dengan klausa desc pada klausa order by nya. Berikut ini adalah contoh pengurutan hasil query; v Contoh 1 Select * from
KULIAH
order by
NAMA_KULIAH
Ekspresi diatas akan menampilkan query dengan urutan naik berdasarkan nama mata kuliah. Tampilannya adalah : KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
M001
BASIS DATA
6
3
L022
M002
OR-KOM
3
3
L023
K001
PANCASILA
3
2
L026
P001
SIMULASI
6
2
L024
F001
SISTEM BERKAS
4
3
L025
v Contoh 2 select * from
KULIAH
order by
NAMA_KULIAH desc
Ekspresi diatas akan menampilkan query dengan urutan turun berdasarkan nama mata kuliah. Tampilannya adalah : KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
F001
SISTEM BERKAS
4
3
L025
P001
SIMULASI
6
2
L024
K001
PANCASILA
3
2
L026
M002
OR-KOM
3
3
L023
M001
BASIS DATA
6
3
L022
Contoh penggunaan klausa dasar SQL, yang melibatkan empat buah tabel sekaligus, yaitu tabel MAHASISWA, tabel KULIAH, tabel DOSEN serta tabel NILAI; TABEL 4 : NILAI NIM
KODE_KUL
KODE_NILAI
9961001
M001
B
9961001
P001
A
9961002
M002
C
9961002
P001
C
9961003
K001
A
9961004
F001
A
9961004
M002
C
9961005
F001
C
9961005
K001
B
Contoh berikut akan menampilkan kartu hasil studi dari seorang mahasiswa berdasarkan pada NIM nya. select N . NIM, M . NAMA as NAMA_MHS, K . NAMA_KUL, D . NAMA_DOSEN, N . KODE_NILAI from
where
MAHASISWA
M,
KULIAH
K,
DOSEN
D,
NILAI
N
N . NIM = M . NIM and N . KODE_KUL = K . KODE_KUL and D . KODE_DOSEN = K . KODE_DOSEN and NIM = ‘9961001’
BAB IV FUNGSI AGREGASI Fungsi agregasi digunakan untuk menampilkan kebutuhan perolehan data seperti menampilkan banyaknya record, total nilai suatu atribut, rata-rata nilai atribut, nilai atribut terbesar atau terkecil , dan lain sebagainya. Macam-macam fungsi agregasi dalam SQL adalah sebagai berikut : • Count
; fungsi ini digunakan untuk mendapatkan nilai banyaknya record
dari
query. • Sum
; fungsi ini digunakan untuk mendapatkan nilai total suatu atribut bertipekan numeric dari query.
• Avg
; fungsi ini digunakan untuk mendapatkan nilai rata-rata suatu atribut bertipe numeric hasil query.
• Max
; fungsi ini digunakan untuk mendapatkan nilai terbesar dari suatu atribut hasil query
• Min
; fungsi ini digunakan untuk mendapatkan nilai terkecil dari suatu atribut hasil query.
Berikut ini akan diberikan contoh-contoh penggunaan fungsi agregasi dalam klausa SQL: v Contoh 1 Menampilkan banyaknya record dosen select count
(*)
from
DOSEN
v Contoh 2 Menampilkan banyaknya mata kuliah pada semester enam select count
(* )
from where
KULIAH SEMESTER = ‘ 6 ’
v Contoh 3 Menampilkan total sks disemester enam select sum
( SKS )
from
KULIAH
where
SEMESTER = ‘ 6 ‘
v Contoh 4 Menampilkan rata-rata sks untuk tiap-tiap semester select avg
( SKS ) from
KULIAH
v Contoh 5 Menampilkan mahasiswa dengan usia termuda select max
( TGL_LHR )
from
MAHASISWA
v Contoh 6 Menampilkan mahasiswa dengan usia tertua select min ( TGL_LHR ) from MAHASISWA
BAB V MANIPULASI DATA PADA SQL Manipulasi data pada SQL merupakan tindakan pengubahan nilai-nilai data pada tabel yang telah ada sebelumnya. Manipulasi data terdiri dari tindakan penambahan record pada tabel, pengubahan nilai-nilai atribut, dan penghapusan record. A. PENAMBAHAN RECORD Sintak : insert into
T( A1, A2, …, An )
values
( V1, V2, …, Vn )
Keterangan : • T : merupakan nama tabel yang akan ditambah nilai record pada atributnya. • A : merupakan nama nama tribut pada tabel yang akan ditambah nilai recordnya. • V : merupakan nilai-nilai record yang akan dimasukkan. v Contoh 1 insert into KULIAH (KODE_KUL, NAMA_KULIAH, SEMESTER, SKS, KODE_DOSEN ) values
(‘ S001’, ‘KEWIRAAN’, 4, 2, ‘L026’)
Tampilannnya : TABEL 5 : KULIAH KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
M001
BASIS DATA
6
3
L022
M002
OR-KOM
3
3
L023
P001
SIMULASI
6
2
L024
F001
SISTEM BERKAS
4
3
L025
K001
PANCASILA
3
2
L026
S001
KEWIRAAN
4
2
L026
Untuk mendapatkan hasil yang sama ekspresi-ekspresi pada contoh klausa SQL diatas dapat disingkat menjadi sebagai berikut : insert into
KULIAH
values
(‘S001’, ‘KEWIRAAN’, 4, 2, ‘L026’)
v Contoh 2 insert into
KULIAH
values
(‘S002’, ‘ KALKULUS’, 4, 3, ‘L027’)
insert into
DOSEN
values
(‘L027’, ‘FARIDA’, ‘ KONTRAK’, ‘ KALIMANTAN’)
Tampilannya : TABEL 6 : KULIAH KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
M001
BASIS DATA
6
3
L022
M002
OR-KOM
3
3
L023
P001
SIMULASI
6
2
L024
F001
SISTEM BERKAS
4
3
L025
K001
PANCASILA
3
2
L026
S001
KEWIRAAN
4
2
L026
S002
KALKULUS
4
3
L027
TABEL 7 : DOSEN KODE_DOSEN
NAMA_DOSEN
STATUS
ASAL
L022
ISMAYA
TETAP
MEDAN
L023
GUNAWAN
TETAP
LAMPUNG
L024
BUDIHARJO
KONTRAK
SRAGEN
L025
WARDATI
TETAP
SEMARANG
L026
HARTATI
KONTRAK
JAKARTA
L027
FARIDA
KONTRAK
KALIMANTAN
v Contoh 3 insert into MAHASISWA (NIM, NAMA, SEX, FAK, PRODI ) values ( 9961055, ‘ MAHARANI’, ‘ P’, ‘MIPA’, ‘ ILKOM’ ) Tampilannya : TABEL 8 : MAHASISWA NIM
NAMA
SEX
ASAL
TGL.LHR
FAK
PRODI
9961001
BUDI
L
KUDUS
02/02/80
MIPA
BIOLOGI
9961002
NINA
P
BLORA
03/11/79
SASTRA
INDONESIA
9961003
ABI
L
ACEH
30/10/78
TI
TI
9961004
DONI
L
BANTUL
23/07/81
MIPA
ILKOM
9961005
ANI
P
PATI
07/06/78
MIPA
ILKOM
9961055
MAHARANI
P
MIPA
ILKOM
B. PENGHAPUSAN RECORD Sintak : delete from
T
where
( kondisi / keadaan )
Keterangan : • T
: nama tabel yang akan dihapus salah satu atau beberapa dari
record dalam atributnya. • Kondisi / keadaan
: atribut-atribut beserta record-record yang akan dihapus. Jika
klausa where tidak digunakan maka penghapusan akan dilakukan pada semua record di dalam tabel. v Contoh 1 delete from
KULIAH
where
KODE_DOSEN = ‘L026’ AND KODE_KUL = ‘
K001’ Tampilannya : TABEL 9 : KULIAH KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
M001
BASIS DATA
6
3
L022
M002
OR-KOM
3
3
L023
P001
SIMULASI
6
2
L024
F001
SISTEM BERKAS
4
3
L025
S001
KEWIRAAN
4
2
L026
S002
KALKULUS
4
3
L027
v Contoh 2 delete from
KULIAH
where
KODE_ DOSEN= ‘L026’
Tampilannya : TABEL 2 : KULIAH KODE_KUL
NAMA_KULIAH
SEMESTER
SKS
KODE_DOSEN
M001
BASIS DATA
6
3
L022
M002
OR-KOM
3
3
L023
P001
SIMULASI
6
2
L024
F001
SISTEM BERKAS
4
3
L025
S002
KALKULUS
4
3
L027
C. PENGUBAHAN NILAI-NILAI ATRIBUT Pengubahan nilai atribut dapat menggunakan perintah update, perintah ini berfungsi memperbaharui atau meng-update satu atau lebih dari satu baris atau sekelompok baris didalam tabel. Sintak : update T set KOLOM = VALUES where ( kondisi / keadaan ) Keterangan : • T
: nama tabel yang akan mengalami perubahan record
• KOLOM : nama atribut pada tabel yang akan mengalami perubahan nilai record • VALUES : nilai baru record pada atribut dalam tabel yang akan menggantikan nilai lama. • Kondisi / keadaan
: keadaan yang menentukan record nama yang akan mengalami
update / perubahan nilai. Jika klausa where tidak digunakan pada ekspresi maka, perubahan akan dilakukan pada semua record di dalam tabel. v Contoh 1 update MAHASISWA set
ASAL = ‘ KENDARI’
where NIM
= 9961003
Tampilannya : TABEL 10 : MAHASISWA NIM
NAMA
SEX
ASAL
TGL.LHR
FAK
PRODI
9961001
BUDI
L
KUDUS
02/02/80
MIPA
BIOLOGI
9961002
NINA
P
BLORA
03/11/79
SASTRA
INDONESIA
9961003
ABI
L
KENDARI
30/10/78
TI
TI
9961004
DONI
L
BANTUL
23/07/81
MIPA
ILKOM
9961005
ANI
P
PATI
07/06/78
MIPA
ILKOM
v Contoh 2 update
MAHASISWA
set
FAK = ‘ TI’, PRODI = ‘T_KIMIA’
where NIM = 9961002 Tampilannya :
TABEL 11 : MAHASISWA NIM
NAMA
SEX
ASAL
TGL.LHR
FAK
PRODI
9961001
BUDI
L
KUDUS
02/02/80
MIPA
BIOLOGI
9961002
NINA
P
BLORA
03/11/79
SASTRA
INDONESIA
9961003
ABI
L
KENDARI
30/10/78
TI
TI
9961004
DONI
L
BANTUL
23/07/81
MIPA
ILKOM
9961005
ANI
P
PATI
07/06/78
MIPA
ILKOM
v Contoh 3 update DOSEN set
NAMA_DOSEN = NAMA_DOSEN + ‘ , Ssi ’
where
STATUS = ‘ TETAP’
Tampilannya : TABEL 12 : DOSEN KODE_DOSEN
NAMA_DOSEN
STATUS
ASAL
L022
ISMAYA, Ssi
TETAP
MEDAN
L023
GUNAWAN, Ssi
TETAP
LAMPUNG
L024
BUDIHARJO
KONTRAK
SRAGEN
L025
WARDATI, Ssi
TETAP
SEMARANG
L026
HARTATI
KONTRAK
JAKARTA
L027
FARIDA
KONTRAK
KALIMANTAN
BAB VI PEMBUATAN TABEL BARU Perintah-perintah yang berkaitan dengan pendefinisian obyek-obyek basis data dan pembuatan tabel baru merupakan perintah-perintah yang tergolong dalam DDL ( data definition language ). Sebelum memulai membuat suatu tabel baru perlu diketahui tentang tipe data standart SQL yang berlaku. Bab
yang terdahulu telah dibahas mengenai tipe-tipe data yang
berlaku pada SQL. Pada dasarnya terdapat banyak sekali tipe data yang berlaku pada SQL namun hanya beberapa saja diantaranya yang diakui sebagai tipe data standart, dan diizinkan untuk digunakan pada periode standarisasi. Berikut ini adalah tipe-tipe data standart yang berlaku dalam SQL-92 : • Char (n)
: untuk atribut bernilai string dengan panjang tetap
• Varchar (n)
: untuk atribut bernilai string dengan penjang fleksibel
• Int atau integer
: untuk atribut berniali integer 2 byte
• Smallint
: untuk stribut berniali integer 1 byte
• Numeric (p,d)
: untuk atribut berniali pecahan fixed point
• Real, double, precision • Float (n)
: untuk atribut bernilai pecahan floating point
: untuk atribut bernilai pecahan floating point dengan presisi n
digit • Date
: untuk atribut bernilai penanggalan
• Time
: untuk atribut bernilai waktu
Sintak klausa pembuatan tabel baru : crete table T ( A1 D1, A2 D2, …, An Dn ) Keterangan : • T
: merupakan nama tabel yang akan dibuat
• A1, A2, …, An : merupakan nama-nama tribut yang akan terdapat di dalan tabel • D1, D2, …, Dn : merupakan domain nialai mesing-masing atribut tersebut yang ditentukan berdasarkan tipe datanya.
SQL : 1. Perintah dasar (bentuk dasar & bentuk lengkap) 2. Opsi DISTINCT 3. Mengganti tampilan judul kolom (alias untuk nama kolom) 4. Kondisi dengan Klausa WHERE dan HAVING 5. Kondisi jamak dengan operator AND, OR dan BETWEEN 6. Pola string dengan wildchar %, _ dan operator LIKE 7. Query dari beberapa tabel menggunakan WHERE 8. Aliasing nama tabel 9. Query dengan Operasi JOIN dan UNION 10. Pengurutan hasil Query 11. Query dengan fungsi agregasi 12. UPDATE, DELETE dan INSERT 13. SUBQUERY JOIN : mysql> help join Name: 'JOIN' Description: MySQL supports the following JOIN syntaxes for the table_references part of SELECT statements and multiple-table DELETE and UPDATE statements: table_reference, table_reference table_reference [INNER | CROSS] JOIN table_reference [join_condition] table_reference STRAIGHT_JOIN table_reference table_reference LEFT [OUTER] JOIN table_reference [join_condition] table_reference NATURAL [LEFT [OUTER]] JOIN table_reference { OJ table_reference LEFT OUTER JOIN table_reference ON conditional_expr }
table_reference RIGHT [OUTER] JOIN table_reference [join_condition] table_reference NATURAL [RIGHT [OUTER]] JOIN table_reference table_reference is defined as: tbl_name [[AS] alias] [[USE INDEX (key_list)] | [IGNORE INDEX (key_list)] | [FORCE INDEX (key_list)]] join_condition is defined as: ON conditional_expr | USING (column_list) Examples: mysql> SELECT table1.* FROM table1 ->
LEFT JOIN table2 ON table1.id=table2.id
->
WHERE table2.id IS NULL;
mysql>