Download as pdf or txt
Download as pdf or txt
You are on page 1of 214

Database & Data Warehouse

Training Module
October 2010
For the latest information, please see bluejack.binus.ac.id

I
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.

This document is for informational purposes only. BINUS UNIVERSITY MAKES NO


WARRANTIES, EITHER EXPRESS OR IMPLIED, AS TO THE INFORMATION IN THIS
DOCUMENT.

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.

Binus University may have patents, patent applications, trademarks, copyrights, or other
intellectual property rights covering subject matter in this document. Except as expressly
provided in any written license agreement from Binus University, the furnishing of this
document does not give you any license to these patents, trademarks, copyrights, or other
intellectual property.

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.

© 2010 Binus University. All rights reserved.

The names of actual companies and products mentioned herein may be the trademarks of
their respective owners.

II
TABLE OF CONTENT

Table of Contents
TABLE OF CONTENT ................................................................................................. III
OVERVIEW ............................................................................................................... V
OBJECTIVE ............................................................................................................ VIII
SYSTEM REQUIREMENT ............................................................................................. IX
Database .................................................................................................................. 1
Module 01 - SQL Server Introduction ......................................................................... 1
Database ................................................................................................................ 22
Module 02 - Enterprise Manager, Register New Server, Managing Security Database ..... 22
Database ................................................................................................................ 29
Module 03 – Data Definition Language ..................................................................... 29
Database ................................................................................................................ 37
Module 04 – Database File ...................................................................................... 37
Database ................................................................................................................ 41
Module 05 - Data Manipulation Language ................................................................. 41
Database ................................................................................................................ 46
Module 06 - Data Manipulation Language Queries Basic ............................................. 46
Database ................................................................................................................ 51
Module 07 - Data Manipulation Language Queries Intermediate ................................... 51
Database ................................................................................................................ 61
Module 08 - Data Manipulation Language Queries Advanced ....................................... 61
Database ................................................................................................................ 75
Module 09 – Transferring Data ................................................................................ 75
Database ................................................................................................................ 87
Module 10 – Performing Administrative Task ............................................................. 87
Database .............................................................................................................. 108
Module 11 – Backup and Restore Database ............................................................. 108
Database .............................................................................................................. 114
Module 12 - Indexing ........................................................................................... 114
Database .............................................................................................................. 124
Module 13 – Store Procedure ................................................................................ 124
Database .............................................................................................................. 132
Module 14 - Store Procedure Advanced .................................................................. 132
Database .............................................................................................................. 136
Module 15 - Trigger ............................................................................................. 136

III
Database .............................................................................................................. 139
Module 16 - Replication and Monitoring Performance Database ................................. 139
Database .............................................................................................................. 143
Module 17 - Identification Entity and Its Relationship ............................................... 143
Database .............................................................................................................. 145
Module 18 – Entity Properties ............................................................................... 145
Database .............................................................................................................. 148
Module 19 - Data Normalization ............................................................................ 148
Data Warehouse .................................................................................................... 151
Module 01 - Tabel master dan tabel transaksi, Measure data, Rancangan data warehouse
: tabel faka dan tabel dimensi. .............................................................................. 151
Data Warehouse .................................................................................................... 166
Module 02 - Data Transformation Services Basic ..................................................... 166
Data Warehouse .................................................................................................... 185
Module 03 - Data Transformation Services Intermediate .......................................... 185
Data Warehouse .................................................................................................... 194
Module 04 - Membuat Cube, Penyajian informasi dari data warehouse dengan aplikasi
lainnya ............................................................................................................... 194

IV
OVERVIEW
Modul ini membahas tentang Database dan Data Warehouse. Materi yang diajarkan
meliputi :

1. SQL Server Introduction


 Pengenalan Umum Sql Server
 New Server Registration & New Group
 Database (Diagram, Table, View, Stored Procedure, Users, Roles)
 Attach Database
 Import & Export Data
 Backup & Restore Database
 Generate SQL Script
 DTS
 Security
 Sql Query Analyser
 Pengenalan eksekusi Sql Statement

2. Enterprise Manager, register new server, managing security database


 Create Login
 Introduction Users Database
 Introduction Fixed Sever Roles
 Introduction Fixed Database Roles
 User-Defined Database Role

3. Data Definition Language


 Create & Drop Database
 Create & Drop Table
 Create & Drop Index
 Create & Drop View
 Grant
 Revoke

4. Database File
 Introduction to Data Structures
 Creating Databases
 Managing Databases
 Dropping database

5. Data Manipulation Language Table


 Insert
 Update
 Delete
 Commit
 Roll Back

6. Data Manipulation Language Queries Basic


 Simple Queries
 Sorting
 SQL Aggregate Functions
 DISTINCT
 WHERE, ISNULL

V
 OPERATOR

7. Data Manipulation Language Queries Intermediate


 Sub queries
 Multi Table Queries
 Combining Result Tables
 Select Into

8. Data Manipulation Language Queries Advanced


 ALIASE Sub query
 IN, EXISTS
 Max, Min, Avg, Count, Sum
 Compute, Group By, Order By
 JOIN Table
 Union

9. Transferring Data
 Introduction to transferring data
 Tools for importing and exporting data in SQL server
 Introduction to DTS
 Transforming data with DTS

10. Performing Administrative Tasks


 Configuration tasks
 Automating routine maintenance tasks
 Creating jobs, operators, and alerts
 Automating multi server jobs

11. Backup and Restore Database


 Introduction types of backup methods
 Planning a backup strategy
 Restoring backups
 Restoring databases from different backup types

12. Indexing
 Introducing indexes
 Creating new index in query
 Drop index

13. Store Procedure


 Introduction transact SQL Code
 Creating and Executing Stored Procedures
 Renaming and Dropping a Store Procedure
 Error Handling

14. Store Procedure Advanced


 Introduction Cursor
 Type of Cursors
 Combining Cursors and Store Procedures

15. Trigger
 Introduction triggers
 Create Trigger

VI
 Drop Trigger
 Exception Handling

16. Replication and Monitoring Performance Database


 Introduction to Distributed Data
 Introduction to SQL Server Replication
 SQL Server Replication Types
 Performance Monitoring and Tuning
 Tools for Monitoring and Tuning Tasks

17. Identification Entity and Its Relationship


 Konsep Perancangan Table
 Mengidentifikasi kebutuhan data (entity)
 Mengidentifikasi hubungan antar data (Relationship) dan nama hubungannya
(Relationship name)
 Menentukan Multiplicity

18. Entity Properties


 Penggunaan Enhanced Entity Relationship (EER)
 Mengidentifikasi atribut dari entity
 Menentukan key attributes
 Menentukan atribut dari entity
 Primary key dan alternate key

19. Data Normalization


 Memvalidasi model data logical dengan normalisasi data

20. Tabel master dan tabel transaksi, Measure data, Rancangan data
warehouse : tabel faka dan tabel dimensi
 Mengidentifikasikan tabel master dan tabel transaksi dari OLTP (Online
Transaction Processing)
 Menentukan meassure data dari OLTP dan informasi lainnya sesuai dengan
kebutuhan informasi yang diinginkan
 Membuat rancangan tabel fakta dan tabel dimensi

21. Data Transformation Services Basic


 Membuat DTS Package baru dengan Ms. SQL Server Management

22. Data Transformation Services Intermediate


 Membuat Dynamic Query dengan Global Variabel.

23. Membuat Cube, Penyajian informasi dari data warehouse dengan aplikasi
lainnya
 Membuat cube dengan Microsoft SQL Server Management Studio 2008.
 Membuat pivot table dan grafik menggunakan Microsoft Excel untuk
menyajikan informasi sesuai dengan kebutuhan pengguna.
 Meng-upload hasil pivot table dan grafik ke dalam halaman web pages

Pada modul ini semua bahan diambil dari bahan materi yang akan diajarkan dalam
Training Inti, disertai dengan teori dan contoh program agar pembaca dapat
mencoba sendiri code yang ada. Pada Modul ini pembahasan sudah diurutkan dari
materi yang paling dasar sehingga pembaca akan semakin mudah mempelajari
materi-materi yang ada.

VII
OBJECTIVE

 Trainee memahami pengenalan SQL Server.


 Trainee memahami dan menguasai Enterprise Manager, Register New Server,
dan Managing Security Database.
 Trainee memahami cara create dan drop database, tabel, indeks, dan view, cara
grant dan revoke hak akses serta menerapkannya.
 Trainee memahami cara create dan drop database dan menerapkannya.
 Trainee memahami sintaks – sintaks yang digunakan untuk melakukan data
manipulation dan dapat mengimplementasikannya di sql server 2008
 Trainee memahami dan mampu mengimplementasikan query manipulasi dasar di
SQL.
 Trainee memahami dan dapat menerapkan Data Manipulation Language Queries
Intermediate.
 Trainee dapat memahami penggunaan Alias Subquery, In, Exists, Aggregate
function, compute, group by, order by, join, dan union.
 Trainee memahami dan menguasai proses DTS dalam SQL Server.
 Trainee memahami dan menguasai Administrative Task
 Trainee memahami dan menguasai proses Backup dan Restore database dalam
SQL Server.
 Trainee diharapkan dapat memahami dan menguasai pemakaian store procedure
dan mengetahui kegunaannya.
 Trainee dapat mengetahui apa itu kursor, jenis kursor dan melakukan
implementasi menggunakan Cursor.
 Trainee dapat mengetahui apa itu trigger dan melakukan implementasi
menggunakan trigger.
 Trainee mampu mengenal makna data terdistribusi, mengenal SQL Server
Replication dan menggunakannya, mengetahui macam-macam replikasi, dan
melakukan performance monitoring dan tuning
 Trainee memahami dan mengusai konsep perancangan tabel yang baik dan
benar serta dapat mengimplementasikannya.
 Trainee memahami penentuan atribut dan relationship antar tabel.
 Trainee memahami dan menguasai proses normalisasi.
 Trainee dapat mengidentifikasikan tabel master dan tabel transaksi dari OLTP
(Online Transaction Processing), menentukan meassure data dari OLTP dan
informasi lainnya sesuai dengan kebutuhan informasi yang diinginkan, dan
membuat rancangan tabel fakta dan tabel dimensi.
 Trainee memahami dan dapat membuat dimensi.
 Trainee memahami dan dapat membuat fakta.
 Trainee dapat mengetahui dan memahami apa itu cube dan pivot table.

VIII
SYSTEM REQUIREMENT

Software yang digunakan adalah SQL Server 2008.


Berikut adalah persyaratan sistem untuk SQL Server 2008 Enterprise (32-bit):

Component Requirement
Processor Processor type:
· Pentium III-compatible processor or faster
Processor speed:
· Minimum: 1.0 GHz
· Recommended: 2.0 GHz or faster

Operating Windows XP Professional/Tablet/Media Center SP2


System
Windows Server 2003 Small Business Server R2 Standard/premium
Windows Server 2003 SP2 Standard/Enterprise/Date Center
Windows Server 2003 Small Business Server SP2 Standard/
Premium
Windows Server 2003 SP2 64-bit x64 Standard / Data Center/
Enterprise
Windows Vista Ultimate/ Premium/ Home Basic/ Enterprise/
Business
Windows Vista 64-bit x64
Ultimate/premium/Basic/Enterprise/Business
Windows Server 2008 Standard (with and without Hyper-V)
Windows Server 2008 Web
Windows Server 2008 Data Center
Windows Server 2008 Data Center without Hyper-V
Windows Server 2008 Enterprise
Windows Server 2008 Enterprise without Hyper-V
Windows Server 2008 x64 Standard
Windows Server 2008 x64 Standard without Hyper-V2
Windows Server 2008 x64 Data Center
Windows Server 2008 x64 Data Center without Hyper-V2
Windows Server 2008 x64 Enterprise
Windows Server 2008 x64 Enterprise without Hyper-V2

IX
Memory RAM:
· Minimum: 512 MB
· Recommended: 2.048 GB or more
· Maximum: Operating system maximum

X
Database
Module 01 - SQL Server Introduction

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai pengenalan SQL Server dengan
pembahasan Pengenalan Umum Sql Server, New Server Registration & New
Group, Database, Attach Database, Import & Export Data, Backup & Restore
Database, Generate SQL Script, DTS, Security, Sql Query Analyser, dan
Pengenalan eksekusi Sql Statement.
2. Learning Outcomes
 Trainee memahami pengenalan SQL Server.
3. Material
a. Pengenalan Umum Sql Server
Microsoft SQL Server adalah Relational Database Management
System (RDBMS) yang dirancang untuk berjalan pada platform mulai dari
laptop ke server multiprosesor besar. SQL Server biasanya digunakan
sebagai sistem backend untuk website dan CRMS perusahaan dan dapat
mendukung ribuan pengguna bersamaan.
SQL Server hadir dengan sejumlah alat untuk membantu Anda
dengan administrasi database dan tugas-tugas pemrograman.
SQL Server jauh lebih kuat dan terukur daripada sistem manajemen
database desktop seperti Microsoft Access. Siapa pun yang pernah mencoba
menggunakan Access sebagai backend untuk website mungkin akan terbiasa
dengan kesalahan yang dihasilkan terlalu banyak bila pengguna mencoba
untuk mengakses database.
Meskipun SQL Server juga dapat dijalankan sebagai sebuah sistem
database desktop, hal ini paling sering digunakan sebagai sistem database
server.

Server Database System (Server berbasis sistem database)


Server berbasis sistem database yang dirancang untuk berjalan pada
server pusat, sehingga beberapa pengguna dapat mengakses data yang sama
secara bersamaan. Para pengguna biasanya mengakses database melalui
aplikasi.
Sebagai contoh, sebuah website dapat menyimpan semua konten di
database. Setiap kali pengunjung pandangan artikel, mereka mengambil data
dari database. Seperti yang Anda ketahui, situs web biasanya tidak terbatas
hanya pada satu pengguna. Jadi, pada suatu saat 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 di daerah anggota ', atau berlangganan newsletter, atau
apapun yang pengguna situs web lakukan.

1
Umumnya, itu aplikasi yang menyediakan fungsionalitas untuk para
pengunjung ini. Ini adalah database yang menyimpan data dan membuatnya
tersedia. Karena itu, SQL Server tidak termasuk beberapa fitur berguna yang
dapat membantu aplikasi dalam memberikan fungsinya.

b. New Server Registration & New Group


SQL Server Management Studio memisahkan kegiatan
mendaftarkan server dan mengeksplorasi objek-objek server. Setiap server
(lokal atau remote) harus terdaftar sebelum digunakan. Sebuah server dapat
didaftarkan selama pelaksanaan pertama dari SQL Server Management
Studio atau yang lebih baru. Untuk mendaftarkan server database di jendela
Server Terdaftar, klik kanan folder Database Engine dan pilih New Server
Registration.

Pada kotak dialog New Server Registration, klik tab General. Pada textbox
Server name, ketik nama server yang Anda ingin mendaftar. Untuk contoh

2
bernama, ketik nama dalam format SERVER_NAME [\instance_name]. Dalam
Authentication, defaultnya adalah Windows Authentication, atau klik
SQL Server Authentication, dan lengkapi username and password. Pilih
Remember password jika Anda ingin SQL Server Management Studio untuk
menyimpan password (tidak disarankan). Klik Save.

3
Server Group

Klik kanan folder Database Engine dan pilih New Server Group

Ketikkan nama grup dan deskripsi, kemudian klik OK.

SQL Server Management Studio juga memisahkan mendaftarkan server


dan menghubungkan ke server. Ini berarti bahwa mendaftarkan server tidak
secara otomatis menghubungkan Anda ke server. Untuk menyambung ke
server dari jendela Server Terdaftar, klik kanan server, pilih Connect, dan
kemudian New Query. Anda juga dapat terhubung ke server dari jendela
Object Explorer jika Anda klik kanan nama server dan pilih Connect.

4
c. Database (Diagram, Table, View, Stored Procedure, Users, Roles)

Diagram
Database Diagram adalah alat visual yang memungkinkan Anda
untuk merancang dan memvisualisasikan database Anda yang tersambung.
Ketika merancang database, Anda dapat menggunakan Database Diagram
untuk membuat, mengedit, atau menghapus tables, columns, keys,
indexes, relationships, and constraints. Untuk memvisualisasikan
database, Anda dapat membuat satu atau lebih diagram yang
menggambarkan sebagian atau semua tables, columns, keys, dan
hubungan di dalamnya.
Untuk database apapun, Anda bisa membuat diagram database yang
Anda inginkan, setiap tabel database dapat muncul pada sejumlah diagram.
Dengan demikian, Anda dapat membuat diagram yang berbeda untuk
memvisualisasikan bagian-bagian yang berbeda dari database, atau untuk
menekankan aspek yang berbeda dari desain. Sebagai contoh, Anda dapat
membuat diagram besar menampilkan semua tabel dan kolom, dan Anda
dapat membuat diagram yang lebih kecil yang menunjukkan semua tabel
tanpa menunjukkan kolom.
Setiap diagram database yang Anda buat disimpan dalam database terkait.

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 database / informasi. 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 asing, kendala kunci,
peraturan dan indeks. Sejak kolom, indeks, kendala, peraturan dan memicu
yang ditetapkan untuk sebuah meja khusus, mereka diperlakukan sebagai
properti dari tabel dalam database diagram.
Kolom-kolom tabel database (disebut juga field tabel) memiliki nama-
nama mereka sendiri yang unik dan memiliki tipe data didefinisikan
sebelumnya. Tabel kolom dapat memiliki berbagai atribut mendefinisikan
fungsi kolom (kolom adalah kunci primer, ada indeks didefinisikan pada
kolom, kolom memiliki nilai default tertentu, dll).
Sementara kolom tabel menggambarkan jenis data, baris tabel berisi
data aktual untuk kolom.

View
Data SQL Server disimpan pada tabel. Anda dapat melakukan
pengolahan data di tabel secara fisik.
Sebaliknya 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 dengan kolom, dan Anda dapat
mengambil data dari View (kadang-kadang bahkan update data dalam

5
sebuah View). Field dalam tabel virtual View adalah bidang dari satu atau
lebih tabel nyata dalam
database.
Anda dapat menggunakan View untuk menggabungkan dua tabel
dalam database Anda dan menyajikan data yang mendasari seolah-olah data
yang berasal dari tabel tunggal, 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 skema database, atau
menyesuaikan data dan skema untuk satu set pengguna.
- Untuk mengontrol akses ke baris dan kolom data.
- Untuk data agregat untuk kinerja.
- Untuk membuat laporan.

Stored Procedure
Stored Procedure adalah sekelompok pernyataan Transact-SQL
dikompilasi menjadi rencana eksekusi tunggal. Prosedur yang disimpan
sangat membantu dalam mencapai implementasi yang konsisten dari logika di
seluruh aplikasi. Laporan SQL dan logika diperlukan untuk melakukan tugas
yang biasa dilakukan dapat dirancang, dikode, dan diuji sekali dalam
prosedur yang tersimpan. Setiap aplikasi yang memerlukan untuk melakukan
tugas yang kemudian dapat hanya menjalankan prosedur yang tersimpan.
Coding logika bisnis menjadi prosedur yang tersimpan tunggal juga
menawarkan satu titik kontrol untuk memastikan bahwa aturan-aturan bisnis
dengan benar ditegakkan.

Manfaat menggunakan Stored Procedure dalam SQL Server adalah:


- memungkinkan pemrograman modular
- eksekusi lebih cepat
- mengurangi network traffic
- dapat digunakan sebagai mekanisme keamanan

Users
Untuk terhubung ke sebuah instance SQL Server pertama anda harus
login sehingga instance dapat mengotentikasi Anda (tahu siapa Anda). Tetapi
untuk melakukan operasi pada database yang akan Anda memerlukan User
account dalam database tersebut. User account digunakan untuk mengakses
database dan validasi izin. 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 pembuatan login 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
yang individu berhak.

