Perintah – Perintah SQL Berikut ini adalah perintah-perintah SQL atau yang lebih dikenal dengan sebutan query. Adapun project yang dijadikan sebagai acuan adalah proyek database sederhana penilaian mahasiswa. Struktur dan Skema Tabel-tabel Berikut adalah struktur table dan skema yang dibuat. Tabel tbl_mahasiswa Field nim Nama Alamat Kd_jurusan Tgl__masuk
Tipe Data Varchar(6) Varchar(20) Varchar(30) Varchar(4) DateTime
Null
PK
N N Y N N
Y N N N N
Reference Tabel
Kd_jurusan
Reference Field
Tbl_jurusan
Tabel tbl_dosen Field
Tipe Data
Null
PK
Kd_dosen
Varchar(6)
N
Y
Nama_dosen
Varchar(20)
N
N
Alamat Telepon
Varchar(30) Varchar(12)
N Y
N N
Reference Tabel
Reference Field
Reference Tabel
Reference Field
Tabel tbl_jurusan Field Kd_Jurusan Nama_Jurusan Ketua_Jurusan
Tipe Data Varchar(4) Varchar(30) Varchar(4)
Null
PK
N N N
Y N Tbl_Dosen
Kd_Dosen
Tabel tbl_matakuliah Field
Tipe Data
Null
Kdmk
Varchar(6)
N
Nama_mk Semester Sks
Varchar(25) tinyint Tinyint
N N N
PK
Reference Tabel
Y
Reference Field 0
Tabel tbl_krs Field
Tipe Data
Null
Kd_krs
Varchar(5)
N
Nim Semester
Varchar(6) Tinyint
N N
PK
Reference Tabel
Reference Field
Y Tbl_Mahasiswa
1
Nim
Dsn_wali
Varchar(6)
N
Tbl_Dosen
Kd_Dosen
Tabel tbl_krsdetail Field Kd_Krs Kdmk Kd_dosen Nilai_Angka Nilai_Huruf
Tipe Data Varchar(5) Varchar(6) Varchar(6) Float Varchar(2)
Null
PK
N N N Y Y
Reference Tabel
Reference Field
Y Tbl_matakuliah Tbl_Dosen
Kdmk Kd_Dosen
Skema tabel adalah seperti pada gambar dibawah ini
Pembuatan Tabel-tabel Tabel-tabel dibuat dengan engine InnoDB karena secara default MySQL akan menggunakan engine MyISAM yang tidak dapat menggunakan fitur Constraint Foreign Key. CREATE DATABASE kuliah; USE kuliah; 2
CREATE TABLE tbl_mahasiswa ( nim varchar(6) NOT NULL, nama varchar(20) NOT NULL, alamat varchar(30) default NULL, telepon varchar(12) default NULL, kd_jurusan varchar(4) default NULL, tgl_masuk datetime default NULL, PRIMARY KEY (nim), KEY FK_tbl_mahasiswa (kd_jurusan), CONSTRAINT FK_tbl_mahasiswa FOREIGN KEY (kd_jurusan) REFERENCES tbl_jurusan(kd_jurusan) ) ENGINE=InnoDB; CREATE TABLE tbl_dosen ( kd_dosen varchar(4) NOT NULL, nama_dosen varchar(20) NOT NULL, alamat varchar(30) default NULL, telepon varchar(12) default NULL, PRIMARY KEY (kd_dosen) ) ENGINE=InnoDB; CREATE TABLE tbl_jurusan ( kd_jurusan varchar(4) NOT NULL, nama_jurusan varchar(20) default NULL, ketua_jurusan varchar(4) default NULL, PRIMARY KEY (kd_jurusan) ) ENGINE=InnoDB; CREATE TABLE tbl_krs ( kd_krs varchar(5) NOT NULL, nim varchar(6) NOT NULL, semester tinyint(4) NOT NULL, dsn_wali varchar(4) NOT NULL, PRIMARY KEY (kd_krs), KEY FK_tbl_dsnwali (dsn_wali), KEY FK_tbl_krsmhs (nim), CONSTRAINT FK_tbl_krsmhs FOREIGN KEY (nim) REFERENCES tbl_mahasiswa(nim), CONSTRAINT FK_tbl_dsnwali FOREIGN KEY (dsn_wali) REFERENCES tbl_dosen (kd_dosen) ) ENGINE=InnoDB;
CREATE TABLE tbl_krsdetail ( kd_krs varchar(5) NOT NULL, kdmk varchar(6) default NULL, kd_dosen varchar(4) default NULL, nilai_angka float default '0', nilai_huruf varchar(2) default 'E',
3
KEY FK_tbl_krsdetail(kd_krs), KEY FK_tbl_krsmk(kdmk), KEY FK_tbl_krsdosen(kd_dosen), CONSTRAINT FK_tbl_krsdosen FOREIGN KEY (kd_dosen) REFERENCES tbl_dosen(kd_dosen), CONSTRAINT FK_tbl_krsdetail FOREIGN KEY (kd_krs) REFERENCES tbl_krs(kd_krs), CONSTRAINT FK_tbl_krsmk FOREIGN KEY (kdmk) REFERENCES tbl_matakuliah (kdmk) ) ENGINE=InnoDB;
Entry Data dengan perintah INSERT Sintaks : INSERT INTO nama_tabel(field1,field2,field3) values(value1,value2,value3),(value4,value5,value6),(value7,value 8,value9);
Jika diuraikan perintah INSERT diatas adalah seperti ini INSERT INTO nama_tabel(field1,field2,field3) values(value1,value2,value3); INSERT INTO nama_tabel(field1,field2,field3) values(value4,value5,value6); INSERT INTO nama_tabel(field1,field2,field3) values(value7,value8,value9);
Data yang pertama sekali diisi yaitu data pada tabel master data. Entry tabel jurusan. (2 Rekord) INSERT INTO tbl_jurusan(kd_jurusan,nama_jurusan,ketua_jurusan) VALUES ('J001', 'Ilmu Komputer', 'DS05'),('J002', 'Sistem Informasi', 'DS09');
Entry tabel Matakuliah (12 Rekord) INSERT INTO tbl_matakuliah (kdmk,nama_mk,semester,sks) VALUES ('KOMP00', 'Dasar-dasar Pemrograman', 1, 2), ('KOMP02', 'Teknik Kompilasi', 1, 2), ('KOMP03', 'Pemrograman Pascal', 1, 2), ('KOMP04', 'Praktek Pemrograman Pasca', 1, 1), ('KOMP05', 'Praktek Teknik Kompilasi', 1, 1), ('KOMP06', 'Bahasa Inggris 1', 1, 2),
4
('KOMP07', ('KOMP08', ('KOMP09', ('KOMP10', ('KOMP11', ('KOMP12',
'Matematika Dasar ', 1, 2), 'Bahasa Indonesia ', 1, 2), 'Agama', 1, 2), 'Analisa Numerik', 3, 2), 'Analisa Algoritma', 3, 2), 'Perancangan System', 3, 2);
Entry Tabel Mahasiswa (5 Rekord) INSERT INTO tbl_mahasiswa(nim,nama,alamat,telepon,kd_jurusan, tgl_masuk) VALUES ('070201', 'Abdul G', 'Jl. Melati no 45', '061-8445212', 'J001', '2007-08-01'), ('070202', 'Sugimin', 'Jl. Gatot Subroto no 44', '061-5651211', 'J002', '2007-08-01'), ('080201', 'Abu Bakar', 'Jl. Kapt Muslim no 45', '061-8457881', 'J001', '2008-08-01'), ('080202', 'Dessy N', 'Jl. Imam bonjol no 125', '061-4511221', 'J002', '2008-08-01'), ('080203', 'Charles S', 'Jl. Sisingamangaraja no 12', '0617861245', 'J001', '2008-08-01');
Entry Pada Tabel Dosen (12 Record) INSERT INTO tbl_dosen(kd_dosen,nama_dosen,alamat,telepon) VALUES ('DS01', 'Asrul Sani', 'Jl.Matahari Raya no 10', '061-8245126'), ('DS02', 'Benny G', 'Jl.Sutomo no 10 Medan', '061-452153'), ('DS03', 'Christy N', 'Jl.Merdeka Barat No 45', '061-584545'), ('DS04', 'Syamsul B', 'Jl.Irian Barat No 67', '061-451285'), ('DS05', 'Tanoto S', 'Jl.Palang Merah N0 67', '061-458412'), ('DS06', 'Syamsudin N', 'Jl. Tridarma No 10', '061-849958'), ('DS07', 'Mangihut Sihite', 'Jl. Jamin Ginting no 350', '061823451'), ('DS08', 'James Gurning', 'Jl. Krakatu No 250', '061-685799'), ('DS09', 'Usman G', 'Jl. Kemuning No 115', '061-844215'), ('DS10', 'Sahala S', 'Jl. Sumarsono Kapt No 55', '061-845456'), ('DS11', 'Susi S', 'Jl. Gaperta No 457', '061-844248'), ('DS12', 'Ramlan S', 'Jl. Monginsidi No 120', '061-824526'), ('DS13', 'Dedi D', 'Jl. Iskandar Muda No 215', '061-857126');
Entry pada Tabel KRS (5 Rekord) INSERT INTO tbl_krs(kd_krs,nim,semester,dsn_wali) VALUES ('KRS01', '080201', 1, 'DS01'), ('KRS02', '080203', 1, 'DS01'), ('KRS03', '080202', 1, 'DS05'), ('KRS04', '070201', 1, 'DS06'), ('KRS05', '080201', 1, 'DS06');
5
Entry pada Tabel KRS Detail (38 Rekord) INSERT INTO tbl_krsdetail(kd_krs,kdmk,kd_dosen,nilai_angka, nilai_huruf) VALUES ('KRS01', 'KOMP00', 'DS01', 95, 'A'), ('KRS01', 'KOMP02', 'DS02', 84.6, 'B+'), ('KRS01', 'KOMP03', 'DS03', 85.5, 'B+'), ('KRS01', 'KOMP04', 'DS03', 95, 'A'), ('KRS01', 'KOMP05', 'DS02', 95, 'A'), ('KRS01', 'KOMP10', 'DS10', 75, 'B'), ('KRS01', 'KOMP11', 'DS09', 70, 'C'), ('KRS01', 'KOMP12', 'DS08', 75, 'C+'), ('KRS02', 'KOMP00', 'DS01', 90, 'B+'), ('KRS02', 'KOMP02', 'DS02', 85, 'B+'), ('KRS02', 'KOMP03', 'DS03', 85, 'B+'), ('KRS02', 'KOMP04', 'DS03', 95, 'A'), ('KRS02', 'KOMP05', 'DS02', 80, 'B'), ('KRS02', 'KOMP10', 'DS10', 50, 'D'), ('KRS02', 'KOMP11', 'DS09', 50, 'D'), ('KRS02', 'KOMP12', 'DS08', 60, 'C'), ('KRS04', 'KOMP00', 'DS01', 90, 'B+'), ('KRS04', 'KOMP02', 'DS02', 90, 'B+'), ('KRS04', 'KOMP03', 'DS03', 84, 'B+'), ('KRS04', 'KOMP04', 'DS03', 80, 'B'), ('KRS04', 'KOMP05', 'DS02', 75, 'B'), ('KRS04', 'KOMP10', 'DS10', 75, 'B'), ('KRS04', 'KOMP11', 'DS09', 78, 'B'), ('KRS04', 'KOMP12', 'DS08', 80, 'B'), ('KRS05', 'KOMP00', 'DS01', 90, 'B+'), ('KRS05', 'KOMP02', 'DS02', 84, 'B+'), ('KRS05', 'KOMP03', 'DS03', 86, 'B+'), ('KRS05', 'KOMP04', 'DS03', 95, 'A'), ('KRS05', 'KOMP05', 'DS02', 95, 'A'), ('KRS05', 'KOMP10', 'DS10', 78, 'B'), ('KRS05', 'KOMP11', 'DS09', 65, 'C+'), ('KRS05', 'KOMP12', 'DS08', 55, 'C'), ('KRS05', 'KOMP06', 'DS06', 98, 'A'), ('KRS05', 'KOMP07', 'DS07', 94, 'A'), ('KRS04', 'KOMP09', 'DS09', 84, 'B+'), ('KRS03', 'KOMP06', 'DS06', 78.5, 'B'), ('KRS03', 'KOMP07', 'DS07', 90.5, 'A'), ('KRS03', 'KOMP08', 'DS08', 85.4, 'E');
Setelah semua data telah dimasukkan, sekarang bagaimana menampilkan data yang sudah ada dengan perintah SELECT. SELECT Sintaks
SELECT
field1,field2,field3 FROM nama_tabel;
Contoh : Menampilkan nama,alamat,telepon dari tabel mahasiswa 6
mysql> select nama,alamat,telepon from tbl_mahasiswa; +-----------+----------------------------+-------------+ | nama | alamat | telepon | +-----------+----------------------------+-------------+ | Abdul G | Jl. Melati no 45 | 061-8445212 | | Sugimin | Jl. Gatot Subroto no 44 | 061-5651211 | | Abu Bakar | Jl. Kapt Muslim no 45 | 061-8457881 | | Dessy N | Jl. Imam bonjol no 125 | 061-4511221 | | Charles S | Jl. Sisingamangaraja no 12 | 061-7861245 | +-----------+----------------------------+-------------+ 5 rows in set (0.00 sec)
SELECT LIMIT Select Limit digunakan untuk menentukan record yang ditampilkan mulai dari record yang keberapa hingga record yang keberapa. Sintaks : SELECT jumlah_rekord field1,field2,field3 FROM nama_tabel LIMIT record_awal,record_akhir; Contoh : Menampilkan record awal (0) hingga record ke 3 mysql> select nama,alamat,telepon from tbl_mahasiswa limit 0,3; +-----------+-------------------------+-------------+ | nama | alamat | telepon | +-----------+-------------------------+-------------+ | Abdul G | Jl. Melati no 45 | 061-8445212 | | Sugimin | Jl. Gatot Subroto no 44 | 061-5651211 | | Abu Bakar | Jl. Kapt Muslim no 45 | 061-8457881 | +-----------+-------------------------+-------------+ 3 rows in set (0.00 sec)
SELECT … AS Select As digunakan untuk mengganti nama tabel pada hasil query, nama tabel ini tidak mempengaruhi nama tabel aslinya. Sintaks : Select nama_field as nama_fieldbaru FROM nama_tabel;
7
Contoh : Mengganti tampilan field nama dengan nama_mahasiswa pada query sebelumnya. mysql> select nama as nama_mahasiswa,alamat,telepon from tbl_mahasiswa limit 0,3; +----------------+-------------------------+-------------+ | nama_mahasiswa | alamat | telepon | +----------------+-------------------------+-------------+ | Abdul G | Jl. Melati no 45 | 061-8445212 | | Sugimin | Jl. Gatot Subroto no 44 | 061-5651211 | | Abu Bakar | Jl. Kapt Muslim no 45 | 061-8457881 | +----------------+-------------------------+-------------+ 3 rows in set (0.00 sec)
WHERE Where digunakan untuk memilih record mana yang ditampilkan dengan criteria tertentu. Sintaks : SELECT field1,field2,field3 FROM nama_tabel WHERE namafield = kriteria;
Contoh : Menampilkan nim,nama,alamat,telepon dari tabel mahasiswa yang miliki nim 070201. mysql> select nim,nama,alamat,telepon from tbl_mahasiswa where nim='070201'; +--------+---------+------------------+-------------+ | nim | nama | alamat | telepon | +--------+---------+------------------+-------------+ | 070201 | Abdul G | Jl. Melati no 45 | 061-8445212 | +--------+---------+------------------+-------------+ 1 row in set (0.00 sec)
WHERE .. LIKE Kriteria pada WHERE dapat diseleksi dengan kata kunci LIKE. Sintaks : SELECT field1,field2,field3 FROM nama_tabel WHERE namafield LIKE katakunci; Pada MySQL dikenal tanda % yang artinya mewakili semua karakter. Conth : Menampilkan nama dosen yang diawali dengan huruf S. mysql> select kd_dosen,nama_dosen,alamat from tbl_dosen where nama_dosen like 'S%'; +----------+-------------+--------------------------+
8
| kd_dosen | nama_dosen | alamat | +----------+-------------+--------------------------+ | DS04 | Syamsul B | Jl.Irian Barat No 67 | | DS06 | Syamsudin N | Jl. Tridarma No 10 | | DS10 | Sahala S | Jl. Sumarsono Kapt No 55 | | DS11 | Susi S | Jl. Gaperta No 457 | +----------+-------------+--------------------------+ 4 rows in set (0.00 sec)
ORDER BY Order by digunakan untuk mengurutkan hasil query berdasarkan field yang dipilih. ASC = diurutkan mulai dari nilai paling kecil; DESC = diurutkan mulai dari nilai tertinggi. Syntaks : SELECT field1,field2,field3 FROM nama_tabel order by nama_field DESC/ASC. Jika DESC/ASC tidak disebutkan maka secara default system akan menggunakan ASC. Contoh : Menampilkan nama dosen diurutkan berdasarkan nama. mysql> select kd_dosen,nama_dosen from tbl_dosen order by nama_dosen limit 0,5; +----------+---------------+ | kd_dosen | nama_dosen | +----------+---------------+ | DS01 | Asrul Sani | | DS02 | Benny G | | DS03 | Christy N | | DS13 | Dedi D | | DS08 | James Gurning | +----------+---------------+ 5 rows in set (0.00 sec)
IN Query IN digunakan untuk memilih record yang memiliki nilai yang disebutkan dalam criteria IN. Syntaks : SELECT nama_field FROM nama_table WHERE nama_field IN (Kriteria1,Kriteria2,Kriteria3) Contoh : Pilih mahasiswa yang memiliki nim 070201, 080201, 080202 dengan IN. mysql> select nim,nama as nama_mahasiswa,telepon from tbl_mahasiswa where nim IN ('070201','080201','080202'); +--------+----------------+-------------+ | nim | nama_mahasiswa | telepon |
9
+--------+----------------+-------------+ | 070201 | Abdul G | 061-8445212 | | 080201 | Abu Bakar | 061-8457881 | | 080202 | Dessy N | 061-4511221 | +--------+----------------+-------------+ 3 rows in set (0.00 sec)
COUNT Count digunakan untuk menghitung record, count juga dapat digabungkan dengan seleksi criteria WHERE. Sintaks : SELECT COUNT(nama_field) FROM nama_tabel; Contoh : Menampilkan Jumlah Seluruh Matakuliah pada semester 1; mysql> select count(*) from tbl_matakuliah +----------+ | count(*) | +----------+ | 9 | +----------+ 1 row in set (0.00 sec)
where semester='1';
SUM Sum digunakan untuk menjumlahkan record-record yang dipilih, sum hanya dapat dilakukan pada field yang bernilai angka. Sintaks : SELECT Sum(nama_field) FROM nama_tabel; Contoh : Menghitung total sks yang ada pada matakuliah semester 1. mysql> select sum(sks) as total_sks from tbl_matakuliah where semester='1'; +-----------+
10
| total_sks | +-----------+ | 16 | +-----------+ 1 row in set (0.08 sec)
AVG AVG digunakan untuk menghitung nilai rata-rata. Sintaks : SELECT avg(nama_field) FROM nama_tabel; Contoh : Hitung nilai rata-rata mahasiswa untuk tiap kode krs. mysql> select kd_krs,avg(nilai_angka) as rata_rata from tbl_krsdetail group by k d_krs; +--------+-----------------+ | kd_krs | rata_rata | +--------+-----------------+ | KRS01 | 84.387499809265 | | KRS02 | 74.375 | | KRS03 | 84.800000508626 | | KRS04 | 81.777777777778 | | KRS05 | 84 | +--------+-----------------+ 5 rows in set (0.00 sec)
Query bersarang (Nested Query) Dalam SQL dikenal query bersarang, dimana query ada dalam query. Contoh : Pilih mahasiswa yang memiliki jurusan J001 degan query bersarang. mysql> select nim,nama,kd_jurusan from tbl_mahasiswa where kd_jurusan IN (select kd_jurusan from tbl_jurusan where kd_jurusan='J001'); +--------+-----------+------------+ | nim | nama | kd_jurusan | +--------+-----------+------------+ | 070201 | Abdul G | J001 | | 080201 | Abu Bakar | J001 | | 080203 | Charles S | J001 | +--------+-----------+------------+ 3 rows in set (0.00 sec)
JOIN
11
Join digunakan untuk menggabungkan dua atau lebih tabel, dengan syarat tabel yang digabungkan memiliki setidaknya satu field yang sama. INNER JOIN Inner join digunakan untuk menggabungkan dua atau lebih tabel dimana field yang dijadikan sebagai referensi join memiliki nilai yang sama pada tabel sebelah kiri dan pada tabel sebelah kanan. Syntaks : SELECT tabel1.field,tabel2.field2 From Tabel1 Inner Join Tabel2 on tabel1.field=tabel2.field1 Contoh 1 : Gabungkan tabel mahasiswa dengan tabel jurusan mysql> select t1.nim,t1.nama,t2.nama_jurusan from tbl_mahasiswa t1 inner join tb l_jurusan t2 on t1.kd_jurusan=t2.kd_jurusan; +--------+-----------+------------------+ | nim | nama | nama_jurusan | +--------+-----------+------------------+ | 070201 | Abdul G | Ilmu Komputer | | 080201 | Abu Bakar | Ilmu Komputer | | 080203 | Charles S | Ilmu Komputer | | 070202 | Sugimin | Sistem Informasi | | 080202 | Dessy N | Sistem Informasi | +--------+-----------+------------------+ 5 rows in set (0.00 sec)
Contoh 2 : Gabungankan tabel mahasiswa dengan krs dan dosen wali. mysql> select t1.nim,t1.nama,t2.kd_krs,t2.semester,t3.nama_dosen from tbl_mahasiswa t1 inner join tbl_krs t2 on t1.nim=t2.nim inner join tbl_dosen t3 on t2.dsn_wali=t3.kd_dosen; +--------+-----------+--------+----------+-------------+ | nim | nama | kd_krs | semester | nama_dosen | +--------+-----------+--------+----------+-------------+ | 080201 | Abu Bakar | KRS01 | 1 | Asrul Sani | | 080203 | Charles S | KRS02 | 1 | Asrul Sani | | 080202 | Dessy N | KRS03 | 1 | Tanoto S | | 070201 | Abdul G | KRS04 | 1 | Syamsudin N | | 080201 | Abu Bakar | KRS05 | 1 | Syamsudin N | +--------+-----------+--------+----------+-------------+ 5 rows in set (0.00 sec)
LEFT JOIN
12
Syntaks : SELECT tabel1.field,tabel2.field2 From Tabel1 LEFT JOIN Tabel2 on tabel1.field=tabel2.field1 Left join digunakan untuk menggabungkan dua atau lebih tabel dimana field yang digunakan sebagai referensi pada tabel sebelah kiri akan ditampilkan walaupun tidak hadir pada tabel sebelah kanan. Contoh : Tampilkan semua mahasiswa dengan kode krs. Pada kasus ini ada satu mahasiswa yang tidak memiliki krs, maka kode krs pada mahasiswa ini akan dibuat NULL. mysql> select t1.nim,t1.nama,t2.kd_krs from tbl_mahasiswa t1 left join tbl_krs t 2 on t1.nim=t2.nim; +--------+-----------+--------+ | nim | nama | kd_krs | +--------+-----------+--------+ | 070201 | Abdul G | KRS04 | | 070202 | Sugimin | NULL | | 080201 | Abu Bakar | KRS01 | | 080201 | Abu Bakar | KRS05 | | 080202 | Dessy N | KRS03 | | 080203 | Charles S | KRS02 | +--------+-----------+--------+ 6 rows in set (0.00 sec)
RIGHT JOIN Right join adalah kebalikan left join, dimana semua item pada tabel sebelah kanan akan ditampilkan walaupun tidak memiliki nilai yang sama dengan referensi pada tabel sebelah kiri. Syntaks : SELECT tabel1.field,tabel2.field2 From Tabel1 RIGHT JOIN Tabel2 on tabel1.field=tabel2.field1 Contoh : Tampilkan semua dosen yang menjadi dosen wali dan yang tidak berdasarkan tabel krs. mysql> select t1.nim,t1.nama,t2.kd_krs,t3.nama_dosen from tbl_mahasiswa t1 inner join tbl_krs t2 right join tbl_dosen t3 on t2.dsn_wali=t3.kd_dosen group by t2.kd_krs; +--------+---------+--------+-------------+ | nim | nama | kd_krs | nama_dosen | +--------+---------+--------+-------------+ | NULL | NULL | NULL | Benny G | | 070201 | Abdul G | KRS01 | Asrul Sani | | 070201 | Abdul G | KRS02 | Asrul Sani | | 070201 | Abdul G | KRS03 | Tanoto S | | 070201 | Abdul G | KRS04 | Syamsudin N | | 070201 | Abdul G | KRS05 | Syamsudin N |
13
+--------+---------+--------+-------------+ 6 rows in set (0.00 sec)
Membuat View View adalah tabel virtual yang dibuatkan sebagai solusi untuk menghindari pengulangan query. Syntak : CREATE View nama_view AS (query); Contoh : Buatkan view yang menampung gabungan tabel mahasiswa dan jurusan. mysql> create view view_mhsjur as select t1.nim,t1.nama,t1.kd_jurusan,t2.nama_ju rusan from tbl_mahasiswa t1 inner join tbl_jurusan t2 on t1.kd_jurusan=t2.kd_jurusan; Query OK, 0 rows affected (0.00 sec) Menampilkan isi view. mysql> select * from view_mhsjur; +--------+-----------+------------+------------------+ | nim | nama | kd_jurusan | nama_jurusan | +--------+-----------+------------+------------------+ | 070201 | Abdul G | J001 | Ilmu Komputer | | 080201 | Abu Bakar | J001 | Ilmu Komputer | | 080203 | Charles S | J001 | Ilmu Komputer | | 070202 | Sugimin | J002 | Sistem Informasi | | 080202 | Dessy N | J002 | Sistem Informasi | +--------+-----------+------------+------------------+ 5 rows in set (0.00 sec)
Contoh2 : Membuat view yang menampung gabungan mahasiswa, krs,detail krs,dosen wali, dosen mata kuliah. mysql> create view view_mhskrs as select t1.nim,t1.nama,t2.kd_krs,t2.semester as krs_semester,t5.semester asmk_semester,t3.nama_dosen as dosen_wali,t4.kdmk,t4.nilai_angka,t4.nilai_huruf,t5.nama_mk, t5.sks,t6.nama_dosen from tbl_mahasiswa t1 inner join tbl_krs t2 on t1.nim=t2.nim inner join tbl_dosen t3 on t2.dsn_wali=t3.kd_dosen inner join tbl_krsdetail t4 on t2.kd_krs=t4.kd_krs inner join tbl_matakuliah t5 on t4.kdmk=t5.kdmk inner join tbl_dosen t6 on t4.kd_dosen=t6.kd_dosen; Query OK, 0 rows affected (0.02 sec)
Melihat hasil view.
14
mysql> select nim,nama,kdmk,asmk_semester as mk_sem,sks,nilai_huruf from view_mhskrs where nim='080201'; +--------+-----------+--------+--------+-----+-------------+ | nim | nama | kdmk | mk_sem | sks | nilai_huruf | +--------+-----------+--------+--------+-----+-------------+ | 080201 | Abu Bakar | KOMP00 | 1 | 2 | A | | 080201 | Abu Bakar | KOMP02 | 1 | 2 | B+ | | 080201 | Abu Bakar | KOMP03 | 1 | 2 | B+ | | 080201 | Abu Bakar | KOMP04 | 1 | 1 | A | | 080201 | Abu Bakar | KOMP05 | 1 | 1 | A | | 080201 | Abu Bakar | KOMP10 | 3 | 2 | B | | 080201 | Abu Bakar | KOMP11 | 3 | 2 | C | | 080201 | Abu Bakar | KOMP12 | 3 | 2 | C+ | +--------+-----------+--------+--------+-----+-------------+ 8 rows in set (0.02 sec)
Melihat nilai rata-rata tertinggi dari view_mhskrs mysql> select nim,nama,avg(nilai_angka) nilai_rata2 from view_mhskrs group by nim; +--------+-----------+-----------------+ | nim | nama | nilai_rata2 | +--------+-----------+-----------------+ | 070201 | Abdul G | 81.777777777778 | | 070202 | Sugimin | 84 | | 080201 | Abu Bakar | 84.387499809265 | | 080202 | Dessy N | 84.800000508626 | | 080203 | Charles S | 74.375 | +--------+-----------+-----------------+ 5 rows in set (0.00 sec)
Melihat jumlah sks yang diambil oleh tiap mahasiswa; mysql> select nim,nama,sum(sks) as total_sks from view_mhskrs group by nim; +--------+-----------+-----------+ | nim | nama | total_sks | +--------+-----------+-----------+ | 070201 | Abdul G | 16 | | 070202 | Sugimin | 18 | | 080201 | Abu Bakar | 14 | | 080202 | Dessy N | 6 | | 080203 | Charles S | 14 | +--------+-----------+-----------+ 5 rows in set (0.00 sec)
15
16