Anda di halaman 1dari 16

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)

Nama_dosen

Varchar(20)

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)

Nama_mk
Semester
Sks

Varchar(25)
tinyint
Tinyint

N
N
N

PK

Reference
Tabel

Reference
Field
0

Tabel tbl_krs
Field

Tipe Data

Null

Kd_krs

Varchar(5)

Nim
Semester

Varchar(6)
Tinyint

N
N

PK

Reference
Tabel

Reference
Field

Y
Tbl_Mahasiswa

Nim

Dsn_wali

Varchar(6)

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',

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),

('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');

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;

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%';
+----------+-------------+--------------------------+

| 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
|

+--------+----------------+-------------+
| 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

Anda mungkin juga menyukai