6
Roles
Ketika membuat login user baru di SQL Server, Anda mendapatkan
pilihan untuk menempatkan user baru ini satu atau lebih Server
Roles(peran) pada server.
Server Roles (jangan dikelirukan dengan peran database) yang
tersedia untuk berbagai tugas-tugas administrasi database. Tidak semua
orang harus diserahkan kepada peran server. Pada kenyataannya, hanya
pengguna canggih seperti database administrator harus diberi peran server.
Beberapa peran dalam SQL Server sysadmin, serveradmin,
setupadmin, securityadmin, processadmin, dbcreator, diskadmin, bulkadmin,
public.

d. Attach Database
File-file log data dan transaksi database dapat dilepaskan(Detach)
dan kemudian disambungkan(Attach) ke sama atau contoh lain dari SQL
Server. Memisahkan dan melampirkan database berguna jika Anda ingin
mengubah database untuk contoh yang berbeda dari SQL Server pada
komputer yang sama atau untuk memindahkan database.

Cara Attach Database

Klik kanan pada folder database klik Attach.

7
Setelah kotak dialog Attach Database tampil, pilih Add.

8
Tentukan file database yang akan di Attach, setelah itu klik OK.

9
Cara Detach Database

Klik kanan di database yang akan di detach, setelah itu klik Task, lalu klik
Detach.

10
Lalu klik OK.

e. Import & Export Data


Untuk menggunakan data yang dihasilkan oleh aplikasi lain.
Kemampuan untuk mengimpor data sangat penting dalam aplikasi perangkat
lunak karena itu berarti bahwa satu aplikasi dapat melengkapi yang lain.
Banyak program, misalnya, dirancang untuk dapat mengimpor grafis dalam
berbagai format.
Kebalikan dari mengimpor adalah ekspor, yang mengacu pada
kemampuan satu aplikasi ke format data untuk aplikasi lain.

11
Cara Import Data

Klik kanan di database klik Tasks, lalu klik Import Data.

12
Cara Export Data

Klik kanan di database klik Tasks, lalu klik Export Data.

Setelah itu akan muncul SQL Server Export and Import Wizard, lalu
ikutilah langkah-langkah yang ada di wizard tersebut. Import dan Export Data
akan dibahas lebih lanjut pada sub modul Transferring Data.

f. Backup & Restore Database


Salinan dari sebuah file atau direktori pada perangkat penyimpanan
terpisah, dengan cara membuat backup jadi jika sewaktu-waktu data yang
original rusak atau terhapus, masih bisa digunakan salinannya. Proses backup

13
mengacu pada pembuatan salinan data sehingga salinan ini dapat digunakan
untuk mengembalikan semula setelah peristiwa kehilangan data.
Backup berguna terutama untuk dua tujuan. Yang pertama adalah
untuk memulihkan keadaan setelah bencana (disaster recover). Yang kedua
adalah untuk mengembalikan sejumlah kecil file setelah mereka telah sengaja
dihapus atau rusak. Kehilangan data juga sangat umum. 66% dari pengguna
internet telah menderita dari kehilangan data yang serius.
Restore berguna untuk membawa kembali ke keadaan semula dan membuat
restitusi.
Backup dan Restore adalah adalah proses menyalin data Terlebih
Dahulu untuk tujuan spesifik untuk mengembalikan data yang sama setelah
suatu peristiwa yang mengakibatkan hilangnya hardware baik menyimpan
data, atau hilangnya hanya data itu sendiri.

Cara Backup Database

Klik kanan di database klik Tasks, lalu klik Back Up.

14
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.

15
Cara Restore Database

Klik kanan di database klik Tasks, lalu klik Restore Database.

16
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.

Lalu akan muncul kotak dialog Specify Backup.

17
Setelah itu pilihlah file yang akan di restore, kemudian klik OK.

Backup dan Restore Database akan dibahas lebih lanjut pada sub modul
Backup and Restore Database.

18
g. Generate SQL Script

Cara Generate SQL Script

Klik kanan di table klik Script Table as, lalu pilih CREATE To, lalu pilih New
Query Editor Window

19
Setelah itu SQL Server akan menggenerate SQL Script untuk Create table
dari table yang dimaksud.

h. DTS (Data Transformation Services)


DTS adalah sekumpulan objek dan utilitas untuk memungkinkan
otomatisasi ekstrak, transformasi dan beban operasi ke atau dari database.
DTS disertakan dengan versi sebelumnya dari Microsoft SQL Server, dan
hampir selalu digunakan dengan database SQL Server, walaupun dapat
digunakan secara terpisah dengan database lainnya.
DTS juga dapat memungkinkan otomatisasi dari impor data atau
transformasi secara terjadwal, dan dapat melakukan fungsi tambahan seperti
FTPing file dan mengeksekusi program eksternal.
DTS adalah satu set peralatan yang dapat Anda gunakan untuk impor,
ekspor, dan mengubah data heterogen antara satu atau lebih sumber data,
seperti Microsoft SQL Server, Microsoft Excel, atau Microsoft Access.

i. Security
Pada pembuatan database client-server tidak boleh diabaikan
masalah security. Security database di SQL Server cukup handal untuk
databese menengah ke atas. Security system ini berhubungan erat dengan
autoritas sebuah client dalam berkomunikasi dengan database.
Ada banyak teknik security pada aplikasi. Security pada aplikasi
dapat kita ciptakan sendiri dengan cara membuat sebuah tabel user beserta
otoritasnya untuk sebuah aplikasi tertentu. Akan tetapi hal ini kurang aman
bilamana tabel yang kita buat sampai diketahui oleh orang yang tidak
berkepentingan.

20
Teknik kedua adalah membuat mapping untuk user sebuah Windows
Server untuk akses database. Meskipun hal ini mudah untuk dilakukan akan
tetapi kita akan mengalami kendala yang sama pada teknik kedua. Lebih dari
itu, akan sangat rawan apabila user kita ceroboh saat meninggalkan
komputernya dalam keadaan On dan tanpa Re-Login.

j. Sql Query Analyser


SQL Query Analyzer adalah antarmuka utama untuk menjalankan SQL
query 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.

k. Pengenalan eksekusi Sql Statement


Apa yang sebenarnya membuat SQL Server berbeda dari bahasa
pemrograman lain adalah cara SQL Server memproses kodenya. Umumnya,
kebanyakan bahasa pemrograman pernyataan proses dari atas ke bawah.
Sebaliknya, SQL Server proses mereka dalam urutan yang unik yang dikenal
sebagai Logical Tahap Pengolahan Query. Fase ini menghasilkan serangkaian
tabel-tabel virtual dengan masing-masing meja makan virtual ke tahap
berikutnya (tabel virtual tidak dapat dilihat). Fase ini dan perintah mereka
diberikan sebagai berikut:

1. FROM
2. ON
3. OUTER
4. WHERE
5. GROUP BY
6. CUBE | ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
11. TOP

21
Database
Module 02 - Enterprise Manager,
Register New Server, Managing
Security Database

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Create Login, Introduction Users
Database, Introduction Fixed Sever Roles, Introduction Fixed Database Roles,
dan User-Defined Database Role
2. Learning Outcomes
 Trainee memahami dan menguasai Enterprise Manager, Register New Server,
dan Managing Security Database.
3. Material
a. Create Login

Pada bagian Object Eplorer, klik kanan di Security, pilih New, lalu klik Login

22
Setelah itu akan muncul kotak dialog Login – New, kemudian isilah Login
name sesuai dengan nama yang di gunakan pada saat login. Kemudian pilih
SQL Server Authentication, isilah Password dan Confirm password yang
nanti akan digunakan pada saat login. Lalu uncheck Enforce password
policy. Kemudian klik OK.

23
Pada bagian Object Explorer, klik kanan di Server, lalu pilih Properties

24
Setelah muncul kotak dialog Server Properties, pilihlah ke tab Security,
kemudian pilih SQL Server Authentication. Lalu klik OK.

b. Introduction Users Database


Walaupun persyaratan user dan login sering digunakan secara
bergantian, tetapi mereka sangat berbeda. Login digunakan untuk otentikasi
pengguna. Sebuah akun user database digunakan untuk akses database dan
validasi izin. Login diasosiasikan dengan pengguna oleh keamanan identifier
(Security Identifier - SID). Login diperlukan untuk akses ke server SQL
Server. Proses verifikasi yang login tertentu berlaku disebut "otentikasi".
Login ini harus dikaitkan kepada pengguna database SQL Server. Anda
menggunakan account pengguna untuk mengontrol kegiatan yang dilakukan
dalam database. Jika tidak ada user account ada dalam database untuk login
tertentu, user yang menggunakan login tersebut tidak dapat mengakses
database meskipun pengguna mungkin dapat terhubung ke SQL Server.
Pengecualian tunggal untuk situasi ini adalah ketika database berisi "guest"
account pengguna. Sebuah login yang tidak memiliki akun user yang
berhubungan dipetakan ke pengguna tamu. Sebaliknya, jika pengguna
database ada tetapi tidak ada login terkait, pengguna tidak dapat login ke
server SQL Server.

25
c. Introduction Fixed Sever Roles
Sever Roles didefinisikan pada tingkat server dan berada diluar
pengguna database. Sever Roles bersifat tetap(fixed), sehingga Anda tidak
dapat menambahkan, menghapus atau memodifikasi Sever Roles. Anda
hanya dapat menambahkan pengguna sebagai anggota dari peran server.

Ada tujuh Fixed Sever Roles:

1. Sysadmin
Anggota Sever Roles sysadmin dapat melakukan semua aktivitas di SQL
Server dan telah menyelesaikan kontrol atas semua fungsi database.

2. Serveradmin
Anggota Sever Roles ServerAdmin dapat mengubah parameter server
konfigurasi dan mematikan server.

3. Setupadmin
Anggota Sever Roles setupadmin dapat mengelola server yang saling
dihubungkan (menambah atau menghapus server yang dihubungkan),
mengelola replikasi, mengatur tambahan prosedur yang tersimpan, dan
menjalankan beberapa sistem prosedur yang tersimpan, seperti
sp_serveroption.

4. Securityadmin
Anggota Sever Roles securityadmin dapat membuat dan mengelola
login server dan audit, dan membaca error log.

5. Processadmin
Anggota Sever Roles processadmin dapat mengelola proses yang
berjalan di SQL Server.

6. Dbcreator
Anggota Sever Roles dbcreator dapat membuat, mengubah, dan
database resize.

7. Diskadmin
Anggota Sever Roles diskadmin dapat mengelola file disk.

d. Introduction Fixed Database Roles


Dalam SQL Server 6.5 Anda dapat menggunakan grup database untuk
menyederhanakan manajemen sejumlah besar pengguna database. Sebagai
contoh, Anda dapat menggunakan grup database untuk memberikan dan
mencabut izin untuk lebih dari satu user pada waktu yang sama.
Namun, grup database tidak lagi didukung di SQL Server 7.0. SQL Server
Database Roles bertindak seperti SQL Server 6.5 grup database, tetapi roles
memiliki beberapa perbaikan: di SQL Server 6.5 setiap user dapat menjadi
anggota hanya satu kelompok (selain kelompok masyarakat), tetapi dalam
SQL Server 7.0 setiap pengguna dapat memiliki banyak peran dan hasilnya
pengguna izin adalah gabungan semua peran mereka anggota.

26
Public Role adalah Database Role khusus yang dimiliki setiap
pengguna database. Public Role berisi izin akses default untuk setiap
pengguna yang dapat mengakses database. Public Role tidak dapat dihapus.
Fixed Database Roles didefinisikan di tingkat database dan ada
dalam database masing-masing. Anda tidak dapat menambah, menghapus
atau memodifikasi Fixed Database Roles. Anda hanya dapat menambahkan
pengguna sebagai anggota Fixed Database Roles.

Ada sembilan Fixed Database Roles:

1. db_owner
Anggota Database Roles db_owner dapat melakukan semua aktivitas
dalam database.

2. db_accessadmin
Anggota Database Roles db_accessadmin dapat menambahkan atau
menghapus Windows kelompok NT, pengguna atau pengguna SQL Server
dalam database.

3. db_datareader
Anggota Database Roles db_datareader bisa melihat data dari semua
tabel user dalam database.

4. db_datawriter
Anggota Database Roles db_datawriter dapat menambah, mengubah,
atau menghapus data dari semua tabel user dalam database.

5. db_ddladmin
Anggota Database Roles db_ddladmin dapat membuat perintah bahasa
definisi data dalam database.

6. db_securityadmin
Anggota Database Roles db_securityadmin dapat mengatur hak akses
pernyataan dan objek dalam database.

7. db_backupoperator
Anggota Database Roles db_backupoperator dapat membuat
cadangan database.

8. db_denydatareader
Anggota Database Roles db_denydatareader dapat menyangkal izin
untuk memilih data dalam database.

9. db_denydatawriter
Anggota Database Roles db_denydatawriter dapat menyangkal izin
untuk mengubah data dalam database.

27
e. User-Defined Database Role
Walaupun built-in Database Role menangani izin untuk tugas
pengelolaan database yang umum, kemungkinan bahwa Anda akan ingin
untuk pengguna kelompok yang memiliki akses untuk melakukan fungsi
database tertentu.
Untuk membuat SQL Server role baru dalam database saat ini, Anda
dapat menggunakan sistem sp_addrole disimpan prosedur.

Sintaks:

sp_addrole [@rolename =] 'role' [,[@ownername =] 'owner']

dimana

@rolename adalah nama dari database role.


@ownername adalah nama dari pemilik role baru.

Untuk menghapus SQL Server role dari database saat ini, Anda dapat
menggunakan sistem sp_droprole disimpan prosedur.

Sintaks:

sp_droprole [@rolename =] 'role'

dimana

@rolename adalah nama dari database role.

28
Database
Module 03 – Data Definition Language

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Data Definition Language dengan
pembahasan Create & Drop Database, Create & Drop Table, Create & Drop Index,
Create & Drop View, Grant, dan Revoke.
2. Learning Outcomes
 Trainee memahami cara create dan drop database, tabel, indeks, dan view, cara
grant dan revoke hak akses serta menerapkannya.
3. Material
a. Create & Drop Database
 Create Database
Untuk membuat database baru.

Langkah :
1. Pada bagian Object Explorer, pilih folder Database

29
2. Klik kanan pada folder database dan pilih New Database

3. Isi nama database dan klik OK

30
 Drop Database
Untuk menghapus database.

Langkah :
1. Pada bagian Object Explorer, klik kanan pada folder Database yang
ingin dihapus dan pulih Delete

31
2. Klik OK pada window Delete Object

b. Create & Drop Table

 Create Table
Untuk membuat tabel dalam database.

Sintaks :

CREATE TABLE [ table_name ]


(
[ column 1 ] [ data_type_for_column_1 ] ,
[ column 2 ] [ data_type_for_column_2 ] ,
...
)

32
Contoh :

CREATE TABLE msBarang


(
kdBrg char (5) ,
mBrg varchar (10),
primary key (kdBrg),
)

CREATE TABLE MsBagian


(
KdBagian char(7) not null,
Bagian varchar(50) not null,
primary key(KdBagian),
constraint bag1 check (KdBagian like „BA[0-9][0-9][0-9][0-9][0-9]‟)
)

CREATE TABLE MsKaryawan


(
KdKaryawan char(7) not null,
KdBagian char(7) not null,
NmKaryawan varchar(50) not null,
PassKaryawan varchar(20) not null,
primary key(KdKaryawan),
constraint kar1 check (KdKaryawan like „KA[0-9][0-9][0-9][0-9][0-
9]‟),
foreign key(KdBagian) references MsBagian on update cascade on
delete cascade
)

Catatan
% mewakili banyak character atau tidak ada karakter
_ mewakili satu character
[] range

 Drop Table
Untuk menghapus table dalam database

Sintaks :

DROP TABLE [ table_name ]

Contoh :

DROP TABLE MsKaryawan

33
Catatan
Jika ada tabel yang ber relasi, drop tabel yang mengandung fereignkey dulu
baru yang mengandung primary key

c. Create & Drop Index

 Create Index
Indeks dalam database yang sangat mirip dengan indeks di perpustakaan.
Indeks memungkinkan menemukan informasi dalam database yang cepat,
sama seperti yang mereka lakukan di perpustakaan. Jika semua buku di
perpustakaan diindeks alfabet maka Anda tidak perlu menelusuri seluruh
perpustakaan untuk menemukan buku tertentu. Sebaliknya Anda hanya
akan mendapatkan huruf pertama dari judul buku dan Anda akan
menemukan bagian ini surat dalam perpustakaan memulai pencarian anda
dari sana, yang akan mempersempit pencarian Anda secara signifikan.

Sebuah Index dapat dibuat pada satu kolom atau kombinasi kolom dalam
tabel database. Sebuah indeks tabel adalah struktur database yang
mengatur nilai-nilai dari satu atau lebih kolom dalam tabel database
dalam urutan tertentu. Indeks Tabel memiliki pointer ke nilai yang
disimpan dalam kolom tertentu atau kombinasi kolom dari tabel. Pointer
ini dipesan tergantung pada urutan yang ditentukan dalam indeks.
Sintaks :

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX [


index_name ]
ON [table_name] ( [column 1] [ ASC | DESC ] [ ,...n ] )
[ INCLUDE ( column_name [ ,...n ] ) ]
[ WITH ( <relational_index_option> [ ,...n ] ) ]
[ ON { partition_scheme_name ( column_name ) | filegroup_name |
default } ]

Contoh :

CREATE INDEX idxBrg ON msBarang (mBrg)

 Drop Index
Untuk menghapus index yang ada

Sintaks :

DROP INDEX [ index_name ] ON [table_name]

Contoh :

DROP INDEX idxBrg ON msBarang

34
d. Create & Drop View
 Create View
Sebuah view adalah tabel yang dibangun dari satu atau beberapa tabel
yang sudah ada. Secara fisik, VIEW tidak membuat penyimpanan data
seperti tabel biasa, melainkan hanya menyimpan referensi/pointer ke
record pada tabel-tabel yang berkaitan. VIEW biasa disebut juga “virtual
tabel”. View dapat juga diciptakan dari beberapa tabel.

Sintaks :

CREATE VIEW [view_name] (column 1, column 2)


AS
Select column 1, column 2…
FROM [table name]
WHERE [condition]

Contoh :

CREATE VIEW V_Buku


AS
Select * from Buku

 Drop View

Sintaks :

DROP VIEW [view_name]

Contoh :

DROP VIEW V_Buku

e. Grant & Revoke


 Grant
Anda dapat menambahkan hak akses ke user, hak akses dapat berupa
select, insert, update, delete, references, alter, and index. Berikut
penjelasan mengenai hak akses :

35
Hak Akses Description
Select Kemampuan untuk query tabel dengan sintaks select.
Kemampuan untuk menambakan baris baru ke tabel
Insert
dengan sintaks insert.
Kemampuan untuk merubah data pada tabel dengan
Update
menggunakan sintaks update.
Kemampuan untuk menghapus baris dari tabel dengan
Delete
menggunakan sintaks delete.
References Ability to create a constraint that refers to the tabel.
Ability to change the tabel definition with the alter tabel
Alter
statement.
Ability to create an index on the tabel with the create
Index
index statement.

Contoh :

GRANT INSERT, UPDATE, DELETE On mahasiswa To public

 Revoke
Revoke untuk membuang hak yang telah dilarang dengan perintah Deny
atau hak yang telah diberikan oleh perintah GRANT

Contoh :

Revoke SELECT On mahasiswa To Public

36
Database
Module 04 – Database File

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Database File dengan pembahasan
Create dan Drop Database.
2. Learning Outcomes
 Trainee memahami cara create dan drop database dan menerapkannya.
3. Material
a. Create Database
Untuk membuat database baru.

Langkah :
1. Pada bagian Object Explorer, pilih folder Database

37
2. Klik kanan pada folder database dan pilih New Database

3. Isi nama database dan klik OK

38
b. Drop Database
Untuk menghapus database.

Langkah :
1. Pada bagian Object Explorer, klik kanan pada folder Database yang ingin
dihapus dan pulih Delete

39
2. Klik OK pada window Delete Object

40
Database
Module 05 - Data Manipulation
Language

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini, akan dibahas tentang kegunaan dari data manipulation language
dan bagaimana cara melakukan data manipulation pada sql server 2008
2. Learning Outcomes
 Trainee memahami sintaks – sintaks yang digunakan untuk melakukan data
