Вы находитесь на странице: 1из 139

Diktat Basic Database

September 2011
For the latest information, please see bluejack.binus.ac.id
i|Page

Information in this document, including URL and other Internet Web site references, is
subject to change without notice. This document supports a preliminary release of software
that may be changed substantially prior to final commercial release, and is the proprietary
information of Binus University.

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 Universitymayhave patents, patent applications, trademarks, copyrights, or other


intellectual property rights coveringsubject 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.

© 2011 Binus University. All rights reserved.

The names of actual companies and products mentioned herein may be the trademarks of
their respective owners.
ii | P a g e

Table of Contents
OVERVIEW ..................................................................................................... iii
Chapter 01 Introduction to SQL.......................................................................... 1
Chapter 02 Data Definition Language ................................................................ 21
Chapter 03 Data Manipulation Language Basic ................................................... 40
Chapter 04 Data Manipulation Language Intermediate ........................................ 49
Chapter 05 Data Manipulation Language Advanced ............................................. 60
Chapter 06 Data Control Language ................................................................... 74
Chapter 07 Advanced Query ............................................................................ 97
Chapter 08 Database Design ......................................................................... 123
iii | P a g e

OVERVIEW
Chapter 01
• Introduction to SQL

Chapter 02
• Data Definition Language

Chapter 03
• Data Manipulation Languange Basic

Chapter 04
• Data Manipulation Languange Intermediate

Chapter 05
• Data Manipulation Languange Advance

Chapter 06
 Data Control Language

Chapter 07
• Advanced Query

Chapter 08
• Database Design
1|Page

Chapter 01
Introduction to SQL

Objectives
1. Introduction To Database
2. Introduction To Sql Server
3. Database (Diagram, Table, View, Stored Procedure, Users, Roles)
4. Attach & Detach Database
5. Import & Export Data
6. Backup & Restore Database
7. Query Execution

Learning Outcomes
1. Describe database systems, terminology, environment, and new concept of database
2. Apply database language and SQL Programming language
2|Page

1.1. Introduction To Database

Database atau basis data merupakan bagian sangat penting dalam sebuah proses
pengolahan data. Basis data adalah koleksi data yang saling berhubungan dan memiliki arti dan
terorganisasi secara rapi. Data tersebut harus dapat diakses dengan urutan yang berbeda-beda
secara logis dengan cara yang relatif mudah.
Suatu sistem basis data terdiri dari empat komponen yaitu data, yang secara fisik
menyimpan informasi-informasi, Database Management System (DBMS) yaitu software yang
mengelola basis data, Data Definition language (DDL) dan Data Manipulation Language
(DML) yaitu basis data yang berfungsi untuk mendeskripsikan data ke database management
system (DBMS) dan juga member fasilitas untuk melakukan perubahan, pemeliharaan, dan
pengelolaan basis data, dan program aplikasi yang memudahkan pengguna akhir untuk
menggunakan data dan mendapatkannya sebagai informasi yang sesuai.

1.2. Introduction To Sql Server

Microsoft SQL Server adalah Relational Database Management System (RDBMS)


yang dirancang untuk dapat berjalan pada platform mulai dari laptop hingga server multiprosesor
besar. SQL Server biasanya digunakan sebagai sistem backend untuk website dan CRMS
perusahaan dan dapat membantu ribuan pengguna secara bersamaan.
SQL Server hadir dengan sejumlah alat untuk membantu administrasi database dan
tugas-tugas pemrograman. SQL Server jauh lebih kuat dan terukur daripada sistem manajemen
database desktop seperti Microsoft Access. Penggunaan Access sebagai database pada website
umumnya menghasilkan error yang lebih banyak dibanding SQL Server.
Meskipun SQL Server juga dapat dijalankan sebagai sebuah sistem database desktop,
SQL Server paling sering digunakan sebagai sistem database server.

Server Database System (Server berbasis sistem database)


Server berbasis sistem database merupakan 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
sebuah artikel dibaca pengunjung, mereka mengambil data dari database. Seperti yang Anda
ketahui, situs web biasanya tidak terbatas hanya pada satu pengguna. Jadi, pada suatu saat
3|Page

tertentu, sebuah website bisa melayani sampai ratusan, atau bahkan ribuan artikel untuk
pengunjung website. Pada saat yang sama, pengguna lain dapat memperbarui profil pribadi
mereka pada menu anggota, atau berlangganan newsletter, atau apapun yang pengguna situs web
lakukan.

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


Diagram
Database Diagram adalah alat sebuah visual yang memungkinkan untuk merancang dan
memvisualisasikan database-database yang berhubungan. 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 diinginkan. 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 yang menampilkan semua tabel dan kolom. 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 / informasi
database. Setiap tabel memiliki nama yang unik dan terdiri dari kolom dan baris. Setiap tabel
terdiri dari serangkaian kolom yang berisi informasi tentang jenis data yang tersimpan dalam
tabel. Setiap kolom harus diberi nama, tipe data, dan panjang. Tabel A juga dapat memiliki satu
set foreign key, key constraint, rules dan index. Kolom, index, constraint, dan trigger pada
suatu tabel akan dianggap properti dari tabel dalam database diagram.
Kolom-kolom pada tabel database (disebut juga field tabel) memiliki nama-nama mereka
sendiri yang unik dan memiliki tipe data yang telah didefinisikan sebelumnya. Kolom-kolom
pada tabel juga dapat memiliki atribut yang mendefinisikan fungsi kolom tersebut (kolom
4|Page

sebagai primary key, kolom tidak memiliki indeks yang didefinisikan pada kolom tersebut,
kolom memiliki nilai default tertentu, dan sebagainya).
Jika kolom pada tabel menggambarkan tipe data, baris pada tabel berisi data aktual untuk
kolom tersebut.

View
Data pada SQL Server disimpan dalam bentuk tabel dan Anda dapat melakukan
pengolahan data secara fisik pada tabel tersebut. Begitu juga dengan View, View dapat juga
dipakai untuk pemanggilan data. Namun view tidak menyimpan data secara fisik pada disk.View
adalah salah satu objek database yang merupakan turunan dari satu atau lebih tabel.
Dalam SQL Server,View merupakan tabel virtual. Sama seperti tabel sebenarnya, View
terdiri dari baris dan kolom, dan Anda dapat mengambil data dari View (kadang-kadang bahkan
update data dalam sebuah View). Field dalam tabel virtual View adalah bidang dari satu atau
lebih tabel nyata dalam database.
Anda dapat menggunakan View untuk menyajikan data yang diambil dari dua tabel yang
digabungkan, namun seolah-olah berasal dari satu tabel sehingga menyederhanakan skema dari
database Anda bagi pengguna melakukan laporan ad-hoc.
Anda juga dapat menggunakan View sebagai mekanisme keamanan untuk membatasi
data yang tersedia bagi pengguna akhir. View juga dapat berupa data agregat (sangat berguna jika
Anda dapat mengambil keuntungan dari indexed views), dan membantu data partisi.

Kegunaan View:
- Untuk menyembunyikan kompleksitas dalam skema database, atau menyesuaikan data dan
skema untuk satu set pengguna.
- Untuk mengontrol akses ke baris dan kolom data.
- Untuk menampilkan hasil perhitungan data.
- Untuk membuat laporan.

Stored Procedure
Stored Procedure adalah sekelompok pernyataan Transact-SQL yang dikompilasi
menjadi rencana eksekusi tunggal. Prosedur yang disimpan sangat membantu dalam mencapai
implementasi yang konsisten dari logika di seluruh aplikasi. Statement dalam SQL dan logika
5|Page

yang diperlukan untuk melakukan tugas dapat dirancang, dikode, dan diuji sekali dalam prosedur
yang tersimpan. Koding logika bisnis menjadi prosedur yang tersimpan tunggal juga
menawarkan satu titik kontrol untuk memastikan bahwa aturan-aturan bisnis dengan benar
ditegakkan.

Manfaat menggunakan Stored Procedure dalam SQL Server adalah:


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

Users
Untuk dapat terhubung ke sebuah instance SQL Server, pertama anda harus login terlebih
dahulu sehingga instance dapat mengotentikasi Anda (tahu siapa Anda). Tetapi untuk melakukan
operasi pada database, Anda memerlukan User account dalam database tersebut. User account
digunakan untuk mengakses database. Jadi anda bisa login, tapi jika Anda tidak memiliki akun
user yang berhubungan untuk login itu, Anda tidak akan dapat mengakses database tersebut.
SQL Server memungkinkan untuk membuat login bagi pengguna. Setiap individu yang
membutuhkan akses ke SQL Server dapat diberikan user account mereka sendiri.
Ketika administrator mengkonfigurasi user login ini, ia dapat menetapkan mereka ke
sejumlah peran dan skema, tergantung pada akses individu yang berhak.

Roles
Ketika membuat login user baru di SQL Server, Anda dapat memilih untuk menempatkan
user baru ini ke satu atau lebih Server Roles(peran) pada server.
Server Roles (jangan dikelirukan dengan peran database) tersedia untuk melakukan
berbagai tugas administrasi dalam database. Tidak semua orang bisa mendapatkan server role.
Pada kenyataannya, hanya pengguna seperti database administrator yang diberikan server role.
Beberapa peran dalam SQL Server sys admin, server admin, setup admin, security
admin, process admin, db creator, disk admin, bulk admin, public.
6|Page

1.4. Attach & Detach Database


File-file log data dan transaksi database dapat dilepaskan(Detach) dan kemudian
disambungkan(Attach) ke instance yang sama atau beda dalam SQL Server. Attach dan Detach
database berguna jika Anda ingin mengubah database pada instance yang berbeda dari SQL
Server pada komputer yang sama atau untuk memindahkan database.

Cara Attach Database


Klik kanan pada folder database klik Attach.

