Академический Документы
Профессиональный Документы
Культура Документы
September 2011
For the latest information, please see bluejack.binus.ac.id
i|Page
Information in this document, including URL and other Internet Web site references, is
subject to change without notice. This document supports a preliminary release of software
that may be changed substantially prior to final commercial release, and is the proprietary
information of Binus University.
The entire risk of the use or the results from the use of this document remains with the
user. Complying with all applicable copyright laws is the responsibility of the user. Without
limiting the rights under copyright, no part of this document may be reproduced, stored in
or introduced into a retrieval system, or transmitted in any form or by any means
(electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without
the express written permission of Binus University.
Unless otherwise noted, the example companies, organizations, products, domain names, e-
mail addresses, logos, people, places and events depicted herein are fictitious, and no
association with any real company, organization, product, domain name, email address,
logo, person, place or event is intended or should be inferred.
The names of actual companies and products mentioned herein may be the trademarks of
their respective owners.
ii | P a g e
Table of Contents
OVERVIEW ..................................................................................................... iii
Chapter 01 Introduction to SQL.......................................................................... 1
Chapter 02 Data Definition Language ................................................................ 21
Chapter 03 Data Manipulation Language Basic ................................................... 40
Chapter 04 Data Manipulation Language Intermediate ........................................ 49
Chapter 05 Data Manipulation Language Advanced ............................................. 60
Chapter 06 Data Control Language ................................................................... 74
Chapter 07 Advanced Query ............................................................................ 97
Chapter 08 Database Design ......................................................................... 123
iii | P a g e
OVERVIEW
Chapter 01
• Introduction to SQL
Chapter 02
• Data Definition Language
Chapter 03
• Data Manipulation Languange Basic
Chapter 04
• Data Manipulation Languange Intermediate
Chapter 05
• Data Manipulation Languange Advance
Chapter 06
Data Control Language
Chapter 07
• Advanced Query
Chapter 08
• Database Design
1|Page
Chapter 01
Introduction to SQL
Objectives
1. Introduction To Database
2. Introduction To Sql Server
3. Database (Diagram, Table, View, Stored Procedure, Users, Roles)
4. Attach & Detach Database
5. Import & Export Data
6. Backup & Restore Database
7. Query Execution
Learning Outcomes
1. Describe database systems, terminology, environment, and new concept of database
2. Apply database language and SQL Programming language
2|Page
Database atau basis data merupakan bagian sangat penting dalam sebuah proses
pengolahan data. Basis data adalah koleksi data yang saling berhubungan dan memiliki arti dan
terorganisasi secara rapi. Data tersebut harus dapat diakses dengan urutan yang berbeda-beda
secara logis dengan cara yang relatif mudah.
Suatu sistem basis data terdiri dari empat komponen yaitu data, yang secara fisik
menyimpan informasi-informasi, Database Management System (DBMS) yaitu software yang
mengelola basis data, Data Definition language (DDL) dan Data Manipulation Language
(DML) yaitu basis data yang berfungsi untuk mendeskripsikan data ke database management
system (DBMS) dan juga member fasilitas untuk melakukan perubahan, pemeliharaan, dan
pengelolaan basis data, dan program aplikasi yang memudahkan pengguna akhir untuk
menggunakan data dan mendapatkannya sebagai informasi yang sesuai.
tertentu, sebuah website bisa melayani sampai ratusan, atau bahkan ribuan artikel untuk
pengunjung website. Pada saat yang sama, pengguna lain dapat memperbarui profil pribadi
mereka pada menu anggota, atau berlangganan newsletter, atau apapun yang pengguna situs web
lakukan.
Table
Fondasi dari setiap Relational Database Management System adalah objek database yang
disebut table. Setiap database terdiri dari satu atau lebih tabel, yang menyimpan data / informasi
database. Setiap tabel memiliki nama yang unik dan terdiri dari kolom dan baris. Setiap tabel
terdiri dari serangkaian kolom yang berisi informasi tentang jenis data yang tersimpan dalam
tabel. Setiap kolom harus diberi nama, tipe data, dan panjang. Tabel A juga dapat memiliki satu
set foreign key, key constraint, rules dan index. Kolom, index, constraint, dan trigger pada
suatu tabel akan dianggap properti dari tabel dalam database diagram.
Kolom-kolom pada tabel database (disebut juga field tabel) memiliki nama-nama mereka
sendiri yang unik dan memiliki tipe data yang telah didefinisikan sebelumnya. Kolom-kolom
pada tabel juga dapat memiliki atribut yang mendefinisikan fungsi kolom tersebut (kolom
4|Page
sebagai primary key, kolom tidak memiliki indeks yang didefinisikan pada kolom tersebut,
kolom memiliki nilai default tertentu, dan sebagainya).
Jika kolom pada tabel menggambarkan tipe data, baris pada tabel berisi data aktual untuk
kolom tersebut.
View
Data pada SQL Server disimpan dalam bentuk tabel dan Anda dapat melakukan
pengolahan data secara fisik pada tabel tersebut. Begitu juga dengan View, View dapat juga
dipakai untuk pemanggilan data. Namun view tidak menyimpan data secara fisik pada disk.View
adalah salah satu objek database yang merupakan turunan dari satu atau lebih tabel.
Dalam SQL Server,View merupakan tabel virtual. Sama seperti tabel sebenarnya, View
terdiri dari baris dan kolom, dan Anda dapat mengambil data dari View (kadang-kadang bahkan
update data dalam sebuah View). Field dalam tabel virtual View adalah bidang dari satu atau
lebih tabel nyata dalam database.
Anda dapat menggunakan View untuk menyajikan data yang diambil dari dua tabel yang
digabungkan, namun seolah-olah berasal dari satu tabel sehingga menyederhanakan skema dari
database Anda bagi pengguna melakukan laporan ad-hoc.
Anda juga dapat menggunakan View sebagai mekanisme keamanan untuk membatasi
data yang tersedia bagi pengguna akhir. View juga dapat berupa data agregat (sangat berguna jika
Anda dapat mengambil keuntungan dari indexed views), dan membantu data partisi.
Kegunaan View:
- Untuk menyembunyikan kompleksitas dalam skema database, atau menyesuaikan data dan
skema untuk satu set pengguna.
- Untuk mengontrol akses ke baris dan kolom data.
- Untuk menampilkan hasil perhitungan data.
- Untuk membuat laporan.
Stored Procedure
Stored Procedure adalah sekelompok pernyataan Transact-SQL yang dikompilasi
menjadi rencana eksekusi tunggal. Prosedur yang disimpan sangat membantu dalam mencapai
implementasi yang konsisten dari logika di seluruh aplikasi. Statement dalam SQL dan logika
5|Page
yang diperlukan untuk melakukan tugas dapat dirancang, dikode, dan diuji sekali dalam prosedur
yang tersimpan. Koding logika bisnis menjadi prosedur yang tersimpan tunggal juga
menawarkan satu titik kontrol untuk memastikan bahwa aturan-aturan bisnis dengan benar
ditegakkan.
Users
Untuk dapat terhubung ke sebuah instance SQL Server, pertama anda harus login terlebih
dahulu sehingga instance dapat mengotentikasi Anda (tahu siapa Anda). Tetapi untuk melakukan
operasi pada database, Anda memerlukan User account dalam database tersebut. User account
digunakan untuk mengakses database. Jadi anda bisa login, tapi jika Anda tidak memiliki akun
user yang berhubungan untuk login itu, Anda tidak akan dapat mengakses database tersebut.
SQL Server memungkinkan untuk membuat login bagi pengguna. Setiap individu yang
membutuhkan akses ke SQL Server dapat diberikan user account mereka sendiri.
Ketika administrator mengkonfigurasi user login ini, ia dapat menetapkan mereka ke
sejumlah peran dan skema, tergantung pada akses individu yang berhak.
Roles
Ketika membuat login user baru di SQL Server, Anda dapat memilih untuk menempatkan
user baru ini ke satu atau lebih Server Roles(peran) pada server.
Server Roles (jangan dikelirukan dengan peran database) tersedia untuk melakukan
berbagai tugas administrasi dalam database. Tidak semua orang bisa mendapatkan server role.
Pada kenyataannya, hanya pengguna seperti database administrator yang diberikan server role.
Beberapa peran dalam SQL Server sys admin, server admin, setup admin, security
admin, process admin, db creator, disk admin, bulk admin, public.
6|Page
Tentukan file database yang akan di Attach, setelah itu klik OK.
8|Page
Terdapat dua tujuan utama dalam backup. Yang pertama adalah untuk memulihkan
keadaan setelah terjadi bencana (disaster recover). Yang kedua adalah untuk mengembalikan
sejumlah file kecil setelah secera sengajaterhapus atau rusak. Kehilangan data merupakan hal
sangat umum, 66% dari pengguna internet telah mengalami kehilangan data yang serius.
Restore berguna untuk mengembalikan ke dalam keadaan semula dan membuat restitusi.
Backup dan Restore adalah adalah proses menyalin data terlebih dahulu dengan tujuan spesifik
untuk mengembalikan data yang sama setelah suatu peristiwa yang dapat mengakibatkan
hilangnya data.
Lalu setelah kotak dialog Back Up Database muncul, klik Add untuk menambahkan alamat
kemana hasil backup akan disimpan.
Kemudian akan muncul kotak dialog Select Backup Destination, lalu tentukan kemana hasil back
up akan disimpan, lalu klik OK.
14 | P a g e
15 | P a g e
Lalu setelah kotak dialog Restore Database muncul, tentukan tujuan database yang akan di
restore lalu pilih From device untuk menentukan lokasi file yang mau di restore.
Setelah itu pilihlah file yang akan di restore, kemudian klik OK.
18 | P a g e
1. SELECT
2. FROM
3. WHERE
4. GROUP BY
5. ORDER BY
6. HAVING
7. CUBE | ROLLUP
8. ON
19 | P a g e
9. DISTINCT
10. OUTER
11. TOP
SQL Query Analyzer adalah antarmuka utama untuk menjalankan query SQL terhadap
database Anda. Anda dapat menggunakan SQL Query Analyzer untuk membuat dan
menjalankan script adhoc, atau anda dapat membuat skrip SQL dan menyimpannya untuk
digunakan.
Pada dasarnya kalau kita bekerja dengan Microsoft SQL Server kita harus masuk atau
joint ke Server, baik kalau kita bekerja dengan SQL Enterprise Manager maupun dengan SQL
Query Analyzer. Hanya kalau kita masuk melalui SQL Enterprise Manager kita bisa langsung
menggunakan fasilitas yang ada seperti membuka database, membuat database baru, membuat
dan membuka tabel, dan lain-lain. Tetapi apabila Anda bekerja di lingkungan Query Analyzer
Anda harus menggunakan Transact-SQL baik untuk membuat database, tabel, maupun yang
lainnya.
Langkah :
1. KlikNew Query
2. Kemudian masukan query yang ingin di jalankan blog query klik Execute
20 | P a g e
21 | P a g e
Chapter 02
Data Definition Language
Objectives
1. Create & Drop Database
2. Create & Drop Table
3. Alter Statement
4. Create & Drop Index
5. Create & Drop View
Learning Outcomes
1. Apply database language and SQL Programming language
22 | P a g e
Langkah :
1. Pada bagian Object Explorer, pilih folder Database
Drop Database
Untuk menghapus database.
Langkah :
1. Pada bagian Object Explorer, klik kanan pada folder Database yang ingin dihapus dan
pilih Delete
25 | P a g e
Langkah :
1. Pada bagian Object Explorer, expand Database kemudian pada bagian Tables klik kanan
pilih new table
26 | P a g e
2. Isi nama kolom dan tipe datanya Kemudian tekan ctrl+ s dan isi nama tabelnya
27 | P a g e
Sintaks :
Contoh :
Nama Tabel : MsCustomer
Nama Field Tipe Data Length
CustomerId char 5
Name varchar 30
Address varchar 50
Phone varchar 15
Constraint Statement
Constraint merupakan sebuah batasan yang digunakan untuk memberikan
properti khusus yang memberikan integritas data dan membuat indeks-indeks pada tabel dan
kolom yang di tunjuk. Constraint berguna untuk penerapan sebuah ketentuan pada table dan
untuk mencegah penghapusan table jika terdapat ketentuan-ketentuan yang telah dibuat.
28 | P a g e
Macam-macam Constraint
NOT NULL
Constraint ini berguna untuk memberlakukan sebuah column untuk tidak menerima nilai
NULL.
UNIQUE
Constraint ini berguna untuk mengidentifikasikan keunikan setiap record sebuah table
dalam database.
DEFAULT
Digunakan untuk memasukkan nilai default kedalam sebuah kolom yang ditunjuk pada
table. Nilai default akan ditambahkan ke dalam semua record baru, jika tidak ada nilai lain
yang ditentukan.
CHECK
Digunakan untukmembatasirentangnilaiyangdapatditempatkandalam sebuah kolom pada
table.
29 | P a g e
PRIMARY KEY
Constraint ini berguna untuk mengidentifikasikan keunikan setiap record sebuah table
dalam database. Primary Key harus mengandung nilai keunikan dan tidak dapat menerima
nilai NULL.
FOREIGN KEY
Foreign Key merupakan sebuah kumpulan field dalam satu relasi yang digunakan
untuk menunjuk ke suatu baris (tuple) pada relasi yang lain (harus berkorespondensi
dengan primary key pada relasi yang kedua).
MsCustomer
TrHeaderOrder
PK CustomerId
PK OrderId
CustomerName
FK1 CustomerId
CustomerAddress
OrderDate
CustomerPhone
Referential Integrity
Referential Integrity digunakan untuk menjaga konsistensi baris-baris data antara dua
buah tabel. Aturan ini mengharuskan sebuah baris pada sebuah tabel yang terelasikan pada
tabel lain harus mengacu pada sebuah baris di dalam tabel tersebut. Aturan untuk referential
integrity biasanya digunakan jika terjadi proses modifikasi data.Hubungan referential
integriry didefinisikandenganForeign KeydanklausaPrimary Keydalam perintah Create
Table.
Saat kita melakukan on update atau on delete kita bisa menambahkan pilihan sebagai berikut
:
NO ACTION
Jika kita melakukan update pada primary key yang ditunjuk atau delete pada record
yang ditunjuk maka tidak melakukan reaksi apa pun.
CASCADE
Jika kita melakukan update pada primary key yang ditunjuk, maka foreign key akan
ikut ter-update. Jika kita melakukan delete pada record yang ditunjuk maka record-
record dari foreign key akan ikut ter-delete.
SET NULL
Jika kita melakukan update pada primary key yang ditunjuk atau delete pada record
yang ditunjuk maka foreign key akan berisi nilai null.
31 | P a g e
SET DEFAULT
Jika kita melakukan update pada primary key yang ditunjuk atau delete pada record
yang ditunjuk maka foreign key akan berisi nilai default
MsStudent
TrHeaderBorrowing
PK StudentId
PK BorrowId
StudentName
FK1 StudentId
StudentAddress
BorrowDate
PhoneNumber
Major
TrDetailBorrowing MsBook
PK,FK1 BorrowId PK BookId
PK,FK2 BookId
BookName
Qty Author
Publisher
Catatan
% mewakili banyak character atau tidak ada karakter
_ mewakili satu character
[] range
32 | P a g e
Drop Table
Untuk menghapus table dalam database
Langkah :
1. Pada bagian Object Explorer, expand Database kemudian expand Tables lalu klik kanan
pada table yang mau dihapus lalu pilih Delete
33 | P a g e
Sintaks :
DROP TABLE [ table_name ]
Contoh :
Catatan
Jika ada tabel yang ber relasi, drop tabel yang mengandung fereignkey dulu baru
yang mengandung primary key
34 | P a g e
Sintaks
1. Add new column
Contoh :
Contoh :
Contoh :
Contoh :
Contoh :
Contoh :
36 | P a g e
Sintaks :
Contoh :
Drop Index
Untuk menghapus index yang ada
Sintaks :
DROP INDEX[ index_name ] ON [table_name]
37 | P a g e
Contoh :
Sintaks :
CREATE VIEW [view_name] (column 1, column 2)
AS
Select column 1, column 2…
FROM [table name]
WHERE [condition]
Contoh :
Drop View
Sintaks :
DROP VIEW [view_name]
Contoh :
2.6. Exercise
1. Buatlah sebuah database baru dengan nama Android_Database
2. Buatlah sebuah tabel dengan data sebagai berikut :
38 | P a g e
MsCustomer TrHeaderSales
PK CustomerId PK SalesId
Name SalesDate
Address Note
Phone FK1 CustomerId
3. Buatlah sebuah index dengan nama CustIndex pada CustomerId didalam MsCustomer
(create index)
4. Hapuslah Index CustIndex pada soal 3
(drop index)
5. Hapuslah table TrHeaderSales pada soal 2
(drop table)
6. Buatlah sebuah view dengan nama ViewInfoCustomer untuk menampilkan Name, Address
dan phone yang ada pada tabel MsCustomerdimana CustomerId adalah „CU017‟.
(create view, select)
7. Hapus view bernama ViewInfoCustomer yang telah dibuat pada soal nomor 6
(drop view)
8. Ubahlah table MsCustomer dengan menambahkan column baru yaitu column gender dengan
tipe data varchar size 20
39 | P a g e
Answer
1.
2.
3.
4.
5.
6.
7.
8.
40 | P a g e
Chapter 03
Data Manipulation Language Basic
Objectives
1. Insert
2. Update
3. Delete
4. Commit
5. Rollback
Learning Outcomes
1. Describe database systems, terminology, environment, and new concept of database
2. Apply database language and SQL Programming language
41 | P a g e
3.1. Insert
Digunakan untuk memasukkan data-data ke dalam tabel yang sudah dibuat sebelumnya
Sintaks :
INSERT INTO [table_name]([column_1],[column_2],[column_3],…) VALUES
([value_1], [value_2], [value_3]..)
Contoh :
Masukkan data karyawan baru yang bernama Ucok dengan kode karyawan KK006, alamat di Jl.
Pisang No.33 dan TelpKaryawan 3216548.
Jawab :
3.2. Update
Digunakan untuk melakukan perubahan data yang ada di dalam table.
Sintaks:
UPDATE [table_name] SET [column_1] = [new value], [column_2] = [new value], [column_3]
= [new value],… WHERE {condition}
Contoh :
Ubalah NamaKaryawan dengan kodeKaryawan KK002 menjadi “Indrawan S.Kom”
Jawab :
3.3. Delete
Digunakan untuk melakukan penghapusan data yang ada di dalam table.
Sintaks:
DELETE FROM [table_name] WHERE {condition}
42 | P a g e
Contoh :
Hapuslah data pelanggan dimana NamaPelanggan mengandung kata “Lestari”.
Sebelum proses delete:
Jawab :
3.4. Commit
Digunakan untuk membuat semua perubahan data yang dilakukan sejak transaksi dimulai
menjadi permanen di database kita.
Contoh :
Hapuslah data-data pada MsGame dimana NamaGame mengandung kata “Dead”.
43 | P a g e
Jawab :
3.5. Rollback
Digunakan untuk mengembalikan transaksi yang telah dilakukan ke awal transaksi, atau pada
suatu titik aman tertentu dalam transaksi.
Contoh:
Hapuslah data-data pada MsGame dimana NamaGame mengandung kata “moon”.
Data sebelum proses delete:
Jawab :
3.6. Exercise
1. Masukkan data karyawan baru yang bernama Wandi dengan kode karyawan KK007,
alamatKaryawan di Jl. Rambutan No.44 dan TelpKaryawan 111222.
(insert)
2. Masukkan data karyawan baru yang bernama Pandu dengan kode karyawan KK008 dan
alamatKaryawan di Jl. Cherry No.66.
(insert)
3. Ubahlah semua TelpPelanggan yang masih kosong (NULL) dengan kalimat „N/A‟.
(update, is null)
45 | P a g e
4. Ubahlah Qty pada TrDetailPenjualan dengan menambah 1 pada masing-masing Qty yang
TglTransaksinya terjadi pada bulan Mei dan tahun 2009.
(update, month, year)
46 | P a g e
Chapter 04
Data Manipulation Language Intermediate
Objectives
1. Select Statement
2. SQL Syntax
3. SQL Operator
- Operator Aritmatik
- Operator Logika
Learning Outcomes
1. Describe database systems, terminology, environment, and new concept of database
2. Apply database language and SQL Programming language
50 | P a g e
Contoh :
Tampilkan semua data pada tabel MsKaryawan.
Jawab :
Bentuk umum
datediff(SatuanTanggal,Tanggal1,Tanggal2)
Contoh
datediff(day,'9/10/10','9/20/10')
akan mengembalikan 10.
datename Fungsi
untuk mendapatkan nama dari bagian tanggal tertentu.
51 | P a g e
Bentuk umum
datename(SatuanTanggal,Tanggal)
Contoh
datename(month, '10/5/10')
akan mengembalilkan October
datepart Fungsi
untuk mengambil data tertentu dari tanggal.
Bentuk umum
datepart(SatuanTanggal,Tanggal)
Contoh
datepart(month, '10/5/10')
akan mengembalikan 10.
dateadd Fungsi
untuk menambahkan satuan waktu tertentu ke data yang
berupa datetime.
Bentuk umum
dateadd(SatuanTanggal, BesarSatuanTanggal, Tanggal)
Contoh
dateadd(day,5, '10/9/10')
akan mengembalikan 14 Oktober 2010
month Fungsi
untuk mengambil data bulan.
Bentuk umum
month(Tanggal)
52 | P a g e
Contoh
Month(Tanggal) dan tanggal hari ini adalah 4 January
2011, maka akan mengembalikan nilai 1.
day Fungsi
untuk mengambil data tanggal.
Bentuk umum
day(Tanggal)
Contoh
day (Tanggal) dan tanggal hari ini adalah 4 January
2011, maka akan mengembalikan nilai 4.
year Fungsi
untuk mengambil data tahun.
Bentuk umum
year(Tanggal)
Contoh
year (Tanggal) dan tanggal hari ini adalah 4 January
2011, maka akan mengembalikan nilai 2011.
charindex Fungsi
untuk mengambil urutan dari kata/string tertentu.
Bentuk umum
charindex(String yang dicari, namaField, IndexMulai)
Contoh
ada 1 record, namanya = „Ricky‟
charindex(„ic‟,nama,1) -> mengembalikan nilai 2
left Fungsi
digunakan untuk mengambil beberapa karakter dari
53 | P a g e
Bentuk umumnya :
Left(namaField, jumlahHuruf)
Contoh :
ada 1 record, namanya = „Ricky‟
left(nama, 1) -> ambil 1 huruf terdepan dari nama, ini
akan mengembalikan „R‟
right Fungsi
digunakan untuk mengambil beberapa karakter dari
sebelah kanan(dari belakang).
Bentuk umumnya :
right(namaField, jumlahHuruf)
Contoh
ada 1 record, namanya = „Ricky‟
right(nama,2) -> ambil 2 huruf terbelakang dari nama, ini
akan mengembalikan „ky‟.
substring Fungsi
digunakan untuk mengambil beberapa karakter mulai
dari index tertentu. bentuk umumnya :
substring(namaField, indexMulai, banyak).
Bentuk umumnya:
Substring(namaField, IndexMulai, JumlahHuruf)
Contoh
substring(nama, 3 2) -> mengambil 2 huruf dari nama,
dimulai dari index ke-5, ini akan mengembalikan „ck
54 | P a g e
rtrim Fungsi
digunakan untuk menghilangkan spasi di sebelah kanan.
Bentuk umumnya
rtrim(namaField)
Contohnya
saya mempunyai satu field nama bertype char(20), dan
kemudian saya ingin menampilkan karakter terakhir dari
nama tersebut, padahal nama-nama tersebut tidak pasti
berjumlah 20 karakter.
right(rtrim(nama), 1)
reverse Fungsi
Digunakan untuk membalikkan kata atau kalimat.
Bentuk umum
reverse(namaField)
55 | P a g e
Contoh
reverse(nama) dan jika nama adalah “Nathan”, maka
kata yang dihasilkan “nahtaN” .
len Fungsi
Digunakan untuk mencari panjang kata atau kalimat.
Bentuk umum
len(namaField)
Contoh
Len(nama) dan jika nama adalah “Edbertius”, maka akan
menghasilkan nilai 9.
stuff Fungsi
Digunakan untuk memasukkan suatu kata atau kalimat
(String2) ke dalam kata atau kalimat lainnya (String1).
Fungsi ini akan menghapus sejumlah karakter
(JumlahKarakter) mulai dari IndexMulai dan kemudian
menggantikan memasukkan String2 ke dalam String1
mulai dari posisi IndexMulai
Bentuk umum
Stuff(String1, IndexMulai, JumlahKarakter, String2)
Contoh
Stuff(nama,2,3,‟erl‟) dan jika nama adalah “Sxxxy”,
maka kata yang dihasilkan adalah “Serly”
convert Fungsi
Digunakan untuk mengubah tipe data suatu nilai ke tipe
data lainnya dan melakukan formatting untuk data
berupa tanggal.
56 | P a g e
Bentuk umum
Conver(tipeDataTujuan, namaField [, jenisStyle])
Contoh
Convert(char, tgl, 106) dan jika tgl adalah “4 January
2011”, maka tgl yang dihasilkan adalah dengan format
“dd MMM YYYY”, 4 Jan 2011
cast Fungsi
Digunakan untuk mengubah tipe data suatu nilai ke tipe
data lainnya.
Bentuk umum
Cast(namaField AS tipeDataTujuan)
Contoh
„Rp. ‟+Cast(harga AS char)+‟,00‟ dan jika harga adalah
5000, maka hasilnya adalah “Rp. 5000,00”
Contoh :
Tampilkan NamaGame dan Harga+PPN 10%, dimana Harga+PPN 10% merupakan
kelipatan dari 10.000. Harga + PPN10% didapapt dari harga game setelah ditambah
pajak sebesar 10% dari harga awal.
Jawab :
Contoh :
Tampilkan data
Tampilkan Kodegame, NamaGame, dan Harga dimana JenisGame nya adalah “PC” atau
“Wii” atau JenisGame tidak mengadung kata “PS”. Tampilkan data yang harganya antara
50000 dan 80000.
Jawab :
59 | P a g e
4.4. Exercise
1. Tampilkan semua NamaPelanggan dan AlamatPelanggan yang ada.
(select)
2. Tampilkan KodePenjualan, Tanggal, dan Jumlah Terjual dimana Jumlah Terjual lebih dari 1
buah. Tanggal didapat dari TglTransaksi dengan format “dd MMM YYYY”, sedangkan
Jumlah Terjual didapat dari Qty yang ditambah dengan kata “ buah” di bagian belakang.
(convert, cast)
3. Tampilkan Sandi dan Harga dimana 3 digit terakhir merupakan kelipatan 2 dan harga diantara
30000 dan 50000. Sandi merupakan gabungan dari “Kata terakhir dari NamaGame”,”Kata
kedua dari NamaGame”-“Kata pertama dari NamaGame”.
(reverse, substring, charindex, cast, between)
60 | P a g e
Chapter 05
Data Manipulation Language Advanced
Objectives
1. Sub Query
2. Alias Sub Query
3. Multi Table Query
4. Combine Table Result (IN, EXISTS)
5. Join and Union
6. Aggregate Function
7. Grouping and Sorting
Learning Outcomes
1. Describe database systems, terminology, environment, and new concept of database
2. Apply database language and SQL Programming language
61 | P a g e
Jawab:
Jawab :
Jawab :
Contoh:
Tampilkan KodeKaryawan dan NamaKaryawan dimana KodeKaryawan berakhiran 2, 3
atau 5 (Gunakan sintak in).
Jawab :
5.4.2. EXISTS
Sintak Exists mirip dengan in bedanya pada pengembalian nilai, sintak exists tidak
mengembalikan data-data yang di SELECT dalam subquery, namun mengembalikan nilai
boolean, yaitu true atau false. Nilai true dikembalikan jika subquery dalam exists
63 | P a g e
mengandung minimal satu baris data, sebaliknya nilai false dikembalikan jika subquery
dalam exists tidak menghasilkan baris data sama sekali.
Sintaks:
SELECT column_name FROM table_name
WHERE exists (SELECT * FROM table_name WHERE column_name = column_name)
Contoh:
Tampilkan NamaGame dah Harga dimana panjang kata dari JenisGame lebih dari 3
karakter (gunakan sintak exists).
Jawab :
5.5.2. Union
Mengembalikan dan menggabungkan semua nilai hasil SELECT dari masing-masing
tabel. Jika kita mau men-copy atau dengan kata lain baris yang sama tidak dihiraukan
(ditampilkan berulang kali), kita bisa menggunakan perintah UNION ALL, jika kita ingin
mengurangi redudansi data/baris yang berulang dihapus dari TABLE hasil UNION, kita
bisa menggunakan perintah UNION atau UNION DISTINCT.
(*query di bawah ini digunakan untuk contoh-contoh Union, Union All dan untuk soal
nomor 10)
Contoh Union :
Tampilkan secara unik (tanpa redudansi) semua Nama dan Nilai dari KelasA dan KelasB.
Jawab:
67 | P a g e
Jawab:
Untuk sum dan avg, field yang mau dihitung harus tipe datanya numeric. Sedangkan untuk count,
baris yang mempunyai nilai NULL, tidak ikut dihitung.
68 | P a g e
Contoh:
Tampilkan Harga game termurah, Harga game termahal, Rata-rata harga game, Jumlah game,
dan Total harga jual. Total harga jual didapat dari jumlah semua harga game yang ada.
Jawab:
Contoh :
Tampilkan KodeJenisGame dan total harga perjenis game yang dikelompokkan
berdasarkan KodeJenisGame.
69 | P a g e
Jawab:
5.7.2. Sorting
Pengurutan/sorting dilakukan dengan sintak order by. Order by digunakan untuk
mengurutkan hasil-set dengan sebuah kolom yang ditetapkan. ORDER BY mengurutkan
hasil dalam urutan menaik (ascending) secara default. Jika Anda ingin mengurutkan hasil
yang menurun (besar ke kecil) dalam urutan, Anda dapat menggunakan kata kunci DESC.
Sintaks:
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC
Contoh :
Tampilkan NamaGame dan Harganya yang di urutakan berdasarkan harga dari kecil ke
besar.
Jawab:
70 | P a g e
5.8. Exercise
1. Tampilkan NamaGame dan Harga dimana Namagamenya adalah “Left for Dead”.
(sub query)
2. Tampilkan NamaGame, Harga, dan Selisih antara harga dengan rata-rata harga untuk masing-
masing game.
(abs, avg )
4. Tampilkan JenisGame, NamaGame, Harga (tambahkan “RP. ” di depan harga), dan Serial
Number dari masing-masing game. Serial Number merupakan NamaGame yang dibalik,
spasi yang ada diganti dengan kata “xz” dan huruf “o” diganti dengan angka 47. Tampilkan
Serial Number dalam huruf kecil.
(convert, replace, lower, reverse, len)
71 | P a g e
8. Tampilkan Nama, Alamat, dan TelpPelanggan dimana pelanggan tersebut pernah membeli
barang dengan Qty lebih besar dari pada jumlah rata-rata dan jumlah minimal pembelian dari
semua transaksi yang ada. Tampilkan pelanggan yang TelpPelanggannya tidak kosong dan
nama pelanggan terdiri dari 2 kata atau lebih.
72 | P a g e
Nama didapat dari kata pertama NamaPelanggan. Alamat didapat dari AlamatPelanggan yang
kata “Jln.” diganti dengan kata “Jalan ” dan “No.” diganti dengan kata “Nomor ”. (Buatlah 2
jawaban untuk mengerjakan soal ini, 1 jawaban menggunakan IN dan yang lainnya
menggunakan exists).
(in/exists, substring, charindex, replace, in, avg, min,not null, like)
9. Tampilkan semua nama dari karyawan, email, Jabatan(revisi), dan Password tanpa
mempedulikan apakah karyawan tersebut sudah atau belum memiliki jabatan. Jabatan(revisi)
di dapat dari nama jabatan yang diganti kata “Tukang” menjadi “Distributor”. Sedangkan
Password didapat dari email sebelum tanda “@” dan ditambah dengan “!@#”.
(replace, upper, substring, charindex, left join)
10. Tampilkan semua Nama dan Nilai siswa dari KelasA dan KelasB, dimana Nilainya di bawah
nilai rata-rata kelas siswa bersangkutan tanpa mempedulikan redudansi data.
(avg, union all)
11. Tampilkan NamaGame, JenisGame dan Harga satuan dari game yang memiliki harga di atas
harga rata-rata game lainnya. Harga Satuan didapat dari harga yang ditambah dengan awalan
“RP. ” dan akhiran “,00”.
(cast, avg)
73 | P a g e
13. Tampilkan Hari dan JumlahTransaksi yang diurutkan berdasarkan JumlahTransaksi dari
besar ke kecil. Hari merupakan nama hari dari TglTransaksi.
(datename, count, datename, count)
14. Tampilkan Tanggal Transaksi (didapat dari TglTransaksse dan ubah format tanggal sesuai
yang terlihat pada gambar dibawah), Jumlah transaksi (didapat dari jumlah traksaksi pada
tanggal bersangkutan), dan Total pendapatan kotor ( didapat dari penjumlahan dari
Qty*Harga) dimana Total pendapatan kotor lebih besar dari pada rata-rata Total pendapatan
kotor yang ada. Urutkan hasil query secara ascending.
(convert, count, cast, sum, distinct, order by )
74 | P a g e
Chapter 06
Data Control Language
Objectives
1. Registrasi Server
- Create Login
- New Database
- Database Roles
- Delete Database
- User Roles
2. Grant & Revoke
Learning Outcomes
1. Apply database language and SQL Programming language
75 | P a g e
Pada tampilan awal, anda akan di hadapkan dialogboxconnecttoserver dimana pada box ini
terdapat beberapa pilihan:
Servertype:
Database Engine
Analysis Service
Reporting Service
SQL Server mobile
Integration Service
Servername:
Berisi nama server yang ada, untuk default-nya anda bisa memilih „localhost‟ atau karakter „.‟.
76 | P a g e
Authentification:
ada 2 yaitu Windows Authentification (untuk masuk sebagai admin, tidak perlu username dan
password) dan SQL Server Authentification (dimana anda harus memasukan username dan
password).
Lalu terdapat 4 tombol yaitu:
1. Tombol Connect , langsung konek ke database berdasarkan servertype dan servername yang
dipilih dengan authentifikasi yang dipilih.
2. Tombol Cancel, untuk membatalkan koneksi ke database.
3. Tombol Help, untuk memanggil help SQL (sudah otomatis ter-install sewaktu meng-install
microsoft SQL server 2005).
4. Tombol Option, untuk memunculkan pilihan koneksi yang lebih banyak lagi.
Jika anda sudah terhubung, maka tampilannya akan seperti ini:
Pertama, anda diminta untuk mendaftarkan / registering new server terlebih dahulu. Ini bertujuan
sebagai awal dari sekian tahap untuk mengelola database.
Server yang telah diregistrasi dapat ditampilkan di windowRegisteredservers. Server dapat dibuat
dan diregistrasi, di-rename atau dihapus dalam SQL Management Studio. Informasi server yang
sering diakses akan disimpan di ManagementStudioonRegistration.
77 | P a g e
Untuk me-registrasi sebuah server, lakukan klik kanan node di RegisteredServer’sTree dan klik
UpdateLocalServerRegistration. Aksi ini akan meng-updatelocalserverregistration.
78 | P a g e
3) Di dialog boxRegistration, klik tab General dan masukkan nama server baru yang anda
inginkan di textbox yang tersedia. Gambar dibawah mengilustrasikan jika kita ingin membuat
sebuah server bernama Tutorial Server
79 | P a g e
4) Pada Authentication pilih Windows authentication atau select SQL Server Authentification
dan isi username serta passwordnya.
5) Ingat bahwa Registeredservername terisi secara otomatis. Anda dapat memasukkan deskripsi
singkat tentang server ke dalam textbox yang tersedia.
6) Informasi tentang properties dari connection merupakan opsional, untuk menerima default
connectionproperties klik tombol Save.
7) Ingat bahwa server yang telah diregistrasi akan muncul di list registeredservers.
Sebuah server yang telah diregistrasi dapat dihapus dengan cara melakukan klik kanan pada
server yang dimaksud dan meng-klik delete. Sebuah dialogbox konfirmasi proses pen-delete-an
akan muncul. Klik Yes untuk menghapus server.
Harus dicatat bahwa nama dari server dapat diganti kapan saja dan perubahan nama tidak
memiliki pengaruh pada connection properties. Nama dapat diganti dengan melakukan klik
kanan pada server yang dimaksud dan arahkan cursor ke Edit, kemudian klik Server Registration
Properties.
80 | P a g e
a. Create Login
Untuk membuat Login baru dapat dilakukan dengan cara klik kanan pada security, pilih new,
lalu klik login.
Beri nama login name-nya, anda dapat mengubah server roles dengan mengklik server roles
lalu akan muncul windows seperti:
82 | P a g e
Ada beberapa role yang telah disediakan oleh SQL server, antara lain:
Fixed Server Role Penjelasan
dapat melakukan segala aktivitas pada SQL Server Installation.
setupadmin
Hak aksesnya:
Menambah member pada setupadmin, add/drop/configure
83 | P a g e
processadmin
Hak aksesnya:
Menambah member pada processadmin, KILL.
dapat membuat dan alter database.
Hak aksesnya:
dbcreator
Create database, alter database, drop database, sp_renamedb,
restore database.
bulkadmin
Hak aksesnya:
Menambah member pada bulkadmin, BULKINSERT.
84 | P a g e
Pilih server rolenya, lalu ubah user mapping dengan klik user mapping untuk
membuat mapping ke database.
85 | P a g e
b. New Database
Untuk membuat database yang baru dapat dilakukan dengan cara klik kanan pada
database, klik new database.
89 | P a g e
Beri nama databasenya, anda juga dapat mengatur autogrowth nya untuk mengatur
pertumbuhan database. Jika sudah selesai maka click OK.
c. Database Roles
Langkah – langkah untuk membuat Database Role:
1. Expand database yang ingin dibuat rolenya.
2. Expand Security
3. Klik kanan pada Roles, Pilih new, klik New Database Roles.
90 | P a g e
4. Isi Role Name dengan nama yang diinginkan. Isi Ownernya. Dan yang terakhir Buat
Role Membernya menjadi Public dengan cara klik tombol add.
91 | P a g e
d. Delete Database
Untuk menghapus database yang telah dibuat:
1. Klik kanan pada database yang ingin dihapus, klik delete.
93 | P a g e
2. Centang delete backup and restore history information for database untuk menghapus
log milik database.
e. User Roles
Berikut adalah query untuk membuat sebuah role pada user.
sp_addlogin login_id [, password [, database]]
Membuat login account baru untuk SQL Server Login.
Contoh:
EXEC sp_addlogin Margaret, Rose
sp_droplogin login_id
Menghapus nama login dari SQL Server Login.
Contoh:
EXEC sp_droplogin „Victoria‟
Contoh:
Revoke
Revoke untuk membuang hak yang telah dilarang dengan perintah Deny atau hak
yang telah diberikan oleh perintah GRANT
Contoh:
96 | P a g e
6.3. Exercise
1. Berilah hak akses kepada publik (select,insert,update,delete, dll) terhadap tabel
MsCustomer
(grant all)
2. Berilah hak akses kepada salah satu teman anda untuk melakukan update terhadap
tabel MsStaff dan teman anda dapat memberikan hak akses pada tabel MsStaff juga
kepada user lainnya.
(grant)
3. Berilah hak akses kepada salah satu teman anda untuk melakukan insert dan update
terhadap tabel MsMenu.
(grant)
4. Cabutlah hak akses untuk insert dan updatepada tabel MsMenu kepunyaan teman
Anda yang telah Anda berikan pada soal nomor 3.
(revoke)
5. Cabutlah semua hak akses tabel MsCustomer kepada publik yang telah anda berikan
pada soal nomor 1.
(revoke)
97 | P a g e
Chapter 07
Advanced Query
Objectives
1. Trigger
2. Cursor
3. Store Procedure
4. Indexing
Learning Outcomes
1. Apply database language and SQL Programming language
98 | P a g e
TRIGGER
a. Pengenalan Trigger
Trigger adalah blok program Transact-SQL yang diasosiasikan dengan Tabel dan
disimpan dalam Database. Seperti dalam bahasa, Trigger berarti pemicu. Pemicu yang
dimaksudkan disini adalah pada saat kita mengeksekusi SQL statement, maka akan
muncul event. Database statement yaitu Insert, Update dan Delete. Jadi Trigger
merupakan suatu aksi (Transact-SQL) yang dilakukan terhadap statement yang berlaku
pada sebuah tabel dimana trigger berada. Beberapa manfaat Trigger antara lain:
1. Meluruskan aturan-aturan yang harus berlaku.
2. Menjaga nilai sebelum dimasukkan ke dalam database.
3. Keamanan system.
4. Membuat historical record(riwayat perubahan).
5. Dan lain-lain
b. Create Trigger
Sintaks pembuatan Trigger:
99 | P a g e
Contoh Sederhana:
sebuah Trigger diberikan pada Table Pegawai
Maka hasil dari query tersebut setelah insert diberikan trigger adalah:
Trigger yang bernama triggerPegawai dibuat dan setiap kali sesudah record baru diisi ke
tabel, maka program trigger akan aktif.
Di dalam Trigger secara implisit dapat diakses "koleksi" record pada kasus "insert"
dimasukkan ke dalam tabel virtual yang bernama "inserted" dan untuk record yang
dihapus dimasukkan ke dalam tabel virtual "deleted".
Untuk "Update" terdapat 2 buah tabel virtual yaitu record yang lama masuk ke dalam
tabel "deleted" sedangkan record yang baru masuk ke tabel virtual "inserted".
Pada saat kita melakukan insert, maka record akan masuk kedalam tabel “inserted”, pada
saat melakukan delete, maka record akan masuk kedalam tabel “deleted”. Lalu apakah
yang akan terjadi pada saat kita melakukan update? Apabila kita melakukan update, kita
100 | P a g e
menghapus data lama dan menggantinya dengan data yang baru, maka tabel virtual yang
digunakan yaitu tabel “inserted” dan “deleted”.
c. Drop Trigger
Sintaks ini digunakan untuk menghapus Trigger yang sudah dibuat.
Sintaks penghapusan Trigger:
Contoh Sederhana:
d. Exception Handling
Exception Handling adalah suatu mekanisme penanganan error yang mungkin terjadi
dalam suatu query. Sintaks TRY akan dikerjakan terlebih dahulu, jika tidak ditemukan
error maka sintaks CATCH tidak akan dijalankan, dan sebaliknya jika error ditemukan
saat menjalankan query, maka sintaks CATCH akan dikerjakan untuk menanggulangi
error tersebut.
Sintaks Penggunaan Exception Handling:
101 | P a g e
Contoh Sederhana:
Jika dijalankan hasil query diatas adalah:“Query Wrong” karena tipe data yang diterima
seharusnya int bukan char ataupun varchar pada nilai „angka‟.
CURSOR
a. Pengenalan Cursor
Cursor adalah object database yang di gunakan oleh aplikasi untuk memanipulasi data
dalam set per baris, berbeda dengan sql commands biasa yang mengoperasikan semua ke
dalam semua baris dalam suatu kurun waktu. Berikut format Cursor yang umum:
102 | P a g e
Contoh:
Membuat tabel MsKaryawan terlebih dahulu
Anda diminta untuk membuat sebuah cursor yang dapat menampilkan seluruh data
karyawan:
Nb:
103 | P a g e
Hasil:
b. Type of Cursors
Ada 4 Jenis Kursor:
1. Forward Only:Kursor hanya dapat bergerak maju sepanjang recordset
2. Static:memberikan copy recordset yang disimpan dalam tempdb yang untuk mencari
data atau membuat report
3. Dinamic:memberikan akses untuk bisa melihat penambahan, perubahan dan
penghapusan data oleh user yang lain.
4. Keyset:seperti dinamic tetapi tidak dapat melihat penambahan oleh user lain. Dan
juga akan menolak akses terhadap record yang user lain hapus. Perubahan data masih
dapat dilihat.
f. Relative
Mengembalikan baris ke-n dari baris terakhir diambil. Jika n adalah positif, maka
baris ke-n setelah baris terakhir diambil akan diambil. Jika n adalah negatif, maka
baris ke-n sebelum baris terkahir diambil akan diambil.Jika n adalah 0, maka baris
yang sama yang akan diambil.
STORE PROCEDURE
a. Pengenalan transact SQL Code (Pengenalan Transact SQL)
Transact-SQL merupakan bahasa pemograman yang dikembangkan dari SQL.Seperti
diketahui bahwa SQL adalah bahasa non procedural yang artinya alur program tidak
seperti bahasa pemograman biasa, melainkan melalui “request” dan “response” yaitu
query dan jawabannya berupa hasil atau resultsed.
Transact-SQL mengembangkan kemampuan SQL, sehingga Transact-SQL dapat
melengkapi SQL dengan instruksi logic(procedural logic), yaitu program aplikasi.
Hasil proses SQL-Server (Resultset) dapat diolah lebih lanjut dengan menggunakan logic
pemograman procedural seperti Fungsi, Prosedur, Loop, Case, If Then Else dan lainnya.
Deklarasi Variable
Tipe dari variable yang dapat dideklarasikan adalah tipe data dari Ms-SQL yaitu char,
varchar, datetime, int, money dan lainnya.
Contoh:
105 | P a g e
Hasil:
Judul dvd yaitu Spiderman2 (dari kolom)
PRINT adalah fungsi yang menampilkan teks dan variable pada console (layar).
IF
If digunakan dalam mengendalikan alur program berdasarkan kondisi.
Sintaks:
106 | P a g e
Contoh:
WHILE
While digunakan untuk mengeksekusi satu blok program berulang – ulang sampai
kondisi pada WHILE menjadi false.
Sintaks:
Contoh:
Fungsi str() di atas diperlukan untuk mengkonversi bilangan integer menjadi string
(teks).
107 | P a g e
CASE
CASE menyederhanakan IF yang berlapis dengan tujuan agar program dapat
dimengerti/dibaca lebih mudah.
Sintaks:
Contoh:
Hasil:
108 | P a g e
RETURN
RETURN akan menghentikan program dari eksekusi. RETURN dapat digunakan
dalam memproses error. RETURN menyebabkan program yang dieksekusi kembali
ke statement pemanggilnya.
Contoh:
Menjalankan prosedur tersebut dengan EXEC atau langsung dengan nama prosedur saja.
Untuk mengkoreksi sebuah prosedur, maka kunci kata ALTER harus digunakan. Untuk
menghapus prosedur gunakan DROP.
109 | P a g e
PARAMETER
Prosedur dapat mempunyai parameter berupa variable yang disuplai oleh program yang
memanggilnya.
Sintaks Membuat prosedur dengan parameter:
Sekarang anda diminta untuk merename stored procedure dari SP_Employee menjadi
SP_GetEmployee
Contoh:
sp_rename'SP_Employee','SP_GetEmployee'
Maka hasil outputnya akan menghasilkan sebagai berikut:
111 | P a g e
Gunakan sp_helptext untuk melihat isi dari stored procedure yang telah dibuat atau
diubah.
Contoh:
Kita dapat melihat bahwa nama stored procedure yang tertera pada gambar diatas, nama
stored procedurenya tidak mengalami perubahan. Tetapi jika kita ingin mengakses stored
procedure yang ada dalam result tersebut, akan mengalami error
112 | P a g e
Kesimpulan
Ini terjadi dikarenakan ketika stored procedure tersebut diubah namanya, sys.prodecures
nya dalam system table tidak di – update. Solusinya adalah menghapus stroed procedure
yang ada dan membuat kembali yang baru dengan nama yang diinginkan.
d. Error Handling
Untuk membuat suatu error handling, diperlukan sintaks yang namanya @@ERROR.
@@ERROR ini berfungsi sebagai bentuk dari suatu implementasi error handling.
@@ERROR terdiri dari error ID yang dihasilkan dari akhir dari sebuah statement SQL.
Ketika suatu statement di execute, maka @@ERROR adalah 0. Untuk mendeteksi
apakah suatu statement error atau tidaknya berdasarkan dari statement IF yang digunakan
untuk mengecek nilai dari suatu fungsi setelah target telah dieksekusi.
Contoh:
Jika terjadi error dalam error handling tersebut, maka akan muncul tampilan sebagai
berikut:
113 | P a g e
INDEXING
a. Beberapa tipe index:
Clustered index
Clustered index merupakan sebuah indeks yang mengurutkan data pada tabel dan
dapat diumpamakan seperi indeks huruf dalam kamus. Karena data dalam tabel hanya
dapat disimpan dalam satu urutan maka satu tabel hanya dapat memiliki satu
clustered index. Clustered index diimplementasikan sebagai struktur B-tree yang
mendukung pencarian dan pengambilan data yang cepat.
Nonclustered index
Nonclustered index tidak mengurutkan data secara fisikal dan dapat diumpamakan
seperti daftar indeks pada buku. Sebuah tabel dapat memiliki banyak nonclustered
index dan nonclustered index berisi pointer-pointer yang menunjukkan lokasi
sesungguhnya dari data yang dicari saat melakukan pencarian data. Cara ini sedikit
lebih membutuhkan waktu pencarian dibanding dengan metode clustered index.
Unique index
Unique index memastikan bahwa kunci indeks tidak ada yang mengandung nilai-nilai
duplikat.
b. Membuat index
1. Pada ObjectExplorer, klik kanan pada tabel yang ingin diberikan index kemudian klik
Design.
114 | P a g e
c. Membuat UniqueIndex
1. Pada Object Explorer, klik kanan pada tabel yang ingin diberikan index kemudian
klik Desain.
2. Kemudian akan muncul Table Designer.
3. Dari menu Table Designer, klik Indexes / Keys
4. Pada dialogbox Indexes / Keys, klik Add. List Selected Primary / Unique Key or
Index menampilkan index baru.
5. Pada grid klik Type. Pilih Index dari drop-down list disebelah kanan properti.
6. Pada ColumnName, pilih kolom yang ingin diberikan index. Index dapat dipilih
sampai 16 kolom. Untuk perfomance yang optimal, pilih hanya 1 atau 2 kolom per
index. Index dapat diatur secara ascending atau descending.
117 | P a g e
8. Pilih pilihan Ignore duplicate keysjika ingin mengabaikan data yang baru atau
diupdate yang akan membuat sebuah duplicate keys pada index (dengan statement
INSERT atau UPDATE).
118 | P a g e
d. Membuat ClusteredIndex
1. Pada Object Explorer, klik kanan pada tabel yang ingin diberikan index kemudian
klik Desain.
2. Kemudian akan muncul Table Designer.
3. Dari menu Table Designer, klik Indexes / Keys.
4. Pada dialog box Indexes / Keys, klik Add.
5. Pilih index baru yang ada di list Selected Primary / Unique Key or Index.
6. Pada grid, pilih Create as Clustered, dan pilih Yes dari drop-down list pada
properties disebelah kanan.
119 | P a g e
e. Mengubah propertiesindex
1. Pada Object Explorer, klik kanan pada tabel yang memiliki index yang ingin diubah
propertiesnya.
2. Dari menu Table Designer, klik Indexes / Keys.
3. Pilih index pada list Selected Primary / Unique Key or Index.
4. Ubah properties index pada grid.
5. Perubahan akan disimpan ketika tabel disimpan.
f. Menghapus index
1. Pada Object Explorer, klik kanan pada tabel yang ingin diberikan index kemudian
klik Desain.
2. Dari menu Table Designer, klik Indexes / Keys.
3. Pada list Selected Primary / Unique Key or Index, klik index yang ingin dihapus.
4. Klik Delete.
5. Index akan dihapus dari database ketika tabel disimpan.
120 | P a g e
Contoh:
122 | P a g e
Contoh:
123 | P a g e
Chapter 08
Database Design
Objectives
1. Database Concept
2. Multiplicity
3. Data Relational
4. Normalization
Learning Outcomes
1. Apply database language and SQL Programming language
2. Design database using structure data model
124 | P a g e
8.2. Multiplicity
Bertujuan untuk mengidentifikasi entity dan hubungan (relationship ) pada model data
Ada 3 macam hubungan :
1. One To One : Terjadi bila tiap anggota entity A hanya boleh berpasangan dengan
satu anggota
2. One To Many : Terjadi bila tiap anggota entity A boleh berpasangan dengan lebih
dari satu anggota B tetapi tidak berlaku sebaliknya
125 | P a g e
3. Many To Many : Terjadi bila tiap anggota A boleh berpasangan dengan lebih dari
satu anggota B dan berlaku untuk sebaliknya
mhs.stiki.ac.id/boysagi/Software/bdl/bukudb11.doc
3. Domain adalah Kumpulan nilai yang valid untuk satu atau lebih atribut
4. Derajat (degree) adalah Jumlah atribut dalam sebuah relasi
5. Cardinality adalah Jumlah tupel dalam sebuah relasi
126 | P a g e
B. Dalam Data Relasional terdapat pula Relational Key , yang terdiri dari :
1. Super key yakni, Satu atribut/kumpulan atribut yang secara unik mengidentifikasi
sebuah tupel di dalam relasi
2. Candidate key yakni, Atribut di dalam relasi yang biasanya mempunyai nilai unik
dan merupakan Field-field yang bisa dipilih (dipakai) menjadi primary key.
3. Primary key yakni, Candidate key yang dipilih untuk mengidentifikasikan tupel
secara unik dalam relasi dan merupakan Field yang mengidentifikasikan sebuah
record dalam file, bersifat unik.
4. Alternate key yakni, Candidate key yang tidak dipilih sebagai primary key.
127 | P a g e
5. Foreign key yakni, Atribut dengan domain yang sama yang menjadi kunci utama
pada sebuah relasi tetapi pada relasi lain atribut tersebut hanya sebagai atribut biasa.
Foreign Key ini adalah Field yang bukan key, tetapi adalah key pada file yang lain.
8.4. Normalization
Untuk merancang database yang baik, biasa dilakukan normalisasi. Normalisasi
merupakan sebuah teknik untuk menghasilkan set relasi dengan property yang desirable
dan memberikan data sesuai dengan kebutuhan enterprise.
Proses normalisasi:
1. UNF
Dalam proses normalisasi UNF kita menampilkan semua field atau atribut yang ada
dalam suatu form yang ingin kita normalisasi.
2. 1NF
Sebuah relasi berada dalam 1NF jika relasi tersebut tidak berisi atribut yang berulang
(repeating group), field hasil perhitungan dihilangkan dan sudah mempunyai primary
key.
128 | P a g e
3. 2NF
Sebuah relasi berada dalam 2NF jika relasi tersebut dalam 1NF dan untuk setiap
atribut non key bergantung fungsional penuh kepada primary key. Jadi pada 2NF kita
akan menghilangkan ketergantungan sebagian / partial : ketergantungan field-field
tertentu hanya kepada salah satu key yang composit.
Contoh :
Tabel Mahasiswa ( Nim, Nama, Alamat )
Nama & alamat tergantung pada Nim dalam arti dengan Nim kita dapat menentukan
nama maupun alamat sebaliknya nama / alamat tidak menentukan nim, maka
diartikan bahwa nama & alamat tergantung secara partial kepada nim.
4. 3NF
Sebuah relasi berada dalam 3NF bila relasi tersebut dalam 1NF dan 2NF dan tidak
ada atribut non key yang tergantung fungsional kepada atribut non key yang lainnya (
transitive dependency ).
Contoh :
Tabel Pegawai ( NoPegawai, honor, KdProyek, Tanggal )
KdProyek & Tanggal adalah atribut non key. Tapi tanggal bergantung pada
KdProyek. Pemecahannya dengan membagi menjadi 2 relasi :
Proyek ( KdProyek, Tanggal )
PegProyek ( Nopegawai, honor, KdProyek )
5. BCNF ( Bentuk Normal Boyce-Codd, 1974 )
Relational R dikatakan dalam BCNF jika dan hanya jika setiap determinan adalah
suatu candidate key sehingga saling overlap. Tujuan BCNF adalah memisahkan
determinan yang bukan merupakan candidate key pada satu relasi tertentu.
Kodisinya :
A, B -> C, D
A, C -> B, D
B, C -> A, D
129 | P a g e
Contoh:
Tabel interview ( NoClient, tanggalInterview, waktuInterview, NoStaff, NoRuang )
Dipisahkan menjadi :
Tabel Interview ( NoClient, tanggalInterview, waktuInterview, NoStaff )
Tabel RuangStaff ( NoStaff, tanggalInterview, NoRuang )
Sales Order
UNF
Sales Order (No. SO, Payment Type, Customer ID, Customer Name, Customer
Contact, Customer Address, {No, Lego ID, Lego Name, Category, Sale Price,
Quantity, Sub Total}, Grand Total, SO Date, Employee Name, Position)
130 | P a g e
1NF
Sales Order (No. SO, Customer ID, Payment Type, Customer Name, Customer
Contact, Customer Address, SO Date, Employee Name, Position)
Detail SO (No. SO, Lego ID, Lego Name, Category, Sale Price, Quantity)
2NF
Sales Order (No. SO, Customer ID, Payment Type, Customer Name, Customer
Contact, Customer Address, SO Date, Employee Name, Position)
Detail SO (No. SO, Lego ID, Quantity)
Lego (Lego ID, Lego Name, Category, Sale Price)
3NF
Customer (Customer ID, Customer Name, Customer Contact, Customer Address)
Customer Category(Customer ID, Category)
Position (Position ID, Position)
Employee (Employee ID, Position ID, Employee Name, Employee Contact,
Employee Address, Employee Salary)
Payment Type (Payment Type ID, Payment Type)
Sales Order (No. SO, Payment Type ID, Customer ID, Employee ID, SO Date)
Detail SO (No. SO, Lego ID, Quantity)
Category (Category ID, Category)
Lego (Lego ID, Category ID, Lego Name, Sale Price, Stock)
131 | P a g e
Purchase Order
UNF
Purchase Order (No. PO, Supplier ID, Supplier Name, Supplier Contact, Supplier
Address, {No,Lego ID,Lego Name, Category, Purchase Price, Quantity, Sub Total},
Grand Total, PO Date, Employee Name, Position)
1NF
Purchase Order (No. PO, Supplier ID, Supplier Name, Supplier Contact, Supplier
Address, PO Date, Employee Name, Position)
Detail PO (No. PO, Lego ID, Lego Name, Category, Purchase Price, Quantity)
132 | P a g e
2NF
Purchase Order (No. PO, Supplier ID, Supplier Name, Supplier Contact, Supplier
Address, PO Date, Employee Name, Quantity)
Detail PO (No. PO, Lego ID, Quantity)
Lego (Lego ID, Lego Name, Category, Purchase Price)
3NF
Supplier (Supplier ID, Supplier Name, Supplier Contact, Supplier Address)
Position (Position ID, Position)
Employee(Employee ID, Position ID, Employee Name, Employee Contact, Employee
Address, Employee Salary)
Purchase Order (No. PO, Supplier ID, Employee ID, PO Date)
Detail PO (No. PO, Lego ID, Quantity)
Category (Category ID, Category)
Lego (Lego ID, Category, Lego Name, Purchase Price, Stock)
133 | P a g e
Registration
UNF
Registration (No.Registration, Member ID, Member Name, Member Contact,
Member Address, Member Email, Member Type, Registration Price, Registration
Date, Employee Name, Position)
1NF
Registration (No.Registration, Member ID, Member Name, Member Contact,
Member Address, Member Email, Payment Type, Registration Price, Registration
Date, Employee Name, Position)
134 | P a g e
2NF
Registration (No.Registration, Member ID, Member Name, Member Contact,
Member Address, Member Email, Payment Type, Registration Price, Registration
Date, Employee Name, Position)
3NF
Member Category(Member Type ID, Member Type, Diskon)
Member (Member ID, Member Type ID, Member Name, Member Contact, Member
Address, Member Email)
Position(Position ID, Position)
Employee(Employee ID, Position ID, Employee Name, Employee Contact, Employee
Address, Employee Salary)
Registration(No.Registration, Member ID, Employee ID, Registration Date)
135 | P a g e