manipulation dan dapat mengimplementasikannya di sql server 2008
3. Material
a. SELECT
Digunakan untuk menampilkan data – data dalam table kita.

Sintaks:

SELECT [column_1],[column_2],[column_3],… FROM [table_name]

Contoh:

SELECT * FROM MsPelanggan


SELECT RIGHT(Nama,2), UPPER(Alamat) FROM MsSupplier WHERE
LEFT(NoTelp,3) = „021‟

b. INSERT
Digunakan untuk memasukkan data –data ke dalam table yang telah kita
buat.

Sintaks:

INSERT INTO [table_name]([column_1],[column_2],[column_3],…)


VALUES ([value_1],[value_2],[value_3])

Contoh:

INSERT INTO MsMahasiswa(NIM, Nama)


VALUES(„1200975785‟, „Jefry Widianata‟)
INSERT INTO MsKaryawan
VALUES(„Ferenky Man‟,‟Male‟,20)

41
c. 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:

UPDATE MsBarang SET NamaBarang = „Cendol‟, Jumlah = 5


WHERE KdBarang = „KB001‟
UPDATE TrHeaderTransaction SET JumlahBarang = 20
WHERE NamaBarang = „Sabun‟
AND MsBarang.KdBarang = TrHeaderTransaction.KdBarang

d. DELETE
Digunakan untuk melakukan penghapusan data yang ada di dalam table.

Sintaks:

DELETE FROM [table_name] WHERE {condition}

Contoh:

DELETE FROM TrDetailTransaction WHERE KdTransaksi = „KT010‟


DELETE FROM RegistrationHeader
FROM RegistrationHeader rh, Participant pp
WHERE rh.ParticipantID = pp.ParticipantID
AND ParticipantName = „Budi‟

e. COMMIT
Digunakan untuk membuat semua perubahan data yang dilakukan sejak
transaksi dimulai menjadi permanen di database kita.

Contoh:

BEGIN TRAN
DELETE FROM MsKaryawan WHERE KdKaryawan = „KD001‟
COMMIT

f. ROLLBACK
Digunakan untuk mengembalikan transaksi yang telah dilakukan ke awal
transaksi, atau pada suatu titik aman tertentu dalam transaksi.

Contoh:

BEGIN TRAN
DELETE FROM MsKaryawan WHERE KdKaryawan = „KD001‟
ROLLBACK

42
g. Fungsi-fungsi dasar SQL

datediff untuk mendapatkan selisih tanggal.

Bentuk umumnya :
datediff(SatuanTanggal,Tanggal1,Tanggal2)

Contoh :
datediff(day,'9/10/10','9/20/10')
akan mengembalikan 10.
datename untuk mendapatkan nama dari bagian tanggal
tertentu.

Bentuk umumnya :
datename(SatuanTanggal,Tanggal)

Contoh :
datename(month, '10/5/10')
akan mengembalilkan October
datepart untuk mengambil data tertentu dari tanggal.

Bentuk umumnya :
datepart(SatuanTanggal,Tanggal)

Contoh :
datepart(month, '10/5/10')
akan mengembalikan 10.
dateadd untuk menambahkan satuan waktu tertentu ke data
yang berupa datetime

Bentuk umumnya :
dateadd(SatuanTanggal, BesarSatuanTanggal,
Tanggal)

Contoh :
dateadd(day,5, '10/9/10')
akan mengembalikan 14 Oktober 2010
Month untuk mengambil data bulan
Day untuk mengambil data tanggal
Year untuk mengambil data tahun
charindex untuk mengambil urutan dari kata/string tertentu.

43
Bentuk umumnya :
charindex(String yang dicari, namaField, IndexMulai)

Contoh :
ada 1 record, namanya = „Ricky‟
charindex(„ic‟,nama,1) -> mengembalikan nilai 2
left digunakan untuk mengambil beberapa karakter dari
sebelah kiri (awal)

Contoh :
ada 1 record, namanya = „Ricky‟
left(nama, 1) -> ambil 1 huruf terdepan dari nama,
ini akan mengembalikan „R‟
right digunakan untuk mengambil beberapa karakter dari
sebelah kanan(dari belakang)

Contoh :
ada 1 record, namanya = „Ricky‟
right(nama,2) -> ambil 2 huruf terbelakang dari
nama, ini akan mengembalikan „ky‟.
substring digunakan untuk mengambil beberapa karakter mulai
dari index tertentu. bentuk umumnya :
substring(namaField, indexMulai, banyak)

Contoh :
substring(nama, 3 2) -> mengambil 2 huruf dari
nama, dimulai dari index ke-5, ini akan
mengembalikan „ck
rtrim digunakan untuk menghilangkan spasi di sebelah
kanan.

Jika kita mempunyai suatu field, dan typenya adalah


char(20), ternyata tempat yg kita gunakan hanya 7
dari 20 tempat yg disediakan. Maka, 13 tempat
tersisa, akan diisi dengan spasi.

Rtrim ini berguna untuk menghilangkan spasi


tersebut. Tetapi jika type data kita varchar(20), rtrim
ini sudah tidak diperlukan lagi, karena walaupun kita
memesan tempat sebanyak 20, namun yg kita
gunakan hanya 7 saja, maka sisa 13 tempat tersebut
akan dimampatkan, sehingga memorinya bisa dipakai
oleh yg lain (tidak diisi dengan spasi). Biasanya, rtrim
ini digunakan bersama - sama dengan right.

44
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)

45
Database
Module 06 - Data Manipulation
Language Queries Basic

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai query manipulasi dasar dengan
pembahasan Simple Queries, Sorting, SQL Aggregate, DISTINCT, WHERE,
ISNULL, dan OPERATOR.
2. Learning Outcomes
 Trainee memahami dan mampu mengimplementasikan query manipulasi dasar di
SQL.
3. Material
a. Simple Query

Membuat Table
CREATE TABLE msBarang
(
kdBrg char (5) ,
nmBrg varchar (10),
primary key (kdBrg),
)

Insert Data
Insert into msbarang values („T0001‟,‟21Century‟)

Select
Select * from msbarang

b. Sorting
Untuk mengurutkan data secara ascending atau descending

Sintaks:

ORDER BY (nama_field) [asc/desc]

46
Contoh:
Menampilkan data dari field MsItem secara ascending berdasarkan Judul_item

Select * from msitem


Order by judul_item

Untuk sorting jika kita tidak menuliskan tipe [asc/desc] , maka default query
yang akan diproses adalah secara ascending.

c. SQL Aggregate Functions


Aggregate adalah fungsi yang disediakan oleh sql untuk melakukan
perhitungan terhadap data yang sudah ada

Contoh fungsi fungsi aggregate :


 sum(nama_field)
menjumlahkan isi baris-baris pd field tersebut.

 count(nama_field)
menghitung banyaknya baris ( pencacahan data ).

 avg(nama_field)
menghitung rata-rata dari isi baris-baris.

 max(nama_field)
mencari nilai max dari baris-baris.

 min(nama_field)
mancari nilai min dari baris-baris.

Untuk sum dan avg, field yang mau dihitung tipe datanya harus
numeric.untuk count, baris yang mempunyai nilai NULL, tidak ikut
dihitung.

Contoh tabel trans_pembelian :

tglbeli kdcustomer kdbuku qty


14-aug-2007 CU001 BO001 5
15-aug-2007 CU001 BO002 10
16-aug-2007 CU002 BO001 20
17-aug-2007 CU003 BO003 12
17-aug-2007 CU001 BO001 2

Proses Perhitungan Tunggal


 Tampilkan jumlah QTY buku di tabel diatas
select sum(qty) from trans_pembelian

 Tampilkan jumlah QTY untuk kdcustomer „CU001‟


select sum(qty) from trans_pembelian where kdcustomer=„CU001‟

47
 Tampilkan banyaknya jenis buku yang dbeli oleh customer „CU001‟
select count(distinct(kdbuku))
from trans_pembelian where kdcustomer = „CU001‟

Karena DO001 berulang, ingin dihitung 1 kali saja, pake distinct

Proses Perhitungan yang Digolongkan


Proses Perhitungan yang digolongkan dapat di lakukan dengan cara
menambahan sintaks :

Group By (namafield)
Contoh :
 Tampilkan kdcustomer dan jum_QTY untuk masing-masing
kdcustomer
select kdcustomer, sum(qty) from trans_pembelian
group by kdcustomer

 Tampilkan kdcustomer, kdbuku, jum_QTY_PERBUKU.


select kdcustomer, kdbuku, sum(qty) as jum_QTY_PERBUKU from
trans_pembelian
group by kdcustomer, kdbuku

Kalau group by kdcustomer saja tidak boleh karena kita maunya


hitung per bukunya. tulisnya terbalik juga tidak masalah

 Tampilkan kdcustomer, kdbuku, judul, jum_QTY_PERBUKU


select kdcustomer, kdbuku, judul, sum(qty) as jum_QTY_PERBUKU
from trans_pembelian
group by kdcustomer, kdbuku, judul

Meskipun judul tidak akan mengubah penjumlahan qty, tapi harus


ditulis juga di group by.. Mudahnya, apa yang ada di select list HARUS
ditulis juga di group by kecuali data-data yang ada dalam aggregate
function.

 Tampilkan kdcustomer, jum_qty untuk masing-masing kdcustomer


dan pisahkan juga menurut tglbelinya
select kdcustomer, sum(qty) as jum_QTY_BUKU from trans_pembelian
group by kdcustomer, tgltrans

Yang ada di group by boleh LEBIH dari yang ada di select list. hasilnya
pasti berbeda dengan no 1

Proses Perhitungan yang Memenuhi Syarat


Proses Perhitungan yang Memenuhi Syarat dapat dilakukan dengan
menambahan sintaks :

Having (kondisi)
Contoh :
 Tampilkan kdcustomer yang jumlah pembelian bukunya lebih dari 15
select kdcustomer from trans_pembelian
group by kdcustomer
having sum(qty)>15

48
penggunaan having HARUS pakai group by karena kita melakukan
proses perhitungan yang digolongkan berdasarkan kdcustomer baru
disaring yang sum(qty)>15 kemudian ditampilkan kdcustomernya

 Tampilkan kdcustomer yang jumlah pembelian bukunya lebih dari 15


dan harganya lebih dari 1000
select kdcustomer, harga, sum(qty) from trans_pembelian t, msbuku b
where b.kdbuku = t.kdbuku --and harga>1000
group by kdcustomer,harga
having sum(qty)>15 and harga>1000

Where tidak bisa digunakan untuk kondisi yang mengandung fungsi


agregasi, jadi harus pake having.
Having bisa mengambil alih fungsi where, namun pemakaiannya
terbatas.
HANYA field yang dicantumkan di group by yang bisa dipakai utk
kondisi di having.

d. Sintaks-sintaks dasar SQL

1. Distinct
untuk menghilangkan duplikasi data

Sintaks:

SELECT DISTINCT [ column_name ]


FROM [ table_name ]

Contoh:
select distinct from msitem

2. Where
menentukan syarat / kondisi dalam memanipulasi data dengan
menggunakan operator logika

Sintaks:

SELECT [ column_name ]
FROM [table_name ]
WHERE [ condition ]

Contoh:
select * from msitem
where nama_item =’green’

3. Between
Pembanding untuk mengecek apakah suatu nilai berada dalam range
tertentu atau tidak

49
Sintaks:

SELECT [ column_name ]
FROM [ table_name ]
WHERE [ column_name ] BETWEEN „value1‟ AND „value2‟

Contoh:
select * from msitem
where stok between 0 and 15

4. Is Null
Untuk membandingkan suatu nilai dengan NULL

Sintaks:

SELECT [column_name]
FROM [table_name]
WHERE [column_name] is NULL

Contoh:
select * from msitem
where stok is NULL

5. Like
Untuk membandingkan data dengan pola / struktur tertentu, untuk satu
karakter dipakai ( _ ) dan string ( % )

Sintaks:

SELECT [column_name]
FROM [table_name]
WHERE [column_name] like [condition]

Contoh:
select * from exe
where file like „zx%‟

50
Database
Module 07 - Data Manipulation
Language Queries Intermediate

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Data Manipulation Language Queries
Intermediate dengan pembahasan Subqueries, Multi Table Queries, Combining
Result Tables, dan Select Into.
2. Learning Outcomes
 Trainee memahami dan dapat menerapkan Data Manipulation Language Queries
Intermediate.
3. Material
a. Subqueries
Subquery adalah query yang berada di query lain contohnya query
SELECT, INSERT, UPDATE, atau DELETE, subquery juga bisa terdapat di
dalam subquery lain. Subquery dapat digunakan dibagian manapun dari
query.

Contoh:

SELECT Nama,(select AVG(banyak) FROM beli) as Max from pelanggan

SELECT Nama FROM pelanggan WHERE (SELECT Nama FROM Beli WHERE
nama=„Natalia‟)=Nama

1. Alias Subquery
Alias subquery adalah subquery yang di beri nama, alias subquery
dianggap sebagai tabel virtual sehingga dapat digunakan untuk
kerperluan-keperluan yang lain.

Contoh:

SELECT v1.Nama,v2.* FROM (SELECT Nama FROM Pelanggan) as v1,


(SELECT * FROM Pelanggan) as v2

2. In dan Exists
Sintaks in digunakan jika kita sudah mengetahui nilai yang mau
dikembalikan dari satu kolom dari tabel yang berbeda. Selain itu, in dapat
digunakan untuk mendapatkan nilai pada kolom (field) tertentu dari suatu
tabel. Hasil dari sintaks in yaitu mengembalikan satu atau lebih nilai field
– field dari suatu tabel dengan kondisi di tabel lain.

51
Sintaks IN:

SELECT column_name FROM table_name


WHERE column_name <primary key> in ( SELECT column_name FROM
table_name)

Exists mirip dengan in bedanya pada pengembalian nilai sintaks exists


dapat digunakan untuk mengembalikan satu atau lebih kolom dari suatu
tabel.

Sintaks EXISTS:

SELECT column_name FROM table_name


WHERE exists (SELECT * FROM table_name WHERE column_name =
column_name)

IN EXISTS ini digunakan, jika kita ingin menampilkan data - data dari
suatu tabel, namun syarat nya ada di tabel yang lain(lebih dari satu
tabel).

Bentuk umum IN:

SELECT fieldNames from table1


WHERE foreignKey in(
SELECT foreignKey from table2
---
WHERE.... )

IN akan mengembalikan 1 kolom, jadi pertama - tama kita harus


sebutkan dulu foreignKey yang menghubungkan tabel1 dan tabel2, dan
didalam subquery-nya, yang kita select HANYA 1 kolom saja, sehingga
foreignKey dari table1 akan disamakan dengan foreignKey dari table2.
penggunaan in tidak hanya untuk menghubungkan tabel - tabel saja,
namun juga bisa digunakan untuk mengambil nilai tertentu

Contoh:
SELECT namacustomer FROM mscustomer
WHERE umur in (10, 15, 20)

ini akan menampilkan nama2 customer dari tabel mscustomer yang


berumur 10, 15, atau 20 tahun

52
Bentuk umum EXISTS:

SELECT fieldNames FROM table1


WHERE EXISTS(
SELECT fieldNames FROM table2
WHERE table1.foreignKey = table2.foreignKey
)

EXISTS akan mengembalikan (return) banyak kolom, tidak hanya 1 (ini


bedanya dengan IN, yg hanya mereturn 1 kolom saja), oleh karena itu,
penggunaan EXISTS harus disamakan dulu foreign key-nya.

b. Multi Table Queries


Query untuk dari tabel yang berbeda beda biasanya menggunakan
sintaks where, namun disini kita akan pelajari tentang JOIN. Ada beberapa
tipe JOIN di antara lain adalah sebagai berikut.
Keyword JOIN digunakan di SQL statement untuk men-query data dari
dua atau lebih tabel, berdasarkan relationship antar kolom di tabel-tabel ini.
Tabel di database sering dihubungkan dengan “keys”.
Primary key adalah kolom (atau kombinasi dari kolom) dengan nilai yang
unik untuk setiap barisnya. Setiap nilai dari primary key harus unik di tabel
tersebut, tujuannya adalah untuk mengikat data dari tabel secara bersamaan,
di beberapa tabel tanpa mengulang semua data di setiap tabel.

 JOIN (INNER JOIN)


Mengembalikan baris jika setidak-tidaknya terdapat satu kesamaan di
kedua tabel yang kita berikan perintah JOIN.
 LEFT JOIN
Mengembalikan semua baris dari tabel yang ada di sebelah kiri perintah
JOIN, bahkan jika tidak terdapat kesamaan di tabel sebelah kanan.
 RIGHT JOIN
Mengembalikan semua baris dari tabel yang ada di sebelah kanan
perintah JOIN, bahkan jika tidak terdapat kesamaan di tabel sebelah kiri.
 FULL JOIN
Mengembalikan semua baris dari tabel yang ada disebelah kiri maupun
kanan perintah JOIN walaupun tidak terdapat kesamaan.

Contoh
create table uts
(
nama varchar(30),
nilai char(3)
)

create table uas


(
nama varchar(20),
nilai int
)

53
insert into uts values('Alvian','79')
insert into uts values('Lidya','95')
insert into uts values('Eko','80')
insert into uts values('Paulus','87')
insert into uts values('Johanes','92')

insert into uas values('Lidya',91)


insert into uas values('Paulus',88)
insert into uas values('Johanes',81)
insert into uas values('Rudi',96)
insert into uas values('Hendri',84)
insert into uas values('Stefan',98)

Misalnya sudah kita buat tabel yang yang diatas.

Hasilnya adalah seperti ini

JOIN
SELECT * FROM uts INNER JOIN uas ON uts.nama = uas.nama

Nama Nilai Nama Nilai


Lidya 95 Lidya 91
Paulus 87 Paulus 88
Johanes 92 Johanes 81

LEFT JOIN
SELECT * FROM uts LEFT JOIN uas ON uts.nama = uas.nama

Nama Nilai Nama Nilai


Alvian 79 NULL NULL
Lidya 95 Lidya 91
Eko 80 NULL NULL
Paulus 87 Paulus 88
Johanes 92 Johanes 81

RIGHT JOIN
SELECT * FROM uts RIGHT JOIN uas ON uts.nama = uas.nama

Nama Nilai Nama Nilai


Lidya 95 Lidya 91
Paulus 87 Paulus 88
Johanes 92 Lidya 81
NULL NULL Rudi 96
NULL NULL Hendri 84
NULL NULL Stefan 98

54
FULL JOIN
SELECT * FROM uts FULL JOIN uas ON uts.nama = uas.nama

Nama Nilai Nama Nilai


Lidya 95 Lidya 91
Paulus 87 Paulus 88
Johanes 92 Johanes 81
NULL NULL Rudi 96
NULL NULL Hendri 84
NULL NULL Stefan 98
Eko 80 NULL NULL
Alvian 79 NULL NULL

c. Combining Result Tables


Untuk menggabungkan dua atau lebih perintah SELECT ke dalam satu hasil
TABLE, kita dapat menggunakan beberapa keyword berikut yaitu.

UNION
Mengembalikan semua nilai dari TABLE masing-masing perintah SELECT. 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.

EXCEPT
Mengembalikan semua baris dari tabel pertama (R1) yang tidak terdapat di
tabel kedua (R2). Jika kita mau men-copy semua baris dari R1 yang akan
ditaruh di Result Table, kita tuliskan EXCEPT ALL. Jika kita ingin membuat
baris yang di R1 dihapus dan tidak ada di Result Table, kita menggunakan
EXCEPT atau EXCEPT DISTINCT.

INTERSECT
Mengembalikan baris yang ada di Result Table dan terdapat di kedua perintah
SELECT yang kita buat, jika kita ingin semua baris yang berulang ditampilkan
juga, maka kita lakukan perintah INTERSECT ALL. Jika data yang berulang
tidak mau ditampilkan di Result Table, maka kita bisa menggunakan perintah
INTERSECT atau INTERSECT DISTINCT.

R1 result table
COL1 COL2
a a
a b
a c

R2 result table
COL1 COL2
a b
a c
a d

55
Jika kita menggunakan UNION hasilnya adalah sebagai berikut
COL1 COL2
a a
a b
a c
a d