Setelah kotak dialog Attach Database tampil, pilih Add.


7|Page

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

Cara Detach Database


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

Lalu klik OK.

1.5. Import & Export Data


Import dan Export data digunakan agar dapat 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
agar dapat dipakai sesuai format data untuk aplikasi lain.
10 | P a g e

Cara Import Data


Klik kanan di database klik Tasks, lalu klik Import Data.
11 | P a g e

Cara Export Data


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

1.6. Backup & Restore Database


Salinan dari sebuah file atau direktori pada perangkat penyimpanan terpisah dapat kita
buatkanbackup jadi jika sewaktu-waktu data yang original rusak atau terhapus, masih bisa
digunakan salinannya. Proses backup mengacu pada pembuatan salinan data sehingga salinan ini
dapat digunakan untuk mengembalikan data semula setelah peristiwa kehilangan data.
12 | P a g e

Terdapat dua tujuan utama dalam backup. Yang pertama adalah untuk memulihkan
keadaan setelah terjadi bencana (disaster recover). Yang kedua adalah untuk mengembalikan
sejumlah file kecil setelah secera sengajaterhapus atau rusak. Kehilangan data merupakan hal
sangat umum, 66% dari pengguna internet telah mengalami kehilangan data yang serius.
Restore berguna untuk mengembalikan ke dalam keadaan semula dan membuat restitusi.
Backup dan Restore adalah adalah proses menyalin data terlebih dahulu dengan tujuan spesifik
untuk mengembalikan data yang sama setelah suatu peristiwa yang dapat mengakibatkan
hilangnya data.

Cara Backup Database


Klik kanan di database klik Tasks, lalu klik Back Up.
13 | P a g e

Lalu setelah kotak dialog Back Up Database muncul, klik Add untuk menambahkan alamat
kemana hasil backup akan disimpan.

Kemudian akan muncul kotak dialog Select Backup Destination, lalu tentukan kemana hasil back
up akan disimpan, lalu klik OK.
14 | P a g e
15 | P a g e

Cara Restore Database


Klik kanan di database klik Tasks, lalu klik Restore Database.
16 | P a g e

Lalu setelah kotak dialog Restore Database muncul, tentukan tujuan database yang akan di
restore lalu pilih From device untuk menentukan lokasi file yang mau di restore.

Lalu akan muncul kotak dialog Specify Backup.


17 | P a g e

Setelah itu pilihlah file yang akan di restore, kemudian klik OK.
18 | P a g e

1.7. Query Execution


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

1. SELECT
2. FROM
3. WHERE
4. GROUP BY
5. ORDER BY
6. HAVING
7. CUBE | ROLLUP
8. ON
19 | P a g e

9. DISTINCT
10. OUTER
11. TOP

SQL Query Analyzer adalah antarmuka utama untuk menjalankan query SQL terhadap
database Anda. Anda dapat menggunakan SQL Query Analyzer untuk membuat dan
menjalankan script adhoc, atau anda dapat membuat skrip SQL dan menyimpannya untuk
digunakan.
Pada dasarnya kalau kita bekerja dengan Microsoft SQL Server kita harus masuk atau
joint ke Server, baik kalau kita bekerja dengan SQL Enterprise Manager maupun dengan SQL
Query Analyzer. Hanya kalau kita masuk melalui SQL Enterprise Manager kita bisa langsung
menggunakan fasilitas yang ada seperti membuka database, membuat database baru, membuat
dan membuka tabel, dan lain-lain. Tetapi apabila Anda bekerja di lingkungan Query Analyzer
Anda harus menggunakan Transact-SQL baik untuk membuat database, tabel, maupun yang
lainnya.
Langkah :
1. KlikNew Query
2. Kemudian masukan query yang ingin di jalankan  blog query klik Execute
20 | P a g e
21 | P a g e

Chapter 02
Data Definition Language

Objectives
1. Create & Drop Database
2. Create & Drop Table
3. Alter Statement
4. Create & Drop Index
5. Create & Drop View

Learning Outcomes
1. Apply database language and SQL Programming language
22 | P a g e

2.1. Create & Drop Database


 Create Database
Untuk membuat database baru.

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

2. Klik kanan pada folder database dan pilih New Database


23 | P a g e

3. Isi nama database dan klik OK


24 | P a g e

 Drop Database
Untuk menghapus database.

Langkah :
1. Pada bagian Object Explorer, klik kanan pada folder Database yang ingin dihapus dan
pilih Delete
25 | P a g e

2. Klik OK pada window Delete Object

2.2. Create & Drop Table


 Create Table
Untuk membuat tabel dalam database.

Langkah :
1. Pada bagian Object Explorer, expand Database kemudian pada bagian Tables klik kanan
pilih new table
26 | P a g e

2. Isi nama kolom dan tipe datanya Kemudian tekan ctrl+ s dan isi nama tabelnya
27 | P a g e

Sintaks :

CREATE TABLE [ table_name ]


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

Contoh :
Nama Tabel : MsCustomer
Nama Field Tipe Data Length
CustomerId char 5
Name varchar 30
Address varchar 50
Phone varchar 15

Constraint Statement
Constraint merupakan sebuah batasan yang digunakan untuk memberikan
properti khusus yang memberikan integritas data dan membuat indeks-indeks pada tabel dan
kolom yang di tunjuk. Constraint berguna untuk penerapan sebuah ketentuan pada table dan
untuk mencegah penghapusan table jika terdapat ketentuan-ketentuan yang telah dibuat.
28 | P a g e

Macam-macam Constraint
 NOT NULL
Constraint ini berguna untuk memberlakukan sebuah column untuk tidak menerima nilai
NULL.

 UNIQUE
Constraint ini berguna untuk mengidentifikasikan keunikan setiap record sebuah table
dalam database.

 DEFAULT
Digunakan untuk memasukkan nilai default kedalam sebuah kolom yang ditunjuk pada
table. Nilai default akan ditambahkan ke dalam semua record baru, jika tidak ada nilai lain
yang ditentukan.

 CHECK
Digunakan untukmembatasirentangnilaiyangdapatditempatkandalam sebuah kolom pada
table.
29 | P a g e

 PRIMARY KEY
Constraint ini berguna untuk mengidentifikasikan keunikan setiap record sebuah table
dalam database. Primary Key harus mengandung nilai keunikan dan tidak dapat menerima
nilai NULL.

 FOREIGN KEY
Foreign Key merupakan sebuah kumpulan field dalam satu relasi yang digunakan
untuk menunjuk ke suatu baris (tuple) pada relasi yang lain (harus berkorespondensi
dengan primary key pada relasi yang kedua).

MsCustomer
TrHeaderOrder
PK CustomerId
PK OrderId
CustomerName
FK1 CustomerId
CustomerAddress
OrderDate
CustomerPhone

Nama Tabel : TrHeaderOrder


PrimaryKey : OrderId
ForeignKey : CustomerId
Nama Tipe Length Keterangan
Field Data
OrderId char 5 Harus diisi dan panjang = 5, harus
diawali dengan „OD‟ dan 3 digit
terakhirnya berupa angka
Contoh Format : OD[0-9][0-9][0-9]
CustomerId char 5 Apabila nilainya diubah atau dihapus di
MsCustomer, data di TrHeaderOrder
juga ikut berubah
OrderDate datetime Tidak boleh NULL
30 | P a g e

Referential Integrity
Referential Integrity digunakan untuk menjaga konsistensi baris-baris data antara dua
buah tabel. Aturan ini mengharuskan sebuah baris pada sebuah tabel yang terelasikan pada
tabel lain harus mengacu pada sebuah baris di dalam tabel tersebut. Aturan untuk referential
integrity biasanya digunakan jika terjadi proses modifikasi data.Hubungan referential
integriry didefinisikandenganForeign KeydanklausaPrimary Keydalam perintah Create
Table.
Saat kita melakukan on update atau on delete kita bisa menambahkan pilihan sebagai berikut
:
 NO ACTION
Jika kita melakukan update pada primary key yang ditunjuk atau delete pada record
yang ditunjuk maka tidak melakukan reaksi apa pun.

 CASCADE
Jika kita melakukan update pada primary key yang ditunjuk, maka foreign key akan
ikut ter-update. Jika kita melakukan delete pada record yang ditunjuk maka record-
record dari foreign key akan ikut ter-delete.

 SET NULL
Jika kita melakukan update pada primary key yang ditunjuk atau delete pada record
yang ditunjuk maka foreign key akan berisi nilai null.
31 | P a g e

 SET DEFAULT
Jika kita melakukan update pada primary key yang ditunjuk atau delete pada record
yang ditunjuk maka foreign key akan berisi nilai default

MsStudent
TrHeaderBorrowing
PK StudentId
PK BorrowId
StudentName
FK1 StudentId
StudentAddress
BorrowDate
PhoneNumber
Major

TrDetailBorrowing MsBook
PK,FK1 BorrowId PK BookId
PK,FK2 BookId
BookName
Qty Author
Publisher

Nama Table : TrDetailBorrowing


PrimaryKey,ForeignKey : BorrowId, BookId

Catatan
% mewakili banyak character atau tidak ada karakter
_ mewakili satu character
[] range
32 | P a g e

 Drop Table
Untuk menghapus table dalam database

Langkah :
1. Pada bagian Object Explorer, expand Database kemudian expand Tables lalu klik kanan
pada table yang mau dihapus lalu pilih Delete
33 | P a g e

2. Klik OK pada window Delete Object

Sintaks :
DROP TABLE [ table_name ]

Contoh :

Catatan
Jika ada tabel yang ber relasi, drop tabel yang mengandung fereignkey dulu baru
yang mengandung primary key
34 | P a g e

2.3. Alter Statement


