Bahasa dalam Model Relational • Bahasa Query adalah bahasa yang digunakan untuk model relasional • Bahasa Query merupakan suatu bahasa yang menyediakan fasilitas bagi user untuk mengakses informasi dari basis data. • Pada umumnya level bahasa ini lebih tinggi dari bahasa pemrograman standar. • Bahasa query dapat dikategorikan menjadi 2 : 1. Prosedural 2. Non-Prosedural. 11/06/2014 1 Bahasa Prosedural dan Non Prosedural 1. Bahasa Prosedural : user menginstruksikan ke sistem agar membentuk serangkaian operasi dalam basis data untuk mengeluarkan hasil yang diinginkan. Yg termasuk bahasa query prosedural : 1. Aljabar Relasional 2. Bahasa Non-Prosedural: user mendeskripsikan informasi yang diinginkan tanpa memberikan prosedur detail untuk menghasilkan informasi. Yang termasuk bahasa non-prosedural : 1. Kalkulus relasional tupel 2. Kalkulus relasional domain 11/06/2014 2 Bahasa Prosedural 1. Aljabar Relasional adalah sebuah bahasa query prosedural yang terdiri dari sekumpulan operasi dimana masukkannya adalah satu atau dua relasi dan keluarannya adalah sebuah relasi baru sebagai hasil dari operasi tersebut. Operasi-operasi dasar dalam aljabar relasional adalah : 1.Select 2. Projection 3.Union 4. Set difference 5. Cartesian product, selain itu ada beberapa operasi tambahan Yaitu set intersection, natural join, division dan theta join. 11/06/2014 3 Operasi Dasar Aljabar Relasional 1. Select • Operasi select dapat didefiniskan sebagai ”Kumpulan semua tuple-tuple/record-record dalam suatu tabel yang memenuhi kondisi seleksi tertentu”. • Operasi select berfungsi untuk menyeleksi tuple-tuple yang memenuhi predikat yang diberikan dari sebuah tabel relasi. • Simbol sigma “σ” digunakan untuk menunjukkan operasi select. • Argumen diberikan dalam tanda kurung yang mengikuti σ dan berisi tabel relasi yang dimaksud. 11/06/2014 4 Contoh penggunaan operasi select Misalkan ada 3 tabel, yaitu tabel dosen, tabel matakuliah dan tabel mengajar seperti berikut: Tabel Dosen NIP Nama_dosen Jenis_kelamin Alamat Kota 95001 Bambang Pria Jl. Mawar Jakarta Selatan 95002 Asri Wanita Jl. Anggrek Jakarta Selatan 95003 Hesti Wanita Jl. Bungur Jakarta Timur 95004 Dimas Pria Jl. Kemuning Cikarang Tabel Matakuliah Tabel Mengajar Kd_mk MPK1 MKB3 MKB4 Nama_mk PKN BDT ASD Sks 2 3 3 MKB2 MKB5 SBD PTI 2 4 11/06/2014 NIP 95002 95002 95003 95003 95004 Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 Kelas A A A B B 5 Contoh penggunaan operasi select Contoh 1. Tampilkan daftar dosen yang berjenis kelamin pria dari tabel Dosen. Aljabar relasional : σJenis_kelamin=Pria(Dosen) Hasil: NIP 95001 95004 Nama_dosen Bambang Dimas Jenis_kelamin Pria Pria Alamat Jl. Mawar Jl. Kemuning Kota Jakarta Selatan Cikarang 2. Tampilkan daftar dosen yang kota asalnya Jakarta Selatan Aljabar relasional : σkota=Jakarta Selatan(Dosen) NIP Nama_dosen Jenis_kelamin Alamat Kota 95001 Bambang Pria Jl. Mawar Jakarta Selatan 95002 Asri Wanita Jl. Anggrek Jakarta Selatan 11/06/2014 6 Contoh penggunaan operasi select Contoh 1. Tampilkan daftar matakuliah yg sksnya lebih dari atau sama dengan 3 2. Aljabar relasional : σ(sks>=3)(Matakuliah) Hasil: Kd_mk MKB3 MKB4 MKB5 11/06/2014 Nama_mk BDT ASD PTI Sks 3 3 4 7 Operasi Dasar Aljabar Relasional 2. Project • Operasi project berfungsi untuk memilih nilai atribut-atribut tertentu saja dari sebuah tabel relasi. • Simbol phi “π” digunakan untuk menunjukkan operasi projection. • Predikat muncul sebagai subscript dari π dan hanya nama atribut yang diinginkan yang ditulis dalam predikat. • Argumen diberikan dalam tanda kurung yang mengikuti π dan berisi tabel relasi yang dimaksud. Contoh penggunaan operasi project 1. Tampilkan NIP dan Nama_dosen dari tabel Dosen Aljabar relasional : πNIP,Nama_dosen(Dosen) NIP 95001 95002 95003 95004 Nama_dosen Bambang Asri Hesti Dimas 2. Tampilkan NIP, Nama_dosen, dan kota dari tabel Dosen, dari dosendosen yang bertempat tinggal di kota Jakarta Selatan. Aljabar relasional : πNIP,Nama_dosen,Kota(σKota=Jakarta Selatan(Dosen) Hasil IP 95001 95002 Nama_dosen Bambang Asri Jenis_kelamin Pria Wanita Kota Jakarta Selatan Jakarta Selatan Operasi Dasar Aljabar Relasional 3. Union • Operasi union berfungsi untuk mendapatkan gabungan nilai atribut dari sebuah tabel relasi dengan nilai atribut dari tabel relasi lainnya. • Simbol “∪” digunakan untuk menunjukkan operasi union. • Operasi union bernilai benar bila terpenuhi 2 kondisi, yaitu : Derajat dari 2 tabel relasi yang dioperasikan harus sama dan domain dari atribut yang dioperasikan juga harus sama Operasi Dasar Aljabar Relasional Contoh penggunaan operasi union : • Tampilkan NIP( dari relasi Dosen) Union dari NIP (dari tabel Mengajar) Aljabar Relasional: πNIP (Dosen) ∪ NIP (Mengajar) Tabel dosen NIP Nama_dosen Jenis_kelamin Alamat Kota 95001 Bambang Pria Jl. Mawar Jakarta Selatan 95002 Asri Wanita Jl. Anggrek Jakarta Selatan 95003 Hesti Wanita Jl. Bungur Jakarta Timur 95004 Dimas Pria Jl. Kemuning Cikarang Tabel mengajar NIP 95002 95002 95003 95003 95004 Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 Hasil Kelas A A A B B NIP 95002 95003 95004 Bahasa dalam Model Relational 4. Set Difference • Operasi set difference berfungsi untuk mendapatkan nilai yang ada disebuah tabel relasi, tapi tidak ada dalam tabel relasi lainnya. • Simbol “-“ digunakan untuk menunjukkan perasi set difference. Contoh penggunaan operasi set difference Tampilkan NIP (dari tabel Dosen) Set-difference dari NIP (dari tabel Mengajar). Aljabar relasional: πNIP (Dosen) - NIP (Mengajar) Tabel Dosen NIP Nama_dosen Jenis_kelamin Alamat Kota 95001 Bambang Pria Jl. Mawar Jakarta Selatan 95002 Asri Wanita Jl. Anggrek Jakarta Selatan 95003 Hesti Wanita Jl. Bungur Jakarta Timur 95004 Dimas Pria Jl. Kemuning Cikarang Tabel Mengajar NIP 95002 95002 95003 95003 95004 Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 Hasil Kelas A A A B B NIP 95001 5. Cartesian Product 5. Cartesian Product • Operasi cartesian product berfungsi untuk mengkombinasikan informasi yang ada dalam 2 tabel relasi dan menghasilkan sebuah tabel relasi yang baru. • Simbol “x“ digunakan untuk menunjukkan operasi cartesian product. Contoh penggunaan operasi cartesian product : Tampilkan Kode_mk, Nama_mk, Sks (dari tabel Matakuliah), Kelas (dari tabel Mengajar) dimana kelas yang diajar adalah kelas A. Aljabar relasional: πKode_mk,Nama_mk,Sks,Kelas (σKelas=A ^ Mengajar.Kode_mk=Matakuliah.Kode_mk(Mengajar x Matakuliah)) atau σMengajar.Kode_mk=Matakuliah.Kode_mk Kelas=A ((πKode_mk,Nama_mk,Sks (Matakuliah)) x πKelas(Mengajar)) Contoh penggunaan operasi cartesian product Tabel Matakuliah Tabel Mengajar Kd_mk MPK1 MKB3 MKB4 Nama_mk PKN BDT ASD Sks 2 3 3 MKB2 MKB5 SBD PTI 2 4 NIP 95002 95002 95003 95003 95004 Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 hasil Kd_mk Nama_mk Sks Kelas MPK1 PKN 2 A MKB3 BDT 3 A MKB4 ASD 3 A Kelas A A A B B 6. Intersection 6. Intersection • Set intersection / Intersection (∩) termasuk ke dalam operator tambahan, karena operator ini dapat diderivikasi dari operator dasar seperti berikut: • A ∩ B = A - ( A – B ), atau A ∩ B = B - ( B – A ) • Operasi set intersection berfungsi untuk mendapatkan nilai yang ada dalam sebuah tabel relasi dan juga ada dalam tabel relasi lainnya. • Simbol “∩“ digunakan untuk menunjukkan operasi set intersection. Contoh penggunaan operasi set intersection Tampilkan NIP (dari tabel Dosen) Set Intersection dengan NIP (dari tabel Mengajar). Aljabar relasional: πNIP (Dosen) ∩ πNIP (Mengajar) Tabel Dosen NIP Nama_dosen Jenis_kelamin Alamat Kota 95001 Bambang Pria Jl. Mawar Jakarta Selatan 95002 Asri Wanita Jl. Anggrek Jakarta Selatan 95003 Hesti Wanita Jl. Bungur Jakarta Timur 95004 Dimas Pria Jl. Kemuning Cikarang Hasil NIP 95002 95003 95004 Tabel Mengajar NIP 95002 95002 95003 95003 95004 Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 Kelas A A A B B 7. Natural Join • Operasi natural join berfungsi untuk menggabungkan operasi selection dan cartesian product menjadi 1 operasi saja. • Simbol “⋈“ digunakan untuk menunjukkan operasi natural join. Operasi natural join hanya menghasilkan tupel yang mempunyai nilai yang sama pada 2 atribut yang bernama sama pada 2 tabel relasi yang berbeda. 7. Natural Join • Contoh penggunaan operasi natural join Tampilkan seluruh data yang ada pada tabel Matakuliah dan tabel Mengajar. Aljabar relasional : Matakuliah ⋈ Mengajar.Kode_mk=Matakuliah.Kode_mk Mengajar Tabel Matakuliah Tabel Mengajar NIP 95002 95002 95003 95003 95004 hasil Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 Kelas A A A B B Nama_mk BDT ASD PKN PKN ASD Sks 3 3 2 2 3 Kd_mk MPK1 MKB3 MKB4 Nama_mk PKN BDT ASD Sks 2 3 3 MKB2 MKB5 SBD PTI 2 4 NIP 95002 95002 95003 95003 95004 Kelas A A A B B 7. Theta Join • Operasi theta join berfungsi untuk mengkombinasikan tupel dari 2 tabel relasi dimana kondisi dari kombinasi tersebut tidak hanya nilai dari 2 atribut bernama sama, tetapi kondisi yang diinginkan juga bisa menggunakan operator relasional (≤, <, =, >, ≥). • Operasi theta join merupakan ekstensi dari natural join. 7. Theta Join Contoh penggunaan operasi theta join: Tampilkan seluruh data yang ada pada tabel Matakuliah dan tabel Mengajar. Aljabar relasional : Matakuliah ⋈ Mengajar.Kode_mk=Matakuliah.Kode_mk Mengajar Tabel Matakuliah Tabel Mengajar NIP 95002 95002 95003 95003 95004 Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 Kelas A A A B B Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 Kd_mk MPK1 MKB3 MKB4 Nama_mk PKN BDT ASD Sks 2 3 3 MKB2 MKB5 SBD PTI 2 4 Nama_mk BDT ASD PKN PKN ASD Sks 3 3 2 2 3 NIP 95002 95002 95003 95003 95004 Kd_mk MKB3 MKB4 MPK1 MPK1 MKB4 Kelas A A A B B Bahasa Non-Prosedural Bahasa query non-prosedural : user menentukan query berdasarkan APA yang diingingkan (Relational Algebra : user menentukan query berdasarkan Bagaimana melakukannya) Kalkulus relasional dibagi menjadi dua, yaitu: 1. Kalkulus Relasional Tupel ( Tuple Relational Calculus) 2. Kalkulus Relasional Domain (Domain Relational Calculus) 1. Kalkulus Relasional Tupel • Bahasa ini mendeskripsikan informasi yang diinginkan tanpa memberi prosedur/cara secara detil untuk mendapatkan informasi tersebut. • Konsep dasar kalkulus relasional tupel adalah konsep variable tupel. • Variable ini merepresentasikan tupel – tupel pada relasi dan digunakan untuk untuk mengekstrak data dari relasi. Komponen - komponen lain rumus kalkulus tupel adalah kualifikasi data dengan membatasi nilai – nilai dari atribut – atribut yang dispesifikasikan. 1. Kalkulus Relasional Tupel • Kalkulus relasional tupel merupakan basis untuk bahasa query QUEL. Sintaks { t | P(t) } artinya, semua tuple t sedemikian sehingga predikat P adalah benar untuk t. T : tuple variables P(t) : formula Lanjut.. • Dalam kalkulus relasional ada 2 notasi yang penting 1. “terdapat beberapa (there exists)” yang ditulis : ∃ t ∈ r ( Q(t) ), artinya, terdapat beberapa tuple t anggota relasi r sedemikian sehingga bahwa predikat Q(t) adalah benar. 2. “untuk seluruh (for all)” yang ditulis : ∀ t ∈ r ( Q(t) ), artinya, untuk seluruh tupel t anggota relasi r sedemikian sehingga bahwa predikat Q(t) adalah benar. Lanjut... Ciri-ciri relasi kalkulus : – First order calculus menggunakan simbol-simbol predikat dan simbol-simbol fungsi. Untuk kaitannya dengan basis data : simbol fungsi tidak diperlukan dan predikat diinterprestasikan sebagai relasi. – Formula pada first order calculus dapat dibedakan ke dalam dua kelas : 1. Open formula (free variable) Didefinisikan sebagai himpunan tuples elemen dari kondisi secara keseluruhan, yang dapat menghasilkan formula “TRUE”. Lanjut... 2. Closed Formula atau Sentences yang memiliki variable terbatas. • Karena kalkulus dipergunakan sebagai bahasa query dan basis data bertujuan untuk instant maupun relasi lainnya, maka closed formulas tidak diperhatikan. • Dalam kalkulus relasional tupel digunakan variabel dari tupelnya. • Variabel dari suatu tupel adalah daerah yang terdefinisi sebagai nama dari suatu relasi. Kalkulus Relasional Berikut ini contoh kalkulus relasional tuple yang diterapkan pada SQL. SELECT Dosen.nid,dosen.nama_d,Dosen.gajipokok FROM Dosen WHERE Dosen.jkelamin=‘Pria’ AND Dosen.gajipokok>1000000 Pada query di atas menyatakan dua hal : - Mengambil atau mengekstra tupel-tupel pada relasi Dosen yang mempunyai atribut jkelamin ‘Pria’ dan memiliki atribut gajipokok adalah lebih besar dari 1000000. Kalkulus Relasional • Menampilkan atribut tertentu yaitu nid, nama_d, gajipokok. Dengan demikian Dosen.nid,Dosen.gajipokok adalah variabel-variabel tupel. • Bentuk umum dari kalkulus relasional tuple adalah: TupleVariabel1 operator[TupleVariabel2 | constant] SQL dikembangkan berbasis kalkulus relasional tuple. Kalkulus Relasional Domain 2. Kalkulus Relasional Domain • Kalkulus relasional domain juga adalah bahasa query yang non prosedural dan karenanya berhubungan dekat dengan kalkulus relasional tupel. • Berbeda dengan kalkulus relasional tupel, bahasa ini menggunakan variabel domain yang mengambil nilai dari domain atribut, bukan dari nilai seluruh tupel. • Kalkulus relasional domain merupakan basis untuk bahasa query QBE. Kalkulus Relasional Domain 1. Sebuah ekspresi dalam kalkulus relasional domain adalah berbentuk : 2. { < x1, x2, . . . , xn > | P(x1, x2, . . . , xn) } dimana x1, x2, . . . , xn merepresentasikan variabelvariabel / konstanta domain. 3. P merepresentasikan sebuah formula/rumus2 yang terdiri dari atom-atom. 4. Sebuah atom dalam kalkulus relasional domain dapat berupa salah satu dari bentuk berikut ini : Kalkulus Relasional Domain - x ϴ y, dimana x dan y adalah variabel domain dan ϴ adalah operator relasional (≤, <, =, ≠, >, ≥). Kita membutuhkan atribut x dan y mempunyai domain yang bisa diperbandingkan dengan ϴ. - x Θ c, dimana x dalah variable domain. Θ adalah operator pembandingan (<, <=,=, >=, ≠) dan c adalah konstanta. Kalkulus Relasional Domain • Contoh : tampilkan nip,nama_d,gajipokok daridosen, dimana jenis kelaminnya adalah Pria dan gaji pokoknya lebih besar 1200000. { nip | ∃ nam_d | ∃ gajipokok (Dosen(nid,nama_d,gajipokok) AND jkelamin=’Pria’ AND gajipokok > 1200000) } Kalkulus Relasional Domain • Simbol yang muncul pada formula terdiri dari : Konstan (elemen-elemen domain D) Variabel (elemen-elemen dari himpunan berhingga V yang dihubungkan dengan domain D), Nama relasi (tabel) dan atribut (berdasarkan skema basis data), Operator perbandingan (=, ≠, >, >=, <, <=), Penghubung logika (Λ ( dan / konjugsi) (V atau/disjungsi), ⌐ (not/negasi), ada/beberapa( ), dan semua ( )). Structured Query Language (SQL) • Structured Query Language (SQL) merupakan bahasa yang banyak digunakan dalam berbagai produk database. • Penggunaan SQL pada beberapa bahasa pemrograman secara umum relatif sama. • Pertama kali dikembangkan sebagai bahasa di produk database DB2 yang sampai saat ini merupakan produk database andalan IBM. SQL sering di lafalkan dengan “sequel”. SQL • Saat ini organisasi standar America (ANSI) menetapkan standar bahasa SQL yaitu ANSI-92 standard. • Masing-masing vendor database memiliki dialeknya sendiri sebagaian besar spesifikasinya mengacu pada • standar ANSI tersebut dengan berbagai ekstensi tambahan. SQL Server menggunakan bahasa Transact-SQL dalam produknya, sedangkan Oracle menggunakan PL/SQL. SQL • Bagi seorang programmer, menguasai SQL adalah sebuah kewajiban, karena program jaman sekarang pasti menggunakan database untuk menyimpan datanya. SQL • SQL menyediakan sekumpulan statemen untuk melakukan proses penyimpanan, modifikasi, dan pengambilan dat di dalam database. • Sedangkan PL/SQL (kependekan dari: Procedural Language extensions to SQL) merupakan teknologi tambahan yang hanya terdapat di dalam Oracle dan digunakan untuk meningkatkan kapabilitas SQL agar dapat diperlakukan sebagaimana layaknya bahasa prosedural. SQL • Dengan PL/SQL, diperbolehkan membuat prosedur, fungsi, trigger, dan konstruksi standar prosedural lainnya sehingga pengolahan data dapat dilakukan secara dinamis. SQL • Sejarah SQL Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama EF Codd yang membahas tentang ide pembuatan basis data relasional pada bulan Juni 1970. SQL • Bahasa tersebut kemudian diberi nama SEQUEL (Structured English Query Language). • Setelah terbitnya artikel tersebut, IBM mengadakan proyek pembuatan basis data relasional berbasis bahasa SEQUEL • Akan tetapi, karena permasalahan hukum mengenai penamaan SEQUEL, IBM pun mengubahnya menjadi SQL. Implementasi basis data relasional dikenal dengan System/R. SQL • Di akhir tahun 1970-an, muncul perusahaan bernama Oracle yang membuat server basis data populer yang bernama sama dengan nama perusahaannya. • Naiknya kepopuleran Oracle, maka SQL juga ikut populer sehingga saat ini menjadi standar de facto bahasa dalam manajemen basis data. SQL • Standarisasi Standarisasi SQL dimulai pada tahun 1986, ditandai dengan dikeluarkannya standar SQL oleh ANSI. • Standar ini sering disebut dengan SQL86. • Standar tersebut kemudian diperbaiki pada tahun 1989 kemudian diperbaiki lagi pada tahun 1992. Pemakaian Dasar Secara umum, SQL terdiri dari dua bahasa : 1. Data Definition Language (DDL) 2. Data Manipulation Language (DML). 3. Data Control Language(DCL) 1. Data Definition Language (DDL) 1. CREATE (untuk membentuk basis data, table atau index) 2. DROP (untuk mengubah struktur table) 3. ALTER (untuk menghapus basis data, table atau index) CREATE CREATE digunakan untuk membuat basis data maupun objek-objek basis data. SQL yang umum digunakan adalah: CREATE DATABASE <nama_basis_data> CREATE DATABASE digunakan membuat sebuah basis data baru. CREATE CREATE TABLE <nama_tabel> CREATE TABLE digunakan untuk membuat tabel baru pada basis data yang sedang aktif. Secara umum, perintah ini memiliki bentuk : CREATE TABLE [nama_tabel] ( nama_field1 tipe_data [constraints][, nama_field2 tipe_data, ...] ) CREATE atau CREATE TABLE [nama_tabel] ( nama_field1 tipe_data [, nama_field2 tipe_data, ...] [CONSTRAINT nama_field constraints] ) CREATE • nama_field adalah nama kolom (field) yang akan dibuat. • Beberapa sistem manajemen basis data mengizinkan penggunaan spasi dan karakter nonhuruf pada nama kolom. • Tipe data tergantung implementasi sistem manajemen basis data. • Misalnya, pada MySQL, tipe data dapat berupa VARCHAR, TEXT, BLOB, ENUM, dan sebagainya. CREATE • Constarints adalah batasan-batasan yang diberikan untuk tiap kolom. • Tergantung implementasi sistem manajemen basis data, misalnya NOT NULL, UNIQUE, dan sebagainya. • Ini dapat digunakan untuk mendefinisikan kunci primer (primary key) dan kunci asing (foreign key). • Satu tabel boleh tidak memiliki kunci primer sama sekali, namun sangat disarankan mendefinisikan paling tidak satu kolom sebagai kunci primer. CREATE • Contoh: CREATE TABLE user ( username VARCHAR(30) CONSTRAINT PRIMARY KEY, passwd VARCHAR(20) NOT NULL, tanggal_lahir DATETIME ); akan membuat tabel user seperti berikut: username Passwd tanggal_lahir ALTER ALTER TABEL <NAMATABEL> MODIFY FILED TYPE PANJANGBARU; CONTOH Sintaks untuk menambahkan kolom ALTER TABLE table_name ADD column_name datatype; Contoh: Untuk menambahkan kolom "pengalaman" ke meja karyawan, query akan seperti ALTER TABLE employee ADD experience number(3); Sintaks untuk menjatuhkan kolom ALTER TABLE table_name DROP column_name; Contoh: Untuk menjatuhkan kolom "lokasi" dari tabel karyawan, query akan seperti ALTER TABLE employee DROP location; Sintaks untuk memodifikasi kolom ALTER TABLE table_name MODIFY column_name datatype; Contoh: Untuk mengubah gaji kolom dalam tabel karyawan, query akan seperti ALTER TABLE employee MODIFY salary number(15,2); DROP 1. Drop table DROP TABLE <NAMA_TABLE>; 2. Drop database DROP DATABASE <NAMA_DATABASE>; • DROP TABLE mhs; • DROP DATABASE AKADEMIK; 2. Data Manipulation Language DML digunakan untuk memanipulasi data yang ada dalam suatu tabel. Perintah yang umum dilakukan adalah: • SELECT untuk menampilkan data. • INSERT untuk menambahkan data baru. • UPDATE untuk mengubah data yang sudah ada. • DELETE untuk menghapus data. SELECT SELECT adalah perintah yang paling sering digunakan pada SQL, sehingga kadang-kadang istilah query dirujukkan pada perintah SELECT. SELECT digunakan untuk menampilkan data dari satu atau lebih tabel, biasanya dalam sebuah basis data yang sama. Secara umum, perintah SELECT memiliki bentuk lengkap: ( QUERY BUDIN ) Cilegon. SELECT SELECT [nama_tabel|alias.]nama_field1 [AS alias1] [, nama_field2, ...] FROM nama_tabel1 [AS alias1] [INNER|LEFT|RIGHT JOIN tabel2 ON kondisi_penghubung] [, nama_tabel3 [AS alias3], ...] [WHERE kondisi] [ORDER BY nama_field1 [ASC|DESC][, nama_field2 [ASC|DESC], ...]] [GROUP BY nama_field1[, nama_field2, ...]] [HAVING kondisi_aggregat] SELECT Keterangan : • Kondisi adalah syarat yang harus dipenuhi suatu data agar ditampilkan. • Kondisi_aggregat adalah syarat khusus untuk fungsi aggregat. • Kondisi dapat dihubungkan dengan operator logika, misalnya AND, OR, dan sebagainya. Tabel user username Password tgllahir trasaksi total transaksi Aris 6487AD5EF 09-09-1987 6 10.000 Budi 97AD4erD 01-01-1994 0 0 Charlie 548794654 06-12-1965 24 312.150 Daniel FLKH947HF 24-04-1980 3 0 Erik 94RER54 17-08-1945 34 50.000 SELECT Contoh 1: Tampilkan seluruh data. SELECT * FROM user Contoh 2: Tampilkan pengguna yang tidak pernah bertransaksi. SELECT * FROM user WHERE total_transaksi = 0 Contoh 3: Tampilkan username pengguna yang bertransaksi kurang dari 10 dan nilainya lebih dari 1.000. SELECT username FROM user WHERE jml_transakai < 10 AND total_transaksi > 1000 SELECT Contoh 4: Tampilkan total nominal transaksi yang sudah terjadi. SELECT SUM(total_transaksi) AS total_nominal_transaksi FROM user Contoh 5: Tampilkan seluruh data diurutkan berdasarkan jumlah transaksi terbesar ke terkecil. SELECT * FROM user ORDER BY jml_transaksi DESC UPDATE Untuk mengubah data Sintaks: UPDATE [NAMA_TABLE] SET [NAMA_KOLOM]=[NILAI] WHERE [KONDISI] Contoh: UPDATE user set password="123456" where username=" Budi " DELETE Delete digunakan untuk menghapus data sintaks: DELETE FROM [NAMA_TABLE] [KONDISI] CONTOH : Hapus record atau data yg total transaksi=0 DELETE FROM USER WHERE total_transaksi_=0; Fungsi aggregate Beberapa SMBD memiliki fungsi aggregat, yaitu fungsi-fungsi khusus yang melibatkan sekelompok data (aggregat). Secara umum fungsi aggregat adalah: • SUM untuk menghitung total nominal data • COUNT untuk menghitung jumlah kemunculan data • AVG untuk menghitung rata-rata sekelompok data • MAX dan MIN untuk mendapatkan nilai maksimum/minimum dari sekelompok data. Fungsi aggregat digunakan pada bagian SELECT. Syarat untuk fungsi aggregat diletakkan pada bagian HAVING, bukan WHERE. Contoh: Tampilkan username pengguna yang memiliki jumlah transaksi terbesar JENIS JENIS JOIN SQL : 1. INNER JOIN : hanya akan menampilkan baris untuk data yang memiliki nilai yang sama pada field kunci dengan tabel yang berelasi 2. LEFT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kiri. 3. RIGHT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kanan 4. FULL JOIN : merupakan gabungan dari LEFT JOIN dan RIGHT JOIN . 3. Data Control Language(DCL) DCL merupakan perintah SQL yang berhubungan dengan pengaturan hak akses user MySQL, baik terhadap server, database, tabel maupun field. Perintah SQL yang termasuk dalam DCL antara lain : GRANT GRANT : Perintah ini digunakan untuk memberikan hak / izin akses oleh administrator (pemilik utama) server kepada user (pengguna biasa). Hak akses tersebut berupa hak membuat (CREATE), mengambil (SELECT), menghapsu (DELETE), mengubah (UPDATE) dan hak khusus berkenaan dengan sistem databasenya. Sintaks : GRANT privileges ON tbname TO user CONTOH : grant select, update, insert, delete on perpustakaan.buku to 'ali'@'localhost'; REVOKE REVOKE : perintah ini memiliki kegunaan terbalik dengan GRAND, yaitu untuk menghilangkan atau mencabut hak akses yang telah diberikan kepada user oleh administrator. Sintak : REVOKE privileges ON tbname FROM user CONTOH : revoke select, update, insert, delete on perpustakaan.buku from 'ali'@'localhost';