EXCEPT operation mengkombinasikan dua result table and


mengembalikan satu baris
Hasil dari EXCEPT adalah tergantung dari perintah pertama dari perintah
SELECT yang digunakan pada Result Table, jika perintah SELECT yang
pertama adalah R1, maka yang akan dikembalikan adalah satu baris.

COL1 COL2
a a

Jika perintah SELECT yang dipilih adalah R2 yang pertama kali, maka hasilnya
akan berbeda

COL1 COL2
a d

INTERSECT menggabungkan dua table dan mengambil hasil yang


sama
COL1 COL2
a b
a c

Untuk mengeliminasi baris yang redudan, maka dapat dipilih beberapa opsi
dari keyword di bawah ini.

 UNION atau UNION DISTINCT


 EXCEPT atau EXCEPT DISTINCT
 INTERSECT atau INTERSECT DISTINCT
To order the entire result table, specify the ORDER BY clause at the end.

Table 1. STOCKA
ISBN TITLE AUTHOR NOBEL PRIZE
8778997709 For Whom the Bell Tolls Hemmingway N
4599877699 The Good Earth Buck Y
9228736278 A Tale of Two Cities Dickens N
1002387872 Beloved Morrison Y
4599877699 The Good Earth Buck Y
0087873532 The Labyrinth of Solitude Paz Y

56
C
o
n
t
o 2. STOCKB
Table
h
ISBN TITLE AUTHOR NOBEL PRIZE
:
6689038367 The Grapes of Wrath Steinbeck Y
A
2909788445 The Silent Cry Oe Y
s
1182983745
u Light in August Faulkner Y
m
9228736278 A Tale of Two Cities Dickens N
s
1002387872
i Beloved Morrison Y
k
Asumsikan bahwa kita mempunyai dua table yang bertujuan mengatur stok
pada dua toko buku.

Contoh 1: UNION

SELECT TITLE, AUTHOR


FROM STOCKA
WHERE NOBELPRIZE = 'Y'
UNION
SELECT TITLE, AUTHOR
FROM STOCKB
WHERE NOBELPRIZE = 'Y'
ORDER BY AUTHOR

Table 3. Hasil dari UNION


TITLE AUTHOR
The Good Earth Buck
Light in August Faulkner
Beloved Morrison
The Silent Cry Oe
The Labyrinth of Solitude Paz
The Grapes of Wrath Steinbeck

Contoh 2: EXCEPT

SELECT TITLE
FROM STOCKA
EXCEPT
SELECT TITLE
FROM STOCKB
ORDER BY TITLE

57
Table 4. Hasil dari EXCEPT
TITLE
For Whom the Bell Tolls
The Good Earth
The Labyrinth of Solitude

Contoh 3: INTERSECT:

SELECT TITLE
FROM STOCKA
INTERSECT
SELECT TITLE
FROM STOCKB
ORDER BY TITLE

Table 5. Result of INTERSECT


TITLE
A Tale of Two Cities
Beloved

Contoh: UNION ALL:

SELECT TITLE, AUTHOR


FROM STOCKA
WHERE NOBELPRIZE = 'Y'
UNION ALL
SELECT TITLE, AUTHOR
FROM STOCKB
WHERE NOBELPRIZE = 'Y'
ORDER BY AUTHOR

Table 6. Hasil dari UNION ALL


TITLE AUTHOR
The Good Earth Buck
The Good Earth Buck
Light in August Faulkner
Beloved Morrison
Beloved Morrison
The Silent Cry Oe
The Labyrinth of Solitude Paz
The Grapes of Wrath Steinbeck

58
Contoh: EXCEPT ALL:

SELECT TITLE
FROM STOCKA
EXCEPT ALL
SELECT TITLE
FROM STOCKB
ORDER BY TITLE

Table 7. Hasil dari EXCEPT ALL


TITLE
For Whom the Bell Tolls
The Good Earth
The Good Earth
The Labyrinth of Solitude

Contoh: INTERSECT ALL

SELECT TITLE
FROM STOCKA
INTERSECT ALL
SELECT TITLE
FROM STOCKB
ORDER BY TITLE

Table 8. Hasil dari INTERSECT ALL


TITLE
A Tale of Two Cities
Beloved

d. Select Into

SELECT INTO adalah statement yang men-SELECT data dari satu TABLE dan
men-INSERT data tersebut ke TABLE lainnya. SELECT INTO statement
biasanya digunakan untuk membuat backup/copy dari sebuah TABLE

SQL SELECT INTO Syntax


Kita dapat memilih semua kolom untuk dimasukkan ke suatu table tertentu
(baru) dengan cara :

SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename

59
atau kita dapat memilih hanya beberapa kolom saja yang kita inginkan
dengan cara :

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename

Contoh:
Membuat backup dari TABLE "Person" yang ada di database, kita
menggunakan perintah SQL yaitu:

SELECT *
INTO Persons_Backup
FROM Persons

60
SQL Server
Module 08 - Data Manipulation
Language Queries Advanced

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai query manipulasi data advanced.
2. Learning Outcomes
 Trainee dapat memahami penggunaan Alias Subquery, In, Exists, Aggregate
function, compute, group by, order by, join, dan union.
3. Material
a. ALIAS Subquery
Alias subquery adalah subquery yang diberi nama, alias subquery
dianggap sebagai tabel virtual sehingga dapat digunakan untuk kerperluan-
keperluan yang lain.
Contoh :
select v1.Nama, v2.* from (select Nama from Pelanggan) as v1,
(select * from Pelanggan) as v2

b. IN, EXISTS
Sintaks IN digunakan jika kita sudah mengetahui nilai yang mau
dikembalikan dari satu kolom dari tabel yang berbeda. Selain itu, IN dapat
digunakan untuk mendapatkan nilai pada kolom (field) tertentu dari suatu
tabel. Hasil dari sintaks IN yaitu mengembalikan satu atau lebih nilai field–
field dari suatu tabel dengan kondisi di tabel lain.

Sintaks IN:

Select column_name from table_name


Where column_name <primary key>
in ( select column_name from table_name)

Sintaks EXISTS mirip dengan IN bedanya pada pengembalian nilai


sintaks EXISTS dapat digunakan untuk mengembalikan satu atau lebih kolom
dari suatu tabel.

Sintaks EXISTS:

Select column_name from table_name


Where exists (select * from table_name where column_name = column_name)

61
Sintaks IN, EXISTS ini digunakan jika kita ingin menampilkan data-
data dari suatu tabel, namun syaratnya ada di tabel yang lain (lebih dari satu
tabel).

Bentuk umum IN:

select fieldNames from table1


where foreignKey in(
select foreignKey from table2
---
where.... )

IN akan mengembalikan 1 kolom, sehingga pertama-tama kita harus


menyebutkan dulu foreignKey yang menghubungkan tabel1 dan tabel2, dan
di dalam subquerynya, yang kita select HANYA 1 kolom saja, sehingga
foreignKey dari table1 akan disamakan dengan foreignKey dari table2.
Penggunaan IN tidak hanya untuk menghubungkan tabel-tabel saja, namun
juga bisa digunakan untuk mengambil nilai tertentu.

Contoh:

select namaCustomer from msCustomer


where umur in (10, 15, 20)

Ini akan menampilkan nama-nama customer dari tabel msCustomer yang


berumur 10, 15, atau 20 tahun.

Bentuk umum EXISTS:

select fieldNames from table1


where exists
(
select fieldNames from table2
where table1.foreignKey = table2.foreignKey
)

EXISTS akan mengembalikan (return) banyak kolom, tidak hanya 1


(ini bedanya dengan in, yg hanya me-return 1 kolom saja), oleh karena itu,
penggunaan EXISTS harus disamakan dulu foreign key-nya.

c. Aggregate
Aggregate adalah fungsi yang disediakan oleh SQL untuk melakukan
perhitungan (kalkulasi) terhadap data.

Fungsi-fungsi agregasi antara lain :

1. sum(nama_field)
menjumlahkan isi baris-baris pada field tersebut.

62
2. count(nama_field)
menghitung banyaknya baris (pencacahan data).

3. avg(nama_field)
menghitung rata-rata dari isi baris-baris.

4. max(nama_field)
mencari nilai max dari baris-baris.

5. min(nama_field)
mencari nilai min dari baris-baris.

Untuk sum dan avg, field yang mau dihitung harus tipe datanya numeric.
Untuk count, baris yang mempunyai nilai NULL, tidak ikut dihitung.

Contoh tabel Tr_Pembelian:

tglBeli kdCustomer kdBuku Qty


20-Oct-2010 CU001 BK001 5
20-Oct-2010 CU001 BK002 2
21-Oct-2010 CU002 BK001 6
22-Oct-2010 CU003 BK003 3
23-Oct-2010 CU002 BK002 1

CREATE TABLE Tr_Pembelian(


tglBeli DateTime,
kdCustomer char(5),
kdBuku char(5),
Qty int
)

insert into Tr_Pembelian values('20-Oct-2010','CU001','BK001',5)


insert into Tr_Pembelian values('20-Oct-2010','CU001','BK002',2)
insert into Tr_Pembelian values('20-Oct-2010','CU002','BK001',6)
insert into Tr_Pembelian values('20-Oct-2010','CU003','BK003',3)
insert into Tr_Pembelian values('20-Oct-2010','CU002','BK002',1)

1. Tampilkan jumlah Qty buku di table di atas:


 SELECT SUM(Qty) from Tr_Pembelian
2. Tampilkan banyaknya jenis buku yang dibeli oleh customer „CU001‟
 SELECT COUNT(kdBuku) FROM Tr_Pembelian
WHERE kdCustomer='CU001'

d. Compute, Group By, Order By


 Compute
Menghasilkan total yang muncul sebagai kolom tambahan pada ringkasan
hasil akhir yang ditetapkan. Bila digunakan dengan BY, klausa COMPUTE
menghasilkan control-breaks dan subtotal pada set hasil. Anda dapat
menentukan COMPUTE BY dan COMPUTE dalam query yang sama.

63
Sintaks COMPUTE:

COMPUTE row_aggregate(column_name)
[by column_name [, column_name]...]

COMPUTE dapat digunakan tanpa menggunakan BY untuk menghasilkan


grand total, grand counts, dan lainnya. ORDER BY merupakan optional
jika kamu menggunakan COMPUTE tanpa BY, jika menggunakan
COMPUTE BY, harus menggunakan ORDER BY.

Contoh soal:
1. Tampilkan kdcustomer, kdbuku, jum_Qty_perBuku, dan buat subtotal
(untuk jumlah qty per customer)

SELECT kdCustomer, kdBuku, SUM(Qty) as jum_Qty_perBuku from


Tr_Pembelian
GROUP BY kdCustomer, kdBuku
ORDER BY kdCustomer
COMPUTE SUM(SUM(Qty)) by kdCustomer

Sintaks compute tidak bisa memakai alias kolom


Compute by SELALU pakai order by
Field yang ada di compute by HARUS ada di order by

2. Tampilkan kdCustomer, kdBuku, qty*harga yang diberi alias kolom


„qty*harga‟, lalu tampilkan subtotal untuk menghitung banyak kdBuku
dan jumlah dari field „qty*harga‟ untuk masing-masing kdCustomer.

SELECT kdCustomer, t.kdBuku, qty*harga as 'qty*harga' from


Tr_Pembelian t, msbuku b
WHERE t.kdBuku = b.kdBuku
ORDER BY kdCustomer
COMPUTE COUNT(t.kdBuku),SUM(qty*harga) by kdcustomer

Contoh:
CREATE TABLE Sales
(
NamaPelanggan varchar(20),
KdMenu char(5),
Qty int
)

INSERT INTO Sales VALUES('Alvin','MN001', 5)


INSERT INTO Sales VALUES('Alvin','MN002', 6)
INSERT INTO Sales VALUES('Alvin','MN003', 8)
INSERT INTO Sales VALUES('Andy','MN002', 2)
INSERT INTO Sales VALUES('Andy','MN004', 3)
INSERT INTO Sales VALUES('Husin','MN002', 5)
INSERT INTO Sales VALUES('Husin','MN003', 9)
INSERT INTO Sales VALUES('Husin','MN004', 7)
INSERT INTO Sales VALUES('William','MN001', 5)
INSERT INTO Sales VALUES('Wempy','MN002', 6)
INSERT INTO Sales VALUES('Frank','MN003', 2)

64
INSERT INTO Sales VALUES('Hans','MN004', 1)
INSERT INTO Sales VALUES('Herbert','MN001', 4)
INSERT INTO Sales VALUES('Wandi','MN003', 8)
INSERT INTO Sales VALUES('Wandi','MN004', 7)

Penggunaan COMPUTE:

SELECT NamaPelanggan, SUM(Qty)as 'jumlah' FROM Sales


GROUP BY NamaPelanggan
COMPUTE SUM(SUM(Qty))

Hasilnya:

Penggunaan COMPUTE BY:


SELECT NamaPelanggan,KdMenu, SUM(Qty)as 'jumlah' FROM Sales
GROUP BY NamaPelanggan, KdMenu
ORDER BY KdMenu
COMPUTE SUM(SUM(Qty)) BY KdMenu

65
Hasilnya:

Pada hasil dengan menggunakan COMPUTE BY, akan dimunculkan tiap


jumlah dari pembelian dengan KdMenu yang sama.

 Group By
GROUP BY digunakan untuk pengelompokan data, biasa digunakan
bersama dengan fungsi SQL agregat seperti SUM untuk menyediakan
sarana pengelompokan dataset hasilnya dengan tabel database kolom
tertentu.

Sintaks GROUP BY:

SELECT column_name, aggregate_function(column_name)


FROM table_name
WHERE column_name operator value
GROUP BY column_name

66
Contoh soal:
1. Tampilkan kdcustomer dan jum_QTY untuk masing-masing
kdcustomer

select kdcustomer, sum(qty) from trans_pembelian


group by kdcustomer

2. Tampilkan kdcustomer, kdbuku, jum_QTY_PERBUKU.

select kdcustomer, kdbuku, sum(qty) as jum_QTY_PERBUKU


from trans_pembelian
group by kdcustomer, kdbuku

Jika group by kdcustomer saja tidak boleh karena kita maunya hitung
per bukunya. tulisnya terbalik juga tidak masalah

3. Tampilkan kdcustomer, kdbuku, judul, jum_QTY_PERBUKU

select kdcustomer, kdbuku, judul, sum(qty) as


jum_QTY_PERBUKU from trans_pembelian
group by kdcustomer, kdbuku, judul

Meskipun judul tidak akan mengubah penjumlahan qty, tapi harus


ditulis juga di group by.. Mudahnya, apa yang ada di select list HARUS
ditulis juga di group by kecuali data-data yang ada dalam aggregate
function.

4. Tampilkan kdcustomer, jum_qty untuk masing-masing kdcustomer


dan pisahkan juga menurut tglbelinya

select kdcustomer, sum(qty) as jum_QTY_BUKU


from trans_pembelian
group by kdcustomer, tgltrans

Yang ada di group by boleh LEBIH dari yang ada di select list. hasilnya
pasti berbeda dengan no 1

Contoh lain:

CREATE TABLE Penjualan


(
TglPenjualan DateTime,
NamaPelanggan varchar(30),
TotalPembelian int
)

INSERT INTO Penjualan VALUES('09/13/2010', 'Jecky', 1000)


INSERT INTO Penjualan VALUES('09/17/2010', 'David', 2000)
INSERT INTO Penjualan VALUES('09/21/2010', 'David', 3000)
INSERT INTO Penjualan VALUES('09/28/2010', 'Jecky', 2500)
INSERT INTO Penjualan VALUES('10/17/2010', 'Percont', 1500)
INSERT INTO Penjualan VALUES('10/25/2010', 'Percont', 2000)
INSERT INTO Penjualan VALUES('11/5/2010', 'Percont', 1200)
INSERT INTO Penjualan VALUES('11/10/2010', 'Jecky', 3500)
INSERT INTO Penjualan VALUES('11/17/2010', 'David', 3000)

67
INSERT INTO Penjualan VALUES('11/24/2010', 'Percont', 2500)

SELECT * FROM Penjualan

SELECT NamaPelanggan, sum(jmlPembelian) as 'Total Pembelian'


from Penjualan
GROUP BY NamaPelanggan

 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 ORDER BY:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC

Contoh:
1. Tampilkan data dari Tr_Pembelian tersebut dan sorting berdasarkan
TglBeli secara descending.

select * from Tr_Pembelian


order by TglBeli desc

Jika tidak ditulis desc berarti otomatis diurutkannya ascending.

68
2. Tampilkan TglBeli, kdCustomer, jum_Qty yang digolongkan
berdasarkan TglBeli dan kdCustomer

select TglBeli, kdCustomer, sum(Qty) as ‘jumlahQty’


from Tr_Pembelian
group by TglBeli, kdCustomer
order by TglBeli asc, kdCustomer desc, jumlahQty asc

Field yang kita pakai untuk order by HARUS ada di select list ATAU di
group by

e. JOIN Table
Join digunakan untuk menggabungkan dua atau lebih tabel secara
horizontal. join dibedakan menjadi beberapa macam, antara lain:
a) Inner Join
Jika kita hanya menuliskan „join‟ saja, maka defautnya adalah inner join.
Inner join akan menggabungkan 2 tabel, yang mempunyai nilai yang
sama (dengan kata lain hanya akan menggabungkan data yang nilainya
ada di KEDUA tabel yang di-inner join kan)

Sintaks:

SELECT field1, field2, field3


FROM first_table
INNER JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

b) Left Join
Akan menggabungkan dua tabel, tetapi mengacu pada tabel yang ada di
sebelah kiri (tabel pertama). asal nilai dari data tersebut ada di tabel
pertama, maka data tersebut akan ditampilkan, walaupun nilai dari data
tersebut tidak ada di tabel kedua.

Sintaks:

SELECT field1, field2, field3


FROM first_table
LEFT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

c) Right Join
Kebalikan dari left join. right join ini akan menampilkan data-data yang
mengacu pada tabel di sebelah kanan (tabel kedua). asal nilai dari data
tersebut ada di tabel kedua, maka data tersebut akan ditampilkan,
walaupun nilainya tidak ada di tabel pertama.

69
Sintaks:

SELECT field1, field2, field3


FROM first_table
RIGHT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

d) Full Join
Jika inner join hanya menampilkan data-data yang bernilai sama dikedua
tabel, left join hanya mengacu pada tabel pertama dan right join mengacu
pada tabel kedua, maka full join ini akan menampilkan data-data hasil
gabungan dari kedua tabel tersebut, tanpa memperdulikan apakah nilai
dari data tersebut hanya ada di sebelah kanan, sebelah kiri, ataupun
tidak.

Sintaks:

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

Contoh penggunaan JOIN:


- Tabel Karyawan

- Tabel Pelanggan

Query CREATE & INSERT:

CREATE TABLE Karyawan


(
nama varchar(20),
umur int
)

70
CREATE TABLE Pelanggan
(
nama varchar(20),
jmlPembelian int
)

INSERT INTO Karyawan VALUES('Suriani',22)


INSERT INTO Karyawan VALUES('Violitta',22)
INSERT INTO Karyawan VALUES('Novita',21)
INSERT INTO Karyawan VALUES('Silvia',21)
INSERT INTO Karyawan VALUES('Sofia',20)

INSERT INTO Pelanggan VALUES('Violitta',23)


INSERT INTO Pelanggan VALUES('Suriani',21)
INSERT INTO Pelanggan VALUES('Novita',21)
INSERT INTO Pelanggan VALUES('David',21)

Pertanyaan:
 Gabungkan 2 tabel di atas dengan INNER JOIN

SELECT * FROM Karyawan kary


INNER JOIN Pelanggan pel
on kary.nama = pel.nama

Hasilnya:

Dengan inner join kita menggabungkan tabel karyawan dan tabel


pelanggan yang dihubungkan oleh foreign key nama. Dapat kita lihat,
dengan inner join, maka data yang ditampilkan hanyalah data yang
nilainya ada di tabel karyawan dan tabel pelanggan. Sofia, Silvia, dan
David yang hanya terdapat di salah satu tabel tidak ditampilkan.

 Gabungkan 2 tabel dengan LEFT JOIN