Alter Statement merupakan sebuah syntax sqlyang dapat membuat perubahan pada
definisi tabel dalam sql.
Alter Statement memungkinkan kita untuk :
 Menambahkan column baru pada table
 Menghapus sebuah column yang ada pada table
 Mengubah tipe data dan meningkatkan size dari tipe data pada column dalam table
 Menambahkan sebuah constraint pada table
 Menghapus sebuah constraint yang ada pada table
 Memberikan atau menghapus nilai default pada sebuah column dalam table

Sintaks
1. Add new column

ALTER TABLE [table_name]


ADD [column_name] [datatype]

Contoh :

2. Drop column from table

ALTER TABLE [table_name]


DROP COLUMN [colun_name]

Contoh :

3. Change the data type of a column in a table

ALTER TABLE [table_name]


ALTER COLUMN [column_name][datatype]
35 | P a g e

Contoh :

4. Add Constraint from table

ALTER TABLE [table_name]


ADD CONSTRAINT [constraint_name] CHECK
[colum check]

Contoh :

5. Drop Constraint from table

ALTER TABLE [table_name]


DROP CONSTRAINT [constraint_name]

Contoh :

6. Change default value for a column


Set default

ALTER TABLE [table_name]


ADD CONSTRAINT [constraint_name] DEFAULT
[default_value] FOR [column_name]

Contoh :
36 | P a g e

2.4. 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 :

 Drop Index
Untuk menghapus index yang ada

Sintaks :
DROP INDEX[ index_name ] ON [table_name]
37 | P a g e

Contoh :

2.5. 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 :

 Drop View
Sintaks :
DROP VIEW [view_name]

Contoh :

2.6. Exercise
1. Buatlah sebuah database baru dengan nama Android_Database
2. Buatlah sebuah tabel dengan data sebagai berikut :
38 | P a g e

MsCustomer TrHeaderSales

PK CustomerId PK SalesId

Name SalesDate
Address Note
Phone FK1 CustomerId

Nama tabel : TrHeaderSales


Primarykey : SalesId
Foreign key : CustomerId

Nama Field Tipe Data Length Keterangan


SalesId char 5 Format nya SL[0-9][0-9][0-9]
CustomerId char 5 Apabila nilainya diubah atau dihapus di
MsCustomer, data di TrHeaderSales ikut
berubah
SalesDate datetime Tidak boleh NULL
Note varchar 100

3. Buatlah sebuah index dengan nama CustIndex pada CustomerId didalam MsCustomer
(create index)
4. Hapuslah Index CustIndex pada soal 3
(drop index)
5. Hapuslah table TrHeaderSales pada soal 2
(drop table)
6. Buatlah sebuah view dengan nama ViewInfoCustomer untuk menampilkan Name, Address
dan phone yang ada pada tabel MsCustomerdimana CustomerId adalah „CU017‟.
(create view, select)

7. Hapus view bernama ViewInfoCustomer yang telah dibuat pada soal nomor 6
(drop view)
8. Ubahlah table MsCustomer dengan menambahkan column baru yaitu column gender dengan
tipe data varchar size 20
39 | P a g e

Answer

1.

2.

3.
4.

5.

6.

7.

8.
40 | P a g e

Chapter 03
Data Manipulation Language Basic

Objectives
1. Insert
2. Update
3. Delete
4. Commit
5. Rollback

Learning Outcomes
1. Describe database systems, terminology, environment, and new concept of database
2. Apply database language and SQL Programming language
41 | P a g e

3.1. Insert
Digunakan untuk memasukkan data-data ke dalam tabel yang sudah dibuat sebelumnya
Sintaks :
INSERT INTO [table_name]([column_1],[column_2],[column_3],…) VALUES
([value_1], [value_2], [value_3]..)

Contoh :
Masukkan data karyawan baru yang bernama Ucok dengan kode karyawan KK006, alamat di Jl.
Pisang No.33 dan TelpKaryawan 3216548.

Jawab :

3.2. Update
Digunakan untuk melakukan perubahan data yang ada di dalam table.
Sintaks:
UPDATE [table_name] SET [column_1] = [new value], [column_2] = [new value], [column_3]
= [new value],… WHERE {condition}

Contoh :
Ubalah NamaKaryawan dengan kodeKaryawan KK002 menjadi “Indrawan S.Kom”

Jawab :

3.3. Delete
Digunakan untuk melakukan penghapusan data yang ada di dalam table.
Sintaks:
DELETE FROM [table_name] WHERE {condition}
42 | P a g e

Contoh :
Hapuslah data pelanggan dimana NamaPelanggan mengandung kata “Lestari”.
Sebelum proses delete:

Setelah proses Delete :

Jawab :

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

Contoh :
Hapuslah data-data pada MsGame dimana NamaGame mengandung kata “Dead”.
43 | P a g e

Jawab :

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

Contoh:
Hapuslah data-data pada MsGame dimana NamaGame mengandung kata “moon”.
Data sebelum proses delete:

Data setelah proses delete :


44 | P a g e

Data setelah proses rollback :

Jawab :

3.6. Exercise
1. Masukkan data karyawan baru yang bernama Wandi dengan kode karyawan KK007,
alamatKaryawan di Jl. Rambutan No.44 dan TelpKaryawan 111222.
(insert)

2. Masukkan data karyawan baru yang bernama Pandu dengan kode karyawan KK008 dan
alamatKaryawan di Jl. Cherry No.66.
(insert)

3. Ubahlah semua TelpPelanggan yang masih kosong (NULL) dengan kalimat „N/A‟.
(update, is null)
45 | P a g e

Sebelum proses update:

Setelah proses update:

4. Ubahlah Qty pada TrDetailPenjualan dengan menambah 1 pada masing-masing Qty yang
TglTransaksinya terjadi pada bulan Mei dan tahun 2009.
(update, month, year)
46 | P a g e

Sebelum proses update

Setelah proses update


47 | P a g e

5. Hapuslah data pelanggan yang tidak memiliki nilai TelpPelanggan (null).


(delete, is null)
Sebelum proses delete:

Setelah proses delete:

6. Hapuslah semua data pada MsGame dimana JenisGamenya adalah PC.


(delete)
Sebelum proses delete:
48 | P a g e

Setelah proses delete:


49 | P a g e

Chapter 04
Data Manipulation Language Intermediate

Objectives
1. Select Statement
2. SQL Syntax
3. SQL Operator
- Operator Aritmatik
- Operator Logika

Learning Outcomes
1. Describe database systems, terminology, environment, and new concept of database
2. Apply database language and SQL Programming language
50 | P a g e

4.1. Select Statement


Digunakan untuk menampilkan data – data dalam table kita.
Sintaks:
SELECT [column_1],[column_2],[column_3],… FROM [table_name]

Contoh :
Tampilkan semua data pada tabel MsKaryawan.

Jawab :

4.2. SQL Syntax


Berikut ini adalah sintak-sintak SQL yang biasa digunakan:
Sintak Keterangan
datediff Fungsi
untuk mendapatkan selisih tanggal.

Bentuk umum
datediff(SatuanTanggal,Tanggal1,Tanggal2)

Contoh
datediff(day,'9/10/10','9/20/10')
akan mengembalikan 10.
datename Fungsi
untuk mendapatkan nama dari bagian tanggal tertentu.
51 | P a g e

Bentuk umum
datename(SatuanTanggal,Tanggal)

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

Bentuk umum
datepart(SatuanTanggal,Tanggal)

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

Bentuk umum
dateadd(SatuanTanggal, BesarSatuanTanggal, Tanggal)

Contoh
dateadd(day,5, '10/9/10')
akan mengembalikan 14 Oktober 2010
month Fungsi
untuk mengambil data bulan.

Bentuk umum
month(Tanggal)
52 | P a g e

Contoh
Month(Tanggal) dan tanggal hari ini adalah 4 January
2011, maka akan mengembalikan nilai 1.
day Fungsi
untuk mengambil data tanggal.

Bentuk umum
day(Tanggal)

Contoh
day (Tanggal) dan tanggal hari ini adalah 4 January
2011, maka akan mengembalikan nilai 4.
year Fungsi
untuk mengambil data tahun.

Bentuk umum
year(Tanggal)

Contoh
year (Tanggal) dan tanggal hari ini adalah 4 January
2011, maka akan mengembalikan nilai 2011.
charindex Fungsi
untuk mengambil urutan dari kata/string tertentu.

Bentuk umum
charindex(String yang dicari, namaField, IndexMulai)

Contoh
ada 1 record, namanya = „Ricky‟
charindex(„ic‟,nama,1) -> mengembalikan nilai 2
left Fungsi
digunakan untuk mengambil beberapa karakter dari
53 | P a g e

sebelah kiri (awal).

Bentuk umumnya :
Left(namaField, jumlahHuruf)

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

Bentuk umumnya :
right(namaField, jumlahHuruf)

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

Bentuk umumnya:
Substring(namaField, IndexMulai, JumlahHuruf)

Contoh
substring(nama, 3 2) -> mengambil 2 huruf dari nama,
dimulai dari index ke-5, ini akan mengembalikan „ck
54 | P a g e

rtrim Fungsi
digunakan untuk menghilangkan spasi di sebelah kanan.

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.

Bentuk umumnya
rtrim(namaField)

Contohnya
saya mempunyai satu field nama bertype char(20), dan
kemudian saya ingin menampilkan karakter terakhir dari
nama tersebut, padahal nama-nama tersebut tidak pasti
berjumlah 20 karakter.
right(rtrim(nama), 1)
reverse Fungsi
Digunakan untuk membalikkan kata atau kalimat.

Bentuk umum
reverse(namaField)
55 | P a g e

Contoh
reverse(nama) dan jika nama adalah “Nathan”, maka
kata yang dihasilkan “nahtaN” .
len Fungsi
Digunakan untuk mencari panjang kata atau kalimat.

