SQL Simple
Mari kita belajar SQL ( secara umum baik mysql, sql server,
oracle) :
Data Table ( yang penulis gunakan adalah table kelas dan student
) :
Student
|
|||||
No.
|
NIS
|
Nama
|
Alamat
|
Umur
|
Kelas
|
1
|
20170001
|
Aldo Berton
|
Jl. Duri Selatan
|
8
|
K2
|
2
|
20170002
|
Angel Christina
|
Jl. Petojo Barat
|
7
|
K1
|
3
|
20170003
|
Bella Lorenza
|
Jl. Petojo Bara
|
8
|
K2
|
4
|
20170004
|
Charles
|
Jl. Metro Marini Barat
|
7
|
K1
|
5
|
20170005
|
Davin
|
Jl. Petojo Utara
|
10
|
K4
|
6
|
20170006
|
Donna
|
Jl. Jelambar Jaya
|
10
|
K4
|
7
|
20170007
|
Dorothy
|
Jl. Tanah Sereal
|
11
|
K5
|
8
|
20170008
|
Dova Ariella
|
Jl. Hanura I
|
12
|
K6
|
9
|
20170009
|
Evita
|
Jl. Krendang Raya
|
11
|
K5
|
10
|
20170010
|
Grace Florence
|
Jl. Duri Selatan
|
13
|
K6
|
kelas
|
||
No
|
Kode
|
Nama
|
1
|
K1
|
Kelas 1
|
2
|
K2
|
Kelas 2
|
3
|
K3
|
Kelas 3
|
4
|
K4
|
Kelas 4
|
5
|
K5
|
Kelas 5
|
6
|
K6
|
Kelas 6
|
==============================================
Untuk mengakses data pada table :
1. untuk
menampilkan semua data dan field :
select * from kelas;
+ββ+βββ+
| Kode | Nama |
+ββ+βββ+
| K1 | Kelas 1 |
| K2 | Kelas 2 |
| K3 | Kelas 3 |
| K4 | Kelas 4 |
| K5 | Kelas 5 |
| K6 | Kelas 6 |
+ββ+βββ+
| Kode | Nama |
+ββ+βββ+
| K1 | Kelas 1 |
| K2 | Kelas 2 |
| K3 | Kelas 3 |
| K4 | Kelas 4 |
| K5 | Kelas 5 |
| K6 | Kelas 6 |
+ββ+βββ+
select * from student;
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
| 20170002 | Angel Christina | Jl. Petojo Barat | 7 | K1 |
| 20170003 | Bella Lorenza | Jl. Petojo Bara | 8 | K2 |
| 20170004 | Charles | Jl. Metro Marini Barat | 7 | K1 |
| 20170005 | Davin | Jl. Petojo Utara | 10 | K4 |
| 20170006 | Donna | Jl. Jelambar Jaya | 10 | K4 |
| 20170007 | Dorothy | Jl. Tanah Sereal | 11 | K5 |
| 20170008 | Dova Ariella | Jl. Hanura I | 12 | K6 |
| 20170009 | Evita | Jl. Krendang Raya | 11 | K5 |
| 20170010 | Grace Florence | Jl. Duri Selatan | 13 | K6 |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
| 20170002 | Angel Christina | Jl. Petojo Barat | 7 | K1 |
| 20170003 | Bella Lorenza | Jl. Petojo Bara | 8 | K2 |
| 20170004 | Charles | Jl. Metro Marini Barat | 7 | K1 |
| 20170005 | Davin | Jl. Petojo Utara | 10 | K4 |
| 20170006 | Donna | Jl. Jelambar Jaya | 10 | K4 |
| 20170007 | Dorothy | Jl. Tanah Sereal | 11 | K5 |
| 20170008 | Dova Ariella | Jl. Hanura I | 12 | K6 |
| 20170009 | Evita | Jl. Krendang Raya | 11 | K5 |
| 20170010 | Grace Florence | Jl. Duri Selatan | 13 | K6 |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
untuk menambahkan nomor urut ( contoh table kelas untuk table
lain sama);
*. mysql :
SET @rank=0;
SELECT @rank:=@rank+1 as nomor, a.* from kelas a;
atau
SELECT @rownum := @rownum + 1 as nomor, t.*
FROM kelas t,
(SELECT @rownum := 0) r
*. mysql :
SET @rank=0;
SELECT @rank:=@rank+1 as nomor, a.* from kelas a;
atau
SELECT @rownum := @rownum + 1 as nomor, t.*
FROM kelas t,
(SELECT @rownum := 0) r
*. sql server :
SELECT ROW_NUMBER() OVER(ORDER BY nama ASC) as nomor,
a.* FROM kelas;
*. oracle :
select rownum as nomor, a.* from kelas a;
hasil :
+ββ-+ββ+βββ+
| nomor | Kode | Nama |
+ββ-+ββ+βββ+
| 1 | K1 | Kelas 1 |
| 2 | K2 | Kelas 2 |
| 3 | K3 | Kelas 3 |
| 4 | K4 | Kelas 4 |
| 5 | K5 | Kelas 5 |
| 6 | K6 | Kelas 6 |
+ββ-+ββ+βββ+
| nomor | Kode | Nama |
+ββ-+ββ+βββ+
| 1 | K1 | Kelas 1 |
| 2 | K2 | Kelas 2 |
| 3 | K3 | Kelas 3 |
| 4 | K4 | Kelas 4 |
| 5 | K5 | Kelas 5 |
| 6 | K6 | Kelas 6 |
+ββ-+ββ+βββ+
============================================
2. untuk menampilkan di field tertentu :
dalam hal ini, hanya ingin menampilkan data pada kelas ( kode
atau nama ) dan pada student ( nis, nama ) dengan cuma hanya 3 record;
*. mysql :
SELECT @rownum := @rownum + 1 as nomor, t.kode FROM
kelas t, (SELECT @rownum := 0) r
where @rownum < 3;
SELECT @rownum := @rownum + 1 as nomor, t.nis, t.nama
FROM student t, (SELECT @rownum := 0) r
where @rownum < 3;
*. SQL Server
SELECT ROW_NUMBER() OVER(ORDER BY kode ASC) as nomor,
a.kode FROM kelas where ROW_NUMBER() < 3;
SELECT ROW_NUMBER() OVER(ORDER BY nis ASC) as nomor,
a.nis, a.nama FROM student where ROW_NUMBER() < 3;
*. Oracle :
select rownum, a.kode from kelas a where rownum < 3;
seelect rownum nomor, a.nis, a.nama from student where rownum
< 3;
Hasil :
*. pada table kelas :
+ββ-+ββ+
| nomor | kode |
+ββ-+ββ+
| 1 | K1 |
| 2 | K2 |
| 3 | K3 |
+ββ-+ββ+
| nomor | kode |
+ββ-+ββ+
| 1 | K1 |
| 2 | K2 |
| 3 | K3 |
+ββ-+ββ+
*. pada table student :
+ββ-+βββ-+ββββββ+
| nomor | nis | nama |
+ββ-+βββ-+ββββββ+
| 1 | 20170001 | Aldo Berton |
| 2 | 20170002 | Angel Christina |
| 3 | 20170003 | Bella Lorenza |
+ββ-+βββ-+ββββββ+
| nomor | nis | nama |
+ββ-+βββ-+ββββββ+
| 1 | 20170001 | Aldo Berton |
| 2 | 20170002 | Angel Christina |
| 3 | 20170003 | Bella Lorenza |
+ββ-+βββ-+ββββββ+
============================================
3. untuk mengakses data dengan kondisi ( yang sering digunakan,
dimana masing β masing database memiliki perbedaan, namun secara standard atau
umum sama ), penulis mencoba 1 table.
sesuaikan field yang dimau [ disini penulis menggunakan field kode
pada table kelas dan nis pada table student ]
*. menggunakan = & != atau
<> [ penulis utk sql ini menggunakan table kelas ]
select * from kelas where kode = βK1β;
+ββ+βββ+
| Kode | Nama |
+ββ+βββ+
| K1 | Kelas 1 |
| Kode | Nama |
+ββ+βββ+
| K1 | Kelas 1 |
select * from student where nis = β20170001β;
+βββ-+ββββ-+ββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββ-+ββββββ+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
+βββ-+ββββ-+ββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββ-+ββββββ+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
+βββ-+ββββ-+ββββββ+ββ+ββ-+
akan menampilkan semua data yang kode kelas K1β²
select * from kelas where kode != βK1β;
atau
select * from kelas where kode <> βK1β;
+ββ+βββ+
| Kode | Nama |
+ββ+βββ+
| K2 | Kelas 2 |
| K3 | Kelas 3 |
| K4 | Kelas 4 |
| K5 | Kelas 5 |
| K6 | Kelas 6 |
+ββ+βββ+
| Kode | Nama |
+ββ+βββ+
| K2 | Kelas 2 |
| K3 | Kelas 3 |
| K4 | Kelas 4 |
| K5 | Kelas 5 |
| K6 | Kelas 6 |
+ββ+βββ+
akan menampilkan semua data yang bukan kode kelas K1β²
*. menggunakan like & Not Like
untuk menggunakan like pada
nilai bisa ditambahkan %, baik depan, belakang, ataupun dihimpit; untuk lebih
jelas penulis mencoba table student dengan field nama;
select * from student where nama like βAldo Bertonβ;
+βββ-+ββββ-+ββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββ-+ββββββ+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
+βββ-+ββββ-+ββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββ-+ββββββ+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
+βββ-+ββββ-+ββββββ+ββ+ββ-+
dengan kondisi like seperti di atas, nama dengan
menggunakan = jadi lebih baik gunakan =
select * from student where nama not like βAldo Bertonβ;
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| 20170002 | Angel Christina | Jl. Petojo Barat | 7 | K1 |
| 20170003 | Bella Lorenza | Jl. Petojo Bara | 8 | K2 |
| 20170004 | Charles | Jl. Metro Marini Barat | 7 | K1 |
| 20170005 | Davin | Jl. Petojo Utara | 10 | K4 |
| 20170006 | Donna | Jl. Jelambar Jaya | 10 | K4 |
| 20170007 | Dorothy | Jl. Tanah Sereal | 11 | K5 |
| 20170008 | Dova Ariella | Jl. Hanura I | 12 | K6 |
| 20170009 | Evita | Jl. Krendang Raya | 11 | K5 |
| 20170010 | Grace Florence | Jl. Duri Selatan | 13 | K6 |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| 20170002 | Angel Christina | Jl. Petojo Barat | 7 | K1 |
| 20170003 | Bella Lorenza | Jl. Petojo Bara | 8 | K2 |
| 20170004 | Charles | Jl. Metro Marini Barat | 7 | K1 |
| 20170005 | Davin | Jl. Petojo Utara | 10 | K4 |
| 20170006 | Donna | Jl. Jelambar Jaya | 10 | K4 |
| 20170007 | Dorothy | Jl. Tanah Sereal | 11 | K5 |
| 20170008 | Dova Ariella | Jl. Hanura I | 12 | K6 |
| 20170009 | Evita | Jl. Krendang Raya | 11 | K5 |
| 20170010 | Grace Florence | Jl. Duri Selatan | 13 | K6 |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
akan menampilkan semua data selain Aldo
Bertonβ
dengan kondisi like seperti di atas, nama dengan
menggunakan != jadi lebih baik gunakan != atau
<>
select * from student where nama like βDo%β;
+βββ-+βββββ+ββββββ-+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+βββββ+ββββββ-+ββ+ββ-+
| 20170006 | Donna | Jl. Jelambar Jaya | 10 | K4 |
| 20170007 | Dorothy | Jl. Tanah Sereal | 11 | K5 |
| 20170008 | Dova Ariella | Jl. Hanura I | 12 | K6 |
+βββ-+βββββ+ββββββ-+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+βββββ+ββββββ-+ββ+ββ-+
| 20170006 | Donna | Jl. Jelambar Jaya | 10 | K4 |
| 20170007 | Dorothy | Jl. Tanah Sereal | 11 | K5 |
| 20170008 | Dova Ariella | Jl. Hanura I | 12 | K6 |
+βββ-+βββββ+ββββββ-+ββ+ββ-+
semua data nama yang nama depannya ada unsur do, maka akan
ditampilkan.
select * from student where nama not like βDo%β;
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
| 20170002 | Angel Christina | Jl. Petojo Barat | 7 | K1 |
| 20170003 | Bella Lorenza | Jl. Petojo Bara | 8 | K2 |
| 20170004 | Charles | Jl. Metro Marini Barat | 7 | K1 |
| 20170005 | Davin | Jl. Petojo Utara | 10 | K4 |
| 20170009 | Evita | Jl. Krendang Raya | 11 | K5 |
| 20170010 | Grace Florence | Jl. Duri Selatan | 13 | K6 |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
| 20170002 | Angel Christina | Jl. Petojo Barat | 7 | K1 |
| 20170003 | Bella Lorenza | Jl. Petojo Bara | 8 | K2 |
| 20170004 | Charles | Jl. Metro Marini Barat | 7 | K1 |
| 20170005 | Davin | Jl. Petojo Utara | 10 | K4 |
| 20170009 | Evita | Jl. Krendang Raya | 11 | K5 |
| 20170010 | Grace Florence | Jl. Duri Selatan | 13 | K6 |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
semua data nama yang nama depannya tidak ada unsur do,
maka akan ditampilkan.
select * from student where nama like β%do%β;
+βββ-+βββββ+ββββββ-+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+βββββ+ββββββ-+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
| 20170006 | Donna | Jl. Jelambar Jaya | 10 | K4 |
| 20170007 | Dorothy | Jl. Tanah Sereal | 11 | K5 |
| 20170008 | Dova Ariella | Jl. Hanura I | 12 | K6 |
+βββ-+βββββ+ββββββ-+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+βββββ+ββββββ-+ββ+ββ-+
| 20170001 | Aldo Berton | Jl. Duri Selatan | 8 | K2 |
| 20170006 | Donna | Jl. Jelambar Jaya | 10 | K4 |
| 20170007 | Dorothy | Jl. Tanah Sereal | 11 | K5 |
| 20170008 | Dova Ariella | Jl. Hanura I | 12 | K6 |
+βββ-+βββββ+ββββββ-+ββ+ββ-+
semua data nama yang nama ada unsur do, maka akan ditampilkan.
select * from student where nama not like β%do%β;
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| 20170002 | Angel Christina | Jl. Petojo Barat | 7 | K1 |
| 20170003 | Bella Lorenza | Jl. Petojo Bara | 8 | K2 |
| 20170004 | Charles | Jl. Metro Marini Barat | 7 | K1 |
| 20170005 | Davin | Jl. Petojo Utara | 10 | K4 |
| 20170009 | Evita | Jl. Krendang Raya | 11 | K5 |
| 20170010 | Grace Florence | Jl. Duri Selatan | 13 | K6 |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| NIS | Nama | Alamat | Umur | Kelas |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
| 20170002 | Angel Christina | Jl. Petojo Barat | 7 | K1 |
| 20170003 | Bella Lorenza | Jl. Petojo Bara | 8 | K2 |
| 20170004 | Charles | Jl. Metro Marini Barat | 7 | K1 |
| 20170005 | Davin | Jl. Petojo Utara | 10 | K4 |
| 20170009 | Evita | Jl. Krendang Raya | 11 | K5 |
| 20170010 | Grace Florence | Jl. Duri Selatan | 13 | K6 |
+βββ-+ββββββ+ββββββββ+ββ+ββ-+
semua data nama yang nama tidak ada unsur do, maka akan
ditampilkan.
*. menggunakan in & Not In
perbedaan in dan Not in adalah
: kalau in berarti yang ada unsur data yang dicari, dan sebaliknya not in tidak
ada unsur data yang dicari, cuma in dan not in bisa beberapa record yang di
harapkan.
select * from kelas where kode in (βK1β, βK2β);
+ββ+βββ+
| Kode | Nama |
+ββ+βββ+
| K1 | Kelas 1 |
| K2 | Kelas 2 |
+ββ+βββ+
| Kode | Nama |
+ββ+βββ+
| K1 | Kelas 1 |
| K2 | Kelas 2 |
+ββ+βββ+
select * from kelas where kode not in (βK1β, βK2β);
+ββ+βββ+
| Kode | Nama |
+ββ+βββ+
| K3 | Kelas 3 |
| K4 | Kelas 4 |
| K5 | Kelas 5 |
| K6 | Kelas 6 |
+ββ+βββ+
| Kode | Nama |
+ββ+βββ+
| K3 | Kelas 3 |
| K4 | Kelas 4 |
| K5 | Kelas 5 |
| K6 | Kelas 6 |
+ββ+βββ+
untuk menampilkan 1 record pada duplikasi data, contoh untuk krs
: kalau tampilkan semua :
+βββ-+ββββββ+
| nis | kode_matakuliah |
+βββ-+ββββββ+
| 20170001 | MTK0001 |
| 20170001 | MTK0002 |
| 20170001 | MTK0003 |
| 20170001 | MTK0004 |
| 20170001 | MTK0005 |
| 20170002 | MTK0001 |
| 20170002 | MTK0002 |
| 20170002 | MTK0003 |
| 20170002 | MTK0004 |
| 20170002 | MTK0005 |
| 20170003 | MTK0001 |
| 20170003 | MTK0002 |
| 20170003 | MTK0003 |
| 20170003 | MTK0004 |
| 20170003 | MTK0005 |
| 20170003 | MTK0006 |
+βββ-+ββββββ+
| nis | kode_matakuliah |
+βββ-+ββββββ+
| 20170001 | MTK0001 |
| 20170001 | MTK0002 |
| 20170001 | MTK0003 |
| 20170001 | MTK0004 |
| 20170001 | MTK0005 |
| 20170002 | MTK0001 |
| 20170002 | MTK0002 |
| 20170002 | MTK0003 |
| 20170002 | MTK0004 |
| 20170002 | MTK0005 |
| 20170003 | MTK0001 |
| 20170003 | MTK0002 |
| 20170003 | MTK0003 |
| 20170003 | MTK0004 |
| 20170003 | MTK0005 |
| 20170003 | MTK0006 |
+βββ-+ββββββ+
*. menggunakan exists & Not
exists
penggunaan table matakuliah dan krs, dimana kita ingin
menampilkan matakuliah yang diambil krs maupun yang tidak diambil;
select * from matakuliah a where exists (select 1 from krs b
where b.kode_matakuliah = a.kode);
+βββ+ββββββ+ββ+
| kode | nama | sks |
+βββ+ββββββ+ββ+
| MTK0001 | Fisika | 4 |
| MTK0002 | Kalkulus | 4 |
| MTK0003 | Pancasila | 2 |
| MTK0004 | Kewarganegaraan | 2 |
| MTK0005 | Akuntansi 1 | 3 |
+βββ+ββββββ+ββ+
| kode | nama | sks |
+βββ+ββββββ+ββ+
| MTK0001 | Fisika | 4 |
| MTK0002 | Kalkulus | 4 |
| MTK0003 | Pancasila | 2 |
| MTK0004 | Kewarganegaraan | 2 |
| MTK0005 | Akuntansi 1 | 3 |
+βββ+ββββββ+ββ+
menampilkan matakuliah yang ada di table krs
select * from matakuliah a where not exists (select 1 from krs b
where b.kode_matakuliah = a.kode);
+βββ+ββββ-+ββ+
| kode | nama | sks |
+βββ+ββββ-+ββ+
| MTK0006 | Akuntansi 2 | 3 |
+βββ+ββββ-+ββ+
| kode | nama | sks |
+βββ+ββββ-+ββ+
| MTK0006 | Akuntansi 2 | 3 |
+βββ+ββββ-+ββ+
menampilkan matakuliah yang tdk ada di table krs
*. penggunaan distinct
tapi yang dimau misalnya hanya nis saja,
select distinct nis from krs;
+βββ-+
| nis |
+βββ-+
| 20170001 |
| 20170002 |
| 20170003 |
+βββ-+
| nis |
+βββ-+
| 20170001 |
| 20170002 |
| 20170003 |
+βββ-+