0% menganggap dokumen ini bermanfaat (0 suara)
126 tayangan

SQL Server

Buku ajar ini memberikan pengenalan singkat tentang SQL Server dan contoh-contoh kode SQL untuk memanipulasi database. Terdiri dari dua bab utama yaitu pengenalan SQL dan contoh praktek SQL dasar.

Diunggah oleh

fikiefwz
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
126 tayangan

SQL Server

Buku ajar ini memberikan pengenalan singkat tentang SQL Server dan contoh-contoh kode SQL untuk memanipulasi database. Terdiri dari dua bab utama yaitu pengenalan SQL dan contoh praktek SQL dasar.

Diunggah oleh

fikiefwz
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 36

BUKU AJAR

MODUL PEMBELAJARAN SQL SERVER

Fikie Fauziyah NIM. 201753025

FAKULTAS TEKNIK
SISTEM INFORMASI
UNIVERSITAS MURIA KUDUS
2018

Halaman | 1
KATA PENGANTAR

Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa atas karunia dan nikmat-Nya
kami dapat menyelesaikan buku ajar tentang “Modul Pembelajaran SQL Server”.

Buku ajar ini disusun untuk memenuhi tugas UAS Mata kuliah praktek sistem basis data.
Penyusunan karya tulis ini tidak mungkin diselesaikan tanpa dukungan dan partisipasi dari semua
pihak. Untuk itu perkenankan kami menyampaikan terima kasih kepada Tuhan yang maha Esa
karena telah memberikan rahmat telah dilancarkan agar pembuatan buku ajar ini dapat
terselesaikan. Serta kepada teman – teman yang telah membantu sehingga buku ajar ini dapat
diselesaikan.

Kami menyadari bahwa dalam menyusun buku ajar ini masih banyak kekurangan, oleh
karena itu kritik dan saran sangat dibutuhkan untuk kesempurnaan buku ajar ini di kesempatan
yang akan datang.

Kudus, 15 Desember 2018

Fikie Fauziyah

Halaman | 2
DAFTAR ISI
HALAMAN JUDUL .........................................................................................................1
KATA PENGANTAR .......................................................................................................2
DAFTAR ISI ......................................................................................................................3
SURAT PERNYATAAN ..................................................................................................4
BAB 1 PENGENALAN SQL ............................................................................................5
BAB II PRAKTEK DASAR SQL .....................................................................................9
BIODATA PENULIS ........................................................................................................36

Halaman | 3
SURAT PERNYATAAN
PROGRAM BUKU AJAR TERBIT
TAHUN 2018

Yang bertanda tangan di bawah ini:


Nama : Fikie Fauziyah
NIM : 201753025
Progdi : Sistem Informasi
Instansi : Universitas Muria Kudus
Judul Buku : Modul Pembelajaran SQL Server
Dengan ini menyatakan bahwa :
a. buku yang saya ajukan merupakan karya individu,
b. buku yang saya ajukan bebas plagiarisme,
c. buku yang saya ajukan adalah hasil terbitan baru, bukan hasil penerbitan dari Hibah
Penulisan Buku Ajar, dan bukan hasil revisi yang pernah memperoleh Insentif
Buku Ajar yang diselenggarakan lembaga atau perguruan tinggi yang menggunakan
sumber APBN.
d. saya belum pernah mendapatkan hibah buku atau insentif buku pada tahun-tahun
sebelumnya.
Demikian Surat Pernyataan ini saya buat dengan sesungguhnya. Apabila di kemudian hari
ditemukan ketidaksesuaian dengan pernyataan ini dan/atau ada tuntutan dari pihak lain, saya
bersedia bertanggung jawab, diproses sesuai dengan ketentuan yang berlaku.
Kudus, 15 Desember 2018

Mengetahui
Dosen Mata Kuliah
Praktikum Sistem Basis Data, Meterai
Rp6.000

(Arif Setiawan S.Kom, M.Kom) (Fikie Fauziyah)

Halaman | 4
BAB I PENGENALAN SQL