Bentuk umum
len(namaField)

Contoh
Len(nama) dan jika nama adalah “Edbertius”, maka akan
menghasilkan nilai 9.
stuff Fungsi
Digunakan untuk memasukkan suatu kata atau kalimat
(String2) ke dalam kata atau kalimat lainnya (String1).
Fungsi ini akan menghapus sejumlah karakter
(JumlahKarakter) mulai dari IndexMulai dan kemudian
menggantikan memasukkan String2 ke dalam String1
mulai dari posisi IndexMulai

Bentuk umum
Stuff(String1, IndexMulai, JumlahKarakter, String2)

Contoh
Stuff(nama,2,3,‟erl‟) dan jika nama adalah “Sxxxy”,
maka kata yang dihasilkan adalah “Serly”
convert Fungsi
Digunakan untuk mengubah tipe data suatu nilai ke tipe
data lainnya dan melakukan formatting untuk data
berupa tanggal.
56 | P a g e

Bentuk umum
Conver(tipeDataTujuan, namaField [, jenisStyle])

Contoh
Convert(char, tgl, 106) dan jika tgl adalah “4 January
2011”, maka tgl yang dihasilkan adalah dengan format
“dd MMM YYYY”, 4 Jan 2011
cast Fungsi
Digunakan untuk mengubah tipe data suatu nilai ke tipe
data lainnya.

Bentuk umum
Cast(namaField AS tipeDataTujuan)

Contoh
„Rp. ‟+Cast(harga AS char)+‟,00‟ dan jika harga adalah
5000, maka hasilnya adalah “Rp. 5000,00”

4.3. SQL Operator


4.3.1. Operator Aritmatik
Operator aritmatik digunakan untuk melakukan operasi matematika terhadap dua
ekspresi dari satu atau lebih tipe data numerik. Operator-operator aritmatik dalam SQL
Server dapat dilihat pada table di bawah ini :
Operator Arti
+ (Add) Melakukan operasi penambahan.
- (Subtract) Melakukan operasi pengurangan.
* (Multiply) Melakukan operasi perkalian.
/ (Divide) Melakukan operasi pembagian.
% (Modulo) Mengembalikan sisa hasil pembagian.
Contoh :
7%3=1, karena sisa pembagian 7 dari 3 adalah 1.
57 | P a g e

Contoh :
Tampilkan NamaGame dan Harga+PPN 10%, dimana Harga+PPN 10% merupakan
kelipatan dari 10.000. Harga + PPN10% didapapt dari harga game setelah ditambah
pajak sebesar 10% dari harga awal.

Jawab :

4.3.2. Operator Logika


Operator logika digunakan untuk melakukan pengujian kebenaran suatu kondisi.
Operator-operator logika sama dengan operator-operator perbandingan, dimana operator
logika akan mengembalikan data Boolean, berupa nilai TRUE, FALSE, atau
UNKNOWN. Beberapa operator logika dapat dilihat pada table di bawah :
Operator Arti
AND Mengembalikan nilai True, jika
kedua ekspresi booleannya
bernilai TRUE.
OR Mengembalikan nilai TRUE
TRUE, jika salah satu ekspresi
booleannya bernilai TRUE.
Between Mengembalikan nilai TRUE,
jika operand yang diuji berada
dalam jangkauan.
Like Mengembalikan nilai TRUE,
jika operand yang diuji sesuai
dengan pattern yang ditentukan.
Not Membalikkan nilai Boolean dari
operator-operator logika.
58 | P a g e

Exists Mengembalikan nilai TRUE,


jika subquery mengembalikan
setidaknya satu baris.
IN Mengembalikan nilai TRUE,
jika operand yang diuji sesuai
dengan salah satu daftar ekspresi
yang disediakan.

Contoh :
Tampilkan data
Tampilkan Kodegame, NamaGame, dan Harga dimana JenisGame nya adalah “PC” atau
“Wii” atau JenisGame tidak mengadung kata “PS”. Tampilkan data yang harganya antara
50000 dan 80000.

Jawab :
59 | P a g e

4.4. Exercise
1. Tampilkan semua NamaPelanggan dan AlamatPelanggan yang ada.
(select)

2. Tampilkan KodePenjualan, Tanggal, dan Jumlah Terjual dimana Jumlah Terjual lebih dari 1
buah. Tanggal didapat dari TglTransaksi dengan format “dd MMM YYYY”, sedangkan
Jumlah Terjual didapat dari Qty yang ditambah dengan kata “ buah” di bagian belakang.
(convert, cast)

3. Tampilkan Sandi dan Harga dimana 3 digit terakhir merupakan kelipatan 2 dan harga diantara
30000 dan 50000. Sandi merupakan gabungan dari “Kata terakhir dari NamaGame”,”Kata
kedua dari NamaGame”-“Kata pertama dari NamaGame”.
(reverse, substring, charindex, cast, between)
60 | P a g e

Chapter 05
Data Manipulation Language Advanced

Objectives
1. Sub Query
2. Alias Sub Query
3. Multi Table Query
4. Combine Table Result (IN, EXISTS)
5. Join and Union
6. Aggregate Function
7. Grouping and Sorting

Learning Outcomes
1. Describe database systems, terminology, environment, and new concept of database
2. Apply database language and SQL Programming language
61 | P a g e

5.1. Sub Query


Subquery adalah adalah query select yang mengembalikan nilai tunggal dan terletak dalam
sebuah perintah SELECT, INSERT, UDPATE, DELETE atau di dalam subquery lainnya. Sebuah
subquery biasa disebut juga dengan inner query atau inner select, sedangkan query yang
mengandung subquery biasa disebut dengan outer query atau outer select.
Contoh:
Hapus data dari pelanggan yang TelpPelanggannya kosong.

Jawab:

5.2. Alias Sub Query


Alias subquery adalah subquery yang diberi nama, alias subquery dianggap sebagai tabel virtual
sehingga dapat digunakan untuk kerperluan-keperluan yang lain.
Contoh :
Tampilkan semua NamaKaryawan dan NamaPelanggan dengan cara cross product.

Jawab :

5.3. Multi Table Query


Multi Table Query adalah query yang melibatkan lebih kolom-kolom tidak hanya dalam satu
tabel, tapi melibatkan 2 atau lebih tabel. Multi Table Query ini dapat digunakan dalam perintah
SELECT (untuk menampilkan kolom-kolom yang tersebar di dua tabel atau lebih), UPDATE
atau DELETE (untuk meng-udpate atau menghapus data disuatu tabel, namun syarat atau kondisi
tersebar di tabel lain).
Contoh:
Tampilkan NamaGame, Harga, dan JenisGame dimana Harganya merupakan kelipatan dari
15000.
62 | P a g e

Jawab :

5.4. Combine Table Result (IN, EXISTS)


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).
5.4.1. IN
Sintaks in digunakan jika kita sudah mengetahui nilai yang mau dikembalikan dari satu
kolom dari tabel yang berbeda. 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.
Sintaks:
SELECT column_name FROM table_name
WHERE column_name <primary key> in ( SELECT column_name FROM table_name)

Contoh:
Tampilkan KodeKaryawan dan NamaKaryawan dimana KodeKaryawan berakhiran 2, 3
atau 5 (Gunakan sintak in).

Jawab :

5.4.2. EXISTS
Sintak Exists mirip dengan in bedanya pada pengembalian nilai, sintak exists tidak
mengembalikan data-data yang di SELECT dalam subquery, namun mengembalikan nilai
boolean, yaitu true atau false. Nilai true dikembalikan jika subquery dalam exists
63 | P a g e

mengandung minimal satu baris data, sebaliknya nilai false dikembalikan jika subquery
dalam exists tidak menghasilkan baris data sama sekali.

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

Contoh:
Tampilkan NamaGame dah Harga dimana panjang kata dari JenisGame lebih dari 3
karakter (gunakan sintak exists).

Jawab :

5.5. Join and Union


5.5.1. Join
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.
Untuk mencoba contoh-contoh di bawah, silahkan eksekusi query create+insert dibawah
ini :
(*query di bawah ini digunakan untuk contoh-contoh Join dan untuk soal nomor 9)
64 | P a g e

Ada beberapa tipe JOIN di antara lain adalah sebagai berikut.


 JOIN (INNER JOIN)
Mengembalikan baris jika setidak-tidaknya terdapat satu kesamaan foreign key dan
primary key yang dihubungkan dengan sintak JOIN.
Contoh :

 LEFT JOIN (LEFT OUTER JOIN)


Mengembalikan semua baris dari tabel yang ada di sebelah kiri perintah JOIN, bahkan
jika tidak terdapat kesamaan antara foreign key dan primary di kedua tabel.
Contoh :
65 | P a g e

 RIGHT JOIN (RIGHT OUTER JOIN)


Mengembalikan semua baris dari tabel yang ada di sebelah kanan perintah JOIN,
bahkan jika tidak terdapat kesamaan antara foreign key dan primary di kedua tabel.
Contoh :

 FULL JOIN (FULL OUTER JOIN)


Mengembalikan semua baris dari tabel yang ada disebelah kiri maupun kanan perintah
JOIN walaupun tidak terdapat tidak terdapat kesamaan antara foreign key dan primary
di kedua tabel.
Contoh :
66 | P a g e

5.5.2. Union
Mengembalikan dan menggabungkan semua nilai hasil SELECT dari masing-masing
tabel. Jika kita mau men-copy atau dengan kata lain baris yang sama tidak dihiraukan
(ditampilkan berulang kali), kita bisa menggunakan perintah UNION ALL, jika kita ingin
mengurangi redudansi data/baris yang berulang dihapus dari TABLE hasil UNION, kita
bisa menggunakan perintah UNION atau UNION DISTINCT.
(*query di bawah ini digunakan untuk contoh-contoh Union, Union All dan untuk soal
nomor 10)

