A. Pengertian Structure Query Language (SQL)
A. Pengertian Structure Query Language (SQL)
Contoh:
create table jurusan (nama_jurusan char (20),
lokasi char (15),
anggaran numeric (12,2));
Contoh:
select dosen, nama from dosen where dosen.jurusan = ’Fisika’;
Tabel yang dibuat di atas memiliki tiga atribut, nama jurusan, yang merupakan karakter
string dengan panjang maksimum 20, lokasi, yang merupakan karakter string dengan panjang
maksimum 15, dan anggaran, yang merupakan angka dengan total 12 digit, 2 di antaranya
adalah setelah titik desimal. Perintah create table juga menentukan bahwa atribut nama
jurusan adalah kunci utama tabel jurusan. Tanda titik koma yang ditunjukkan pada akhir
membuat pernyataan tabel, serta akhir pernyataan SQL.
create table jurusan (nama_jurusan varchar (20), lokasi varchar (15), anggaran numeric
(12,2), primary key (nama_jurusan));
create table dosen (ID varchar (5), nama varchar (20) not null, nama_jurusan varchar (20),
gaji numeric (8,2), primary key (ID), foreign key (nama_jurusan)
references jurusan);
create table kelas (kode_MK varchar (8), kode_kelas varchar (8), semester varchar (6),
tahun numeric (4,0), lokasi varchar (15), ruangan varchar (7), waktu varchar (4),
primary key (kode_MK, kode_kelas, semester, tahun), foreign key (kode_MK) references
mata_kuliah); create table pengajaran (ID varchar (5), kode_MK varchar (8), kode_kelas
varchar (8), semester varchar (6), tahun numeric (4,0), primary key (ID, kode_MK,
kode_kelas, semester, tahun), foreign key (kode_MK, kode_kelas, semester,
tahun) references kelas, foreign key (ID) references
dosen);
SQL mencegah pembaruan apa pun ke basis data yang melanggar batasan integritas.
Sebagai contoh, jika record yang baru saja dimasukkan atau dimodifikasi dalam suatu tabel
memiliki nilai nol untuk atribut primary key, atau jika record memiliki nilai yang sama pada
atribut primary key seperti halnya record lain dalam tabel, SQL menandai kesalahan dan
mencegah pembaruan. Demikian pula, penyisipan data mata kuliah dengan nilai nama
jurusan yang tidak muncul dalam tabel jurusan akan melanggar batasan pada kunci asing,
dan SQL akan mencegah penyisipan tersebut terjadi.
Nilai ditentukan dalam urutan di mana atribut yang sesuai tercantum dalam skema
tabel. Perintah delete dapat digunakan untuk menghapus data dari suatu tabel, dengan
perintah sebagai berikut:
Perintah di atas akan menghapus semua record dari tabel mahasiswa. Bentuk lain dari
perintah delete memungkinkan record tertentu untuk dihapus yang akan dibahas pada bab
berikutnya. Untuk menghapus tabel dari database SQL, perintah drop table dapat digunakan.
Perintah drop table menghapus semua informasi tentang tabel yang dihapus dari
database. Perintah itu adalah tindakan yang lebih drastis daripada
dimana dosen adalah nama dari tabel yang ada, alamat adalah nama atribut yang akan
ditambahkan, dan varchar(50) adalah tipe atribut yang ditambahkan. Atribut dari suatu tabel
dapat dihilangkan dengan perintah:
dimana dosen adalah nama tabel yang ada, dan alamat adalah nama atribut tabel yang akan
dihapus.
Nama
Suparni
Andri
Reza
Bobby
Sulastri
Nama_jurusan
Ilmu Komputer
Sistem Informasi
Biologi
Sistem Informasi
Matematika
Karena lebih dari satu dosen dapat menjadi bagian dari sebuah jurusan, nama jurusan
dapat muncul lebih dari satu kali dalam tabel dosen. Hasil kueri di atas adalah tabel yang
berisi nama-nama jurusan.
Nama_Jurusan
Ilmu Komputer
Sistem Informasi
Biologi
Matematika
Jika duplikat ingin dihapus. Hasil kueri di atas akan berisi setiap nama jurusan paling
banyak satu kali. SQL menggunakan kata kunci all digunakan untuk menentukan secara
eksplisit bahwa duplikat tidak dihapus:
Klausa select juga dapat berisi ekspresi aritmatika yang melibatkan operator +, -, , dan
/ yang beroperasi pada konstanta atau atribut record. Misalnya:
Ini menunjukkan apa yang akan terjadi jika memberikan kenaikan 10% untuk setiap
dosen, bagaimanapun, kueri ini tidak menghasilkan perubahan apa pun pada tabel dosen.
SQL juga menyediakan tipe data khusus, seperti berbagai bentuk tipe tanggal, dan
memungkinkan beberapa fungsi aritmatika beroperasi pada tipe ini. Klausa where
memungkinkan untuk hanya memilih baris-baris dalam tabel hasil dari klausa from yang
memenuhi predikat tertentu. Pertimbangkan kueri "Temukan nama semua dosen di jurusan
Sistem Informasi yang memiliki gaji lebih dari 4.000.000" Kueri ini dapat ditulis dalam SQL
sebagai:
SQL memungkinkan penggunaan penghubung logis and, or, dan not pada klausa where.
Operan dari penghubung logis dapat berupa ekspresi yang melibatkan operator pembanding
<, <=, >, > =, =, dan <>. SQL memungkinkan menggunakan operator pembanding untuk
membandingkan string dan ekspresi aritmatika, serta tipe khusus, seperti tipe tanggal.
Perhatikan bahwa atribut jurusan terdapat di tabel dosen dan jurusan, dan nama tabel
digunakan sebagai awalan (dalam dosen.nama_jurusan, dan jurusan.nama_jurusan) untuk
memperjelas atribut mana yang dimaksud. Sebaliknya, atribut nama dan lokasi hanya muncul
di salah satu tabel, dan karenanya tidak perlu diawali dengan nama tabel.
Meskipun klausa harus ditulis dalam urutan select, from, where, cara termudah untuk
memahami operasi yang ditentukan oleh permintaan adalah dengan mempertimbangkan
klausa dalam urutan operasional: pertama from, lalu where, dan kemudian select.
Tabel hasil memiliki semua atribut dari semua tabel dalam klausa from. Karena nama
atribut yang sama dapat muncul pada lebih dari satu tabel, seperti yang dilihat sebelumnya,
awali nama relasi dari mana atribut itu berasal, sebelum nama atribut.
Sebagai contoh, skema hubungan untuk tabel dosen dan kelas adalah:
(dosen.ID, dosen.name, dosen.nama_jurusan, dosen.gaji, pengajaran.ID,
pengajaran.kode_MK, pengajaran.kode_kelas, pengajaran.semester, pengajaran.tahun)
Dengan skema ini, dosen.ID dapat dibedakan dari pengajaran.ID. Untuk atribut yang
hanya muncul di salah satu dari dua tabel, biasanya akan dibuang awalan nama-tabel.
Penyederhanaan ini tidak mengarah pada ambiguitas apa pun. Skema hubungan dapat ditulis
sebagai berikut:
(dosen.ID, nama, nama_jurusan, gaji pengajaran.ID, kode_MK, kode_kelas, semester,
tahun)
Kueri di atas hanya menghasilkan dosen yang telah mengajar beberapa mata kuliah.
Dosen yang belum mengajar mata kuliah apa pun bukanlah output, jika ingin menghasilkan
record seperti itu, bisa digunakan operasi yang disebut outer join, yang akan dijelaskan
berikutnya.
Jika hanya ingin menemukan nama dosen dan pengidentifikasi mata kuliah untuk
dosen di jurusan Ilmu Komputer, dapat ditambahkan predikat tambahan untuk klausa where,
seperti yang ditunjukkan di bawah ini.
F. Natural Join
Sebelumnya dalam kueri contoh yang menggabungkan informasi dari tabel dosen dan
tabel pengajaran, kondisi yang cocok mengharuskan dosen.ID sama dengan pengajaran.ID.
Ini adalah satu-satunya atribut dalam dua tabel yang memiliki nama yang sama. Sebenarnya
ini adalah kasus umum; yaitu, kondisi pencocokan dalam klausa from paling sering
mengharuskan semua atribut dengan nama yang cocok untuk disamakan.
Untuk membuat kehidupan seorang programmer SQL lebih mudah untuk kasus umum
ini, SQL mendukung operasi yang disebut natural join. Bahkan SQL mendukung beberapa
cara lain di mana informasi dari dua atau lebih tabel dapat digabungkan bersama. Telah
terlihat bagaimana predikat klausa dapat digunakan untuk menggabungkan informasi dari
banyak tabel.
Operasi gabungan alami beroperasi pada dua tabel dan menghasilkan tabel lain sebagai
hasilnya. Natural join menganggap hanya pasangan record dengan nilai yang sama pada
atribut yang muncul dalam skema kedua tabel. Jadi, kembali ke contoh hubungan dosen dan
pengajaran, dosen bergabung dengan pengajaran di mana record dari dosen dan pengajaran
memiliki nilai yang sama pada atribut umum, yaitu ID.
Pertimbangkan pertanyaan “Untuk semua dosen di universitas yang telah mengajar
beberapa mata kuliah, temukan nama mereka dan kode mata kuliah dari semua program
yang mereka ajarkan”, yang ditulis sebelumnya sebagai:
Query ini dapat ditulis lebih ringkas menggunakan operasi natural-join di SQL sebagai:
Kedua kueri di atas menghasilkan hasil yang sama. Seperti yang dilihat sebelumnya,
hasil dari operasi natural join adalah tabel. Secara konseptual, ungkapan "dosen natural join
pengajaran" pada klausa digantikan oleh hubungan yang diperoleh dengan menilai natural
join. Klausa where dan select kemudian dievaluasi pada relasi ini.
Sebagai contoh, misalkan ingin menjawab pertanyaan "Daftar nama dosen bersama
dengan judul mata kuliah yang mereka ajarkan." Permintaan dapat ditulis dalam SQL sebagai
berikut:
select nama, judul from dosen natural join pengajaran, mata_kuliah where
pengajaran.kode_MK = mata_kuliah.kode_MK;