ModulBasisDataSQL2008
ModulBasisDataSQL2008
Disusun oleh :
2015
Modul 1
Pengenalan Ms. SQL Server 2008
Untuk praktikum pengolahan basis data, server database yang digunakan adalah
Microsoft SQL Server 2008. SQL Server 2008 merupakan paket lengkap yang terdiri
dari:
1. SQL Server Service Manager
Merupaakan fasilitas yang mempunyai kemampuan untuk melakukan pengaturan
seluruh objek dari SQL Server, SQL Server Agent, dan Distributed Transaction.
2. SQL Server Profiler
Utilitas ini mempunyai fungsi untuk memonitor, merekam aktivitas kegiatan pada
server database sehingga mempunyai kemampuan untuk melakukan analisa
terhadap aktivitas server database.
3. SQL Query Analyzer
Tool ini adalah fasilitas yang digunakan untuk mengeksekusi pernyataan Transact-
SQL secara interaktif, seperti membuat database, edit, insert dan menghapus data.
4. Data Transformation Service
Digunakan untuk mentransfer data dari format SQL server ke format database lain
seperti format database Acces, Excel, Paradox atau sebaliknya.
c) Setelah itu pilih nama database dan tekan “OK” seperti gambar berikut.
Untuk memberi primary key, silahkan klik kanan pada kolom kemudian Pilih “Set
Primary Key”. Selanjutnya simpan tabel yang telah dibuat dengan klik simbol simpan.
Silahkan mengiskan data ke dalam tabel. Berikut adalah contoh data-data yang
diinputkan ke dalam tabel.
SQL merupakan singkatan dari Structured Query Langauge. Ada orang menyebut SQL
dengan istilah sequel, namun ada juga yang menyebut SQL saja. Pada dasarnya SQL
merupakan bahasa komputer standar yang ditetapkan oleh ANSI(American National
Standard Institute) untuk mengakses dan memanipulasi sistem database. SQL bisa
bekerja dengan baik pada program-program database seperti MS.Access , DB2,
Infomix, MS SQL Server, Oracle, Sybase dan lain sebagainya. Versi-versi SQL sangat
banyak tetapi aturan yang dipakai tetap sama pada setiap sintaks-sintaksnya.
Sebuah database dapat berisi satu atau lebih tabel yang setiap tabel memiliki nama
tersendiri atau unik. Tabel-tabel tersebut memiliki minimal satu kolom/field atau lebih
dan memiliki baris/record.
Untuk mengolah database, kita menggunakan query yang merupakan tindakan yang
biasa dilakukan sebagai rutinitasnya. Query itu sendiri merupakan perintah untuk
mengakses database. Contoh sebuah query sederhana:
Arti query di atas adalah” Pilih semua data Nama_Barang dari tabel Data_Barang”.
Bahasa query mengikuti standar bahasa Inggris yang mudah dimengerti.
Dalam praktikum kali ini, kita menggunakan program MS SQL Server 2000. Untuk
menjalankan perintah SQL kita akan menggunakan Query Analyzer yang telah
disediakan oleh SQL Server 2000. Tampilan awal dari Query Analyzer adalah sbb :
KETIKKAN QUERY
DI SINI
Data Definition Language (DDL) merupakan perintah SQL yang digunakan untuk
mendefinisikan dan mendeklarasikan suatu objek database, menciptakan objek database
atau menghapus objek database. Objek database tersebut dapat berupa database dan
tabel.
DDL dapat juga digunakan untuk membuat koneksi antar tabel dalam database beserta
batasannya dengan menentukan kolom indeks sebagai kuncinya. DDL yang biasa
digunakan adalah CREATE, DROP dan ALTER.
Sintaks :
USE DatabaseName
Contoh :
USE Penjualan
Keterangan :
@dbname : adalah nama database yang akan di attach
@filename1 : adalah letak file data yaitu yang berekstensi MDF
@filename2 : adalah letak file log yaitu yang berekstensi LDF
Sedangakan Script untuk detach database adalah sebagai berikut :
Keterangan :
Penjualan adalah nama database yang akan di detach
Catatan:
Sebelum membuat tabel maka anda harus mengaktifkan database yang akan
dibuat tabelnya dengan perintah USE.
Contoh:
USE PBD
Tanda [ ] berarti bahwa perintah tersebut bersifat optional, artinya boleh
diikutsertakan atau boleh juga diabaikan, tergantung dari keperluan. Misalnya,
jika kita ingin membuat primary key pada table yang kita buat, maka kita harus
menyertakan kata kunci primary key.
Contoh :
CREATE TABLE dokter(
kd_dokter varchar(5) primary key not null,
nama varchar(30),
gender char(1) check(gender='L' or gender='P'),
alamat varchar(30),
gaji numeric
)
Catatan :
Null tidak sama dengan nol, tetapi memiliki arti bahwa kolom atau field tersebut
tidak ada data yang dimasukkan.
Not null menyatakan bahwa data pada kolom tersebut tidak boleh kosong dan
harus diisi.
Identity atau yang biasa disebut dengan istilah autonumber adalah nilai yang dihasilkan
oleh sistem secara otomatis dan terurut sesuai dengan nilai urutan yang dimasukkan.
Contoh di atas kolom kode resep (kd_resep int identity(1,1)) akan terurut mulai
dari angka 1 dengan pertambahan pengurutan 1 nilai.
DROP Nama_objek
Contoh:
Contoh:
Menambah kolom agama pada tabel dokter dengan type data varchar(10)
Jika hanya ada 6 agama yang boleh dimasukkan ke dalam kolom agama, maka pada
tabel dokter maka kita bisa memakai perintah :
Perintah IN mempunyai arti semua data dalam kurung adalah benar. IN merupakan
alternatif untuk mengganti perintah OR yang terlalu banyak. Seperti contoh yang sama
di bawah ini :
Sebuah tabel mempunyai sebuah kolom atau kombinasi beberapa kolom yang nilainya
secara urut mengidentifikasi sebuah baris dalam tabel. Kolom-kolom seperti ini disebut
dangan primary key. Sebuah tabel bisa terdiri dari beberapa primary key.
Sedangkan foreign key merupakan kolom atau kombiansi kolom yang dipakai unutk
menghubungkan sebuah table dengan table lainnya. Kolom yang didefinisikan sebuah
foreign key harus selalu merujuk kepada kolom primary key dari tabel asal baik tipe
data maupun isi datanya.
Tabel dokter
Kolom Tipe Data Keterangan
Kd_dokter Varchar(5) Primary key not null
Nama Varchar(30) Not null
Alamat Varchar(30)
Gender Char(1) Check(L/P)
Gaji Numeric
Tabel pasien
Kolom Tipe Data Keterangan
Kd_pasien Varchar(5) Primary key not null
Nama Varchar(30) Not null
Alamat Varchar(30)
Gender Char(1) Check(L/P)
Periksa Numeric
Tabel penyakit
Kolom Tipe Data Keterangan
Kd_penyakit Varchar(5) Primary key not null
Penyakit Varchar(30) Not null
Tabel obat
Kolom Tipe Data Keterangan
Kd_obat Varchar(5) Primary key not null
Obat Varchar(30) Not null
Tabel resep
Kolom Tipe Data Keterangan
Kd_resep Int Identity (1,1) Primary key not null
Hari Varchar(10) Check (senin,selasa,rabu,kamis,jumat,sabtu)
Tanggal Datetime
Kd_pasien Varchar(5) Foreign key (pasien.kd_pasien)
Kd_penyakit Varchar(5) Foreign key (penyakit.kd_penyakit)
Kd_obat Varchar(5) Foreign key (obat.kd_obat)
Kd_dokter Varchar(5) Foreign key (dokter.kd_dokter)
Dokter
Pasien
Penyakit
Kd_penyakit Penyakit
K0001 Batuk
K0002 Panu
K0003 Kadas
K0004 Kurap
K0005 Konstipasi
K0006 Migrain
K0007 Tipus
K0008 Hepatitis
K0009 Diabetes
K0010 Hipertensi
Obat
Kd_obat Obat
M0001 Antalgin
M0002 Parasetamol
M0003 CTM
M0004 Antibiotik
M0005 Salep
M0006 Dulcolax
M0007 Pacepil
M0008 Imunolax
M0009 Hiposetamol
M0010 Metromex
Resep
Contoh :
Menampilkan data-data dokter
WHERE Digunakan untuk menyatakan kondisi yang harus dipenuhi oleh sebuah record
data yang akan dipilih oleh perintah SELECT.
Operator Pengertian
= Sama Dengan
<> Tidak Sama Dengan
> Lebih Besar
< Lebih Kecil
>= Lebih Besar atau Sama Dengan
<= Lebih Kecil atau Sama Dengan
BETWEEN Diantara Dua Nilai
LIKE Mencari Bagian yang sama
AND Menggabungkan Dua Kondisi
NOT Menolak Kondisi
OR Syarat Kondisi Untuk Setiap Pilihan
Operator logika terdiri dari AND, OR, dan NOT. Operator AND dan OR
digunakan membandingkan kondisi pada klausa WHERE. Operator NOT digunakan
untuk mencari nilai kebalikan dari kondisi yang dicari.
4.3.2 DISTINCT
Apabila kita ingin menampilkan data tetapi data yang sama tidak ditampilkan berulang-
ulang maka kita bisa menggunakan kata kunci DISTINCT. Perintah ini dilakukan jika
terdapat banyak data yang sama dalam satu kolom.
Sintaks UMUM :
4.3.3 BETWEEN
Perintah ini jika kita ingin mengambil beberapa data yang terletak antara nilai dalam
klausa BETWEEN. Hanya berlaku pada data yang bertipe numeric dan string.
Sintaks UMUM :
Perintah ini digunakan untuk menampilkan beberapa data paling atas dari hasil
SELECT. Misalnya kita ingin menampilkan 3 data paling atas saja.
Sintaks UMUM :
Contoh :
Menampilkan 3 data saja dari urutan paling atas :
4.3.5 IS NULL
NULL adalah nilai dari sebuah field atau kolom yang tidak memiliki data apapun.
NULL tidak sama dengan sebuah karakter spasi dan atau nilai 0 pada data numeric.
4.3.6 Sorting
Untuk mengurutkan data-data dari hasil SELECT, klausa yang digunakan ialah ORDER
BY. Proses pengurutan dapat dilakukan secara ascending maupun descending. Secara
default pengurutan dilakukan secara ascending.
5.1 LIKE
LIKE digunakan untuk mengambil data dengan pencarian data yang memiliki bagian
yang sama dalam klausa LIKE tersebut. Dengan menggunakan kondisi LIKE karakter
apapun dapat dicari, dapat berupa satu, dua, atau semua karakter yang ada didalam
string yang akan dicari. Ada beberapa hal yang harus diketahui dalam klausa LIKE,
diantaranya
Tanda % (percent)
Tanda % digunakan untuk mewakili semua karakter. Tanda ini bisa diletakkan di bagian
depan, tengah maupun belakang.
Contoh :
1. Menampilkan data dokter yang namanya memiliki karakter pertama huruf „E‟
SELECT * FROM dokter WHERE nama LIKE ‘E%’
2. Menampilkan data dokter yang namanya memiliki karakter terakhir huruf „O‟
Tanda _ (underscore)
Tanda _ digunakan untuk mewakili sebuah karakter. Tanda ini juga bisa diletakkan di
bagian depan, tengah maupun belakang.
Contoh :
Misalnya dari tabel dokter yang ada, apabila kita ingin menampilkan data dokter yang
memiliki nama dengan karakter kedua adalah „U‟, maka bisa digunakan perintah:
Jogja%
Jogya%
Yogya%
Yogja%
Contoh:
Mengganti nama dan alamat dokter yang memiliki kode dokter D0001
UPDATE dokter SET nama=’Ema Utami Saja’, alamat=’Semarang’
WHERE kd_dokter=’D0001’
Catatan:
Hati-hati jika menggunakan perintah UPDATE yang tidak menyertakan klausa WHERE
akan mengakibatkan semua data dalam tabel yang dirujuk akan diganti dengan nilai
yang diisikan.
5.4 DELETE
DELETE digunakan untuk melakukan penghapusan pada data. Sintaks umum yang
biasa digunakan:
DELETE FROM nama_tabel WHERE kondisi
Contoh:
Menghapus data dokter yang mempunyai kode dokter D0003
DELETE FROM dokter WHERE kd_dokter=’D0003’
Catatan:
Hati-hati jika menggunakan perintah DELETE yang tidak menyertakan klausa WHERE
akan mengakibatkan semua data dalam tabel yang dirujuk akan terhapus.
Nasabah_xxxx
Kd_nasabah
Nama Cabang_xxxx
Alamat
Rekening
Kd_cabang Kd_cabang
Saldo Nama
Alamat
Jml_nasabah
Tabel nasabah_xxxx
Kolom Tipe Data Keterangan
Kd_nasabah Varchar(5) Primary key not null
Nama Varchar(30) Not null
Alamat Varchar(30) Not null
Rekening Numeric Not null
Kd_cabang Varchar(5) Foreign key (cabang.kd_cabang) not null
Saldo Numeric Not null
Soal:
1. Tampilkan semua nama nasabah, alamat, dan saldonya
2. Tampilkan nama nasabah dengan saldo > 2000000
3. Tampilkan nama nasabah dengan alamat Gejayan
4. Tampilkan nama nasabah dengan kode cabang KC003
5. Tampilkan semua data kantor cabang (nama dan alamat)
6. Tampilkan nama kantor cabang dengan alamat Kauman
7. Tampilkan nama kantor cabang dengan jumlah nasabah > 6 orang
8. Update data kantor cabang dengan kode KC002 menjadi
Nama : KC RSJ Pakem
Alamat : Pakem
Jumlah nasabah : 7
9. Hapus data semua kantor cabang dengan jumlah nasabah kurang dari 5
10. Update data nasabah dengan kode N0010 menjadi
Alamat : Monjali
Saldo : 4000000
11. Hapus semua data nasabah dengan alamat Terban
Contoh:
1. Menghitung jumlah pasien
Selain contoh dasar di atas, fungsi agregate juga bisa dikombinasikan dengan
penggunaan kondisi WHERE. Seperti contoh di bawah ini:
1. Menghitung jumlah pasien yang telah diperiksa lebih dari 2 kali
SELECT COUNT(kd_pasien) FROM pasien WHERE periksa>2
Perlu diketahui :
Bahwa AVG, MAX, MIN, SUM, COUNT mengabaikan nilai NULL. Sedangkan
COUNT(*) tidak mengabaikan nilai NULL.
keterangan :
Jika kolom alias ada spasi maka gunakan [ ],‟ „ untuk kolom alias tersebut.
Contoh:
SELECT COUNT(kd_pasien) AS [Jumlah Pasien Dari Yogyakarta]
FROM pasien WHERE alamat='Yogyakarta'
7.3 Praktikum
1. Buatlah perintah untuk menghitung jumlah dokter yang ada.
2. Buatlah perintah untuk menghitung gaji dokter tertinggi dan terendah
3. Buatlah perintah untuk menghitung rata-rata gaji dokter
4. Buatlah perintah untuk menghitung jumlah gaji semua dokter
5. Buatlah perintah untuk menampilkan nama dokter dengan gaji tertinggi dan terendah
6. Buatlah perintah untuk menampilkan jumlah dokter dari Yogyakarta dengan nama
alias kolom ‟Jumlah Dokter dari Yogyakarta‟
8.1 Grouping
Grouping ialah proses pengelompokkan data yang dilakukan berdasarkan daftar kolom
yang disebutkan dalam SELECT.
Sintaks dasar :
Catatan :
1. Semua kolom yang berada dalam daftar SELECT yang tidak berada dalam
group function harus ditulis dalam klausa GROUP BY.
2. Semua pengelompokan mengabaikan nilai NULL di dalam kolom.
3. HAVING digunakan untuk membatasi hasil pengolompokan ( group ).
8.2 Praktikum
1. Buatlah perintah untuk menampilkan jumlah dokter dari tiap daerah
2. Buatlah perintah untuk menampilkan jumlah pasien berdasar jumlah periksa
3. Buatlah perintah untuk menampilkan jumlah jadwal periksa dari tiap dokter dalam
satu
minggu
9.1 Join
Join merupakan sebuah operasi yang digunakan untuk mendapatkan data
gabungan dari dua tabel atau lebih. Operasi ini digunakan dalam perintah SELECT dan
biasanya dipakai untuk memperoleh data secara detail dari tabel-tabel yang saling
terkait (memiliki relasi). Misalnya karena tabel jadwal_dokter hanya memuat kode
dokter saja tanpa nama dokter, maka kita harus melakukan join dengan tabel dokter
yang memuat nama dokter.
2. Inner Join
Inner join menghasilkan output berupa kombinasi baris-baris yang memiliki
pasangan saja. Kombinasi baris yang tidak berpasangan akan dieliminasi atau
tidak digunakan. Baris-baris yang tidak memiliki pasangan pada tabel lainnya
juga tidak dimunculkan.
3. Outer Join
Outer join hampir sama dengan inner join, hanya saja baris yang tak memiliki
pasangan tetap akan ditampilkan. Outer join dibagi menjadi tiga, yaitu:
Left join
Right join
Full outer join
Contoh:
Perintah untuk menggabungkan data tabel jadwal_dokter dengan tabel dokter
SELECT * FROM jadwal_dokter INNER JOIN dokter
ON jadwal_dokter.kd_dokter=dokter.kd_dokter
Setelah menjalankan query di atas, ada terdapat beberapa persamaan dan perbedaan
antara operasi join yang satu dengan lainnya. Yang menjadi kesamaannya ialah bahwa
semua operasi join pasti menggabungkan beberapa tabel untuk mendapatkan data
gabungan, sedangkan perbedaan antara cross join dengan jenis join lainnya adalah
dengan ada tidaknya persyaratan atau pengecekan kondisi join. Cross join merupakan
jenis join yang tidak memakai persyaratan, sementara jenis join lainnya memerlukan
persyaratan. Persyaratan yang dimaksud adalah data pada kolom foreign key di tabel
yang merujuk harus sama dengan data pada kolom primary key di tabel yang dirujuk.
Secara umum persyaratan atau kondisi tersebut dapat dituliskan sebagai berikut:
tabel_1.kolom_primary_key = tabel_2.kolom_foreign_key
Sintaks tersebut dapat ditulis secara terbalik dan tetap memiliki arti yang sama, sebagai
berikut:
tabel_2.kolom_foreign_key = tabel_1.kolom_primary_key
Catatan:
Kolom-kolom_foreign_key pada tabel_2 harus mereferensi ke kolom_primary_key
pada tabel_1.
Cara pertama lebih singkat dan akan lebih terasa jika yang di-joinkan lebih dari dua
tabel. Hal ini terjadi karena keyword JOIN dan ON merupakan satu kesatuan yang
hanya dapat diterapkan pada dua buah tabel saja. Untuk lebih dari dua tabel kita harus
menuliskan JOIN dan ON berulang kali. Perhatikan contoh berikut:
Walaupun penulisannya lebih panjang tapi bentuk yang kedua lebih dianjurkan karena
membutuhkam memory yang lebih sedikit dan prosesnya lebih cepat. Hal ini akan
terasa sekali jika melibatkan tabel-tabel dengan data yang banyak. Tidak seperti inner
join, penulisannya hanya ada satu cara. Walaupun demikian kita dapat menyingkat
dengan menghilangkan keyword OUTER, sehingga LEFT OUTER JOIN dapat
disingkat menjadai LEFT JOIN dan seterusnya.
Contoh:
Menampilkan nama dokter dengan jadwal praktiknya
11.2 Praktikum
1) Buatlah perintah untuk menampilkan data resep (kode resep, hari,
tanggal, nama pasien, nama penyakit, nama obat, nama dokter
periksa)
2) Buatlah perintah untuk menampilkan nama dokter yang praktiknya hari jumat
dan sabtu
3) Buatlah perintah untuk menampilkan nama pasien yang diperiksa tanggal 5
Agustus 2006
pembelian penjualan
Kd_pembelian Kd_penjualan
Hari Hari
Tanggal barang Tanggal
Kd_supplier Kd_agen
Kd_barang Kd_barang Kd_barang
Jumlah Barang Jumlah
supplier agen
Kd_supplier Kd_agen
Supplier Agen
Alamat Alamat
Soal:
1. Tampilkan data pembelian (kode pembelian, hari, tanggal, nama