Contoh Union :
Tampilkan secara unik (tanpa redudansi) semua Nama dan Nilai dari KelasA dan KelasB.

Jawab:
67 | P a g e

Contoh Union All :


Tampilkan semua Nama dan Nilai dari KelasA dan KelasB tanpa memperhatikan
redudansi data yang ada.

Jawab:

5.6. Aggregate Function


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

Fungsi-fungsi agregasi antara lain :


1. sum(nama_field)
Sintak sum digunakan untuk menjumlahkan isi baris-baris pada field tersebut.
2. count(nama_field)
Sintak count digunakan untuk menghitung banyaknya baris (pencacahan data).
3. avg(nama_field)
Sintak avg digunakan untuk menghitung rata-rata dari isi baris-baris yang di SELECT.
4. max(nama_field)
Sintak max digunakan untuk mencari nilai max dari baris-baris.
5. min(nama_field)
Sintak min digunakan untuk mencari nilai min dari baris-baris.

Untuk sum dan avg, field yang mau dihitung harus tipe datanya numeric. Sedangkan untuk count,
baris yang mempunyai nilai NULL, tidak ikut dihitung.
68 | P a g e

Contoh:
Tampilkan Harga game termurah, Harga game termahal, Rata-rata harga game, Jumlah game,
dan Total harga jual. Total harga jual didapat dari jumlah semua harga game yang ada.

Jawab:

5.7. Grouping and Sorting


5.7.1. Grouping
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. Jika suatu query mengandung proses
perhitungan/kalkulasi dengan menggunakan aggregate, maka field-field lain yang tidak
termasuk dalam aggregate harus dimasukkan dalam group by untuk mengelompokkan
hasil kalkulasi.
Sintaks:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

Contoh :
Tampilkan KodeJenisGame dan total harga perjenis game yang dikelompokkan
berdasarkan KodeJenisGame.
69 | P a g e

Jawab:

5.7.2. Sorting
Pengurutan/sorting dilakukan dengan sintak order by. Order by digunakan untuk
mengurutkan hasil-set dengan sebuah kolom yang ditetapkan. ORDER BY mengurutkan
hasil dalam urutan menaik (ascending) secara default. Jika Anda ingin mengurutkan hasil
yang menurun (besar ke kecil) dalam urutan, Anda dapat menggunakan kata kunci DESC.
Sintaks:
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC

Contoh :
Tampilkan NamaGame dan Harganya yang di urutakan berdasarkan harga dari kecil ke
besar.

Jawab:
70 | P a g e

5.8. Exercise
1. Tampilkan NamaGame dan Harga dimana Namagamenya adalah “Left for Dead”.
(sub query)

2. Tampilkan NamaGame, Harga, dan Selisih antara harga dengan rata-rata harga untuk masing-
masing game.
(abs, avg )

3. Tampilkan KodeGame, Qty, KodePenjualan, TglTransaksi, KodePelanggan, dan


KodeKaryawan dimana Qty merupakan bilangan genap.
(alias sub query)

4. Tampilkan JenisGame, NamaGame, Harga (tambahkan “RP. ” di depan harga), dan Serial
Number dari masing-masing game. Serial Number merupakan NamaGame yang dibalik,
spasi yang ada diganti dengan kata “xz” dan huruf “o” diganti dengan angka 47. Tampilkan
Serial Number dalam huruf kecil.
(convert, replace, lower, reverse, len)
71 | P a g e

5. Tampilkan Tanggal ( dengan format “dd MMM YYYY”), KodePelanggan, KodeKaryawan,


KodeGame, dan Qty dimana Qty merupakan kelipatan 2.
(convert)

6. Tampilkan NamaKaryawan, NamaPelanggan, NamaGame, JenisGame, dan Qty game yang


dibeli dimana NamaGame tepat mengandung 3 kata, panjang kata dari gabungan NamaGame
dan JenisGame merupakan kelipatan 2.
(len, like, not like)

7. Tampilkan KodePenjualan, TglTransaksi, dan KodePelanggan dimana Pelanggan pernah


melakukan pembelian dengan Qty lebih besar dari rata-rata Qty yang ada. (Buatlah 2 jawaban
untuk mengerjakan soal ini, 1 jawaban menggunakan IN dan yang lainnya menggunakan
exists).
(in/exists, avg)

8. Tampilkan Nama, Alamat, dan TelpPelanggan dimana pelanggan tersebut pernah membeli
barang dengan Qty lebih besar dari pada jumlah rata-rata dan jumlah minimal pembelian dari
semua transaksi yang ada. Tampilkan pelanggan yang TelpPelanggannya tidak kosong dan
nama pelanggan terdiri dari 2 kata atau lebih.
72 | P a g e

Nama didapat dari kata pertama NamaPelanggan. Alamat didapat dari AlamatPelanggan yang
kata “Jln.” diganti dengan kata “Jalan ” dan “No.” diganti dengan kata “Nomor ”. (Buatlah 2
jawaban untuk mengerjakan soal ini, 1 jawaban menggunakan IN dan yang lainnya
menggunakan exists).
(in/exists, substring, charindex, replace, in, avg, min,not null, like)

9. Tampilkan semua nama dari karyawan, email, Jabatan(revisi), dan Password tanpa
mempedulikan apakah karyawan tersebut sudah atau belum memiliki jabatan. Jabatan(revisi)
di dapat dari nama jabatan yang diganti kata “Tukang” menjadi “Distributor”. Sedangkan
Password didapat dari email sebelum tanda “@” dan ditambah dengan “!@#”.
(replace, upper, substring, charindex, left join)

10. Tampilkan semua Nama dan Nilai siswa dari KelasA dan KelasB, dimana Nilainya di bawah
nilai rata-rata kelas siswa bersangkutan tanpa mempedulikan redudansi data.
(avg, union all)

11. Tampilkan NamaGame, JenisGame dan Harga satuan dari game yang memiliki harga di atas
harga rata-rata game lainnya. Harga Satuan didapat dari harga yang ditambah dengan awalan
“RP. ” dan akhiran “,00”.
(cast, avg)
73 | P a g e

12. Tampilkan TglTransaksi, namaKaryawan, namaPelanggan, kodePenjualan, dan jumlah item


terjual dimana namaKaryawan hanya mengandung satu kata, Jumlah item terjual yang dijual
lebih dari 1, tglTransaksi tidak dilakukan pada tanggal terawal dan terakhir dari tanggal-
tanggal transaksi yang ada. Jumlah item terjual merupakan jumlah Qty dari transaksi
bersangkutan.
(convert,sum, not like, group by,sum, max)

13. Tampilkan Hari dan JumlahTransaksi yang diurutkan berdasarkan JumlahTransaksi dari
besar ke kecil. Hari merupakan nama hari dari TglTransaksi.
(datename, count, datename, count)

14. Tampilkan Tanggal Transaksi (didapat dari TglTransaksse dan ubah format tanggal sesuai
yang terlihat pada gambar dibawah), Jumlah transaksi (didapat dari jumlah traksaksi pada
tanggal bersangkutan), dan Total pendapatan kotor ( didapat dari penjumlahan dari
Qty*Harga) dimana Total pendapatan kotor lebih besar dari pada rata-rata Total pendapatan
kotor yang ada. Urutkan hasil query secara ascending.
(convert, count, cast, sum, distinct, order by )
74 | P a g e

Chapter 06
Data Control Language

Objectives
1. Registrasi Server
- Create Login
- New Database
- Database Roles
- Delete Database
- User Roles
2. Grant & Revoke

Learning Outcomes
1. Apply database language and SQL Programming language
75 | P a g e

6.1. Registrasi Server


Jika anda telah memiliki SQL Server 2008 di dalam komputer anda, maka langkah selanjutnya
adalah menggunakannya. Berikut ini tampilan awalnya:

Pada tampilan awal, anda akan di hadapkan dialogboxconnecttoserver dimana pada box ini
terdapat beberapa pilihan:
Servertype:
 Database Engine
 Analysis Service
 Reporting Service
 SQL Server mobile
 Integration Service
Servername:
Berisi nama server yang ada, untuk default-nya anda bisa memilih „localhost‟ atau karakter „.‟.
76 | P a g e

Authentification:
ada 2 yaitu Windows Authentification (untuk masuk sebagai admin, tidak perlu username dan
password) dan SQL Server Authentification (dimana anda harus memasukan username dan
password).
Lalu terdapat 4 tombol yaitu:
1. Tombol Connect , langsung konek ke database berdasarkan servertype dan servername yang
dipilih dengan authentifikasi yang dipilih.
2. Tombol Cancel, untuk membatalkan koneksi ke database.
3. Tombol Help, untuk memanggil help SQL (sudah otomatis ter-install sewaktu meng-install
microsoft SQL server 2005).
4. Tombol Option, untuk memunculkan pilihan koneksi yang lebih banyak lagi.
Jika anda sudah terhubung, maka tampilannya akan seperti ini:

Pertama, anda diminta untuk mendaftarkan / registering new server terlebih dahulu. Ini bertujuan
sebagai awal dari sekian tahap untuk mengelola database.

Server yang telah diregistrasi dapat ditampilkan di windowRegisteredservers. Server dapat dibuat
dan diregistrasi, di-rename atau dihapus dalam SQL Management Studio. Informasi server yang
sering diakses akan disimpan di ManagementStudioonRegistration.
77 | P a g e

Untuk me-registrasi sebuah server, lakukan klik kanan node di RegisteredServer’sTree dan klik
UpdateLocalServerRegistration. Aksi ini akan meng-updatelocalserverregistration.
78 | P a g e

Untuk membuat New Server, lakukan langkah-langkah berikut:


1) Klik DatabaseEngine di tool bar Registered Servers.
2) Klik kanan Microsoft SQL Servers dan arahkan mouse ke New, lalu klik Server Registration.

