Senin, 16 Januari 2012
Modul Vb
1
Tutorial SQL
Muhammad Wali
Tutorial SQL
Muhammad Wali
waly147258369@gmail.com
Pembahasan dalam buku ini mencakup beberapa Latihan dengan menggunakan SQL
Server 2000.
Latihan 3
Jalankan SQL server 2000 dengan cara memilih menu Start | All Programs | Microsoft SQL
Server | Query Analizer
Modul dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam
setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari
Penulis
Bab
3
2
Tutorial SQL
Muhammad Wali
Sehingga akan muncul tampilan sebagai berikut ;
Selanjutnya klik OK
3
Tutorial SQL
Muhammad Wali
Buat Database dengan nama “Latihan 3”
Selanjtnya ketikkan sintaks berikut untuk membuat tabel
create table ms_student(
Student_id char(5) primary key not null,
Student_name varchar (30),
Student_address varchar (50),
Student_phone varchar (13),
Student_email varchar (50),
Student_gender varchar (6),
Student_birth datetime,
);
create table ms_tutor(
Tutor_id char (5) primary key not null,
Tutor_name varchar (30),
Tutor_address varchar (50),
Tutor_phone varchar (13),
Tutor_email varchar (50),
Tutor_gender varchar (6),
Tutor_birth datetime,
);
4
Tutorial SQL
Muhammad Wali
create table ms_program(
Program_id char (5) primary key not null,
Program_name varchar(50),
Fee numeric,
Program_duration varchar (20),
);
create table ms_grade(
grade_id char(1) primary key not null,
nilai varchar(7),
discount varchar(4),
);
create table tr_jadwal (
Jadwal_id char (5) primary key not null,
Day_ varchar(10),
Time_ varchar(50),
Program_id char (5) foreign key references ms_program(Program_id) on update
cascade on delete cascade,
Room char (3),
tutor_id char(5) foreign key references ms_tutor(tutor_id) on update cascade on delete
cascade,
);
5
Tutorial SQL
Muhammad Wali
create table tr_regist (
regist_id char (6) primary key not null,
Student_id char(5) foreign key references ms_student(student_id) on update cascade on
delete cascade,
Jadwal_id char(5) foreign key references tr_jadwal(jadwal_id) on update cascade on
delete cascade,
grade_id char(1) foreign key references ms_grade(grade_id) on update cascade on
delete cascade,
);
create table tr_payment(
payment_id char(5) primary key not null,
regist_id char(6) foreign key references tr_regist(regist_id) on update cascade on delete
cascade,
Total_payment numeric,
Payment_date datetime,
);
create table trh_absensi(
absensi_id char (2) primary key not null,
jadwal_id char (5) foreign key references tr_jadwal(jadwal_id) on update cascade on
delete cascade,
Pertemuan1_date datetime,
Pertemuan2_date datetime,
Pertemuan3_date datetime,
Pertemuan4_date datetime,
Pertemuan5_date datetime,
Pertemuan6_date datetime,
6
Tutorial SQL
Muhammad Wali
Pertemuan7_date datetime,
Pertemuan8_date datetime,
Pertemuan9_date datetime,
Pertemuan10_date datetime,
Pertemuan11_date datetime,
Pertemuan12_date datetime,
);
create table trd_absensi(
absensi_id char (2) ,
student_id char (5) ,
Pertemuan_1 varchar(5),
Pertemuan_2 varchar(5),
Pertemuan_3 varchar(5),
Pertemuan_4 varchar(5),
Pertemuan_5 varchar(5),
Pertemuan_6 varchar(5),
Pertemuan_7 varchar(5),
Pertemuan_8 varchar(5),
Pertemuan_9 varchar(5),
Pertemuan_10 varchar(5),
Pertemuan_11 varchar(5),
Pertemuan_12 varchar(5),
primary key(absensi_id,student_id)
););
7
Tutorial SQL
Muhammad Wali
Setelah selesai membuat tabel sekarang kita memasukkan data, berikut sintaks ya :
INSERT INTO ms_student VALUES ('80692','Yusmaneli','haji
senen','085920735341','lily_siswani@yahoo.com','Female','11/03/1989')
INSERT INTO ms_student VALUES ('80862','Stella clarissa','ks
tubun','081808887933','stellycious@yahoo.com','female','09/08/1988')
INSERT INTO ms_student VALUES ('82205','Agustino','jembatan
tiga','08180834234','tino_she@yahoo.com','male','07/08/1988');
INSERT INTO ms_student VALUES ('82312','Imelda putri','duta
indah','08569463434','ineldhaputri@yahoo.co.id','female','12/07/1988');
INSERT INTO ms_student VALUES ('85131','Titis annisa astrini','pasar
minggu','08563434423','annisa_titis@yahoo.com','female','06/12/1987');
INSERT INTO ms_student VALUES ('81234','Hendri Tella','Aceh
Besar','0219886765','hendri@yahoo.com','male','04/04/1989');
INSERT INTO ms_student VALUES ('84321','Lily Annisa Clarissa','Rawa
belong','081765342509','bunga_lili@yahoo.com','female','10/02/1987');
create table tr_result(
Result_id char (5) primary key not null,
program_id char (5) foreign key references ms_program(program_id) on update
cascade on delete cascade,
student_id char (5) foreign key references ms_student(student_id) on update cascade on
delete cascade,
Written_Test varchar (4),
Oral_Test varchar (4),
Note varchar (10),
);
8
Tutorial SQL
Muhammad Wali
INSERT INTO ms_student VALUES ('87078','Kevin Pratama','Jeruk
Purut','02198765432','tama_boy@gmail.com','male','12/12/1986');
INSERT INTO ms_student VALUES ('83421','Juliana','kebun
jeruk','081834534443','ana_pink@gmail.com','female','02/02/1988');
INSERT INTO ms_student VALUES ('88139','Windika','gang
u','0878343434','Windika@yahoo.com','male','02/07/1986');
__________________________________________________________________________
INSERT INTO ms_tutor VALUES ('D1908','muhammad wali','Haji
rabu','0818666673','Robert@yahoo.com','Male','10/09/1970');
INSERT INTO ms_tutor VALUES
('D1989','Alexandra','Harmoni','0812624343','alex_chen@yahoo.com','Male','08/05/1973');
INSERT INTO ms_tutor VALUES ('D0708','stefania
angelina','jl.anggrek','0813453434','angel_cute@yahoo.com','Female','10/12/1969');
INSERT INTO ms_tutor VALUES
('D1507','Fauzan','serpong','08783435534','zan@yahoo.com','Male','08/07/1972');
INSERT INTO ms_tutor VALUES ('D0612','sabrina','Lebak
bulus','0859345344','rina@yahoo.com','Female','11/06/1977');
__________________________________________________________________________
INSERT INTO ms_program VALUES ('PC001','conversation',1500000,'12');
INSERT INTO ms_program VALUES ('PP001','toefl preparation',2000000,'12');
INSERT INTO ms_program VALUES ('PG001','general english',1000000,'12');
___________________________________________________________________________
INSERT INTO ms_grade VALUES ('A','85-100','10%');
9
Tutorial SQL
Muhammad Wali
INSERT INTO ms_grade VALUES ('B','75-84','5%');
INSERT INTO ms_grade VALUES ('C','0-74','0%');
__________________________________________________________________________
INSERT INTO tr_jadwal VALUES ('J0001','mon','13.00-15.00','PC001','101','D1908');
INSERT INTO tr_jadwal VALUES ('J0002','mon','15.00-17.00','PG001','105','D0612');
INSERT INTO tr_jadwal VALUES ('J0003','tue','09.00-11.00','PP001','101','D1989');
INSERT INTO tr_jadwal VALUES ('J0004','wed','13.00-15.00','PG001','103','D0612');
INSERT INTO tr_jadwal VALUES ('J0005','wed','15.00-17.00','PP001','104','D1989');
INSERT INTO tr_jadwal VALUES ('J0006','thu','09.00-11.00','PG001','102','D0612');
INSERT INTO tr_jadwal VALUES ('J0007','fri','15.00-17.00','PC001','101','D1908');
INSERT INTO tr_jadwal VALUES ('J0008','tue','13.00-15.00','PG001','104','D0612');
__________________________________________________________________________
INSERT INTO tr_regist VALUES ('reg001','80692','J0005','B');
INSERT INTO tr_regist VALUES ('reg002','80862','J0002','A');
INSERT INTO tr_regist VALUES ('reg003','82205','J0001','B');
INSERT INTO tr_regist VALUES ('reg004','82312','J0003','B');
INSERT INTO tr_regist VALUES ('reg005','85131','J0005','C');
INSERT INTO tr_regist VALUES ('reg006','81234','J0004','B');
INSERT INTO tr_regist VALUES ('reg007','84321','J0007','C');
INSERT INTO tr_regist VALUES ('reg008','87078','J0008','C');
10
Tutorial SQL
Muhammad Wali
INSERT INTO tr_regist VALUES ('reg009','83421','J0001','C');
INSERT INTO tr_regist VALUES ('reg010','88139','J0005','B');
__________________________________________________________________________
INSERT INTO tr_payment VALUES ('PO101','reg001',1900000,'1/3/2008');
INSERT INTO tr_payment VALUES ('PO102','reg002',900000,'1/10/2008');
INSERT INTO tr_payment VALUES ('PO103','reg003',1425000,'1/11/2008');
INSERT INTO tr_payment VALUES ('PO104','reg004',1900000,'2/2/2008');
INSERT INTO tr_payment VALUES ('PO105','reg005',2000000,'2/5/2008');
INSERT INTO tr_payment VALUES ('PO106','reg006',950000,'2/11/2008');
INSERT INTO tr_payment VALUES ('PO107','reg007',1500000,'1/8/2008');
INSERT INTO tr_payment VALUES ('PO108','reg008',1000000,'2/8/2008');
INSERT INTO tr_payment VALUES ('PO109','reg009',1500000,'1/9/2008');
INSERT INTO tr_payment VALUES ('PO110','reg010',1900000,'2/12/2008');
__________________________________________________________________________
INSERT INTO trh_absensi VALUES
('01','J0001','03/03/2008','03/10/2008','03/17/2008','03/24/2008','03/31/2008','04/07/2008','04/
14/2008','04/21/2008','04/28/2008','05/05/2008','05/12/2008','05/19/2008');
INSERT INTO trh_absensi VALUES
('02','J0002','03/03/2008','03/10/2008','03/17/2008','03/24/2008','03/31/2008','04/07/2008','04/
14/2008','04/21/2008','04/28/2008','05/05/2008','05/12/2008','05/19/2008');
11
Tutorial SQL
Muhammad Wali
INSERT INTO trh_absensi VALUES
('03','J0003','03/04/2008','03/11/2008','03/18/2008','03/25/2008','04/01/2008','04/08/2008','04/
15/2008','04/22/2008','04/29/2008','05/06/2008','05/13/2008','05/27/2008');
INSERT INTO trh_absensi VALUES
('04','J0004','03/05/2008','03/12/2008','03/19/2008','03/26/2008','04/02/2008','04/09/2008','04/
16/2008','04/23/2008','04/30/2008','05/07/2008','05/14/2008','05/21/2008');
INSERT INTO trh_absensi VALUES
('05','J0005','03/05/2008','03/12/2008','03/19/2008','03/26/2008','04/02/2008','04/09/2008','04/
16/2008','04/23/2008','04/30/2008','05/07/2008','05/14/2008','05/21/2008');
INSERT INTO trh_absensi VALUES
('06','J0006','03/06/2008','03/13/2008','03/27/2008','04/03/2008','04/10/2008','04/17/2008','04/
24/2008','05/08/2008','05/15/2008','05/22/2008','05/29/2008','06/05/2008');
INSERT INTO trh_absensi VALUES
('07','J0007','03/14/2008','03/28/2008','04/04/2008','04/11/2008','04/18/2008','04/25/2008','05/
02/2008','05/09/2008','05/16/2008','05/23/2008','05/30/2008','06/06/2008');
INSERT INTO trh_absensi VALUES
('08','J0008','03/04/2008','03/11/2008','03/18/2008','03/25/2008','04/01/2008','04/08/2008','04/
15/2008','04/22/2008','04/29/2008','05/06/2008','05/13/2008','05/27/2008');
__________________________________________________________________________
INSERT INTO trd_absensi VALUES
('01','80692','hadir','hadir','hadir','hadir','Izin','hadir','hadir','hadir','hadir','hadir','hadir','hadir');
INSERT INTO trd_absensi VALUES
('02','80862','hadir','hadir','hadir','Izin','hadir','hadir','hadir','hadir','hadir','Izin','hadir','hadir');
INSERT INTO trd_absensi VALUES
('03','82205','hadir','hadir','hadir','hadir','hadir','hadir','hadir','Alpha','hadir','hadir','hadir','hadir')
;
12
Tutorial SQL
Muhammad Wali
INSERT INTO trd_absensi VALUES
('04','82312','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir');
INSERT INTO trd_absensi VALUES
('05','85131','hadir','Izin','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir');
INSERT INTO trd_absensi VALUES
('06','81234','hadir','hadir','hadir','hadir','Alpha','hadir','Alpha','Alpha','hadir','hadir','aLpha','had
ir');
INSERT INTO trd_absensi VALUES
('07','84321','hadir','hadir','hadir','hadir','hadir','Izin','hadir','hadir','hadir','hadir','hadir','hadir');
INSERT INTO trd_absensi VALUES
('08','87078','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir','hadir');
INSERT INTO trd_absensi VALUES
('09','83421','hadir','hadir','Alpha','hadir','hadir','hadir','Alpha','hadir','hadir','hadir','Izin','hadir')
;
INSERT INTO trd_absensi VALUES
('10','88139','hadir','hadir','hadir','hadir','hadir','Alpha','hadir','hadir','Izin','hadir','hadir','hadir');
__________________________________________________________________________
INSERT INTO tr_result VALUES ('RE001','PP001','80692','NULL','B','GOOD');
INSERT INTO tr_result VALUES ('RE002','PG001','80862','c','B','AVERAGE');
INSERT INTO tr_result VALUES ('RE003','PC001','82205','B','A','GOOD');
INSERT INTO tr_result VALUES ('RE004','PP001','82312','C','C','NULL');
INSERT INTO tr_result VALUES ('RE005','PP001','85131','B','NULL','GOOD');
INSERT INTO tr_result VALUES ('RE006','PG001','81234','C','C','NULL');
INSERT INTO tr_result VALUES ('RE007','PC001','84321','NULL','A','EXCELLENT');
13
Tutorial SQL
Muhammad Wali
INSERT INTO tr_result VALUES ('RE008','PG001','87078','A','C','NULL');
INSERT INTO tr_result VALUES ('RE009','PC001','83421','A','b','GOOD');
INSERT INTO tr_result VALUES ('RE010','PP001','88139','B','C','AVERAGE');
__________________________________________________________________________
Jika belum pernah menjalankan, sebaiknya Anda ketik dan jalankan terlebih dahulu sebelum
melangkah pada contoh kasus selanjutnya. Sebagai pemanasan awal, ketiklah beberapa
sintaks data manipulation di bawah ini pada menu Query Analyzer. Jika selesai, coba
jalankan dan lihat bagaimana hasilnya.
Select * From ms_student
Select * From ms_tutor
Select * From ms_program
Select * From ms_grade
Select * From tr_jadwal
Select * From tr_payment
Select * From trh_absensi
Select * From trd_absensi
Select * From tr_result
Pada Bab sebelumnya kita telah membuat beberapa tabel untuk setiap contoh. Pada Bab ini
kita berlatih berbagai sintaks SQL DML. Beberapa contoh sintaks sebaiknya anda lakukan
langsung di komputer adalah :
1. Menampilkan seluruh data student
SELECT Student_id,Student_name,Student_address,
Student_Phone,Student_email,Student_gender,
14
Tutorial SQL
Muhammad Wali
Student_birth,datetime
FROM ms_student;
Atau
SELECT *
FROM ms_student;
Tanda * artinya menampilkan seluruh data (baris dan kolom) pada suatu tabel.
2. Kegunaan DISTINC
Tampilkan id program dari jadwal tersedia
SELECT DISTINCT Program_id
FROM tr_jadwal;
15
Tutorial SQL
Muhammad Wali
Fungsi DISTINCT adalah untuk menghilangkan baaris yang duplikat. Coba Anda
ketik sintaks berikut dan jalankan pada komputer anda. Perbedaan apa yang anda lihat
SELECT Program_id
FROM tr_jadwal
3. Field yang dapat dikalkulasikan
Istilah asingnya adalah calculated, computed atau derived field.
Tampilkan daftar pembayaran, dengan menampilkan payment_id,regist_id dan
total_payment + 100
SELECT payment_id, regist_id, total_payment + 100
FROM tr_payment
Tampilkan daftar pembayaran, dengan menampilkan payment_id,regist_id dan
10 % total_payment
SELECT payment_id, regist_id, 0,1 * total_payment
FROM tr_payment
16
Tutorial SQL
Muhammad Wali
4. Penggunaan Perbandingan sebagai pencarian dalam kondisi
Tampilkan kode payment, kode registrasi, dan jumlah pembayaran yang lebih dari
1.000.000.
SELECT payment_id,regist_id,total_payment
FROM tr_payment
WHERE total_payment > 1000000
Ini adalah contoh perbandingan biasa, bukan majemuk, yang tidak mengandung unsur
OR atau AND
17
Tutorial SQL
Muhammad Wali
5. Penggunaan perbandingan Majemuk sebagai pencarian dalam kondisi
Tampilkan seluruh alamat student yang tinggal di Aceh Besar atau Sabang.
SELECT *
FROM ms_student
WHERE student_address = 'Aceh Besar' OR student_address='Sabang';
Tampilkan seluruh alamat student yang tinggal di Aceh Besar dan Sabang.
SELECT *
FROM ms_student
WHERE student_address = 'Aceh Besar' AND student_address='Sabang';
Bagaimana hasilnya silakan anda coba?
6. Penggunaan BETWEEN sebagai pencarian dalam kondisi
Tampilkan kode payment, kode registrasi, dan jumlah pembayaran yang lebih besar
dari 1.000.000 dan kurang 2.000.000
SELECT payment_id, regist_id, total_payment
FROM tr_payment
WHERE BETWEEN 1000000 AND 2000000
Atau
SELECT payment_id, regist_id, total_payment
FROM tr_payment
WHERE total_payment > 1000000 AND
Total_payment < 2000000
Silakan lihat hasilnya.....
18
Tutorial SQL
Muhammad Wali
7. Mengurutkan Satu Kolom
Tampilkan kode siswa, nama siswa, dan grade siswa dengan urutan nama siswa dari
kecil ke besar
SELECT s.Student_id, s.Student_name, r.grade_id
FROM ms_student S, tr_regist R
WHERE s.Student_id=r.Student_id
ORDER BY Student_name ASC;
8. Penggunaan COUNT (*)
Tampilkan banyaknya total pembayaran yang lebih dari 1500000
SELECT COUNT (*) AS Banyaknya_Pembayaran
FROM tr_payment
WHERE Total_payment > 1500000;
19
Tutorial SQL
Muhammad Wali
9. Penggunaan SUM dan COUNT
Tampilkan kode pembayaran , kode regist,count dan Sum dari total pembayaran
SELECT COUNT (Total_Payment) AS Jumlah_payment,
SUM (Total_payment) AS Totalpayment
FROM tr_payment;
20
Tutorial SQL
Muhammad Wali
10. Penggunaan MIN,MAX,AVG
Tampilkan minimal payment, maksimal payment, rata-rata payment
SELECT MIN (total_payment) AS min_payment,
MAX (total_payment) AS max_payment,
AVG (total_payment) AS avg_payment
FROM tr_payment;
11. Penggunaan GROUP BY
Tampilkan jadwal_id berdasarkan program
SELECT program_id, COUNT (program_id) AS mycount
FROM tr_jadwal
GROUP BY program_id;
21
Tutorial SQL
Muhammad Wali
Fungsi GROUP BY adalah untuk mendapatkan subtotal dengan ketentuan SELECT
harus berupa single valued per group dan clause SELECT hanya dapat mengandung
nama kolom, fungsi aggregat, konstanta, dan ekspresi (dapat terdiri atas kombinasi
nama, kolom, fungsi aggregat dan konstanta)
12. Penggunaan ALL
Tampilkan payment_id yang total paymentnya lebih besar dari total payment dengan
regist_id reg003 dan reg002.
SELECT *
FROM tr_payment
WHERE Total_payment > ANY (SELECT total_payment
FROM tr_payment
WHERE regist_id IN (‘reg003’,’reg002’))
13. Join Sederhana
Tampilkan jadwal_id, day_,time_,j.program-id, and progra_name.
SELECT jadwal_id, j.program_id, program_name
FROM tr_jadwal j,ms_program p
WHERE j.program_id=p.program_id;
22
Tutorial SQL
Muhammad Wali
14. Penggunaan UNION, dan INTERSECT
Tampilkan seluruh student_id yang telah aktif atau baru mendaftar
(SELECT student_id
FROM ms_student
WHERE student_id IS NOT NULL)
UNION
(SELECT student_id
FROM tr_regist
WHERE student_id IS NOT NULL);
Tampilkan seluruh student_id yang telah aktif dan telah membayar
SELECT s.student_id
FROM ms_student s,tr_regist r
WHERE s.student_id=r.student_id
23
Tutorial SQL
Muhammad Wali
15. Penggunaan INSERT, UPDATE, dan DELETE
INSERT-DEFAULT
Masukkan baris baru ke dalam tabel ms_student untuk kolom-kolom tertentu
INSERT INTO ms_student1 Values (‘92999’,’Ziauddin’,’Jl. Takengon –
Bireun’,NULL,NULL,’Male’,’29-Sep-1986’);
UPDATE
Ubahlah seluruh alamat siswa pada tabel ms_student1 menjadi ‘Jl. Cut Mutia’
UPDATE ms_student1 SET student_address = ‘Jl. Cut Mutia’;
Ubahlah alamat menjadi ‘Jl. Cut Mutia’ untuk student_id 90999
UPDATE ms_student1 SET student_address = ‘Jl.Cut Mutia’
WHERE student_id = ‘90999’;
Ubahlah alamat menjadi ‘Jl.Cut Mutia’ dan Nama menjadi ‘Lala’ untuk student_id
90999.
UPDATE ms_student1 SET student_address = ‘Jl.Cut Mutia’,
student_name = ‘Lala’
WHERE student_id = ‘90999’;
DELETE
Hapus seluruh ms_student1 yang ada hubunganya dengan nomor siswa 91999
DELETE FROM ms_student1
WHERE ms_student=’91999’;
Hapus seluruh baris ms_student1
DELETE FROM ms_student1;
24
Tutorial SQL
Muhammad Wali
Anda bisa menggunakan sintax tersebut pada Oracle, SQL Server dan lain-lain. Selamat
mencoba.
Referensi :
http://Desaincek.wordpress.com
25
Tutorial SQL
Muhammad Wali
Langganan:
Postingan (Atom)