Database didefinisikan sebagai kumpulan data yang terintegrasi dan diatur sedemikian
rupa sehingga data tersebut dapat dimanipulasi, diambil, dan dicari secaracepat.
Tabel adalah suatu entitas yang tersusun atas kolom dan baris. Dalam dunia database,
kolom disebut field dan baris disebut record.
Constraint merupakan suatu aturan atau bahasan yang mendefinisikan nilai atau data
yang dapat disimpan di dalam database, baik melalui operasi INSERT, UPDATE, maupun
DELETE. Constraint dibedakan menjadi empat,yaitu: PrimaryKey, ForeignKey, Unique,
Check
a. Constraint-Primary Key
Primary Key merupakan suatu aturan yang berguna untuk memastikan bahwa
setiap baris data di dalam suatu tabel bersifat unik (berbeda antara baris yang satu
dengan yang lainnya. Aturan dalam pendefinisian primarykey:
1. Suatu tabel tidak dapat memiliki lebih dari satu primary key
2. Kolomyang dijadikan primary key tidak boleh bertipe BLOB
3. Nilai pada kolom yang didefinisikan sebagai primary key harus bersifat unik dan tidak
bolehNULL
b. Constraint-Foreign Key
Foreign Key berguna untuk mendefinisikan kolomkolom pada suatu tabel yang
nilainya mengacu ke tabellain.Aturan dalam pendefinisian foreignkey:
1. Satu tabel dapat memiliki lebih dari satu foreignkey
2. Kolom yang diacu harus didefinisikan sebagai primary key atau unik
c. Constraint Unique. Fungsi unik pada dasarnya sama seperti primary key, yaitu untuk
memastikan bahwa setiap baris data yang terdapat dalam suatu tabel bersifat unik (tidak
sama). Perbedaanya, pada unique key diizinkan untuk memasukkan nilai NULL.

SQL (Structured Query Language) adalah bahasa pemrograman khusus yang


digunakan untuk memanajemen data dalam RDBMS. SQL biasanya berupa perintah sederhana
yang berisi instruksi-instruksi untuk manipulasi data. Perintah SQL ini sering juga disingkat
dengan sebutan ‘query‘.
SQL adalah kependekan dari Structured Query Language, yang merupakan bahasa
atau kumpulan perintah standar yang digunakan untuk berkomunikasi dengan database.
Perintah dalam SQL, diklasifikasikan menjadi tiga bagian besar,yaitu:
Halaman | 5
1. Data Definition Language (DDL)
2. DataManiuplationLanguagae(DML)
3. DataControllingLanguage(DCL)

Data Defininition Language


Data Definition Language (DDL) adalah kumpulan perintah SQL yang berkaitan
dengan pembuatan, perubahan, dan penghapusan database maupunobjek-
objekyangterdapatdidalamdatabase. PerintahSQLyangtermasukkategoriDDL:
– CREATE, berfungsiuntuk membuat database dan objek-objek didalam database.
– ALTER, berfungsi untuk mengubah database dan objek-objek di dalam database.
– DROP, berfungsi untuk menghapus database dan objek-objekdidalam database.
Contoh Perintah DDL:
a. CREATE DATABASE <nama database>;
b. SHOW DATABASES;
c. USE<nama database>;
d. DROP DATABASE [IF EXISTS] <nama database>;
Contoh: DROP DATABASE IF EXISTS db_buku;
Digunakan untuk menghapus database, IF EXISTS bersifat opsional dan digunakan
untuk mencegah terjadinyakesalahan.
e. ALTER TABLE <nama tabel lama> RENAME TO <nama tabel baru>;
Contoh: ALTER TABLE tb_kategori RENAME TO tb_kategoribuku;
ALTER TABLE <nama tabel>ADD COLUMN <nama field> <tipe data>; Contoh:
ALTER TABLE tb_penerbit ADD COLUMN kota_penerbit VARCHAR(30);
Digunakan untuk menambah field.
ALTER TABLE <nama tabel> CHANGE <nama field lama> <nama field baru> <tipe
data baru>;
Contoh: ALTER TABLE tb_penerbit CHANGE kota_penerbit tempat_terbit
VARCHAR(30);
Digunakan untuk mengubah nama field.
ALTER TABLE <nama tabel> DROP COLUMN <nama field yang akan dihapus>;
Contoh: ALTER TABLE tb_penerbit DROPtempat_terbit;
Digunakanuntukmenghapus field.
ALTER TABLE <nama tabel> DROP PRIMARY KEY;
Contoh: ALTER TABLE tb_penerbit DROP PRIMARY KEY;
Halaman | 6
Digunakanuntukmenghapus primarykey.
ALTER TABLE <nama tabel> ADD PRIMARY KEY(<nama field>);
Contoh: ALTER TABLE tb_penerbit ADD PRIMARY KEY(id_penerbit);
Digunakanuntukmendefinisikan primarykey.
ALTER TABLE <nama tabel> ADD FOREIGN KEY (<nama field>) REFERENCES
<nama tabel referensi> (<nama field referensi>);
Contoh: ALTER TABLE tb_buku ADD FOREIGN KEY (id_penerbit) REFERENCES
tb_penerbit(id_penerbit);
Digunakanuntukmendefinisikan foreignkey.
ALTER TABLE <nama tabel> MODIFY COLUMN <nama field> <tipe data> AFTER<nama
field>;
Digunakanuntukmerubah urutan field.

Data Manipulation Language


DataManipulationLanguage(DML) adalah kumpulan perintah SQL yang berkaitan
dengan manipulasi data atauisidarisuatutabel. Perintah SQLyangtermasukkategori DML:
– INSERT, berfungsi untuk menambah atau memasukkan databarukedalamtabel.
– UPDATE, berfungsi untuk mengubah data dalam tabel dengannilaibaru.
– DELETE,berfungsiuntukmenghapusdatadarisuatutabel.
Contoh Perintah DML
• Digunakan untuk menambah data ke dalam database. Penulisan <namafield> bersifat opsional.
INSERT INTO [(<nama field1>), <nama field2>, ...)] VALUES (<nilai 1>, <nilai 2>, ...);
Contoh: INSERT INTO tbjurusan (kode_jur, nama_jur) VALUES (‘JUR005’, ‘Teknik ’);
• Digunakan untuk menghapus semua data dalam suatu tabel.
TRUNCATE TABLE <nama tabel>;
Contoh: TRUNCATE TABLE tb_buku;
• Digunakan untuk mengubah data dalam tabel. <kriteria atau kondisi> berguna sebagai filter
untuk menentukandatamanayangakandiubah.
UPDATE <nama tabel> SET <nama field1> = <nilai1>, <nama field1> = <nilai2>, ... WHERE
<kriteria atau kondisi>;
Contoh: nama_jur=’Teknik Industri’ UPDATE tbjurusan SET nama_jur=’Teknik Industri’
WHERE kode_jur=’jur005’;
• Digunakan untuk menghapus data dalam tabel. <kriteria atau kondisi> berguna sebagai filter
untuk menentukandatamanayangakandihapus.
Halaman | 7
DELETE FROM <nama tabel> WHERE <kriteria atau kondisi>;
Contoh: DELETE FROM tbjurusan WHERE kode_jur=’jur005’;
Perintah-perintah SELECT
• Menampilkan semua data pada tabel..
• Menampilkan beberapa field yangdipilih.
SELECT*FROM<nama tabel>; Contoh: SELECT * FROMtb_buku;
SELECT <nama field1> [, <nama field2>, ...] FROM<nama tabel>;
Contoh: SELECT judul_buku, harga_buku FROM tb_buku;
• Menyertakan nama database dan perintah nama tabel.
SELECT <nama tabel>.<nama field1> [,<nama tabel>.<nama field2>, ...] FROM<nama
database>.<nama tabel>;
Contoh: SELECT tb_buku.judul_buku, tb_buku.harga_buku FROM dbperpus_001.tb_buku;
• Menggunakan alias sebagai pengganti nama tabel.
SELECT <nama alias>.<nama field1> [,<nama alias>.<nama field2>, ...] FROM<nama tabel>
<nama alias>;
Contoh: SELECT a.judul_buku, a.harga_buku FROM tb_buku a;
• Menggunakan alias untuk mempresentasikan nama field.
SELECT <nama field1> AS<nama alias>[,<nama field2>AS<nama alias>, ...] FROM<nama
tabel>; Contoh: SELECT id_buku AS‘ID’, judul_buku AS‘JUDUL BUKU’ FROM tb_buku;