3) Di dialog boxRegistration, klik tab General dan masukkan nama server baru yang anda
inginkan di textbox yang tersedia. Gambar dibawah mengilustrasikan jika kita ingin membuat
sebuah server bernama Tutorial Server
79 | P a g e

4) Pada Authentication pilih Windows authentication atau select SQL Server Authentification
dan isi username serta passwordnya.
5) Ingat bahwa Registeredservername terisi secara otomatis. Anda dapat memasukkan deskripsi
singkat tentang server ke dalam textbox yang tersedia.
6) Informasi tentang properties dari connection merupakan opsional, untuk menerima default
connectionproperties klik tombol Save.
7) Ingat bahwa server yang telah diregistrasi akan muncul di list registeredservers.

Sebuah server yang telah diregistrasi dapat dihapus dengan cara melakukan klik kanan pada
server yang dimaksud dan meng-klik delete. Sebuah dialogbox konfirmasi proses pen-delete-an
akan muncul. Klik Yes untuk menghapus server.
Harus dicatat bahwa nama dari server dapat diganti kapan saja dan perubahan nama tidak
memiliki pengaruh pada connection properties. Nama dapat diganti dengan melakukan klik
kanan pada server yang dimaksud dan arahkan cursor ke Edit, kemudian klik Server Registration
Properties.
80 | P a g e

a. Create Login
Untuk membuat Login baru dapat dilakukan dengan cara klik kanan pada security, pilih new,
lalu klik login.

Lalu akan muncul windows seperti:


81 | P a g e

Beri nama login name-nya, anda dapat mengubah server roles dengan mengklik server roles
lalu akan muncul windows seperti:
82 | P a g e

Ada beberapa role yang telah disediakan oleh SQL server, antara lain:
Fixed Server Role Penjelasan
dapat melakukan segala aktivitas pada SQL Server Installation.

sysadmin Hak aksesnya:


Create Database, Alter Database, Drop Database, Revoke,
Grant.
dapat mengkonfigurasi server-wide settings.

serveradmin Hak aksesnya:


Reconfigure, shutdown, sp_configure, sp_fulltext_service,
sp_tableoption.
dapat mengatur extendedstoredprocedure.

setupadmin
Hak aksesnya:
Menambah member pada setupadmin, add/drop/configure
83 | P a g e

Fixed Server Role Penjelasan


linked servers.
dapat mengatur login untuk server.

securityadmin Hak aksesnya:


sp_addlogin, sp_password, sp_droplogin, sp_denylogin,
sp_defaultdb.
dapat mengatur proses yang berjalan pada SQL Server.

processadmin
Hak aksesnya:
Menambah member pada processadmin, KILL.
dapat membuat dan alter database.

Hak aksesnya:
dbcreator
Create database, alter database, drop database, sp_renamedb,
restore database.

dapat mengatur diskfiles.

diskadmin Hak aksesnya:


Menambah member pada diskadmin, DISK INIT,
sp_addumpdevice, sp_diskdefault, sp_dropdevice.
dapat melakukan bulkinsertoperation.

bulkadmin
Hak aksesnya:
Menambah member pada bulkadmin, BULKINSERT.
84 | P a g e

Pilih server rolenya, lalu ubah user mapping dengan klik user mapping untuk
membuat mapping ke database.
85 | P a g e

Pilih security -> SQL Server and Windows Authentication mode


Pilih databasenya, lalu klik OK untuk mengakhiri. Setelah itu maka login baru sudah
terbentuk dan siap untuk digunakan.
86 | P a g e

Lalu akan muncul Window seperti ini, klik Yes


87 | P a g e
88 | P a g e

b. New Database
Untuk membuat database yang baru dapat dilakukan dengan cara klik kanan pada
database, klik new database.
89 | P a g e

Lalu akan muncul windows seperti yang dibawah:

Beri nama databasenya, anda juga dapat mengatur autogrowth nya untuk mengatur
pertumbuhan database. Jika sudah selesai maka click OK.

c. Database Roles
Langkah – langkah untuk membuat Database Role:
1. Expand database yang ingin dibuat rolenya.
2. Expand Security
3. Klik kanan pada Roles, Pilih new, klik New Database Roles.
90 | P a g e

4. Isi Role Name dengan nama yang diinginkan. Isi Ownernya. Dan yang terakhir Buat
Role Membernya menjadi Public dengan cara klik tombol add.
91 | P a g e

5. Klik tombol Browse

6. Pilih yang public, lalu klik OK.


92 | P a g e

d. Delete Database
Untuk menghapus database yang telah dibuat:
1. Klik kanan pada database yang ingin dihapus, klik delete.
93 | P a g e

2. Centang delete backup and restore history information for database untuk menghapus
log milik database.

e. User Roles
Berikut adalah query untuk membuat sebuah role pada user.
sp_addlogin login_id [, password [, database]]
Membuat login account baru untuk SQL Server Login.
Contoh:
EXEC sp_addlogin Margaret, Rose
sp_droplogin login_id
Menghapus nama login dari SQL Server Login.
Contoh:
EXEC sp_droplogin „Victoria‟

sp_password passwd_lama passwd_baru login_id


Mengganti password lama dengan password baru.
Contoh:
94 | P a g e

EXEC sp_password „ok‟, „coffee‟

sp_defaultdb login_id nama_database


Mengubah default database untuk login-id tersebut.
Contoh:
EXEC sp_defaultdb „Victoria‟, „pubs‟

sp_addrole [ @nama_role = ] „role‟ [ , [ @ownername = ] „owner‟ ]


Membuat role yang baru
Contoh:
EXEC sp_addrole „Managers‟

sp_droprole [ @rolename = ] „role‟


Menghapus role
Contoh:
EXEC sp_droprole „Sales‟
sp_addrolemember [ @rolename = ] „role‟, [ @membername = ]
„security_account‟
Menambahkan user ke role
Contoh:
EXEC sp_addrolemember „Engineering‟, „Michael‟

sp_droprolemember [ @rolename = ] „role‟ , [ @membername = ]


„security_account‟
Mengeluarkan member dari role
Contoh:
EXEC sp_droprolemember „Sales‟, „Jonb‟
95 | P a g e

6.2. 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:

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:

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

Contoh:
96 | P a g e

6.3. Exercise
1. Berilah hak akses kepada publik (select,insert,update,delete, dll) terhadap tabel
MsCustomer
(grant all)

2. Berilah hak akses kepada salah satu teman anda untuk melakukan update terhadap
tabel MsStaff dan teman anda dapat memberikan hak akses pada tabel MsStaff juga
kepada user lainnya.
(grant)

3. Berilah hak akses kepada salah satu teman anda untuk melakukan insert dan update
terhadap tabel MsMenu.
(grant)

4. Cabutlah hak akses untuk insert dan updatepada tabel MsMenu kepunyaan teman
Anda yang telah Anda berikan pada soal nomor 3.
(revoke)

5. Cabutlah semua hak akses tabel MsCustomer kepada publik yang telah anda berikan
pada soal nomor 1.
(revoke)
97 | P a g e

Chapter 07
Advanced Query

Objectives
1. Trigger
2. Cursor
3. Store Procedure
4. Indexing

Learning Outcomes
1. Apply database language and SQL Programming language
98 | P a g e

TRIGGER
a. Pengenalan Trigger
Trigger adalah blok program Transact-SQL yang diasosiasikan dengan Tabel dan
disimpan dalam Database. Seperti dalam bahasa, Trigger berarti pemicu. Pemicu yang
dimaksudkan disini adalah pada saat kita mengeksekusi SQL statement, maka akan
muncul event. Database statement yaitu Insert, Update dan Delete. Jadi Trigger
merupakan suatu aksi (Transact-SQL) yang dilakukan terhadap statement yang berlaku
pada sebuah tabel dimana trigger berada. Beberapa manfaat Trigger antara lain:
1. Meluruskan aturan-aturan yang harus berlaku.
2. Menjaga nilai sebelum dimasukkan ke dalam database.
3. Keamanan system.
4. Membuat historical record(riwayat perubahan).
5. Dan lain-lain

b. Create Trigger
Sintaks pembuatan Trigger:
99 | P a g e

Contoh Sederhana:
sebuah Trigger diberikan pada Table Pegawai

Jika anda memasukkan data:

Maka hasil dari query tersebut setelah insert diberikan trigger adalah:

Trigger yang bernama triggerPegawai dibuat dan setiap kali sesudah record baru diisi ke
tabel, maka program trigger akan aktif.
Di dalam Trigger secara implisit dapat diakses "koleksi" record pada kasus "insert"
dimasukkan ke dalam tabel virtual yang bernama "inserted" dan untuk record yang
dihapus dimasukkan ke dalam tabel virtual "deleted".
Untuk "Update" terdapat 2 buah tabel virtual yaitu record yang lama masuk ke dalam
tabel "deleted" sedangkan record yang baru masuk ke tabel virtual "inserted".
Pada saat kita melakukan insert, maka record akan masuk kedalam tabel “inserted”, pada
saat melakukan delete, maka record akan masuk kedalam tabel “deleted”. Lalu apakah
yang akan terjadi pada saat kita melakukan update? Apabila kita melakukan update, kita
100 | P a g e

menghapus data lama dan menggantinya dengan data yang baru, maka tabel virtual yang
digunakan yaitu tabel “inserted” dan “deleted”.

c. Drop Trigger
Sintaks ini digunakan untuk menghapus Trigger yang sudah dibuat.
Sintaks penghapusan Trigger:

Contoh Sederhana:

d. Exception Handling
Exception Handling adalah suatu mekanisme penanganan error yang mungkin terjadi
dalam suatu query. Sintaks TRY akan dikerjakan terlebih dahulu, jika tidak ditemukan
error maka sintaks CATCH tidak akan dijalankan, dan sebaliknya jika error ditemukan
saat menjalankan query, maka sintaks CATCH akan dikerjakan untuk menanggulangi
error tersebut.
Sintaks Penggunaan Exception Handling:
101 | P a g e

Contoh Sederhana:

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

CURSOR
a. Pengenalan Cursor
Cursor adalah object database yang di gunakan oleh aplikasi untuk memanipulasi data
dalam set per baris, berbeda dengan sql commands biasa yang mengoperasikan semua ke
dalam semua baris dalam suatu kurun waktu. Berikut format Cursor yang umum:
102 | P a g e

Contoh:
 Membuat tabel MsKaryawan terlebih dahulu

 Insert data ke tabel MsKaryawan

 Anda diminta untuk membuat sebuah cursor yang dapat menampilkan seluruh data
karyawan:

Nb:
103 | P a g e

Hasil:

b. Type of Cursors
Ada 4 Jenis Kursor:
1. Forward Only:Kursor hanya dapat bergerak maju sepanjang recordset
2. Static:memberikan copy recordset yang disimpan dalam tempdb yang untuk mencari
data atau membuat report
3. Dinamic:memberikan akses untuk bisa melihat penambahan, perubahan dan
penghapusan data oleh user yang lain.
4. Keyset:seperti dinamic tetapi tidak dapat melihat penambahan oleh user lain. Dan
juga akan menolak akses terhadap record yang user lain hapus. Perubahan data masih
dapat dilihat.

Beberapa Istilah pada Cursor


a. Next - Mengembalikan baris setelah baris terakhir diambil.
b. Prior - Mengembalikan baris sebelum baris terakhir diambil.
c. First - 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.
104 | P a g e

f. Relative
Mengembalikan baris ke-n dari baris terakhir diambil. Jika n adalah positif, maka
baris ke-n setelah baris terakhir diambil akan diambil. Jika n adalah negatif, maka
baris ke-n sebelum baris terkahir diambil akan diambil.Jika n adalah 0, maka baris
yang sama yang akan diambil.

STORE PROCEDURE
a. Pengenalan transact SQL Code (Pengenalan Transact SQL)
Transact-SQL merupakan bahasa pemograman yang dikembangkan dari SQL.Seperti
diketahui bahwa SQL adalah bahasa non procedural yang artinya alur program tidak
seperti bahasa pemograman biasa, melainkan melalui “request” dan “response” yaitu
query dan jawabannya berupa hasil atau resultsed.
Transact-SQL mengembangkan kemampuan SQL, sehingga Transact-SQL dapat
melengkapi SQL dengan instruksi logic(procedural logic), yaitu program aplikasi.
Hasil proses SQL-Server (Resultset) dapat diolah lebih lanjut dengan menggunakan logic
pemograman procedural seperti Fungsi, Prosedur, Loop, Case, If Then Else dan lainnya.

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:
105 | P a g e

Variable dapat digunakan untuk mengambil nilai dari sebuah query:

Hasil:
Judul dvd yaitu Spiderman2 (dari kolom)

PRINT adalah fungsi yang menampilkan teks dan variable pada console (layar).

 IF
If digunakan dalam mengendalikan alur program berdasarkan kondisi.
Sintaks:
106 | P a g e

Contoh:

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

Sintaks:

Contoh:

Fungsi str() di atas diperlukan untuk mengkonversi bilangan integer menjadi string
(teks).
107 | P a g e

 CASE
CASE menyederhanakan IF yang berlapis dengan tujuan agar program dapat
dimengerti/dibaca lebih mudah.

Sintaks:

Contoh:

Hasil:
108 | P a g e

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

Contoh:

Menjalankan prosedur tersebut dengan EXEC atau langsung dengan nama prosedur saja.
Untuk mengkoreksi sebuah prosedur, maka kunci kata ALTER harus digunakan. Untuk
menghapus prosedur gunakan DROP.
109 | P a g e

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

Pada saat eksekusi parameter diberikan sebagai berikut:

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_RENAMEcommand, 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
110 | P a g e

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'
Maka hasil outputnya akan menghasilkan sebagai berikut:
111 | P a g e

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

Contoh:

Maka hasil outputnya akan sebagai berikut:

Kita dapat melihat bahwa nama stored procedure yang tertera pada gambar diatas, nama
stored procedurenya tidak mengalami perubahan. Tetapi jika kita ingin mengakses stored
procedure yang ada dalam result tersebut, akan mengalami error
112 | P a g e

Kesimpulan
Ini terjadi dikarenakan ketika stored procedure tersebut diubah namanya, sys.prodecures
nya dalam system table tidak di – update. Solusinya adalah menghapus stroed procedure
yang ada dan membuat kembali yang baru dengan nama yang diinginkan.

d. Error Handling
Untuk membuat suatu error handling, diperlukan sintaks yang namanya @@ERROR.
@@ERROR ini berfungsi sebagai bentuk dari suatu implementasi error handling.
@@ERROR terdiri dari error ID yang dihasilkan dari akhir dari sebuah statement SQL.
Ketika suatu statement di execute, maka @@ERROR adalah 0. Untuk mendeteksi
apakah suatu statement error atau tidaknya berdasarkan dari statement IF yang digunakan
untuk mengecek nilai dari suatu fungsi setelah target telah dieksekusi.

Contoh:

Jika terjadi error dalam error handling tersebut, maka akan muncul tampilan sebagai
berikut:
113 | P a g e

INDEXING
a. Beberapa tipe index:
 Clustered index
Clustered index merupakan sebuah indeks yang mengurutkan data pada tabel dan
dapat diumpamakan seperi indeks huruf dalam kamus. Karena data dalam tabel hanya
dapat disimpan dalam satu urutan maka satu tabel hanya dapat memiliki satu
clustered index. Clustered index diimplementasikan sebagai struktur B-tree yang
mendukung pencarian dan pengambilan data yang cepat.
 Nonclustered index
Nonclustered index tidak mengurutkan data secara fisikal dan dapat diumpamakan
seperti daftar indeks pada buku. Sebuah tabel dapat memiliki banyak nonclustered
index dan nonclustered index berisi pointer-pointer yang menunjukkan lokasi
sesungguhnya dari data yang dicari saat melakukan pencarian data. Cara ini sedikit
lebih membutuhkan waktu pencarian dibanding dengan metode clustered index.
 Unique index
Unique index memastikan bahwa kunci indeks tidak ada yang mengandung nilai-nilai
duplikat.

b. Membuat index
1. Pada ObjectExplorer, klik kanan pada tabel yang ingin diberikan index kemudian klik
Design.
114 | P a g e

2. Kemudian akan muncul TableDesigner.


115 | P a g e

3. Dari menu Table Designer, klik Indexes / Keys

4. Pada dialogbox Indexes/ Keys, klik Add. List SelectedPrimary / UniqueKeyorIndex


menampilkan index baru.
116 | P a g e

5. Pilih index baru pada list SelectedPrimary / UniqueKeyorIndex dan atur


propertiesindex pada grid disebelah kanan. Kemudian klik Close.

c. Membuat UniqueIndex
1. Pada Object Explorer, klik kanan pada tabel yang ingin diberikan index kemudian
klik Desain.
2. Kemudian akan muncul Table Designer.
3. Dari menu Table Designer, klik Indexes / Keys
4. Pada dialogbox Indexes / Keys, klik Add. List Selected Primary / Unique Key or
Index menampilkan index baru.
5. Pada grid klik Type. Pilih Index dari drop-down list disebelah kanan properti.

6. Pada ColumnName, pilih kolom yang ingin diberikan index. Index dapat dipilih
sampai 16 kolom. Untuk perfomance yang optimal, pilih hanya 1 atau 2 kolom per
index. Index dapat diatur secara ascending atau descending.
117 | P a g e

7. Kembali ke grid, pilih isUnique. Pilih Yes.

8. Pilih pilihan Ignore duplicate keysjika ingin mengabaikan data yang baru atau
diupdate yang akan membuat sebuah duplicate keys pada index (dengan statement
INSERT atau UPDATE).
118 | P a g e

9. Index baru akan disimpan didatabase ketika menyimpan tabel.

d. Membuat ClusteredIndex
1. Pada Object Explorer, klik kanan pada tabel yang ingin diberikan index kemudian
klik Desain.
2. Kemudian akan muncul Table Designer.
3. Dari menu Table Designer, klik Indexes / Keys.
4. Pada dialog box Indexes / Keys, klik Add.
5. Pilih index baru yang ada di list Selected Primary / Unique Key or Index.
6. Pada grid, pilih Create as Clustered, dan pilih Yes dari drop-down list pada
properties disebelah kanan.
119 | P a g e

7. Index baru akan disimpan didatabase ketika menyimpan tabel.

e. Mengubah propertiesindex
1. Pada Object Explorer, klik kanan pada tabel yang memiliki index yang ingin diubah
propertiesnya.
2. Dari menu Table Designer, klik Indexes / Keys.
3. Pilih index pada list Selected Primary / Unique Key or Index.
4. Ubah properties index pada grid.
5. Perubahan akan disimpan ketika tabel disimpan.

f. Menghapus index
1. Pada Object Explorer, klik kanan pada tabel yang ingin diberikan index kemudian
klik Desain.
2. Dari menu Table Designer, klik Indexes / Keys.
3. Pada list Selected Primary / Unique Key or Index, klik index yang ingin dihapus.
4. Klik Delete.
5. Index akan dihapus dari database ketika tabel disimpan.
120 | P a g e

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.
121 | P a g e

Membuat index dengan Transact-SQL

Contoh:
122 | P a g e

Menghapus index dengan Transact-SQL

Contoh:
123 | P a g e

Chapter 08
Database Design