SELECT * FROM Karyawan kary


LEFT JOIN Pelanggan pel
on kary.nama = pel.nama

Hasilnya:

71
Left join akan menggabungkan tabel dengan mengacu pada tabel yg
pertama (tabel karyawan), sehingga semua data yg ada di tabel karyawan
akan ditampilkan, walaupun data tersebut tidak ada nilainya di tabel beli,
nilainya akan diisi dengan NULL.

 Gabungkan 2 tabel dengan RIGHT JOIN

SELECT * FROM Karyawan kary


RIGHT JOIN Pelanggan pel
on kary.nama = pel.nama

Hasilnya:

Right join akan menggabungkan tabel dengan mengacu pada tabel yang
kedua (tabel pelanggan). Sehingga, semua data yg ada di tabel
pelanggan akan ditampilkan. Walaupun data tersebut tidak ada nilainya di
tabel karyawan, nilainya akan diisi dengan NULL.

 Gabungkan 2 tabel dengan FULL JOIN

SELECT * FROM Karyawan kary


FULL JOIN Pelanggan pel
on kary.nama = pel.nama

Hasilnya:

Full join akan menggabungkan tabel tanpa mengacu pada tabel manapun.
sehingga semua data akan ditampilkan, walaupun data tersebut ada
nilainya di tabel pelanggan, tapi tidak ada nilainya di tabel karyawan,
nilainya akan diisi dengan NULL, demikian juga bila data tersebut hanya
ada nilainya di tabel karyawan, tidak tapi dalam tabel pelanggan.

f. Union
Join adalah teknik yang digunakan untuk mengakses lebih dari satu
tabel dan menggabungkan hasilnya, sedangkan Union digunakan untuk
menggabungkan isi dari tabel yang satu dengan tabel yang lainnya ke dalam
satu atau lebih kolom.

72
Union digunakan untuk menggabungkan hasil dari dua atau lebih
statement SELECT ke dalam hasil tunggal. Semua statement yang
digabungkan dengan menggunakan UNION harus mempunyai struktur yang
sama.
Setiap pernyataan SELECT dalam UNION harus memiliki jumlah kolom
yang sama. Kolom juga harus memiliki tipe data yang sama. Juga, kolom
dalam setiap pernyataan SELECT harus dalam urutan yang sama.

Sintaks UNION:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

Nama kolom dalam hasil dari UNION selalu sama dengan nama kolom
pada statement SELECT yang pertama pada UNION. Operator UNION secara
default menghilangkan baris yang isinya sama (data berulang) dari hasil
statement SELECT.
Ada pilihan untuk menggunakan keyword ALL setelah keyword UNION,
yang akan memaksa semua baris termasuk baris yang isinya sama (data
berulang) dikembalikan dalam hasil statement SELECT.

Sintaks UNION ALL:


SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

Contoh:

CREATE TABLE Karyawan


(
namaKaryawan varchar(20),
umur int
)

CREATE TABLE Pelanggan


(
namaPelanggan varchar(20),
jmlPembelian int
)

INSERT INTO Karyawan VALUES('Suriani',22)


INSERT INTO Karyawan VALUES('Violitta',22)
INSERT INTO Karyawan VALUES('Novita',21)
INSERT INTO Karyawan VALUES('Silvia',21)
INSERT INTO Karyawan VALUES('Sofia',20)

INSERT INTO Pelanggan VALUES('Percont',6)


INSERT INTO Pelanggan VALUES('Jecky',10)
INSERT INTO Pelanggan VALUES('Silvia',12)
INSERT INTO Pelanggan VALUES('Sofia',5)

73
Penggunaan UNION:

SELECT namaKaryawan FROM Karyawan


UNION
SELECT namaPelanggan FROM Pelanggan

Hasilnya:

Penggunaan UNION ALL:

SELECT namaKaryawan FROM Karyawan


UNION ALL
SELECT namaPelanggan FROM Pelanggan

Hasilnya:

Pada penggunaan UNION ALL, data yang berulang seperti Silvia dan Sofia
tetap dimunculkan.

74
Database
Module 09 – Transferring Data

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai proses DTS dalam SQL Server dengan
pembahasan Introduction to tranferring data, Tools for importing and exporting
data in SQL server, Introduction to DTS, dan Transforming data with DTS.
2. Learning Outcomes
 Trainee memahami dan menguasai proses DTS dalam SQL Server.
3. Material
a. Introduction to Transferring Data

Yang dimaksud Transferring Data disini, adalah pemindahan data antar


database (misal: SQL Server, Access, DB2, Oracle, dll) maupun file yang
berisi text (Excel misalnya).

b. Introduction to DTS

Data Transformation Services (DTS) adalah sekumpulan tools


yang digunakan untuk memanipulasi data secara cepat dan mudah. Jika anda
menggunakan database SQL Server, maka anda dapat menggunakan DTS
wizard untuk melakukan import maupun export dari SQL server ke
database/datasource lain.

c. Transforming Data with DTS

Cara untuk Import / Export Data

 Connect ke “Registered Server” pada “Database Explorer”.


 Setelah Anda tersambung klik kanan pada salah satu database Anda, pilih
menu "Task", kemudian klik pada menu item "Import Data" atau "Export
Data". Di bawah ini adalah screen shot dari tasks "Import Data" dan
"Export Data":

75
Langkah - Langkah untuk Memindahkan Data

Berikut adalah isi data dari file Excel :

CustomerID Name EmailAddress Phone


1 Mbadogz mbadogz@mbadogz.com 800-123-5678
2 Grimjoe grimjoe@jugerjack.com 417-891-1234
3 Dum My dummy@dummy.com 234-555-8901
4 Barbarian barbarian@gmail.com 345-678-9012
5 Paladin paladin@gmail.com 765-432-1098
6 Trickster trickster@gmail.com 321-456-0897

76
Kemudian, layar berikut akan ditampilkan:

Jika Anda tidak ingin melihat halaman awal seperti ini lagi, pilih " Do not
show this start page again", kemudian klik next.

77
Pada window ini, Anda mengidentifikasi sumber data yang ingin Anda impor
atau ekspor. Karena contoh data sumber berasal dari excel file, kita pilih data
source : "Microsoft Excel”. Setelah memilih " “Microsoft Excel" sumber data
layar berikut ditampilkan:

78
Jika baris pertama merupakan nama Kolom, pilih “First row has column
names”. Setelah selesai menentukan semua informasi Data Source, kita perlu
menentukan tujuan import/export. Sebagai contoh, jika ingin menempatkan
Data Source ke dalam tabel database SQL Server. Gunakan window "Choose
a Destination" seperti gambar di bawah ini untuk menentukan lokasi
penempatan data:

79
Pilih Next, kemudian akan muncul window seperti berikut :

80
“Copy data from one or more tables or views” adalah pilihan jika kita akan
memasukkan semua data yang ada dari sumber ke dalam tujuan. Sedangkan
“Write a query to specify the data to transfer” berarti kalian mengambil data
sesuai query yang kalian tuliskan. Dalam contoh ini digunakan pilihan “Copy
data from one or more tables or views”.

81
Kemudian pilih Sheet mana di excel yang akan kita import

82
Kemudian akan muncul window apakah kalian mau membuat SSIS package
atau tidak dan bisa melakukan enkripsi ke dalam SSIS package tersebut. Jika
tidak ingin membuat SSIS package masa pilih run immediately. Klik next
maka akan muncul pengaturan yang telah dilakukan. Kemudian pilih Finish:

83
84
Kemudian jika kita melihat pada bagian Database explorer maka seharusnya
sudah ada 1 tabel berisi data kita yang didapat dari file excel.

85
86
Database
Module 10 – Performing Administrative
Task

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Administrative Task dengan
pembahasan Configuration Task, Creating Jobs, Operators, dan Alerts.
2. Learning Outcomes
 Trainee memahami dan menguasai Administrative Task
3. Material
a. Configuration Task

Apa itu Automated Administration?

Automated Administration adalah respon program ke predictable


tanggung jawab administratif atau server events. Administrator,
application writer, dan analis operasi gudang data mendapat manfaat dari
tugas otomatisasi. Untuk otomatis administrasi:
 Tanggung jawab administrasi atau server events terjadi secara
teratur dan dapat diprogram secara administratif.
 Menentukan kumpulan jobs dan alert.
 Menjalankan SQL Server Agent Service.

Mengapa kita menggunakan Automated Administration ?

Tugas dari seorang administrator terdiri dari berbagai tugas-tugas


administrasi yang tidak berubah dari hari ke hari dan dapat
membosankan. Dengan automating tugas dan tanggapan ke server,
waktu Anda dapat digunakan untuk melakukan tugas-tugas lainnya yang
membutuhkan kreativitas.

87
Setup SQL Agent Settings

Pada bagian Object Explorer, klik kanan “SQL Server Agent” kemudian pilih
“Properties”

88
Pilih “Alert System” pada panel sebelah kiri, kemudian

 Pilih “Enable mail profile”


 Verify Mail system: Database Mail
 Verify Mail Profile: SQLAlerts
 Pilih “Include body of e-mail in notification message”
 Klik OK

89
Restart SQL Agent untuk mengaktifkan settingan.

90
b. Creating Jobs, Operators, and Alerts

Membuat Job

1. Dalam Object Explorer, konek ke sebuah database dari SQL Server


Database Engine, dan kemudian expand database.
2. Klik kanan pada “SQL Server Agent”, kemudian arahkan pada “New”, lalu
pilih “Job”.

91
3. Pada tab “General”, pilih textbox “Name”, beri nama job yang akan
dibuat.
4. Uncheck “Enabled “ jika job tidak ingin segera dijalankan ketika job
selesai dibuat.
5. Pada tab “Description”, masukkan deskripsi job yang dibuat. Maksimum
panjang karakter adalah sepanjang 512 karakter .

92
6. Pada panel sebelah kiri, pilih menu “Steps”, kemudian klik button “New”,
untuk membuat Job Step baru.

93
7. Pada bagian Job Step Properties,

 Masukkan nama Step


 Pilih type
 Pilih database
 Masukkan Command (berupa syntax SQL yang akan dijalankan)

94
8. Pada New Job Schedule,

 Masukkan nama Job Schedule


 Pilih type
 Tentukan kapan Job Schedule akan dijalankan.

95
96
9. Pada New Alert,

 Masukkan nama New Alert


 Pilih type

97
10. Pada menu Notifications,

 Masukkan perintah yang akan dilakukan ketika terjadi suatu event


(baik ketika Job selesai dilakukan, maupun ketika Job gagal
dilakukan).
 Pilih baik E-Mail, page, Net Send, menulis ke “Windows Application
event log”, ataupun menghapus job secara otomatis.

98
Membuat Operator

1. Dalam Object Explorer, connect ke sebuah database dari SQL Server


Database Engine, dan kemudian expand database.
2. Klik kanan pada “SQL Server Agent”, kemudian arahkan pada “New”, lalu
pilih “Operators”.

99
3. Masukkan sebuah operator Name, E-mail name, dan klik OK

Berikut keterangannya :

Name, Menentukan nama operator. Nama dibatasi hingga 128 karakter.

E-mail name, Menentukan alamat e-mail dari operator. Jika menampilkan


nama atau nama alias yang dwimakna, kemudian menentukan yang
memenuhi syarat e-mail nama dalam kurung persegi. Misalnya, Anda dapat
menggunakan [SMTP: myfriend@mycompany.com]. Klik tombol browse (...)
untuk mencari SQL Server buku alamat.

Pager e-mail name, Tentukan alamat pager operator. Jika menampilkan


nama atau nama alias yang dwimakna, kemudian menentukan yang
memenuhi syarat e-mail nama dalam kurung persegi. Misalnya, Anda dapat
menggunakan [SMTP: myfriend@mycompany.com]. Klik tombol browse (...)
untuk mencari SQL Server buku alamat.

Net send address ,Menentukan bersih mengirim alamat operator.

Pager on duty schedule, Menentukan hari-hari operator tersedia untuk

100
menerima pemberitahuan pager.

Workday begin , Menentukan jangka waktu setelah mana operator yang


tersedia untuk menerima pemberitahuan pager.

Workday end, Menentukan jangka waktu setelah mana operator tidak lagi
tersedia untuk menerima pemberitahuan pager.

Membuat Alert

1. Dalam Object Explorer, konek ke sebuah database dari SQL Server


Database Engine.
2. Klik kanan pada “SQL Server Agent”, kemudian arahkan pada “New”, lalu
pilih “Alert”.

101
3. Pada tab “General” masukkan

 Name: TEMPDB Growing


 Type: SQL Server performance condition alert
 Object: SQLServer:Databases
 Counter: Data File(s) (KB)
 Instance: tempdb
 Alert if counter: rises above
 Value: 0

102
4. Klik “Response” pada panel sebelah kiri

 Pilih “Notify Operator”


 Pilih “E-mail” untuk operator

103
5. Klik tab “Options” pada panel sebelah kiri

 Pilih “E-mail“ pada “Include alert error text in”


 Delay antara response: 2 minutes
 Klik OK

104
Verifikasi Alert Telah Aktif

 Operator harus menerima e-mail jika solusi pemecahan masalah.


 Buka Alert. Klik “History” pada panel sebelah kiri.
 Kolom akan terupdate ketika trigger alert ditekan.

105
Untuk menonaktifkan alert

 Klik General di sebelah panel kiri dan menghapus tanda centang dari
Aktifkan dan klik OK atau
 Klik kanan pada nama Alert dan pilih Disable

106
Contoh merubah settingan

 Klik “General” pada panel sebelah kiri


 Ubah nilai ke nilai yang lebih besar dari TEMPDB yang sudah ada, simpan
database file. Ukuran file saat ini disertakan dalam e-mail alert.
 Klik “Options” pada panel sebelah kiri
 Ubah response ke 720 menit dalam
 Klik OK

107
Database
Module 11 – Backup and Restore
Database

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai proses Backup dan Restore database.
2. Learning Outcomes
 Trainee memahami dan menguasai proses Backup dan Restore database dalam
SQL Server.
3. Material
a. Jenis–Jenis Metode Backup

 Full
Sebuah backup lengkap yang berisi semua data dalam database tertentu
atau set filegroups atau file, dan juga log yang memungkinkan untuk
direstore.

 Differential
Sebuah backup dari semua file dalam database. Backup ini hanya berisi
data tambahan yang dimodifikasi dari backup database yang paling
terbaru dari setiap file.

 Partial
Backup ini dirancang untuk memberikan fleksibilitas yang lebih untuk
membuat backup database yang mengandung beberapa filegroups read-
only dengan model restore yang sederhana.

 File
Hanya membackup beberapa file saja, tidak keseluruhan database.

 Transaction Log
Hanya membackup modifikasi yang dibuat pada database.

 Copy Only
Biasanya, mengambil perubahan backup database dan mempengaruhi
saat di restore.

108
b. Backup

Cara membackup database :


 Klik kanan pada database yang ingin di backup
 Pilih task
 Pilih backup
 Tentukan jenis backup dan lokasi backup
 Klik OK

Langkah-langkah :

109
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.

110
c. Restore

Cara merestore database:


 Klik kanan pada folder database di explorer
 Pilih restore
 Tentukan kemana akan direstore dan dimana lokasi file yang akan
direstore
 Klik OK

Langkah-langkah:

111
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.

Lalu akan muncul kotak dialog Specify Backup.

112
Setelah itu pilihlah file yang akan di restore, kemudian klik OK.

113
Database
Module 12 - Indexing

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Indexing dengan pembahasan
Introduction indexes, Creating new index in query, dan Drop Index.
2. Learning Outcomes
 Trainee dapat memahami dan mengkombinasikan penggunaan index dalam
suatu query
3. Material
a. Tipe Index
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.

114
b. Membuat Index

1. Pada Object Explorer, klik kanan pada tabel yang ingin diberikan index
kemudian klik Design.

115
2. Kemudian akan muncul Table Designer.

116
3. Dari menu Table Designer, klik Indexes / Keys

4. Pada dialog box Indexes / Keys, klik Add. List Selected Primary /
Unique Key or Index menampilkan index baru.

5. Pilih index baru pada list Selected Primary / Unique Key or Index
dan atur properties index pada grid disebelah kanan. Kemudia klik Close.

117
c. Membuat Unique Index

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. List Selected Primary /
Unique Key or Index menampilkan index baru.
5. Pada grid klik Type. Pilih Index dari drop-down list disebelah kanan
properti.

118
6. Pada Column Name, 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.

7. Kembali ke grid, pilih is Unique. Pilih Yes.

119
8. Pilih pilihan Ignore duplicate keys jika ingin mengabaikan data yang
baru atau diupdate yang akan membuat sebuah duplicate keys pada index
(dengan statement INSERT atau UPDATE).

9. Index baru akan disimpan didatabase ketika menyimpan tabel.

d. Membuat Clustered Index

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.

120
7. Index baru akan disimpan didatabase ketika menyimpan tabel.

e. Management Index

Mengubah properties index


a. Pada Object Explorer, klik kanan pada tabel yang memiliki index yang
ingin diubah propertiesnya.
b. Dari menu Table Designer, klik Indexes / Keys.
c. Pilih index pada list Selected Primary / Unique Key or Index.
d. Ubah properties index pada grid.
e. Perubahan akan disimpan ketika tabel disimpan.

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.

121
5. Index akan dihapus dari database ketika tabel disimpan.

Create new index (Query Analyzer)


Secara optional, di Index options, pilih :
o Unique values untuk membuat unique index.
o Clustered index untuk membuat cluster index, Jika sebuah
clustered index telah ada sebelumnya, option ini tidak akan
muncul.
o Ignore duplicate balues untuk mengontrol apa yang
terjadi ketika INSERT statement memasukkan banyak,
nonunique key values ke dalam sebuah index.
o Do not recomputed statistics (not recommended) untuk
menspesifikasi statistic dari suatu index agar tidak otomatis
di hitung kembali sebagai index yang di update.
o Pad index untuk membiarkan space open di tiap interior
node pada index.
o Drop existing untuk menghapus index yang namanya sama
yang ada sebelum membuat index yang baru.
o FILL Factor untuk menspesifikasi betapa penuhnya SQL
Server seharusnya membuat leaf level dari tiap index page
selama pembuatan index.

122
f. Membuat index dengan Transact-SQL

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name


ON <object> ( column [ ASC | DESC ] [ ,...n ] )
[ INCLUDE ( column_name [ ,...n ] ) ]
[ WITH ( <relational_index_option> [ ,...n ] ) ]
[ ON { partition_scheme_name ( column_name )
| filegroup_name
| default
}
]
[;]

<object> ::=
{
[ database_name. [ schema_name ] . | schema_name. ]
table_or_view_name
}

<relational_index_option> ::=
{
PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| DROP_EXISTING = { ON | OFF }
| ONLINE = { ON | OFF }
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
}

Contoh :
CREATE INDEX Idx_Pelanggan
ON MsBarang (KodeBarang)

Menghapus index dengan Transact-SQL

DROP INDEX table_name.index_name

Contoh :
DROP INDEX MsBarang.Idx_Barang

123
Database
Module 13 – Store Procedure

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini, akan dijelaskan tentang deskripsi dari store procedure dan cara
pemakaiannya beserta implementasi kedalam database.
2. Learning Outcomes
 Trainee diharapkan dapat memahami dan menguasai pemakaian store procedure
dan mengetahui kegunaannya.
3. Material
a. Introduction transact SQL Code (Pengenalan Transact SQL)

Pengertian 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.

Kerangka Transact SQL


Transact-SQL dimulai dengan deklarasi variable dan disusul dengan
blok program. Variable harus dideklarasikan sebelum digunakan. Nama
variable selalu dimulai dengan karakter @. Variable dapat diberikan nilai
melalui instruksi SELECT.

 Deklarasi Variable
Tipe dari variable yang dapat dideklarasikan adalah tipe data dari Ms-
SQL yaitu char, varchar, datetime, int, money dan lainnya.

Contoh :
DECLARE @jumlah int /* deklarasi variable*/
Select @jumlah = 800 /* memberikan nilai 800 ke jumlah */

