Tutorial Mysql Dasar
Tutorial Mysql Dasar
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
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
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;
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');
('KOMP07',
('KOMP08',
('KOMP09',
('KOMP10',
('KOMP11',
('KOMP12',
Setelah semua data telah dimasukkan, sekarang bagaimana menampilkan data yang
sudah ada dengan perintah SELECT.
SELECT
Sintaks
SELECT
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;
WHERE
Where digunakan untuk memilih record mana yang ditampilkan dengan criteria tertentu.
Sintaks :
SELECT field1,field2,field3 FROM nama_tabel WHERE namafield =
kriteria;
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%';
+----------+-------------+--------------------------+
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)
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)
LEFT JOIN
12
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)
14
15
16