Objectives
1. Database Concept
2. Multiplicity
3. Data Relational
4. Normalization

Learning Outcomes
1. Apply database language and SQL Programming language
2. Design database using structure data model
124 | P a g e

8.1. Database Concept


 Conceptual model:Merupakan pengumpulan / integrasi seluruh kebutuhan atribut dari
para user / aplikasi menjadi satu pandangan organisasi
 Logical model:Dari model conceptual yang terbentuk dapat dipilih salah satu model
data dasar logikal : hirarki, network atau relational. Kemudian dibagikan kepada para
user yang berwenang
 Physical model:Bagaimana secara fisik data tersimpan pada penyimpanan sekunder,
yang perlu dipertimbangkan mengenai metode akses (menyimpan / stored dan
mengambil / retrieval) dan teknik pengindeksan untuk retrieval (pencarian lebih
cepat).

8.2. Multiplicity
Bertujuan untuk mengidentifikasi entity dan hubungan (relationship ) pada model data
Ada 3 macam hubungan :
1. One To One : Terjadi bila tiap anggota entity A hanya boleh berpasangan dengan
satu anggota

2. One To Many : Terjadi bila tiap anggota entity A boleh berpasangan dengan lebih
dari satu anggota B tetapi tidak berlaku sebaliknya
125 | P a g e

3. Many To Many : Terjadi bila tiap anggota A boleh berpasangan dengan lebih dari
satu anggota B dan berlaku untuk sebaliknya

mhs.stiki.ac.id/boysagi/Software/bdl/bukudb11.doc

8.3. Data Relational


Relasi adalah hubungan sebuah tabel yang terdiri dari beberapa kolom dan beberapa
baris.
A. Berikut adalah isu-isu yang terdapat dalam pembahasan Data relationship:
1. Atribut adalah Kolom pada sebuah relasi
2. Tupel adalah Baris pada sebuah relasi

3. Domain adalah Kumpulan nilai yang valid untuk satu atau lebih atribut
4. Derajat (degree) adalah Jumlah atribut dalam sebuah relasi
5. Cardinality adalah Jumlah tupel dalam sebuah relasi
126 | P a g e

B. Dalam Data Relasional terdapat pula Relational Key , yang terdiri dari :
1. Super key yakni, Satu atribut/kumpulan atribut yang secara unik mengidentifikasi
sebuah tupel di dalam relasi

2. Candidate key yakni, Atribut di dalam relasi yang biasanya mempunyai nilai unik
dan merupakan Field-field yang bisa dipilih (dipakai) menjadi primary key.

3. Primary key yakni, Candidate key yang dipilih untuk mengidentifikasikan tupel
secara unik dalam relasi dan merupakan Field yang mengidentifikasikan sebuah
record dalam file, bersifat unik.

4. Alternate key yakni, Candidate key yang tidak dipilih sebagai primary key.
127 | P a g e

5. Foreign key yakni, Atribut dengan domain yang sama yang menjadi kunci utama
pada sebuah relasi tetapi pada relasi lain atribut tersebut hanya sebagai atribut biasa.
Foreign Key ini adalah Field yang bukan key, tetapi adalah key pada file yang lain.

8.4. Normalization
Untuk merancang database yang baik, biasa dilakukan normalisasi. Normalisasi
merupakan sebuah teknik untuk menghasilkan set relasi dengan property yang desirable
dan memberikan data sesuai dengan kebutuhan enterprise.

Tujuan normalisasi yaitu:


 mengidentifikasi hubungan antar atribut
 mengkombinasikan atribut untuk membentuk relasi
 mengkombinasikan relasi untuk membentuk database
 menghindari anomaly

Proses normalisasi:
1. UNF
Dalam proses normalisasi UNF kita menampilkan semua field atau atribut yang ada
dalam suatu form yang ingin kita normalisasi.
2. 1NF
Sebuah relasi berada dalam 1NF jika relasi tersebut tidak berisi atribut yang berulang
(repeating group), field hasil perhitungan dihilangkan dan sudah mempunyai primary
key.
128 | P a g e

3. 2NF
Sebuah relasi berada dalam 2NF jika relasi tersebut dalam 1NF dan untuk setiap
atribut non key bergantung fungsional penuh kepada primary key. Jadi pada 2NF kita
akan menghilangkan ketergantungan sebagian / partial : ketergantungan field-field
tertentu hanya kepada salah satu key yang composit.
Contoh :
Tabel Mahasiswa ( Nim, Nama, Alamat )

Nama & alamat tergantung pada Nim dalam arti dengan Nim kita dapat menentukan
nama maupun alamat sebaliknya nama / alamat tidak menentukan nim, maka
diartikan bahwa nama & alamat tergantung secara partial kepada nim.
4. 3NF
Sebuah relasi berada dalam 3NF bila relasi tersebut dalam 1NF dan 2NF dan tidak
ada atribut non key yang tergantung fungsional kepada atribut non key yang lainnya (
transitive dependency ).
Contoh :
Tabel Pegawai ( NoPegawai, honor, KdProyek, Tanggal )
KdProyek & Tanggal adalah atribut non key. Tapi tanggal bergantung pada
KdProyek. Pemecahannya dengan membagi menjadi 2 relasi :
Proyek ( KdProyek, Tanggal )
PegProyek ( Nopegawai, honor, KdProyek )
5. BCNF ( Bentuk Normal Boyce-Codd, 1974 )
Relational R dikatakan dalam BCNF jika dan hanya jika setiap determinan adalah
suatu candidate key sehingga saling overlap. Tujuan BCNF adalah memisahkan
determinan yang bukan merupakan candidate key pada satu relasi tertentu.
Kodisinya :
A, B -> C, D
A, C -> B, D
B, C -> A, D
129 | P a g e

Contoh:
Tabel interview ( NoClient, tanggalInterview, waktuInterview, NoStaff, NoRuang )
Dipisahkan menjadi :
Tabel Interview ( NoClient, tanggalInterview, waktuInterview, NoStaff )
Tabel RuangStaff ( NoStaff, tanggalInterview, NoRuang )

Berikut adalah latihan membuat Normalisasi:

Sales Order
UNF
Sales Order (No. SO, Payment Type, Customer ID, Customer Name, Customer
Contact, Customer Address, {No, Lego ID, Lego Name, Category, Sale Price,
Quantity, Sub Total}, Grand Total, SO Date, Employee Name, Position)
130 | P a g e

1NF
Sales Order (No. SO, Customer ID, Payment Type, Customer Name, Customer
Contact, Customer Address, SO Date, Employee Name, Position)
Detail SO (No. SO, Lego ID, Lego Name, Category, Sale Price, Quantity)

2NF
Sales Order (No. SO, Customer ID, Payment Type, Customer Name, Customer
Contact, Customer Address, SO Date, Employee Name, Position)
Detail SO (No. SO, Lego ID, Quantity)
Lego (Lego ID, Lego Name, Category, Sale Price)

3NF
Customer (Customer ID, Customer Name, Customer Contact, Customer Address)
Customer Category(Customer ID, Category)
Position (Position ID, Position)
Employee (Employee ID, Position ID, Employee Name, Employee Contact,
Employee Address, Employee Salary)
Payment Type (Payment Type ID, Payment Type)
Sales Order (No. SO, Payment Type ID, Customer ID, Employee ID, SO Date)
Detail SO (No. SO, Lego ID, Quantity)
Category (Category ID, Category)
Lego (Lego ID, Category ID, Lego Name, Sale Price, Stock)
131 | P a g e

Purchase Order
UNF
Purchase Order (No. PO, Supplier ID, Supplier Name, Supplier Contact, Supplier
Address, {No,Lego ID,Lego Name, Category, Purchase Price, Quantity, Sub Total},
Grand Total, PO Date, Employee Name, Position)

1NF
Purchase Order (No. PO, Supplier ID, Supplier Name, Supplier Contact, Supplier
Address, PO Date, Employee Name, Position)
Detail PO (No. PO, Lego ID, Lego Name, Category, Purchase Price, Quantity)
132 | P a g e

2NF
Purchase Order (No. PO, Supplier ID, Supplier Name, Supplier Contact, Supplier
Address, PO Date, Employee Name, Quantity)
Detail PO (No. PO, Lego ID, Quantity)
Lego (Lego ID, Lego Name, Category, Purchase Price)

3NF
Supplier (Supplier ID, Supplier Name, Supplier Contact, Supplier Address)
Position (Position ID, Position)
Employee(Employee ID, Position ID, Employee Name, Employee Contact, Employee
Address, Employee Salary)
Purchase Order (No. PO, Supplier ID, Employee ID, PO Date)
Detail PO (No. PO, Lego ID, Quantity)
Category (Category ID, Category)
Lego (Lego ID, Category, Lego Name, Purchase Price, Stock)
133 | P a g e

Registration
UNF
Registration (No.Registration, Member ID, Member Name, Member Contact,
Member Address, Member Email, Member Type, Registration Price, Registration
Date, Employee Name, Position)

1NF
Registration (No.Registration, Member ID, Member Name, Member Contact,
Member Address, Member Email, Payment Type, Registration Price, Registration
Date, Employee Name, Position)
134 | P a g e

2NF
Registration (No.Registration, Member ID, Member Name, Member Contact,
Member Address, Member Email, Payment Type, Registration Price, Registration
Date, Employee Name, Position)

3NF
Member Category(Member Type ID, Member Type, Diskon)
Member (Member ID, Member Type ID, Member Name, Member Contact, Member
Address, Member Email)
Position(Position ID, Position)
Employee(Employee ID, Position ID, Employee Name, Employee Contact, Employee
Address, Employee Salary)
Registration(No.Registration, Member ID, Employee ID, Registration Date)
135 | P a g e

Berikut adalah contoh design Form:

Вам также может понравиться