Variable dapat digunakan untuk mengambil nilai dari sebuah query :


Declare @nama char(30)
Select @nama = judul from dvd

124
PRINT „Judul dvd yaitu „ + @nama /* mencetak nama */

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 :

IF kondisi
Instruksi
IF kondisi
Instruksi1
ELSE
Instruksi2

IF kondisi
BEGIN
Instruksi1
Instruksi2


END

Contoh :
Declare @honor int, @rata_rata int
Select @honor = 200000
Select @rata_rata = 100000

If @honor > @rata_rata


PRINT „Honor di atas rata – rata‟
Else
PRINT „Honor di bawah rata – rata‟

Hasil :
Honor di atas rata – rata

125
 WHILE
While digunakan untuk mengeksekusi satu blok program berulang –
ulang sampai kondisi pada WHILE menjadi false.

Sintaks :

WHILE kondisi
BEGIN


END

Contoh :

Declare @i int
Select @i = 0
While @i < 5
BEGIN
PRINT „i = „ + str (@i)
Select @i = @i – 1
END

Fungsi str() di atas diperlukan untuk mengkonversi bilangan integer


menjadi string (teks).

 CASE

CASE menyederhanakan IF yang berlapis dengan tujuan agar program


dapat dimengerti/dibaca lebih mudah.

Sintaks :

CASE
WHEN kondisi 1 THEN
WHEN kondisi 2 THEN
WHEN kondisi 3 THEN
ELSE
END

Contoh :

Declare @t char(1), @hasil varchar(255)


Select @t = „C‟
Select @hasil =
CASE
WHEN @t = „A‟ then „Karakter A‟
WHEN @t = „B‟ then „Karakter B‟

126
WHEN @t = „C‟ then „Karakter C‟
ELSE
„Tidak diketahui‟
END
PRINT „Hasil adalah ‘ + @hasil

Hasil :
Hasil adalah Karakter C

 CONTINUE DAN BREAK


Continue dan break berkaitan dengan WHILE. Continue melanjutkan
alur program pada pemeriksaan kondisi WHILE, sedangkan Break
mengakibatkan alur program untuk keluar dari WHILE.

 RETURN
RETURN akan menghentikan program dari eksekusi. RETURN dapat
digunakan dalam memproses error. RETURN menyebabkan program
yang dieksekusi kembali ke statement pemanggilnya.

b. Creating and Executing Stored Procedures


Prosedur adalah program yang dapat dipanggil/dieksekusi oleh
program lainnya, atau dieksekusi dari Sql-Prompt seperti ISQL.
Prosedur yang paling sering digunakan adalah stored-procedure yang
berawalan sp, dan extended stored procedure (xp), program yang dikompilasi
sebagai EXE atau DLL (Dynamic Link Library).

Sintaks Membuat prosedur :

CREATE PROCEDURE namaprosedur


AS
Deklarasi variable
<Transact-sql>
.. ..
RETURN

Contoh :

CREATE PROCEDURE pr_harga


As
Select merek, harga from Tas
Return

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.

127
PARAMETER
Prosedur dapat mempunyai parameter berupa variable yang disuplai oleh
program yang memanggilnya.
Sintaks Membuat prosedur dengan parameter:

CREATE PROCEDURE namaprosedur (@p1 int, @p2 char(16), ..)


As
Deklarasi_variable
<transact-sql>
.. ..
RETURN

Pada saat eksekusi parameter diberikan sebagai berikut :


EXEC namaprosedur 210, „Tes‟

c. Renaming and Dropping a Stored Procedures


Setelah menjalankan atau membuat (EXEC) dari stored procedure
yang telah anda definisikan, anda dapat mengubah nama dari stored
procedure tersebut.
Fakta yang sangat menarik dalam stored procedure disini, bahwa
ketika kita merename dengan menggunakan SP_RENAME command, Stored
Procedurenya berhasil diubah namanya (renamed). Tetapi ketika untuk
menskripkannya dengan menggunakan sp_helptext, stored procedurenya
tetap menggunakan nama yang lama alias tidak ke update
Sebagai contoh, buatlah stored procedure dalam Database
AdventureWorks dengan nama SP_Employee

Contoh :

USE AdventureWorks
GO
CREATE PROCEDURE sp_Employee
AS
SELECT * FROM dbo.Employee
WHERE FName LIKE '%i%'
ORDER BY EMPID
GO

128
Maka hasilnya akan menghasilkan output sebagai berikut:

Sekarang anda diminta untuk merename stored procedure dari SP_Employee


menjadi SP_GetEmployee

Contoh :

sp_rename 'SP_Employee', 'SP_GetEmployee'

129
Maka hasil outputnya akan menghasilkan sebagai berikut :

Gunakan sp_helptext untuk melihat isi dari stored procedure yang telah
dibuat atau diubah.

Contoh :

USE AdventureWorks
GO
sp_helptext sp_getemployee

Maka hasil outputnya akan sebagai berikut :

Kita dapat melihat bahwa nama stored procedure yang tertera pada gambar
diatas,

130
Nama stored procedurenya tidak mengalami perubahan. Tetapi jika kita ingin
mengakses stored procedure yang ada dalam result tersebut, akan
mengalami error

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 :

USE tempdb
go
ALTER PROCEDURE ps_NonFatal_INSERT
@Column2 int =NULL
AS
INSERT NonFatal VALUES (@Column2)
IF @@ERROR <>0
BEGIN
PRINT 'Error Occured'
END

Jika terjadi error dalam error handling tersebut, maka akan muncul tampilan
sebagai berikut :

Server:Msg 515,Level 16,State 2,Procedure


ps_NonFatal_INSERT,Line 4
Cannot insert the value NULL into column 'Column2',table
'tempdb.dbo.NonFatal';
column does not_allow nulls.INSERT fails.
The statement has been terminated.
Error Occured

131
Database
Module 14 - Store Procedure Advanced

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Cursor. Konsep awal, jenis kursor dan
bagaimana pembaca dapat melakukan pembuatan Code yang berkaitan dengan
Cursor.
2. Learning Outcomes
 Trainee dapat mengetahui apa itu kursor, jenis kursor dan melakukan
implementasi menggunakan Cursor.
3. Material
a. Introduction 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 :

Declare Cursor
DECLARE cursor_name CURSOR
FOR select_statement

Deallocate Cursor
DEALLOCATE cursor_name CURSOR

View All Cursor List


Sp_cursor_list

Contoh :

--mendeklarasikan sebuah cursor


DECLARE Cursor_Boneka CURSOR FOR
--untuk menunjuk KdBoneka dan NamaBoneka dalam tabel MsBoneka
SELECT KdBoneka, NamaBoneka FROM MsBoneka
--Buka Cursor-Boneka agar dapat digunakan
OPEN Cursor_Boneka
--Mengambil data dari Cursor_Boneka
FETCH NEXT FROM Cursor_Boneka

132
--Selama ada datanya maka lakukan pengambilan data
While @@FETCH_STATUS = 0
BEGIN
--Ambil data selanjutnya
FETCH NEXT FROM Cursor_Boneka
END
--Tutup Cursor_Boneka
CLOSE Cursor_Boneka
--Delete Cursor_Boneka
DEALLOCATE Cursor_Boneka

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.

Beberapa Istilah pada Cursor


a. Next
Mengembalikan baris setelah baris terakhir diambil.

b. Prior
Mengembalikan baris sebelum baris terakhir diambil.

c. First

133
Mengembalikan baris yang paling pertama.

d. Last
Mengembalikan baris yang paling terakhir.

e. Absolute
Mengembalikan baris ke-n dari baris pertama jika n adalah bilangan bulat
positif. Jika n adalah bilangan bulat negatif, maka akan mengembalikan
baris ke-n dari baris terakhir. Jika n adalah 0, maka tidak ada baris yang
diambil.

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.

c. Combining Cursors and Store Procedures

Penggabungan Cursor dan Store Procedur tidaklah sulit karena format


pembuatannya sama

Berikut contohnya :

CREATE PROC getNamaGame @key VARCHAR(20)


AS

DECLARE cur1 CURSOR


SCROLL
FOR
SELECT * FROM MsJenisGame WHERE KodeJenisGame = @key
OPEN cur1
DECLARE @Kode VARCHAR(20),@Jenis VARCHAR(20)
FETCH NEXT FROM Cur1 INTO @Kode, @Jenis
WHILE @@FETCH_STATUS = 0
BEGIN

print 'Kaset '+ @Jenis + ' terdiri dari : '

DECLARE curGame CURSOR


SCROLL
FOR
SELECT NamaGame FROM MsGame WHERE
KodeJenisGame = @Kode
OPEN curGame

DECLARE @NamaGame VARCHAR(50)


FETCH NEXT FROM curGame INTO @NamaGame

WHILE @@FETCH_STATUS = 0
BEGIN

134
PRINT '- ' + @NamaGame
FETCH NEXT FROM curGame INTO
@NamaGame
END
PRINT ''
CLOSE curGame
DEALLOCATE curGame
FETCH NEXT FROM Cur1 INTO @Kode, @Jenis
END
CLOSE cur1
DEALLOCATE cur1

135
Database
Module 15 - Trigger

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Trigger dengan pembahasan konsep
awal, create dan drop trigger serta exception handling.
2. Learning Outcomes
 Trainee dapat mengetahui apa itu trigger dan melakukan implementasi
menggunakan trigger.
3. Material
a. Introduction Trigger
Trigger adalah blok program Transact-SQL yang diasosiasikan dengan
Tabel dan disimpan dalam Database. Trigger dieksekusi bila terjadi suatu
database "event". Database event yaitu Insert, Update dan Delete. Jadi
Trigger merupakan suatu aksi (Transact-SQL) yang dilakukan terhadap
kejadian/event 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:

CREATE TRIGGER namaTrigger


ON namaTable
FOR [INSERT, UPDATE, DELETE]
AS
DECLARE deklarasiVariable
Transact-SQL

136
Contoh Sederhana:
sebuah Trigger diberikan pada Table Pegawai

CREATE TABLE Pegawai


(
KdPegawai char(5) primary key,
NamaPegawai varchar(50)
)

CREATE TRIGGER triggerPegawai


ON Pegawai
FOR INSERT
AS
DECLARE @kdPegawai char(5), @NamaPegawai varchar(50)
SELECT @kdPegawai = kdPegawai, @NamaPegawai = NamaPegawai from
inserted
PRINT 'Record : Kode Pegawai = ' + @kdPegawai + „, Nama Pegawai = „ +
@NamaPegawai

Jika anda memasukkan data:


INSERT INTO Pegawai VALUES („PG001‟, „James‟)

Maka hasil dari query tersebut setelah insert diberikan trigger adalah :
“Record : Kode Pegawai = PG001, Nama Pegawai = James”

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".

c. Drop Trigger

Sintaks ini digunakan untuk menghapus Trigger yang sudah dibuat.

Sintaks penghapusan Trigger:

DROP TRIGGER namaTrigger

Contoh Sederhana:

DROP TRIGGER triggerPegawai

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,

137
dan sebaliknya jika error ditemukan saat menjalankan query, maka sintaks
CATCH akan dikerjakan untuk menanggulangi error tersebut.

Sintaks Penggunaan Exception Handling:

BEGIN TRY
{ SQL Statement }
END TRY
BEGIN CATCH
{ SQL Statement }
END CATCH [;]

Contoh Sederhana:

CREATE TABLE Num


(
Angka int not null
)

BEGIN TRY
INSERT INTO Num VALUES („angka‟)
END TRY
BEGIN CATCH
Print „Query Wrong‟
END CATCH

Jika dijalankan hasil query diatas adalah : “Query Wrong” karena tipe
data yang diterima seharusnya int bukan char ataupun varchar pada nilai
„angka‟.

138
Database
Module 16 - Replication and Monitoring
Performance Database

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Replication and Monitoring
Performance Database dengan pembahasan Introduction to Distributed Data,
Introduction to SQL Server Replication, SQL Server Replication Types,
Performance Monitoring and Tuning, dan Tools for Monitoring and Tuning. Tasks
2. Learning Outcomes
 Trainee mampu mengenal makna data terdistribusi, mengenal SQL Server
Replication dan menggunakannya, mengetahui macam-macam replikasi, dan
melakukan performance monitoring dan tuning
3. Material
a. Introduction to Distributed Data

Distributed Data
Semakin banyak aplikasi yang membutuhkan akses ke beberapa database yang
terletak di lokasi yang berbeda dan mungkin saja terpisah secara geografis.
Dengan adanya sistem database terdistribusi memungkinkan aplikasi untuk
mengakses database di lokasi yang berbeda.

Distributed Database Rules


Rule 0 : Transparansi (C.J. Date) User tidak perlu mengetahui atau
mempedulikan bahwa databasenya terdistribusi.

Distributed Database Advantages


Operasi bisnis biasanya terdistribusi (entah itu per lokasi geografis, ataupun
menurut perbedaan department). Dengan database terdistribusi maka akan
terjadi Peningkatan performance karena hampir smua update dan queries
dilakukan secara local. Selain itu, juga peningkatan performance terjadi karena
adanya maintain local control dan responsibility over data. Database terdistribusi
juga memungkinkan untuk kombinasi antar system (combine data).
Database terdistribusi juga memungkinkan adanya prinsip scalability dan
ekspansi dengan system add-on bukan override/replacement.

Creating a Distributed Database


Langkah-langkah membuat database terdistribusi :
 Design rencana administrative (Design administration plan).
 Pilih hardware, vendor DBMS dann network yang dipakai.
 Set up network dan koneksi-koneksi antar DBMS.
 Pilih lokasi untuk data.
 Pilih strategi replikasi.

139
 Buat Backup plan dan strateginya.
 Buat Local views dan synonyms.
 Lakukan test (stress test) : loads and failures.

Distributed Database versus Distributed DBMS


Perbedaan antara distributed database dan distributed DBMS :
Distributed database adalah relasi logikal antar shared data yang secara fisikal
terdistribusi melalui jaringan komputer.
Sedangkan,
Distributed DBMS adalah Software system yang mengatur database
terdistribusi dan membuatnya dapat transparent (to users) .

Picture of Distributed DBMS


Berikut ini gambaran distributed DBMS:

DDBMS
Tipe-tipe DDBMS :
1. Homogeneous DDBMS
2. Heterogeneous DDBMS

Issue at Database Design


3 issue yang acap kali dibahas adalah FAR:
 F : Fragmantation
 A : Allocation
 R : Replication

b. Introduction to SQL Server Replication

Sql Server Replication


Replikasi dengan SQL Server memungkinkan Database Administrator untuk
mendistribusikan data untuk berbagai server di seluruh organisasi. Replikasi
dapat dilakukan dengan beberapa alasan, yaitu:

 Load Balancing
Replikasi memungkinkan untuk menyebarkan data ke sejumlah server dan
kemudian mendistribusikan beban permintaan di antara server-server
tersebut.

140
 Offline Processing
Manipulasi data pada database pada perangkat yang tidak selalu
terhubung ke jaringan.

 Redundancy
Replikasi memungkinkan untuk membangun sebuah fail-over server
database yang siap untuk mengangkat beban pengolahan pada saat itu
juga.

Dalam setiap skenario replikasi, terdapat dua komponen utama:


 Publisher
Publisher menawarkan data ke server lain. Skema replikasi tertentu dapat
memiliki beberapa publisher.

 Subscribers
Substriber merupakan server database yang akan menerima update dari
publisher ketika data dimodifikasi.

c. SQL Server Replication Types

Microsoft SQL Server mendukung 3 jenis replikasi, yaitu :


 Snapshot replication
Mendistribusikan data yang dapat dilihat pada saat tertentu tanpa
melakukan perubahan data. Biasanya digunakan pada saat memerlukan
tampilan data seperti : daftar harga, katalog, data yang digunakan untuk
pengambilan keputusan. Data-data ini sifatnya hanya „read only‟.

 Transactional replication
Memelihara kekonsistenan transaksi yang terjadi.

 Merge replication
Merge replication memungkinkan publisher dan subscriber untuk
melakukan perubahan data secara independen. Merge replication berguna
untuk menggabungkan berbagai situs replikasi dan menggabungkan data
modifikasi yang dilakukan beberapa kali.

Goal of Data Replication


Tujuan dibuatnya replikasi data :
 Mengurangi transmisi.
 Meningkatkan performa.
 Mensupport heavy multiuser access.

Problems of Data Replication


Masalah-masalah yang timbul replikasi data :
1. Updating copies
 Site unavailable.
 Bulk transmisions.

2. Concurrency
 Mempermudah lebih dari 1 user untuk mengubah atau mengakses
data pada saat yang bersamaan.

141
d. Performance Monitoring and Tuning

Monitoring Performance with Replication Monitor


Microsoft SQL Server Replication Monitor memungkinkan Anda untuk memantau
kinerja dari transactional replication dan bergabung dalam cara sebagai berikut:
 Menetapkan warning dan thresholds
 Melihat pengukuran kinerja
 Menentukan latency dengan tracer tokens (transactional replication)
 Melihat statistik rinci sinkronisasi (merge replication)
 Melihat dan pemberian waktu transaksi (transaksi replikasi)

Performance Monitoring and Tuning


Perfomance monitoring database bertujuan untuk menilai bagaimana kinerja
server. Microsoft SQL Server dan sistem operasi Microsoft Windows menyediakan
utilitas untuk melihat kondisi database saat ini dan untuk melihat perubahan
kinerja database. Dengan memahami bagaimana memonitor SQL Server dapat
membantu :
 Menentukan apakah peningkatan kerja dapat dilakukan.
 Evaluasi aktifitas user. Mencari tahu persoalan query apa yang dialami
user dan apakah kemananan sudah memadai.
 Masalah troubleshoot.
 Tes aplikasi.
Langkah – langkah memonitor komponen SQL Server secara efektif :
 Tentukan tujuan monitoring.
 Pilih perangkat yang sesuai.
 Mengidentifikasikan komponen untuk melakukan monitoring.
 Memilih metric untuk komponen.
 Memantau server.
 Menganalisa data.

e. Tools for Monitoring and Tuning Tasks


Sistem operasi Windows dan SQL Server menyediakan satu set lengkap tools
untuk me-monitor transaksi server di lingkungan intensif. Windows menyediakan
tools berikut untuk memantau aplikasi yang berjalan pada server :
 SQL Trace
 SQL Server Profiler
 SQL Server Management Studio Activity monitor
 SQL Server Management Studio Graphical Showplan
 Store procedures
 Database Console Commands (DBCC)
 Built-in function
 Trace flags

142
Database
Module 17 - Identification Entity and
Its Relationship

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Identification Entity and Its
Relationship dengan pembahasan konsep perancangan tabel, entity, relationship
dan multiplicity.
2. Learning Outcomes
 Trainee memahami dan mengusai konsep perancangan tabel yang baik dan
benar serta dapat mengimplementasikannya.
3. Material
a. Konsep Perancangan Tabel
Untuk melakukan perancangan table, kita menggunakan teknik seperti
Fact Finding. Teknik Fact Finding adalah :
 Secara kritis menangkap fakta penting yang dibutuhkan untuk
membangun suatu aplikasi database.
 Fakta ini ditangkap dengan teknik fact-finding.
 Proses secara formal digunakan teknik interview dan kuestioner untuk
mengumpulkan fakta mengenai sistem, requirement, and preferensi.

Berikut ini adalah contoh beberapa teknik fact-finding:


 mempelajari dokumentasi,
 interview,
 observasi organisasi saat operasi,
 penelitian,
 questionnaires.
Dengan menggunakan teknik Fact Finding, maka kita dapat menentukan
entity-entity dan attribute yang diperlukan dalam data base kita

b. Entity
Entity adalah sebuah objek di mana data-data di simpan. Entity hanya
menampung data-data yang kita perlukan. Informasi yang kita perlukan,
disimpan dalam bentuk attribute dan/atau relationships. Jadi jika suatu objek
tidak memiliki attribute atau relationship, maka ia tidak dapat dianggap
sebagai entity. Di dalam database, sebuah entity dilambangkan dengan
sebuah kotak dengan judul. Judul tersebut merupakan nama dari suatu
entity.

c. Relationship & Multiplicity