Halaman | 8
BAB II PRAKTEK DASAR SQL

1. Buat Tabel baru pada db yang sama dengan sebelumnya

use "201753025"
CREATE TABLE SUPPLIER2 (
kdsupp VARCHAR(10) PRIMARY KEY,
nmsupp VARCHAR(40),
jekel VARCHAR(10),
kantor VARCHAR(30),
alamat_kantor VARCHAR(50),
telp_kantor VARCHAR(15),
hp VARCHAR(15),
email VARCHAR(25) );

SELECT * FROM SUPPLIER2;

2. Isi data pada tabel

SELECT * FROM SUPPLIER2;

INSERT INTO SUPPLIER2


VALUES ('sup001','Tino Agustin','Pria','CV. Indah Lestari Jaya','Jl. Halilintar
20A Semarang','0291-5543245','085815439091','Tinoo@gmail.com' );
INSERT INTO SUPPLIER2
VALUES ('sup002','Erna Maeda','Wanita','PT. Indofood Asahi','Jl. Kangkung 3
Kendal','0291-5522444','081326666666','Indofood01@gmail.com' );
INSERT INTO SUPPLIER2
VALUES ('sup003','Siti Susanti','Wanita','PT. Dua Kelinci','Jl. Kuningan
Jakarta','0291-5111111','087711111999','Santi77@gmail.com' );
INSERT INTO SUPPLIER2
VALUES ('sup004','Alexander Graham B','Pria','UD. Semar Jaya','Jl. Pattimura 66
Semarang','0291-7689044','081723030303','SemarJaya5@gmail.com' );
INSERT INTO SUPPLIER2
VALUES ('sup005','Dea Lestari','Wanita','PT. Philips Indonesia','Jl. Gemah
Ripah 33 Kendal','0291-1234567','081354546789','DeaLestari3@gmail.com' );

3. Tampilkan Nama, Jenis Kelamin, HP dari supplier yang beralamat kantor di kendal

SELECT nmsupp, jekel, hp FROM SUPPLIER2


WHERE alamat_kantor LIKE '%Kendal'

SELECT nmsupp, jekel, hp FROM SUPPLIER2


WHERE alamat_kantor = 'Jl. Kangkung 3 Kendal'

Halaman | 9
4. Tampilkan Kode, Nama dan Alamat dari supplier dari perusahaan PT

SELECT kdsupp, nmsupp, alamat_kantor FROM SUPPLIER2


WHERE kantor LIKE 'PT%'

5. Tampilkan Nama, HP supplier yang bernomor Simpati


SELECT nmsupp, hp FROM SUPPLIER2
WHERE hp LIKE '0813%'

6. Tampilkan Alamat Kantor yang berada di Semarang


SELECT alamat_kantor FROM SUPPLIER2
WHERE alamat_kantor LIKE '%Semarang'

7. Ubah HP Siti Susanti menjadi 089000999000


UPDATE SUPPLIER2 SET hp = '089000999000'
WHERE nmsupp = 'Siti Susanti'

8. Ubah No HP 3 (Tri) ke 082167167167


UPDATE SUPPLIER2 SET hp = '082167167167'
WHERE hp = '089000999000'

9. Hapus data supplier dari Alexander Graham B


DELETE FROM SUPPLIER2
WHERE nmsupp LIKE 'Alexander GRAHAM%'

Halaman | 10
10. Tambahkan 1 field “No. Fax Kantor” isi fax bebas
ALTER TABLE SUPPLIER2
ADD Fax VARCHAR(10)

UPDATE SUPPLIER2 SET Fax = '875625' WHERE kdsupp = 'sup001'


UPDATE SUPPLIER2 SET Fax = '825678' WHERE kdsupp = 'sup002'
UPDATE SUPPLIER2 SET Fax = '567297' WHERE kdsupp = 'sup003'
UPDATE SUPPLIER2 SET Fax = '678309' WHERE kdsupp = 'sup005'

CREATE TABLE Barang (


kdbrg VARCHAR(10) PRIMARY KEY,
nmbrg VARCHAR(40),
jenisbrg VARCHAR(30),
jumlah INT,
harga INT );

SELECT * FROM "Barang"

INSERT INTO "Barang" VALUES ('Brg001','Indomie','Mie Instan','100','2500');


INSERT INTO "Barang" VALUES ('Brg002','Sunsilk','Shampo','150','10500');
INSERT INTO "Barang" VALUES ('Brg003','Lux','Sabun Mandi','250','7000');
INSERT INTO "Barang" VALUES ('Brg004','Wafer Tango','Snack','500','7500');
INSERT INTO "Barang" VALUES ('Brg005','Ades','Air Mineral','250','2000');
INSERT INTO "Barang" VALUES ('Brg006','LA Light','Rokok','120','20100');
INSERT INTO "Barang" VALUES ('Brg007','Lifebuoy','Sabun Mandi Cair','520','8000');
INSERT INTO "Barang" VALUES ('Brg008','Aqua','Air Mineral','500','3000');
INSERT INTO "Barang" VALUES ('Brg009','Kit','Pembersih Mobil','200','12000');
INSERT INTO "Barang" VALUES ('Brg010','Mie Sedaap','Mie Instan','300','1900');

Tampilkan kode barang, nama barang dari jenis barang mie instan!
SELECT kdbrg, nmbrg FROM "Barang" WHERE jenisbrg = 'mie instan'

Halaman | 11
Tampilkan nama barang, jenis barang yang jumlahnya dibawah 200!
SELECT nmbrg, jenisbrg FROM "Barang" WHERE jumlah < 200

Tampilkan data semua barang yang harganya diatas 10.000!


SELECT * FROM "Barang" WHERE harga > 10000

Tampilkan data barang sabun mandi dan sabun mandi cair!


SELECT * FROM "Barang" WHERE jenisbrg = 'sabun mandi' OR jenisbrg = 'sabun mandi cair'
Atau dapat dengan memanggil seluruh jenis sabun mandi
SELECT * FROM "Barang" WHERE jenisbrg LIKE 'sabun mandi%'

Tampilkan data barang pembersih mobil yang harga dibawah 10.000!


SELECT * FROM "Barang" WHERE jenisbrg = 'pembersih mobil' AND harga < 10000

*tidak ada barang yang dimaksud didalam tabel


Tampilkan data snack dan rokok!
SELECT * FROM "Barang" WHERE jenisbrg = 'snack' OR jenisbrg = 'rokok'

Tampilkan nama barang yang diawali huruf “A”!


SELECT nmbrg FROM "Barang" WHERE nmbrg LIKE 'A%'

Tampilkan nama barang, jenis barang, harga barang yang huruf depan nama barangnya “A”!
SELECT nmbrg, jenisbrg, harga FROM "Barang" WHERE nmbrg LIKE 'A%'

Tampilkan data barang yang harganya diatas 1.000!


SELECT * FROM "Barang" WHERE harga > 10000

Halaman | 12
Tampilkan data barang yang jumlahnya antara 100 dan 300!
SELECT * FROM "Barang" WHERE 100 < jumlah AND jumlah < 300

*Atau dapat dengan command berikut:


SELECT * FROM "Barang" WHERE jumlah between 100 AND 300

CREATE TABLE Pembelian (


idBeli VARCHAR(10) PRIMARY KEY,
kdbrg VARCHAR(10) FOREIGN KEY REFERENCES Barang(kdbrg),
kdsupp VARCHAR(10) FOREIGN KEY REFERENCES SUPPLIER2(kdsupp),
tglBeli DATE,
jmlBeli INT );

SELECT * FROM "Pembelian"


SELECT * FROM "Barang"
SELECT * FROM "SUPPLIER2"

INSERT INTO "Pembelian" VALUES ('BL001','Brg001','sup003','12/01/2018','100');


INSERT INTO "Pembelian" VALUES ('BL002','Brg001','sup003','2 Feb 2018','150');
INSERT INTO "Pembelian" VALUES ('BL003','Brg002','sup002','7 Feb 2018','1100');
INSERT INTO "Pembelian" VALUES ('BL004','Brg003','sup001','26 Feb 2018','50');
INSERT INTO "Pembelian" VALUES ('BL005','Brg002','sup002','2/03/2018','750');

Tampilkan semua data pembelian, dan nama barang


SELECT Pembelian.idBeli, Pembelian.kdbrg, Barang.nmbrg, Pembelian.kdsupp,
Pembelian.tglBeli, Pembelian.jmlBeli
from "Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg;

Halaman | 13
Tampilkan semua data pembelian, nama barang, nama supplier
SELECT Pembelian.idBeli, Pembelian.kdbrg, Barang.nmbrg, Pembelian.kdsupp,
SUPPLIER2.nmsupp, Pembelian.tglBeli, Pembelian.jmlBeli
from (("Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg)
INNER JOIN SUPPLIER2 ON SUPPLIER2.kdsupp= Pembelian.kdsupp);

Tampilkan tanggal pembelian, nama barang, nama supplier, alamat kantor supplier yang pembelian
sebelum bulan Maret
SELECT Pembelian.tglBeli, Barang.nmbrg, SUPPLIER2.nmsupp, SUPPLIER2.alamat_kantor
from ("Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg
INNER JOIN SUPPLIER2 ON SUPPLIER2.kdsupp= Pembelian.kdsupp)
WHERE tglBeli < '2018-03-01';

Tampilkan kode beli, Nama Barang, Jumlah Barang yang dibeli & Total Harga
ALTER TABLE Pembelian
ADD TotalHarga VARCHAR(15);

update Pembelian SET TotalHarga = (Barang.harga * Pembelian.jmlBeli)


from ("Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg);

select Pembelian.idBeli, Barang.nmbrg, Pembelian.jmlBeli, Pembelian.TotalHarga from


("Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg);

Atau tanpa membuat kolom baru, bisa dengan command berikut:


select Pembelian.idBeli, Barang.nmbrg, Pembelian.jmlBeli, Barang.Harga,
Barang.harga * Pembelian.jmlBeli as total
from Pembelian
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg;

Halaman | 14
Tampilkan Nama Barang, harga barang, jumlah barang yang dibeli, total harga yang pembelian
sebelum tanggal 15 Februari
select Barang.nmbrg, Barang.harga, Pembelian.jmlBeli, Pembelian.TotalHarga from
("Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg)
WHERE tglBeli < '2018-02-15';

Atau tanpa kolom totalharga:


select Barang.nmbrg, Barang.harga, Pembelian.jmlBeli,
Barang.harga * Pembelian.jmlBeli as total
from ("Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg)
WHERE tglBeli < '2018-02-15';

Tampilkan Kode barang, nama barang, nama supplier urut berdasarkan total harga dari yang terkecil
ke yang terbesar
SELECT Barang.kdbrg, Barang.nmbrg, SUPPLIER2.nmsupp
from ("Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg
INNER JOIN SUPPLIER2 ON SUPPLIER2.kdsupp= Pembelian.kdsupp)
ORDER BY TotalHarga ASC;

Atau tanpa kolom totalharga:


SELECT Barang.kdbrg, Barang.nmbrg, SUPPLIER2.nmsupp,
Barang.harga * Pembelian.jmlBeli AS total
from ("Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg
INNER JOIN SUPPLIER2 ON SUPPLIER2.kdsupp= Pembelian.kdsupp)
ORDER BY TOTAL ASC;

Halaman | 15
Tampilkan Jumlah barang dan total harga per bulan Februari
tanpa kolom totalharga:
select Pembelian.jmlBeli, Barang.harga * Pembelian.jmlBeli AS total
from Pembelian
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg
WHERE tglBeli like '%-02-%';

Atau dengan specific command:


select Pembelian.tglBeli, Barang.jumlah, barang.harga,
Barang.harga * Pembelian.jmlBeli AS total
from Pembelian
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg
WHERE month(tglBeli)= '2';

Tampilkan semua transaksi di tahun 2018


select * from Pembelian
WHERE tglBeli like '2018-%';

Atau tanpa kolom totalharga:


select * from Pembelian
WHERE year(tglBeli)= '2018';

Penjelasan JOIN SQL

Halaman | 16
Apa itu JOIN, fungsi join atau penggabungan pada bahasa SQL untuk penghubung
antar table pada database untuk merelasional table. Untuk mendukung perancangan database
resional yang baik
Join adalah penggabungan table yang dilakukan melalui kolom/key tertentu yang memiliki
nilai terkait untuk mendapatkan satu set data dengan informasi lengkap. Lengkap disini
artinya kolom data didapatkan dari kolom kolom hasil join antar table tersebut. Syarat utama
untuk melakukan seleksi data dari dua buah table atau lebih adalah adanya kolom relasi.
Kolom relasi adalah kolom yang digunakan sebagai kunci untuk menghubungkan antara tabel
satu dengan tabel yang lainnya.

Macam- macam JOIN SQL


1. JOIN / CROSS JOIN
2. INNER JOIN
3. LEFT JOIN
4. RIGHT JOIN
5. FULL JOIN
6. SELF JOIN
7. UNION
8. GROUP BY
9. HAVING
10. CONSTRAINTS
Group_Concat. Digunakan untuk menyambung beberapa baris data dalam suatu
kolom menjadi string tunggal.
select group_concat (nama_kolom) from nama_tabel;
Group by. Digunakan untuk mengelompokkan data.
select b.nama_penerbit, group_concat (a.judul_buku) from tb_buku a, tb_penerbit b where
a.id_penerbit=b.id_penerbit;
- Untuk menampilkan semua data dari dua buah table yang berelasi.
CROSS JOIN Contoh: SELECT* FROM tb_penerbit p CROSS JOIN tb_buku b ON
p.id_penerbit = b.id_penerbit;
INNER JOIN Contoh: SELECT* FROM tb_penerbit p INNER JOIN tb_buku b ON
p.id_penerbit = b.id_penerbit;
Untuk menampilkan semua data yang terdapat ditabel sebelah RIGHT namun tidak terdapat
ditabel sebelah LEFT.
Halaman | 17
Untukmenampilkan semua data yang terdapat ditabel sebelah LEFT namun tidak terdapat
ditabel sebelah RIGHT.
LEFT JOIN Contoh:
select * from tb_penerbita LEFT JOIN tb_bukub on a.id_penerbit=b.id_penerbit;;
RIGHT JOINContoh:select * from tb_penerbita RIGHT JOIN tb_bukub on
a.id_penerbit=b.id_penerbit;

Tampilkan data tabel


select * from barang

select * from SUPPLIER2

select * from Pembelian

Tampilkan kode, nama, jumlah barang, jumlah dan tanggal pembelian serta nama suppliernya.
select b.kdbrg, b.nmbrg, b.jumlah,
p.jmlBeli, p.tglBeli, s.nmsupp
from Barang b
join Pembelian p on b.kdbrg = p.kdbrg
join SUPPLIER2 s on p.kdsupp = s.kdsupp

Tampilkan kode, nama, jumlah barang yang tersedia, dan tanggal pembelian barang urut
sesuai tanggal.
select Barang.kdbrg, Barang.nmbrg, Barang.jumlah, Pembelian.tglBeli

Halaman | 18
from Pembelian
join Barang on Barang.kdbrg = Pembelian.kdbrg
order by Pembelian.tglBeli

Tampilkan tanggal pembelian, jumlah, harga dan total pembelian urut berdasarkan
tanggal pembelian sebelum bulan maret.
select Pembelian.tglBeli, Barang.jumlah, barang.harga,
Barang.harga * Pembelian.jmlBeli AS total
from Pembelian
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg
WHERE month(tglBeli) < '3'
order by tglbeli

Tampilkan kode pembelian, kode dan nama barang, kode dan mana supplier, tanggal dan
jumlah beli.
SELECT Pembelian.idBeli, Pembelian.kdbrg, Barang.nmbrg, Pembelian.kdsupp,
SUPPLIER2.nmsupp,
Pembelian.tglBeli, Pembelian.jmlBeli
from (("Pembelian"
INNER JOIN Barang ON Pembelian.kdbrg= Barang.kdbrg)
INNER JOIN SUPPLIER2 ON SUPPLIER2.kdsupp= Pembelian.kdsupp);

Tampilkan semua data pembelian dan barang menggunakan left join.


SELECT * FROM Pembelian
LEFT JOIN Barang on barang.kdbrg = Pembelian.kdbrg;

Tampilkan kode dan nama barang, nama supplier, harga, jumlah beli dan total pembelian.
SELECT Barang.kdbrg, Barang.nmbrg, SUPPLIER2.nmsupp ,Barang.harga,
Pembelian.jmlBeli, Barang.harga * Pembelian.jmlBeli as pembelian FROM
Barang
LEFT JOIN Pembelian on barang.kdbrg = Pembelian.kdbrg
join SUPPLIER2 on SUPPLIER2.kdsupp = Pembelian.kdsupp ;

Halaman | 19
Tampilkan semua data barang dan pembelian menggunakan right join.
SELECT * FROM Barang
RIGHT JOIN Pembelian on Pembelian.kdbrg = Barang.kdbrg;

Tampilkan kode supplier, tanggal pembelian dan nama suppliernya.


Select Pembelian.kdsupp, Pembelian.tglBeli, SUPPLIER2.nmsupp FROM SUPPLIER2
RIGHT JOIN Pembelian ON SUPPLIER2.kdsupp = Pembelian.kdsupp ;

Tampilkan kode supplier, tanggal pembelian dan nama barang yang dibeli.
SELECT Pembelian.kdsupp, Pembelian.tglBeli, Barang.nmbrg FROM Pembelian
FULL OUTER JOIN Barang ON Barang.kdbrg = Pembelian.kdbrg
join SUPPLIER2 on SUPPLIER2.kdsupp = Pembelian.kdsupp

Tampilkan kode barang, tanggal beli, nama supplier dan nama kantor, urut berdasarkan
tanggal pembelian.
SELECT Pembelian.kdbrg, Pembelian.tglBeli, SUPPLIER2.nmsupp, SUPPLIER2.kantor FROM
SUPPLIER2
FULL OUTER JOIN Pembelian ON SUPPLIER2.kdsupp = Pembelian.kdsupp
order by tglBeli

Tampilkan kode barang, tanggal pembelian dan kode suppliernya, yang transaksinya di
bulan januari dengan self join.
SELECT a.Kdbrg, b.tglBeli, a.kdsupp
FROM Pembelian a, Pembelian b
WHERE a.kdbrg <> b.kdbrg and month(b.tglbeli) = '1';

Halaman | 20
Tampilkan kode barang, nama barang dan harganya dengan self join.
SELECT a.Kdbrg, b.nmbrg, b.harga
FROM Barang a, Barang b
WHERE a.kdbrg = b.kdbrg

Tampilkan gabungan union dari kode pembelian dan kode barang, nama dan alamat kantor
supplier, urut berdasarkan kode pembeliannya.
SELECT IdBeli, kdbrg FROM Pembelian
UNION
SELECT kantor, alamat_kantor FROM SUPPLIER2
ORDER BY idbeli;

Tampilkan gabungan union dari kode pembelian dan kode barang, nama dan alamat kantor
supplier yang merupakan perseroan terbatas.
SELECT IdBeli, kdbrg FROM Pembelian
UNION
SELECT kantor, alamat_kantor FROM SUPPLIER2
where kantor like 'PT%'

SELECT COUNT(kdsupp), Kantor


FROM SUPPLIER2
GROUP BY kantor;

Halaman | 21
SELECT COUNT(kdbrg), jmlBeli
FROM Pembelian
GROUP BY jmlBeli;

SELECT COUNT(kdbrg), jmlBeli


FROM Pembelian
GROUP BY jmlBeli
Having count(kdbrg) < 2;

#Constraints

PENGENALAN STORE PROCEDURE


Stored procedure adalah salah satu objek routine yang tersimpan pada database SQL
dan dapat digunakan untuk menggantikan berbagai kumpulan perintah yang sering kita
gunakan, seperti misalkan sejumlah row ke table lain dengan filter tertentu.
Stored procedure sangat berguna ketika kita tidak ingin user mengakses table secara
langsung, atau dengan kata lain membatasi hak akses user dan mencatat operasi yang dilakukan.
Dengan demikian resiko kebocoran dan kerusakan data dapat lebih diminalisir.
Contoh :
1. Membuat stored procedure dengan sql management studio

Halaman | 22
1. CREATEPROCEDUREquery1

AS
BEGIN
SETNOCOUNTON;
SELECT*frompembelian
END
GO

execquery1

2. CREATEPROCEDUREquery2
AS
BEGIN
SETNOCOUNTON;
SELECTPembelian.idBeli,Pembelian.kdbrg,Barang.nmbrg,Pembelian.kdsupp,Pembelian.tgl
Beli,Pembelian.jmlBelifrom"Pembelian"
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg;

END
GO
execquery2

3. CREATEPROCEDUREquery3

AS

Halaman | 23
BEGIN
SETNOCOUNTON;
SELECT Pembelian.tglBeli,Barang.nmbrg,SUPPLIER2.nmsupp,SUPPLIER2.alamat_kantor
from ("Pembelian"
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg
INNERJOINSUPPLIER2ONSUPPLIER2.kdsupp=Pembelian.kdsupp)
WHEREtglBeli<'2018-03-01';

END
GO
execquery3

4. CREATEPROCEDUREquery4

AS
BEGIN
SETNOCOUNTON;
selectPembelian.idBeli,Barang.nmbrg,Pembelian.jmlBeli,Barang.Harga,
Barang.harga*Pembelian.jmlBeliastotalfromPembelian
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg;

END
GO

execquery4

5. CREATEPROCEDUREquery5

AS
BEGIN
SETNOCOUNTON;
selectBarang.nmbrg,Barang.harga,Pembelian.jmlBeli,Barang.harga*Pembelian.jmlBelias
totalfrom ("Pembelian"INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg)
WHEREtglBeli<'2018-02-15';

END
GO

execquery5

Halaman | 24
6. CREATEPROCEDUREquery6

AS
BEGIN
SETNOCOUNTON;
selectpembelian.tglbeli,barang.Nmbrg,supplier2.Alamat_kantorfrom ("pembelian"
innerjoinbarangonpembelian.kdbrg=barang.kdbrg
innerjoinsupplier2onsupplier2.Kdsupp=pembelian.kdsupp)
wheretglbeli<'2018-03-01'

END
GO

execquery6

7. CREATEPROCEDUREquery7

AS
BEGIN
SETNOCOUNTON;
SELECTBarang.kdbrg,Barang.nmbrg,SUPPLIER2.nmsupp,Barang.harga*Pembelian.jmlBeliASt
otalfrom ("Pembelian"
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg
INNERJOINSUPPLIER2ONSUPPLIER2.kdsupp=Pembelian.kdsupp)
ORDERBYTOTALASC;

END
GO

execquery7

8. CREATEPROCEDUREquery8

AS

Halaman | 25
BEGIN
SETNOCOUNTON;
selectPembelian.tglBeli,Barang.jumlah,barang.harga,Barang.harga*Pembelian.jmlBeliA
Stotal
fromPembelian
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg
WHEREmonth(tglBeli)='2';

END
GO

execquery8

9. CREATEPROCEDUREquery9

AS
BEGIN
SETNOCOUNTON;
select*fromPembelianWHEREyear(tglBeli)='2018';
END
GO

execquery9

STORE PROCEDURE MENGGUNAKAN QUERY

1. CREATEPROCEDUREquery_1
AS
BEGIN
SELECT*frompembelian
END

execquery_1

Halaman | 26
2. CREATEPROCEDUREquery_2

AS
BEGIN
SELECTPembelian.idBeli,Pembelian.kdbrg,Barang.nmbrg,Pembelian.kdsupp,Pembelian.
tglBeli,Pembelian.jmlBelifrom"Pembelian"
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg;

END
execquery_2

3. CREATEPROCEDUREquery_3

AS
BEGIN
SELECT Pembelian.tglBeli,Barang.nmbrg,SUPPLIER2.nmsupp,SUPPLIER2.alamat_kantor
from ("Pembelian"
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg
INNERJOINSUPPLIER2ONSUPPLIER2.kdsupp=Pembelian.kdsupp)
WHEREtglBeli<'2018-03-01';

END
execquery_3

4. CREATEPROCEDUREquery_4
AS
BEGIN
selectPembelian.idBeli,Barang.nmbrg,Pembelian.jmlBeli,Barang.Harga,
Barang.harga*Pembelian.jmlBeliastotalfromPembelian
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg;
END

execquery_4

Halaman | 27
5. CREATEPROCEDUREquery_5

AS
BEGIN
selectBarang.nmbrg,Barang.harga,Pembelian.jmlBeli,Barang.harga*Pembelian.jmlBelias
totalfrom ("Pembelian"INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg)
WHEREtglBeli<'2018-02-15';

END

execquery_5

6. CREATEPROCEDUREquery_6

AS
BEGIN
selectpembelian.tglbeli,barang.Nmbrg,supplier2.Alamat_kantorfrom ("pembelian"
innerjoinbarangonpembelian.kdbrg=barang.kdbrg
innerjoinsupplier2onsupplier2.Kdsupp=pembelian.kdsupp)
wheretglbeli<'2018-03-01'

END

execquery_6

7. CREATEPROCEDUREquery_7

AS
BEGIN
SELECTBarang.kdbrg,Barang.nmbrg,SUPPLIER2.nmsupp,Barang.harga*Pembelian.jmlBeliASt
otalfrom ("Pembelian"
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg
INNERJOINSUPPLIER2ONSUPPLIER2.kdsupp=Pembelian.kdsupp)
ORDERBYTOTALASC;

Halaman | 28
END
execquery_7

8. CREATEPROCEDUREquery_8

AS
BEGIN
selectPembelian.tglBeli,Barang.jumlah,barang.harga,Barang.harga*Pembelian.jmlBeliA
Stotal
fromPembelian
INNERJOINBarangONPembelian.kdbrg=Barang.kdbrg
WHEREmonth(tglBeli)='2';

END

execquery_8

9. CREATEPROCEDUREquery_9

AS
BEGIN
select*fromPembelianWHEREyear(tglBeli)='2018';
END

execquery_9

PENGENALAN SUB QUERY


Subquery merupakan suatu query seperti halnya query biasa yang berjalan di dalam
query induk / master. Sub query dapat digunakan untuk mengambil suatu data di field / kolom
pada tabel lain.

Halaman | 29
1. SELECTkdbrg,nmbrg,hargaFROMbarangWHEREkdbrgin(SELECTkdbrgFROMpembelianWHEREjmlbeli>
=200);

2. SELECTkdsupp,nmsupp,kantorFROMsupplier2wherekdsuppin(SELECTkdsuppFROMpembelianWHERE
jmlBeli>= 200);

3. SELECTkdbrg,tglbeliFROMpembelianWHEREkdbrgin(SELECTkdbrgFROMbarangWHEREjumlah=150);

4. SELECTkdbrg,kdsupp,tglbeliFROMpembelianwherekdsuppin(SELECTkdsuppFROMsupplier2);

5. SELECTkdbrg,kdsupp,tglbeliFROMpembelianwheremonth(tglbeli)<'2'ANDkdsuppin(SELECTkds
uppFROMsupplier2);

Pengenalan View
View adalah perintah query yang disimpan pada database dengan suatu nama tertentu,
sehingga bisa digunakan setiap saat untuk melihat data tanpa menuliskan ulang query tersebut.
1. CREATEVIEWSupplier_KendalASSELECTkdsupp,nmsupp,alamat_kantorFROMsupplier2WHEREa
lamat_kantorlike'%kendal';
SELECT*FROMSupplier_Kendal

2. CREATEVIEWBarang_TerlarisASSELECTkdbrg,jmlbeli,kdsupp,tglbeliFROMpembelianwhere
jmlbeli>=1000;
SELECT*FROMBarang_Terlaris

3. CREATEVIEWBarang_MahalASSELECTkdbrg,nmbrg,hargaFROMbarangWHEREharga>=20000;
SELECT*FROMBarang_Mahal

Halaman | 30
4. CREATEVIEWSupplier_CVASSELECTkdsupp,nmsupp,kantor,alamat_kantorFROMsupplier2WHE
REkantorlike'CV%';
SELECT*FROMSupplier_CV

5. CREATEVIEWSupplier_UDASSELECT*FROMsupplier2WHEREkantorlike'ud%';
SELECTnmsupp,kantor,alamat_kantor,telp_kantorFROMSupplier_UD

PENGENALAN TRIGGER
Trigger adalah kode prosedural yang secara otomatis dieksekusi akibat dipicu oleh sebuah
event / kejadian pada suatu tabel.
1. CREATETRIGGERtrg_barang_after_insertONbarangAFTERINSERTASBEGINPRINT'Data telah
ditambah'END
INSERTINTOBarangVALUES('Brg011','Nivea','Lotion',450,30500);

2. CREATETRIGGERtrg_PEMBELIAN_after_insertONpembelianAFTERINSERTASBEGINPRINT'Data
pembelian telah ditambah'END
INSERTINTOPembelianVALUES('BL006','Brg011','Sup004','2018-10-10',300);

3. CREATETRIGGERtrg_brg_after_deleteONbarangAFTERDELETEAS DECLARE@nmbrgvarchar(40)
SELECT@nmbrg=nmbrg FROMDELETEDPRINT'Data dengan Nama Barang : '+@nmbrg+' telah
di hapus';
DELETEFROMBarangwherenmbrg='Kit';

4. CREATETRIGGERtrg_brg_after_updateONbarangAFTER UPDATE AS DECLARE


@namalamavarchar(40) ,@namabaruvarchar(40)SELECT@namalama=nmbrg
FROM DELETEDPRINT'Data dengan Nama Barang : '+@namalama+' telah diubah';
updatebarangsetnmbrg='KHQ'wherenmbrg='Aqua';

5. CREATETRIGGERtrg_PEMBELIAN2_after_insertONpembelianAFTERINSERTASBEGINPRINT'Data
pembelian telah ditambah'END
INSERTINTO PembelianVALUES('BL007','Brg008','Sup005','2018-11-12',1200);

Halaman | 31
SQL Exist
Perintah sub query bagian dari keluarga query
Contoh :
SELECT nmsupp FROM SUPPLIER2 WHERE EXISTS (Select kdbrg FROM Pembelian WHERE kdsupp=
SUPPLIER2.kdsupp)

SELECT nmbrg FROM Barang WHERE EXISTS (Select kdbrg FROM Pembelian WHERE kdbrg=
Barang.kdbrg)

SELECT nmsupp, kantor, alamat_kantor FROM SUPPLIER2 WHERE EXISTS (Select kdbrg FROM
Pembelian WHERE kdsupp= SUPPLIER2.kdsupp)

SELECT nmbrg, harga FROM Barang WHERE EXISTS (Select kdbrg FROM Pembelian WHERE kdbrg=
Barang.kdbrg)

SELECT kantor, telp_kantor, alamat_kantor FROM SUPPLIER2 WHERE EXISTS (Select kdsupp
FROM Pembelian WHERE kdsupp= SUPPLIER2.kdsupp)

SQL Case
Perintah CASE sering digunakan untuk menampilkan nilai tertentu dari beberapa
barisan data dengan syarat-syarat atau kondisi yang kita berikan. CASE digunakan untuk
beberapa kondisi sekaligus, dan didalam SQL perintah CASE tidak bisa berdiri sendiri
melainkan harus disisipkan dalam perintah SELECT. Jadi berbeda dengan perintah IF yang

Halaman | 32
lebih bebas, akan tetapi perintah IF hanya berguna apabila dimasukan dalam STORE
PROCEDURE, FUNCTION dan TRIGGER.
Perbedaannya dalam SQL sangat jelas sekali, karena perintah CASE disisipkan dalam
perintah SELECT jadi yang dihasilkan langsung berupa DATASET dan langsung bisa dilihat
hasilnya.
SELECT idbeli, jmlbeli,
CASE WHEN jmlbeli >= 1000 THEN 'Barang Sangat Laris'
WHEN jmlbeli between 100 and 500 THEN 'Barang Laris'
else 'Barang Kurang Diminati'
END FROM Pembelian;

SELECT kdbrg, nmbrg, jenisbrg, jumlah, harga,


CASE WHEN harga >= 10000 THEN 'Barang Mahal'
WHEN harga between 5000 and 10000 THEN 'Barang Ekonomis'
else 'Barang Murah'
END FROM Barang;

SELECT kdbrg, nmbrg, jumlah,


CASE WHEN jumlah >= 300 THEN 'Sangat Banyak'
WHEN jumlah between 100 and 300 THEN 'Banyak'
else 'Kurang'
END FROM Barang;

SELECT nmsupp, kantor, telp_kantor,


CASE WHEN kantor like 'PT%' THEN 'Perseroan Terbatas'
WHEN kantor like 'CV%' THEN 'Perusahaan CV'
else 'Kantor Lain'

Halaman | 33
END FROM SUPPLIER2;

SELECT nmsupp, kantor, telp_kantor,


CASE WHEN kantor like 'PT%' THEN 'Perseroan Terbatas'
WHEN kantor like 'CV%' THEN 'Perusahaan CV'
else 'Kantor Lain'
END as "Jenis Usaha"
FROM SUPPLIER2;

SQL Decode
SELECT nmsupp, DECODE (jekel,'Pria','L','Wanita','P') Gender, telp_kantor
FROM SUPPLIER2;

SQL Auto Increment


CREATE TABLE "auto"(
nomor int identity(1,1) primary key,
selang_waktu int,
ket varchar(25));

select* from auto;


insert into auto (selang_waktu, ket) values ('30','terang');
insert into auto (selang_waktu, ket) values ('10','buram');

CREATE TABLE "auto"(


selang_waktu int identity(12,3) primary key,
ket varchar(25));

select* from auto;


insert into auto (ket) values ('terang');
insert into auto (ket) values ('buram');
insert into auto (ket) values ('redup');

CREATE TABLE "lampu"(

Halaman | 34
waktu_sekon int identity(20,5) primary key,
ket varchar(25));

select* from lampu;


insert into lampu(ket) values ('terang');
insert into lampu (ket) values ('buram');
insert into lampu (ket) values ('redup');

SQL Sequence And Nextval


Contoh :
1. Membuat sequence

2. Menghapus sequence

create sequence lamp start with 20 increment by 5;


insert into lampu values (lamp.nextval, '20','terang');
insert into lampu values (lamp.nextval, '14','buram');
insert into lampu values (lamp.nextval, '18','redup');

Halaman | 35
BIODATA PEMBUAT
PROGRAM BUKU AJAR TERBIT
TAHUN 2018

Nama dan Gelar : Fikie Fauziyah


Progdi : Sistem Informasi
Perguruan Tinggi : Universitas Muria Kudus
Kota Perguruan Tinggi : Kudus
Judul Buku : Modul Pembelajaran SQL Server
Penerbit : Kelompok
Tahun Terbit : 2018

Kudus,15 Desember 2018

(Fikie Fauziyah)

Halaman | 36

Anda mungkin juga menyukai