Relationship pada database merupakan hubungan antar tabel. Yang
dihubungkan adalah dari foreign key ke primary key . Relationship pada
database ada 3 jenis :

143
 One to one
Pada relationship ini, 1 data dari suatu table hanya boleh memiliki 1
data yang sesuai pada table pasangannya. Contohnya : satu karyawan
hanya bisa memiliki satu jabatan.

 One to many
Pada relationship ini, 1 data dari suatu table boleh memiliki banyak
data yang sesuai pada table pasangannya. Contohnya : satu karyawan
dapat melayani banyak transaksi.

 Many to many
Pada relationship ini, banyak data dari suatu table boleh memiliki
banyak data yang sesuai pada table pasangannya. Contohnya : pada
suatu warnet, satu pelanggan dapat menggunakan banyak komputer,
dan satu komputer dapat digunakan banyak pelanggan.

Multiplicity pada database adalah jumlah data yang dapat terhubung antara
2 tabel. Jenis-jenis nya sama seperti yang di atas, yaitu one to one, one to
many, dan many to many.

144
Database
Module 18 – Entity Properties

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan secara singkat definisi entity properties dan cara
pemakaian entity properties.
2. Learning Outcomes
• Trainee memahami penentuan atribut dan relationship antar tabel.
3. Material
a. Entity
Entity adalah objek yang dapat dibedakan dalam dunia nyata. Entity
Set adalah kumpulan dari entity yang sejenis. Entity Set dapat berupa :
 Objek secara fisik: Rumah, Kendaraan, Peralatan
 Objek secara konsep: Pekerjaan, Perusahaan, Rencana

b. Atribut
Atribut adalah karakteristik dari entity atau relationship, yang
menyediakan penjelasan detail tentang entity atau relationship tersebut.

Jenis-Jenis Atribut

 Attribute Value
Data actual atau informasi yang disimpan pada suatu atribut di dalam
suatu entity atau relationship

 Key
Atribut yang digunakan untuk menentukan suatu Entity secara unik

 Simple Attribute
Atribut yang bernilai tunggal
Contoh:

145
nama

pegawai

 Multivalue Attribute
Atribut yang memiliki sekelompok nilai untuk setiap instant Entity
Contoh:

Tgl Lahir Gelar NIP Nama

PEGAWAI

 Composite Attribute
Suatu atribut yang terdiri dari beberapa atribut yang lebih kecil yang
mempunyai arti tertentu
Contoh:

Nama
Tengah
Nama Nama
Depan Belakang

Nama

Pegawai

146
 Derivatives Attribute
Suatu atribut yang dihasilkan dari atribut yang lain.
Contoh:

Tgl Lahir Umur

PEGAWAI

Jenis-Jenis Key

 Primary Key
Primary key merupakan field/column yang menjadi kunci untuk
mengidentifikasikan record-record dari tabel yang bersangkutan. Sifat dari
primary key yaitu unique (tidak ada duplikat atau data yang sama) dan
not null (tidak boleh kosong).

 Foreign Key
Foreign key adalah key yang menjadi penghubung di tabel lain. Foreign
key terdapat di tabel child. Tujuan membuat foreign key yaitu untuk
menghubungkannya ke tabel parent yang terdapat dalam satu database.

 Superkey
Super key adalah sebuah atribut atau set atribut yang secara unique
mengidentifikasikan tuple dalam dalam relasi.

 Candidate Key
Candidate key adalah field yang menjadi calon untuk dijadikan primary
key

 Composite Key
Composite key adalah primary key ada lebih dari satu kolom dalam satu
tabel

 Alternate Key
Alternate key adalah candidate key yang gagal menjadi primary key.

147
Database
Module 19 - Data Normalization

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Normalisasi dengan pembahasan
tujuan dan proses normalisasi, disertai dengan contohnya.
2. Learning Outcomes
 Trainee memahami dan menguasai proses normalisasi.
3. Material
a. Pendahuluan
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.

b. Tujuan Normalisasi
 Mengidentifikasi hubungan antar atribut
 Mengkombinasikan atribut untuk membentuk relasi
 Mengkombinasikan relasi untuk membentuk database
 Menghindari anomaly

c. Proses Normalisasi
 Data diuraikan dalam bentuk tabel, selanjutnya dianalisis berdasarkan
persyaratan tertentu ke beberapa tingkat.
 Apabila tabel yang diuji belum memenuhi persyaratan tertentu,maka
tabel tersebut perlu dipecah menjadi beberapa tabel yang lebih
sederhana sampai memenuhi bentuk yang optimal.

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.

148
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
Contoh:
Tabel interview ( NoClient, tanggalInterview, waktuInterview,
NoStaff, NoRuang )
Dipisahkan menjadi :
Tabel Interview ( NoClient, tanggalInterview, waktuInterview,
NoStaff )
Tabel RuangStaff ( NoStaff, tanggalInterview, NoRuang )

149
d. Contoh Normalisasi

1. UNF
Penjualan (NoFaktur, Tanggal, NamaCust, AlamatCust, {KdBarang,
NamaBarang, JenisBarang, Harga, Banyak, Total}, GrandTotal)

2. 1NF
DetailPenjualan (NoFaktur, KdBarang, NamaBarang, JenisBarang, Harga,
Banyak)
HeaderPenjualan (NoFaktur, Tanggal, NamaCust, AlamatCust)

3. 2NF
DetailPenjualan (NoFaktur, KdBarang, Banyak)
HeaderPenjualan (NoFaktur, Tanggal, NamaCust, AlamatCust)
Barang (KdBarang, NamaBarang, JenisBarang, Harga)

4. 3NF
DetailPenjualan (NoFaktur, KdBarang, Banyak)
HeaderPenjualan (NoFaktur, Tanggal, NoCust)
Barang (KdBarang, NamaBarang, KdJenisBarang, Harga)
Customer (NoCust, NamaCust, AlamatCust)
JenisBarang (KdJenisBarang, JenisBarang)

150
Data Warehouse
Module 01 - Tabel master dan tabel
transaksi, Measure data, Rancangan
data warehouse : tabel faka dan tabel
dimensi.

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Tabel master dan tabel transaksi,
Measure data, dan Rancangan data warehouse : tabel faka dan tabel dimensi.
2. Learning Outcomes
 Trainee dapat mengidentifikasikan tabel master dan tabel transaksi dari OLTP
(Online Transaction Processing), menentukan meassure data dari OLTP dan
informasi lainnya sesuai dengan kebutuhan informasi yang diinginkan, dan
membuat rancangan tabel fakta dan tabel dimensi.
3. Material
a. Pengenalan Data Warehouse ( DWH )

Data warehouse menurut Bill Inmon adalah sebuah kumpulan data yang
subject-oriented, integrated, time-variant, dan non-volatile dalam proses
pengambilan keputusan manajemen. Dari pengertian tersebut maka
didapatlah ciri-ciri data warehouse berikut:
 Subject-oriented: data tersebut dapat di-customize untuk keperluan
orang-orang tertentu di dalam perusahaan. Jadi data yang di-generate
disesuaikan dengan permintaan.
 Integrated: data yang akan terintegrasi ke dalam data warehouse
disesuaikan tipe datanya dengan database data warehouse.
 Time-variant: data yang ada harus bersifat konsisten (tidak
berubah/tetap).
 Non-volatile: data yang ada tidak pernah di-update, hanya ditambahkan
jika ada yang lebih baru.

b. Online Transaction Processing Systems ( OLTP )

Online Transaction Processing Systems merupakan Sistem berorientasi


pada transaksi yang memproses suatu transaksi secara langsung ( insert,
update, delete ) melalui komputer yang terhubung dalam jaringan. Sistem
tersebut terproses dengan menggunakan database.

OLTP mengacu pada kelas sistem yang memfasilitasi dan mengelola aplikasi
berorientasi transaksi, biasanya untuk entri data dan pengambilan proses
transaksi

151
Persyaratan
OLTP menggunakan client/server dan software pengolah yang
memungkinkan transaksi untuk dapat dijalankan pada platform komputer
yang berbeda dalam jaringan. OLTP sering diintegrasikan ke dalam Service
Oriented Architecture ( SOA ) dan Web Services.

Manfaat
OLTP memiliki 2 manfaat utama yaitu: simplicity dan efficiency. Mengurangi
penggunaan kertas dan lebih cepat, memiliki perkiraan / ramalan yang akurat
untuk pendapatan dan biaya dalam hal berbisnis.

Pada database OLTP terdapat table yang dapat dikategorikan sebagai


master dan transaction.

Table Master
Master atau bisa disebut file induk acuan ( reference master file ) : file
induk yang recordnya relatif statis, jarang berubah nilainya. Misalnya file
daftar gaji, file mata pelajaran.
Selain itu bisa juga dikatakan sebagai file induk dinamik ( dynamic master
file ) : file induk yang nilai dari record – record-nya sering berubah atau
sering di-update sebagai hasil dari suatu transaksi. Misalnya MsBarang, yang
setiap saat harus di-update bila terjadi transaksi.

Table Transaction
Dapat disebut file input. Digunakan untuk merekam data hasil dari transaksi
yang terjadi. Misalnya file penjualan yang berisi data hasil transaksi
penjualan. File transaksi sering terjadi pengulangan data yang sama
dikarenakan produk /barang yang berbeda, sehingga dipecah menjadi
header dan detail.

c. Online Analytical Processing Systems ( OLAP )

Sistem yang dibuat untuk membantu dalam perencanaan, memecahkan


masalah dan mendukung keputusan. Data yang masuk kedalam OLAP adalah
data summary dari OLTP. Pada proses pengiriman data tersebut terjadi
proses yang dinamakan proses ETL.

ETL ( Extract, Transformation, and Load )


Proses pengambilan data dari sumber data, proses pengambilan data ini tidak
mengambil keseluruhan data yang ada di database operasional, melainkan
hanya mengambil data – data matang saja.
Transform berarti mengubah struktur Database tersebut kedalam bentuk
standart, mengingat data – data yang diambil berasal dari sumber yang
berbeda yang kemungkinan memiliki standart yang berbeda pula.
Standarisasi diperlukan untuk nantinya memudahkan pembuatan laporan.
Sedangkan Load sendiri adalah proses mengirimkan data yang telah
menjalani proses transformasi ke repository ( gudang data ) akhir.

152
Yang membentuk OLAP adalah DW & BI:

Data Warehouse ( DW )
DW bicara mengenai bagaimana data – data yang besar dan beragam
disimpan dalam satu repository dan disusun sedemikian sehingga
memudahkan pencarian.

Business Inteligence ( BI )
BI bisa dikatakan sebagai konsep database yang multidimensi sehingga
memudahkan analisa dan pengambilan keputusan secara bijak berdasarkan
informasi yang akurat. Perlu diingat yang membentuk BI bukan hanya
konsep database, melainkan metode, orang, software yang bertujuan untuk
mencapai pengambilan keputusan guna meningkatkan keuntungan.

Terdapat 3 komponen yang membentuk DW :

Measure Data
Adalah data – data yang berupa perhitungan. Dan sumber datanya didapat
dari OLTP. Perhitungan yang dihasilkan akan digunakan untuk forcasting
pendapatan dan beban sehingga memudahkan dalam pengambilan
keputusan. Measure Data akan digunakan sebagai record dari sebuah
laporan. Contoh : TotalPenjualanBahanBaku yang merupakan hasil
penjumlahan pendapatan pada transaksi operasional.

Dimensi
Adalah sudut pandang yang akan digunakan dalam melihat laporan historikal
yang dihasilkan oleh DW. Dimensi akan menjadi table pada DW. Contoh:
DimensiWaktu, DimensiSupplier.

Fakta
Laporan utama yang dibutuhkan dalam pengambilan keputusan. Fakta juga
dibentuk dari Measure Data dan Dimensi – dimensi yang didapat dari
OLTP.

d. OLTP vs OLAP

Dari definisinya jelas, bahwa keduanya merupakan sistem yang


menggunakan suatu database. Kemudian perbedaannya adalah sebagai
berikut:
1. Berdasarkan sumber data
OLTP : Data Operasional, data OLTP adalah data asli.
OLAP : Data konsolidasi, data OLAP di peroleh dari beberapa OLTP.

2. Berdasarkan Tujuan datanya


OLTP : Untuk mengendalikan dan menjalankan tugas-tugas utama.
OLAP : Untuk membantu dalam perencanaan, memecahkan masalah dan
mendukung keputusan.

3. Berdasarkan Data apa yg di tampilkan


OLTP : Bisnis proses yg berkelajutan.
OLAP : Menampilkan data dari berbagai macam aktivitas bisnis.

153
4. Query yg digunakan
OLTP : Simple Query.
OLAP : Complex Queries.

5. Kecepatan proses
OLTP : Pada dasarnya sangat cepat.
OLAP : Tergantung dari data yg dilibatkan, proses akan lebih cepat
dengan menggunakan fungsi indexing.

6. Space yg dibutuhkan
OLTP : Relatif kecil.
OLAP : Lebih besar, karena membutuhkan lebih banyak indexing
dibandingkan OLTP.

7. Database Design
OLTP : Normalized dengan banyak table.
OLAP : De-normalized dengan sedikit table dan menggunakan star /
showflake schemas.

e. Mengidentifikasikan Measure Data, Dimensi, & Fakta


Seperti yang telah tertulis sebelumnya bahwa yang membentuk DW adalah
Measure Data, Dimensi, & Fakta yang sumbernya berasal dari OLTP.

Measure Data
Untuk mengidentifikasikan Measure kita perlu menganalisis data apa saja
yang dibutuhkan pada OLTP agar terbentuk suatu measure yang dibutuhkan.

Contoh: data jumlah total penjualan. Berarti kita membutuhkan data – data
quantity dan harga dari tabel penjualan pada OLTP.

Dari ERD diatas maka kita perlu informasi dari seluruh Jumlah jual dikalikan
dengan Harga Sekarang.
Dalam Query ( SQL Server 2008 ) :

SELECT SUM( [Jumlah Jual] * [Harga Sekarang] ) AS [Jumlah Total


Penjualan] FROM DetailPenjualan

Dimensi
Dimensi adalah sudut pandang dari sebuah laporan yang dibutuhkan.
Dimensi dapat diambil dari sebuah master yang terletak pada OLTP yang

154
kemudian di-summary-kan pada Dimensi. Dimensi akan menjadi table pada
OLAP.

Misalnya dari table Pelanggan maka pada table Dimensi akan di-summary-
kan. Primary Key pada Pelanggan tidak menjadi PK pada Dimensi.
Dimensi punya sebutan lain yaitu Surrogates Key sedangkan PK dari OLTP
akan menjadi Business Key pada proses ETL. Surrogates Key berfungsi
hanya sebagai keunikan tiap data yang masuk dalam DW sehingga dapat
dibuat dengan Auto Increment. Sedangkan Business Key digunakan untuk
mengidentifikasikan data yang sama apabila melakukan proses ETL lagi.

Dalam dimensi dipastikan akan ada DimensiWaktu yang didapat dari


seluruh tanggal dimana terjadi transaksi apapun itu ( penjualan + pembelian
+ transaksi lainnya ). Gunanya adalah agar laporan dapat dilihat berdasarkan
sudut pandang waktu dimana waktu tersebut dipecah menjadi beberapa field
Tahun, Kwartal, Bulan, dan Harian ( buat Ad-Hoc ).

Fakta
Merupakan inti dari laporan apa yang dibutuhkan. Fakta juga merupakan
tabel yang dibentuk pada DW. Fakta terbentuk dari Dimensi ( sudut
pandang yang berkaitan dengan Fakta yang dibutuhkan ) dan Measure Data
( perhitungan yang dibutuhkan oleh Fakta tersebut ).

Contoh : Fakta Penjualan maka dapat dibentuk dari Dimensi – dimensi


yang bersangkutan dan Measure-nya.

PROSES BISNIS

Contoh 1

PT. XYZ, Tbk. adalah perusahaan yang bergerak di bidang perbankan.


Perusahaan ini telah membuka lebih dari 350 cabang yang tersebar di 120
kota di seluruh Indonesia. Pada saat ini, semua transaksi perbankan di
simpan dalam database tradisional. Namun, karena perkembangan
perusahaan yang begitu pesat serta diiringi oleh kebutuhan akan informasi
yang cepat, tepat guna, dan akurat maka perusahaan membutuhkan data
warehouse.
Cabang dibedakan menjadi dua jenis, yaitu: kantor cabang utama dan
kantor cabang pembantu. Kantor cabang pembantu hanya bertugas

155
membantu transaksi perbankan yang mungkin tidak terlayani oleh kantor
cabang utama. Tetapi transaksi yang ada tetap dibedakan. Setiap pegawai
hanya bekerja pada satu kantor cabang, entah itu kantor cabang utama
maupun kantor cabang pembantu. Jenis tabungan pada Bank Bluejacket ada
4 jenis, yaitu: Tahapan Bluejacket, Super Savings, Star Savings, dan
Bluejacket Yunior.

Setelah melakukan interview dengan General Manager PT. XYZ, Tbk.


maka didapatlah beberapa hal berikut:

 Dibutuhkan laporan mengenai transaksi penyetoran uang tunai yang


dilakukan oleh nasabah. Dalam laporan ini tampilkan jumlah uang yang
disetor oleh nasabah.

 Dibutuhkan laporan mengenai transaksi penarikan uang tunai yang


dilakukan nasabah di bank. Dalam laporan ini tampilkan jumlah uang yang
ditarik oleh nasabah.

 Dibutuhkan juga laporan mengenai transaksi penarikan uang tunai melalui


ATM. Dalam laporan ini tampilkan jumlah uang yang ditarik oleh nasabah.

 Dibutuhkan laporan mengenai transaksi pemindahbukuan yang dilakukan


nasabah (yang melakukan pemindahbukuan). Dalam laporan ini tampilkan
jumlah uang yang dipindahbukukan oleh nasabah ke rekening nasabah
lain.

 Dibutuhkan laporan mengenai banyaknya nasabah yang masih aktif.


Dalam laporan ini tampilkan juga jumlah rekening nasabah bersangkutan
yang masih aktif.

 Laporan-laporan tersebut nantinya akan dievaluasi berkala setiap bulan,


triwulan, dan tahun. Tapi tidak menutup kemungkinan juga akan
dibutuhkan laporan ad-hoc yang tersedia setiap harinya.

 Laporan juga harus dapat dilihat berdasarkan nasabah, jenis tabungan,


jenis cabang, dan kantor cabang.

156
OLTP (ONLINE TRANSACTION PROCESSING)

157
ANALISA
Dalam data warehouse, laporan yang dilihat tidak memuat informasi yang
detail karena data yang ada dalam data warehouse hanya ditujukan untuk
laporan secara garis besar saja untuk pengambilan keputusan. Berikut adalah
hasil analisa dari kasus di atas :
1. Dimensi
a. Dimensi Cabang

b. Dimensi Jenis Cabang

c. Dimensi Jenis Tabungan

d. Dimensi Nasabah

e. Dimensi Waktu

158
2. Fakta
a. Fakta Nasabah Aktif

b. Fakta Pemindahan Buku

c. Fact Penarikan ATM

d. Fact Penarikan Tunai

159
e. Fact Setoran

Surrogate key adalah key yang unik yang digunakan sebagai primary key
pada tabel tersebut tapi key ini bukan hasil dari turunan data manapun (alias
kita buat sendiri dan fungsinya hanya sebagai penanda yang sifatnya unik).

Setelah kita membuat database datawarehouse sesuai dengan fact dan


dimensi di atas, lalu tambahkan field InsertedDate (nama field bebas) di
setiap table pada database OLTP agar data yang ditarik ke data warehouse
nantinya tidak akan redundan.
Contoh pemberian field ke table Jenis Cabang :

Field tanggal entri data tersebut dibuat berdasarkan tanggal dimasukkannya


data per baris.

Setelah ditambahkan tanggal entri pada OLTP, maka buat satu table
FilterTimeStamp (nama table bebas) yang digunakan untuk menyimpan
waktu terakhir menarik data dari OLTP ke datawarehouse per tiap dimensi
dan fakta.
Contoh table penyimpanan tersebut :

Field Process Date akan selalu diupdate setiap dilakukan perpindahan data
dari OLTP ke data warehouse sehingga akan menunjukkan tanggal dan waktu
terakhir data tersebut dipindahkan.
Field Table Name hanya menunjukkan nama table yang telah dipindahkan
pada tanggal dan waktu yang ditujukan.

STAR SCHEMA
Setelah melakukan analisa di atas, maka akan terbentuk star schema untuk
setiap fakta yang dapat dibuat dari SQL Server 2005.
Contoh star schema Fact Nasabah Aktif:

160
Contoh 2

PT. Blueclothing merupakan sebuah perusahaan yang bergerak di


bidang garment. Perusahaan ini menyediakan berbagai jenis pakaian untuk
pria maupun wanita. Seiring dengan berjalannya waktu, perusahaan ini pun
menjadi semakin berkembang, transaksi – transaksi yang terjadi setiap
harinya bertambah banyak. Oleh karena ini para top manager perusahaan ini
membutuhkan sebuah data warehouse untuk mempermudah dalam
menganalisis perusahaan mereka dan mengambil keputusan. Dengan begitu
perusahaan ini semakin maju lagi.
Anda sebagai seorang Database Administrator diberi tugas untuk
membangun sebuah data warehouse yang dapat menangani informasi
internal yang berhubungan dengan transaksi – transaksi yang terjadi. Dan
informasi yang diberikan adalah sebagai berikut :
 GM membutuhkan laporan mengenai penjualan, meliputi jumlah penjualan
baju dan total penjualan baju. Total Penjualan didapat dari harga jual baju
dikali jumlah baju yang dijual.

161
 GM membutuhkan laporan mengenai pembelian, meliputi jumlah
pembelian baju dan total pembelian baju. Total Pembelian didapat dari
harga beli baju dikali jumlah baju yang dibeli.
 GM membutuhkan laporan mengenai penyewaan, meliputi jumlah
penyewaan baju dan total penyewaan baju. Total Penyewaan didapat dari
harga sewa baju dikali jumlah baju yang disewa.
 GM membutuhkan laporan mengenai laundry, meliputi jumlah laundry dan
rata-rata laundry. Rata-rata Laundry didapat dari rata-rata perkalian dari
jumlah laundry dengan harga laundry.
 GM membutuhkan laporan tersebut setiap bulan, kuartal (per empat
bulan), dan tahunan.
 Laporan tersebut juga harus dapat dilihat dari segi pelanggan, supplier,
baju, toko, jenis laundry, dan karyawan (termasuk jenis kelamin
karyawan dan jabatan).
 Dibutuhkan juga laporan ad-hoc yang dapat diminta kapan saja oleh GM.

Keterangan :
 Pada transaksi penjualan baju, akan dicatat Kode Karyawan yang
melakukan transaksi, Kode Pelanggan, Tanggal Transaksi, Kode Baju yang
dijual dan Jumlah baju untuk masing – masing baju yang dijual.
 Pada transaksi pembelian baju, akan dicatat Kode Karyawan yang
melakukan transaksi, Kode Supplier, Tanggal Transaksi, Kode Baju yang
dibeli dan Jumlah baju untuk masing – masing baju yang dibeli.
 Pada transaksi penyewaan baju, akan dicatat Kode Karyawan yang
melakukan transaksi, Kode Pelanggan, Tanggal Transaksi, Kode Baju yang
disewa dan Jumlah baju untuk masing – masing baju yang disewa.
 Pada transaksi laundry baju, akan dicatat Kode Karyawan yang melakukan
transaksi, Kode Pelanggan, Tanggal Transaksi, Kode Jenis Laundry yang
dilakukan dan Jumlah untuk masing – masing jenis laundry yang terjadi.
 Setiap Karyawan memiliki satu jabatan.
 Setiap ada data yang di-insert atau di-update, tanggal dicatat pada field
InsertedDate.

162
Tabel Operasi Relasionalnya

Analisis Measure, Dimensi, dan Fakta

 Measure
Jumlah Penjualan = sum(Qty)
Total biaya penjualan = sum(Qty*HargaJual)

Jumlah Pembelian = sum(Qty)


Total biaya pembelian = sum(Qty*HargaBeli)

Jumlah Penyewaan = sum(Qty)


Total biaya penyewaan= sum(Qty*HargaSewa)

163
Jumlah Laundry = sum(Qty)
Rata-rata biaya laundry = avg(Qty*HargaLaundry)

 Dimensi

Dimensi Waktu
-----------------
WaktuID
Hari
Bulan
Kuartal
Tahun

Dimensi Karyawan
-----------------------
KaryawanID
KodeKaryawan
NamaKaryawan
JenisKelamin
Jabatan

Dimensi Pelanggan
------------------------
PelangganID
KodePelanggan
NamaPelanggan

Dimensi Toko
-----------------
TokoID
KodeToko
NamaToko

Dimensi JenisLaundry
--------------------------
JenisLaundryID
KodeJenisLaundry
JenisLaundry

Dimensi Baju
----------------
BajuID
KodeBaju
Merk

Dimensi Supplier
---------------------
SupplierID
KodeSupplier
NamaSupplier
JenisSupplier

164
 Fakta

Fakta Penjualan
-------------------
WaktuID
KaryawanID
PelangganID
BajuID
TokoID
JumlahBajuTerjual
TotalPenjualanBaju

Fakta Pembelian
--------------------
WaktuID
KaryawanID
SupplierID
BajuID
TokoID
JumlahBajuDibeli
TotalPembelianBaju

Fakta Penyewaan
---------------------
WaktuID
KaryawanID
PelangganID
BajuID
TokoID
JumlahBajuDisewa
TotalPenyewaanBaju

Fakta Laundry
-----------------
WaktuID
KaryawanID
PelangganID
TokoID
JenisLaundryID
JumlahLaundry
RataRataBiayaLaundry

165
Data Warehouse
Module 02 - Data Transformation
Services Basic

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Data Transformation Services Basic
dengan pembahasan mengenai cara membuat DTS Package baru dengan Ms.
SQL Server Management Studio 2008.
2. Learning Outcomes
 Trainee memahami dan dapat membuat dimensi.
3. Material
a. Membuat Table Dimensi dan Fakta
create table DimensiWaktu
(
WaktuID int identity primary key,
Tgl datetime,
Hari int,
Bulan int,
Kuartal int,
Tahun int,
)

create table DimensiKaryawan


(
KaryawanID int identity primary key,
KodeKaryawan varchar(100),
NamaKaryawan varchar(100),
JenisKelamin varchar(100),
Jabatan varchar(100),
Status varchar(100),
)

create table DimensiPelanggan


(
PelangganID int identity primary key,
KodePelanggan varchar(100),
NamaPelanggan varchar(100),
)

create table DimensiToko


(
TokoID int identity primary key,
KodeToko varchar(100),
NamaToko varchar(100),
)

166
create table DimensiJenisLaundry
(
JenisLaundryID int identity primary key,
KodeJenisLaundry varchar(100),
JenisLaundry varchar(100),
)

create table DimensiBaju


(
BajuID int identity primary key,
KodeBaju varchar(100),
Merk varchar(100),
)

create table DimensiSupplier


(
SupplierID int identity primary key,
KodeSupplier varchar(100),
NamaSupplier varchar(100),
JenisSupplier varchar(100),
)

create table FaktaPenjualanBaju


(
WaktuID int,
KaryawanID int,
PelangganID int,
BajuID int,
TokoID int,
JumlahBajuTerjual int,
TotalPenjualanBaju numeric(15,2),
)

create table FaktaPembelianBaju


(
WaktuID int,
KaryawanID int,
SupplierID int,
BajuID int,
TokoID int,
JumlahBajuDibeli int,
TotalPembelianBaju numeric(15,2),
)

create table FaktaPenyewaanBaju


(
WaktuID int,
KaryawanID int,
PelangganID int,
BajuID int,
TokoID int,
JumlahBajuDisewa int,
TotalPenyewaanBaju numeric(15,2),
)

167
create table FaktaLaundryBaju
(
WaktuID int,
KaryawanID int,
PelangganID int,
TokoID int,
JenisLaundryID int,
JumlahLaundry int,
RataRataBiayaLaundry numeric(15,2),
)

create table FilterTimeStamp


(
NamaTable varchar(100) primary key,
Last_ETL datetime,
)

b. Cara membuat DTS Package baru dengan Ms. SQL Server


Management Studio 2008

Buka SQL Server Business Intelligence Development Studio


(StartRundevenv). Maka akan muncul window seperti ini

Pilih Create Project untuk membuat DTS Package baru. Setelah itu akan
muncul window seperti di bawah ini :

168
Pilih Integration Services Project. Tentukan nama dan lokasi Project.
Setelah itu pilih OK.

169
Setelah itu DTS Package kita telah jadi dengan nama defaultnya
„Package.dtsx‟. Tab aktif awal adalah Control Flow, pindah ke bagian tab
Data Flow.

Setelah itu klik pada bagian tulisan “No Data Flow tasks have been
added to this package. Click here to add new Data Flow task.”

170
Buat global connection OLTP dan OLAP. Pada Solution Explorer klik
kanan pada Data Sources, pilih New Data Source.

Pilih next

171
Tentukan koneksi OLTP atau OLAP

Setelah kedua koneksi dibuat, akan tampil OLAP.ds dan OLTP.ds di Data
Sources

172
Contoh Dimensi Pelanggan

Pada bagian Toolbox pilih dan drag OLE DB Source.

Double Click pada „OLE DB Source‟. Setelah itu akan muncul Window
berikut :

Pilih New

173
Pilih Localhost.OLTP lalu klik OK

174
Pilih Table or view pada Data access mode dan pilih nama tabel
MsPelanggan yang ada di database OLTP. Setelah itu klik OK.

175
Setelah itu pada bagian Toolbox  Data Flow Transformations  Slowly
Changing Dimension. Hubungkan OLE BD Source dengan Slowly
Changing Dimension. Double Click pada Slowly Changing Dimension.

Pilih LocalHost.OLAP pada Connection Manager dan Dimensi Pelanggan


pada Table or view. Tentukan juga KodePelanggan sebagai Business key.
Setelah itu Next.

176
Ada 3 pilihan atribut :

 Fixed Attribute
Jika nilai di dalam kolom tidak boleh diubah
 Changing Attribute.
Jika nilai di dalam kolom boleh diubah dan menggantikan nilai
sebelumnya.
 Historical Attribute
Jika nilai di dalam kolom boleh diubah namun nilai yang lama tetap di
record.

Karena NamaPelanggan tidak boleh diubah sehingga kita pilih Fixed


Attribute

177
Tekan F5 untuk memindahkan data dari OLTP ke OLAP

178
Jika berhasil maka saat select * from DimensiPelanggan pada dataabse
OLAP, maka akan tampil data sebagai berikut.

Contoh Dimensi Waktu

Buat SSIS Package baru. Klik kanan pada SSIS Package, pilih New SSIS
Package

179
Sama dengan dimensi pelanggan, koneksi dari LocalHost.OLTP, sedangkan
Data access modenya menjadi SQL command. Adapun SQL command untuk
dimensi waktu adalah sebagai berikut :

180
Query Dimensi Waktu

SELECT
Tgl AS [Tgl],
year( Tgl ) AS [Tahun],
[Kuartal] =
case
WHEN month( Tgl ) BETWEEN 1 AND 4 THEN 1
WHEN month( Tgl ) BETWEEN 5 AND 8 THEN 2
WHEN month( Tgl ) BETWEEN 9 AND 12 THEN 3
END,
month( Tgl ) AS [Bulan],
day( Tgl ) AS [Hari]
FROM
( SELECT DISTINCT TglPenjualan AS Tgl, InsertedDate
FROM [OLTP].[dbo].TrHeaderPenjualan
UNION
SELECT DISTINCT TglPembelian AS Tgl, InsertedDate
FROM [OLTP].[dbo].TrHeaderPembelian
UNION
SELECT DISTINCT TglPenyewaan AS Tgl, InsertedDate
FROM [OLTP].[dbo].TrHeaderPenyewaan
UNION
SELECT DISTINCT TglLaundry AS Tgl, InsertedDate
FROM [OLTP].[dbo].TrHeaderLaundry
) AS Tgl

Berbeda dengan Dimensi lain, dimensi waktu memakan OLE DB Destination

181
Double Click pada OLE DB Destination. Pilih LocalHost.OLAP, Table or
view, dan Dimensi Waktu.

182
Di bagian Mappings untuk melihat apakah data sudah termapping dengan
benar antara OLTP dan OLAP. Setelah itu klik OK.

Hasil setelah di F5 jika proses berhasil

183
184
Data Warehouse
Module 03 - Data Transformation
Services Intermediate

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai Data Transformation Services
Intermediate dengan pembahasan mengenai cara Dynamic Query dengan Global
Variabel dengan Ms. SQL Server Management Studio 2008.
2. Learning Outcomes
 Trainee memahami dan dapat membuat fakta.
3. Material
a. Membuat Dynamic Query dengan Global Variabel
Pada database OLAP terdapata Tabel FilterTimeStamp. Pada awal
tabel tersebut masih belum berisi data apa-apa, sehigga untuk fakta perlu
kita validasi dengan IF EXISTS.
Jika belum ada maka kita menarik data ke tabel Fakta di database
OLAP tanpa syarat dan insert data FilterTimeStamp dengan tanggal saat
penarikan, sedangkan jika sudah ada isinya kita menarik data ke tabel Fakta
di database OLAP dengan syarat InsertedDate > Last_ETL dan update
data FilterTimeStamp dengan tanggal saat penarikan.

Query FaktaPenjualanBaju

IF EXISTS
(
SELECT Last_ETL
FROM [OLAP].[dbo].FilterTimeStamp
WHERE NamaTable = 'FaktaPenjualanBaju'
)
BEGIN
SELECT
WaktuID,
KaryawanID,
PelangganID,
BajuID,
TokoID,
sum(Qty) AS [JumlahBajuTerjual],
sum(Qty*HargaJual) AS [TotalPenjualanBaju]
FROM
TrHeaderPenjualan AS header,
TrDetailPenjualan AS detail,
[OLAP].[dbo].DimensiWaktu AS DimWaktu,
[OLAP].[dbo].DimensiKaryawan AS DimKaryawan,
[OLAP].[dbo].DimensiPelanggan AS DimPelanggan,

185
[OLAP].[dbo].DimensiBaju AS DimBaju,
[OLAP].[dbo].DimensiToko AS DimToko,
MsKaryawan AS karyawan,
MsBaju AS baju
WHERE
header.KodePelanggan = DimPelanggan.KodePelanggan AND
header.KodeKaryawan = DimKaryawan.KodeKaryawan AND
header.KodeKaryawan = karyawan.KodeKaryawan AND
karyawan.KodeToko = DimToko.KodeToko AND
detail.KodePenjualan = header.KodePenjualan AND
detail.KodeBaju = DimBaju.KodeBaju AND
header.TglPenjualan = DimWaktu.Tgl AND
baju.KodeBaju = DimBaju.KodeBaju AND
header.InsertedDate >
(
SELECT Last_ETL
FROM [OLAP].[dbo].FilterTimeStamp
WHERE NamaTable = 'FaktaPenjualanBaju'
)
GROUP BY
WaktuID,
KaryawanID,
PelangganID,
BajuID,
TokoID
END
ELSE
BEGIN
SELECT
WaktuID,
KaryawanID,
PelangganID,
BajuID,
TokoID,
sum(Qty) AS [JumlahBajuTerjual],
sum(Qty*HargaJual) AS [TotalPenjualanBaju]
FROM
TrHeaderPenjualan AS header,
TrDetailPenjualan AS detail,
[OLAP].[dbo].DimensiWaktu AS DimWaktu,
[OLAP].[dbo].DimensiKaryawan AS DimKaryawan,
[OLAP].[dbo].DimensiPelanggan AS DimPelanggan,
[OLAP].[dbo].DimensiBaju AS DimBaju,
[OLAP].[dbo].DimensiToko AS DimToko,
MsKaryawan AS karyawan,
MsBaju AS baju
WHERE
header.KodePelanggan = DimPelanggan.KodePelanggan AND
header.KodeKaryawan = DimKaryawan.KodeKaryawan AND
header.KodeKaryawan = karyawan.KodeKaryawan AND
karyawan.KodeToko = DimToko.KodeToko AND
detail.KodePenjualan = header.KodePenjualan AND
detail.KodeBaju = DimBaju.KodeBaju AND
header.TglPenjualan = DimWaktu.Tgl AND
baju.KodeBaju = DimBaju.KodeBaju
GROUP BY
WaktuID,

186
KaryawanID,
PelangganID,
BajuID,
TokoID
END

Query Update atau Insert FilterTimeStamp

IF EXISTS
(
SELECT Last_ETL
FROM [OLAP].[dbo].FilterTimeStamp
WHERE NamaTable = 'FaktaPenjualanBaju'
)
BEGIN
UPDATE [OLAP].[dbo].FilterTimeStamp
SET Last_ETL = getdate()
WHERE NamaTable = 'FaktaPenjualanBaju'
END
ELSE
BEGIN
INSERT INTO [OLAP].[dbo].FilterTimeStamp
VALUES ('FaktaPenjualanBaju',getdate())
END

187
Contoh FaktaPenjualanBaju

Sama seperti membuat dimensi, kita menggunakan OLE DB Source dan OLE
DB Destination.

Pada OLE DB Source Editor, pilih LocalHost.OLTP dan SQL command. Isi
dari SQL Command adalah query FaktaPenjualanBaju di atas.

188
Pada OLE DB Destination Editor, pilih LocalHost.OLAP, Table or view,
dan FaktaPenjualanBaju.

189
Di bagian Mappings untuk melihat apakah data sudah termapping dengan
benar antara OLTP dan OLAP. Setelah itu klik OK.

Setelah itu, pada tab Control Flow akan muncul Data Flow Task yang
mewakili isi Data Flow kita. Pada bagian Maintenance Plan Tasks, pilih
Execute T-SQL Statement Task. Lalu hubungkan Data Flow Task dengan
Execute T-SQL Statement Task .

190
Jika Execute T-SQL Statement Task di double click maka akan muncul
window seperti ini, lalu pilih New.

Isi Connection name dan Server name. Tentukan pula apakah memakai
username dan password.

191
Isi T-SQL Statement dengan query Update atau Insert FilterTimeStamp

Jika di F5 dan berhasil, maka akan seperti ini

192
193
Data Warehouse
Module 04 - Membuat Cube, Penyajian
informasi dari data warehouse dengan
aplikasi lainnya

Last Update 10/23/10 Revision 00

1. Module Description
 Pada bagian ini akan dijelaskan mengenai pembuatan cube dan pivot table.
2. Learning Outcomes
 Trainee dapat mengetahui dan memahami apa itu cube dan pivot table.
3. Material
a. Membuat cube dan pivot dengan Microsoft SQL Server Management
Studio 2008

Jalankan SQL Server Business Intelligence

Buat new project dan beri nama untuk project-nya

194
Buat Data Source baru

Pilih database yang ingin dibuat cube

195
Pilih default, lalu di next

196
Beri nama kemudian finish

Untuk data source view, masukan table yang berhubungan, lalu next

197
Klik kanan new cube

Klik next

198
Klik next

Klik next

199
Pilih table fakta dan dimensi yang ingin dibuat cube

Klik next

200
Klik next

Klik next

201
Beri nama cube lalu finish

Tekan F5 untuk execute dan akan tampil pivot seperti berikut

202
b. Membuat pivot table dengan Microsoft Excel

Dari Excel, pilih menu Data, kemudian pilih From Other Sources,
From Analysis Services. Masukkan Server name dan klik Next

Pilih cube yang ada dalam analysis services yang ingin dibuat pivot table.
Atur tampilan pivot table melalui kolom-kolom yang ingin dimasukkan ke
dalam pivot.

Tampilan pivot akan seperti di bawah ini

203
c. Menampilkan hasil pivot table ke dalam web pages

Pilih save as dalam Microsoft Excel yang sudah ada pivot table-nya.
Lalu save dalam format Single File Web Page

Selanjutnya buka file web yang telah di-save tersebut.

204

You might also like