Anda di halaman 1dari 51

Pah=2iaw‹am Nio› .

â› 9 —1 a:a
r
DAFTAR ISI

DAFTAR ISI..................................................................................................... i
BAB I PENGENALAN BASIS DATA ................................................................ 1
1 Arsitektur Client/Server ................................................................................. 1
2 Fitur Ms.SQL Server ..................................................................................... 1
3 Structured Query Language.......................................................................... 2
4 Tipe Data SQL Server................................................................................... 4
5 Fungsi-fungsi Dalam SQL Server ................................................................. 5
6 Operator dalam SQL Server ......................................................................... 7
7 Ekspresi CASE ............................................................................................. 10
BAB II QUERY DDL DAN DML 11
........................................................................
1 DDL (Data Definition Language) 11
...................................................................
2 DML (Data Manipulation Language) ............................................................. 18
BAB III INDEX & VIEW .................................................................................... 26
1 Index............................................................................................................. 20
2 View.............................................................................................................. 22
BAB IV TRANSACT SQL................................................................................. 30
1 Transact SQL ............................................................................................... 30
BAB V STORED PROCEDURE....................................................................... 33
1 Create Stored Procedure .............................................................................. 33
2 Alter Stored Procedure ................................................................................. 34
3 Execute Stored Procedure 34
............................................................................
4 Stored Procedure dengan Parameter Output................................................ 35
BAB VI TRIGGER ............................................................................................ 36
1 Create Trigger............................................................................................... 36
2 Alter Trigger .................................................................................................. 36
3 Drop Trigger ................................................................................................. 36
4 Triger Event .................................................................................................. 36
5 Alias in Trigger.............................................................................................. 37
BAB VII USER DEFINED FUNCTION (UDF) 43
...................................................
1 Function Return Scalar ................................................................................. 43
2 Function Return Inline Table Value 45
...............................................................
DAFTAR PUSTAKA......................................................................................... 46
i
BAB I
PENGENALAN BAHASA SQL

1. Arsitektur Client/Server
Microsoft SQL server merupakan database relational yang dirancang
untuk mendukung aplikasi dengan arsitektur client/server, dimana database
terdapat pada computer pusat uang disebut server, dan informasi digunakan
bersama- sama oleh beberapa user yang menjalankan aplikasi didalam
computer localnya yang disebut client.
Arsitektur client/server sangat mengurangi lalu lintas network karena ia
hanya memberikan data sesuai dengan permintaan user. Hal ini membantu
tugas- tugas pemeliharaan, misalnya membackup dan merestorasi data dapat
dilakukan lebih mudah karena data diletakan pada satu tempat.

2. Fitur MS SQL Server


 Relational Database Engine : komponen utama atau jantung SQL Server
2005.
 Analysis Services : Basis dari solusi intelijen bisnis yang ampuh
(powerful), dan mendukung aplikasi-aplikasi OLAP (online analytical
processing), serta data minning.
 Data Transformation Service (DTS): sebuah mesin untuk membuat
solusi ekspor dan impor data, serta untuk mentransformasi data ketika
data tersebut ditransfer.
 Notification Services: sebuah framework untuk solusi dimana pelanggan
akan dikirimi notifikasi ketika sebuah event muncul.
 Reporting Services: service yang akan mengambil data dari SQL Server,
dan menghasilkan laporan-laporan.
 Service broker: sebuah mekanisme antrian yang akan menangani
komunikasi berbasis pesan diantara service.
 Native HTTP Support: dukungan yang memungkinkan SQL server 2005
yang (jika diinstall pada Windows Server 2003) akan merespon request
terhadap HTTP endpoint, sehingga memungkinkan pembangunan
sebuah web service untuk SQL Server tanpa menggunakan IIS.

Database Client Server (SQL) 1


Lanjut
 SQL server Agent : akan mengotomatiskan perawatan database dan
mengatur task, event dan alert.
 .NET CLR (Common Language Runtime): akan memungkinkan
pembuatan solusi menggunakan managed code yang ditulis dalam salah
satu bahasa .NET.
 Replication: serangkaian teknologi untuk menjalin dan mendistribusikan
data dan obyek database dari sebuah database ke database lain, dan
melakukan sinkronisasi untuk menjaga konsistensinya.
 Full-Text Search: memungkinkan pengindeksan yang cepat dan flexibel
untuk query berbasis kata kunci (terhadap data teks yang disimpan
dalam database).

3. Structured Query Language


Dalam basis data salah satu bahasa yang harus dikuasai adalah SQL
(Structured Query Language). SQL merupakan bahasa computer standar yang
ditetapkan oleh ANSI (American National Standard Institute) yang digunakan
untuk berkomunikasi dengan system manajemen basis data relational
(RDBMS). SQL pertama kali dikembangkan oleh IBM dalam SEQUEL-XRM dan
system-R project (1974-1977) dimana SEQUEL merupakan kepanjangan dari
Structured English Query Language yang pada akhirnya diganti menjadi hanya
Structured Query Language.
Publikasi standar SQL pertama pada tahun 1989 yang dikenal dengan
SQL-89 atau SQL-1 kemudian pada tahun 1992 dirilis SQL-92 atau SQL-2 dan

Database Client Server (SQL) 2


Lanjut
pada tahun 1999 dirilis SQL-99 atau SQL-3. Standar terbaru dari SQL adalah
SQL 2003. Setiap DBMS memiliki perbedaan dalam menerapkan standar SQL
sehingga setiap DBMS memiliki ciri tersendiri yang berbeda dengan yang lain.
4. Tipe Data SQL Server
Secara garis besar ada beberapa jenis tipe data pada SQL Server, yaitu :
 Tipe data numeric
 Tipe data karakter
 Tipe data temporal (date, time dan datetime).

a. Tipe Data Numerik


Tipe
Data Keterangan
Tipe data INT ini mungkin sudah banyak dikenal oleh Anda. Tipe data ini
Int dapat menerima nilai mulai dari -231 hingga 231-1. Tipe data ini
menghabiskan 4 bytes untuk menyimpan data pada harddisk.
Tipe data BIT hanya bisa menerima input angka 1 dan 0 sebagai nilai
Bit (atau bisa juga null, yang berarti tidak ada nilai). Tipe data ini sangat
membantu
jika Anda ingin menghasilkan output yes/no, true/false, dsb.
Tipe data SMALLINT ini juga mirip dengan tipe data INT, hanya saja nilai
yang diterima lebih kecil dari tipe data INT. Tipe data ini dapat menerima
nilai mulai dari -215 hingga 215-1. SMALLINT Sama seperti INT ,
Smallint membutuhkan 50% memory yang digunakan INT. INT berfungsi untuk
mendefinisikan integer, bilangan bulat yang dapat menampung angka
hingga 4byte. Sedangkan SMALLINT hanya mampu mendefinisikan
angka sebanyak 2byte.
Tipe data BIGINT ini mirip dengan tipe data INT, hanya saja nilai yang
diterima lebih besar dari pada tipe data INT. Tipe data ini dapat
Bigint
menerima nilai mulai dari -263 hingga 263-1. Tipe data ini
menghabiskan 8 bytes
untuk menyimpan data pada harddisk.

Database Client Server (SQL) 3


Lanjut
Tipe data DECIMAL ini menerima nilai yang lebih presisi dibanding tipe
data integer yang telah dibahas sebelumnya. Tipe data ini menggunakan
2 parameter untuk menentukan tingkat presisi nilai yang diterima;
precision dan scale. Precision adalah jumlah digit yang bisa diterima
Decimal oleh field, sedangkan scale adalah jumlah angka di belakang koma yang
(p[,[s]]) bisa diterima oleh field. Jadi, jika kita membuat parameter precision
sebanyak 5 dan scale sebanyak 2 maka field kita bisa menerima nilai
seperti ini : 123,45. Tipe data ini bisa menerima nilai mulai dari -
1038hingga 1038-1. Tipe data ini menghabiskan 5-17 bytes untuk
menyimpan data pada
harddisk, tergantung pada tingkat kepresisian nilai yang dimasukkan.
Tipe data NUMERIC ini pada dasarnya sama dengan tipe data
DECIMAL. Jadi tipe data ini bisa disebut sinonim dari decimal.
Numeric
Fungsinya adalah untuk mendefinisikan angka pecahan baik fixed
(p[,[s]])
desimal ataupun floating point. Nilai n adalah jumlah bytes total dan p
adalah presisi angka
dibelakang koma.
Tipe data DATETIME ini dapat menerima nilai tanggal dan waktu.
Berfungsi untuk mendefinisikan tanggal, menyimpan tahun, bulan, hari,
Datetime jam, menit, detik dan seperseribu detik (milliseconds). Tipe data
DATETIME ini menghabiskan 8 bytes untuk menyimpan data pada
harddisk.
Tipe data MONEY merupakan Bilangan pecahan dengan 4 angka
Money dibelakang koma. Digunakan untuk perhitungan moneter. Tipe data ini
menghabiskan 8 bytes untuk menyimpan data pada harddisk.
Tipe data FLOAT ini mirip dengan tipe data DECIMAL, hanya saja
paramater scale pada tipe data ini bisa menerima nilai yang tak
Float
terhingga, seperti pada nilai pi. Berfungsi untuk mendefinisikan angka
pecahan
(floating point). Nilai n adalah jumlah angka yang dapat ditampung.
Tipe data REAL ini mirip dengan tipe data FLOAT, hanya saja lebih kecil
dibandingkan menerima nilai yang dengan FLOAT. sama dengan float
Real namun menempati memory 50% dari float. Dan penyimpanan tipe data
REAL pun hanya menggunakan 4 bytes untuk menyimpan data pada
harddisk.
Tipe data BINARY ini dapat menerima data BINARY dengan maksimum
Binary 8000 bytes data. Tipe data ini diinterpretasikan sebagai string dari bit.
dan berfungsi untuk menyimpan bit pattern seperti heksadecimal.

Database Client Server (SQL) 4


Lanjut
b. Tipe Data Karakter
Tipe
Data Keterangan
Tipe data CHAR berfungsi untuk Mendefinisikan string sepanjang dan
mempunyai karakter. Tipe data CHAR ini dapat digunakan untuk
memasukkan data karakter non-Unicode dengan jumlah karakter yang
Char
fix. Tipe data CHAR ini bisa menerima hingga 8000 karakter, dan jumlah
[(n)]
bytes yang dibutuhkan tergantung jumlah karakter yang dimasukkan.
Apabila jumlah karakter yang dimasukan adalah 1 karakter maka
membutuhkan 1 byte.
Tipe data VARCHAR ini dapat Mendefinisikan string sepanjang variabel
n. Tipe data ini mirip dengan tipe data char, namun tipe data ini berguna
bagi Anda yang tidak mengetahui secara pasti jumlah karakter yang
akan dimasukkan oleh user. Tipe data ini juga bisa menerima nilai hingga
Varchar 8000 karakter. Jadi, jika pada tipe data char, Anda mendefinisikan
[(n)] char(5), maka Anda akan selalu membutuhkan 5 bytes untuk menyimpan
data pada harddisk, walaupun jumlah karakter yang dimasukkan hanya 1
hingga 4 karakter; maka pada tipe data ini, jumlah bytes yang dibutuhkan
akan lebih fleksibel. Tipe data FLOAT menghabiskan 4-8 bytes untuk
menyimpan data pada harddisk.
Tipe data TEXT dapat Menyimpan teks sampai dengan 2 GB. Text
Text
disebut juga dengan binary large objects (BLOBs).
Tipe data IMAGE berfungsi untuk Mendefinisikan binary data untuk
Image
menyimpan image seperti GIF, JPG, TIFF,dll.

Tipe Data Temporal


Tipe
Data Keterangan
Date Define tanggal, default literal format YYYY-MM-DD
DateTime Define kombinasi tanggal dan waktu dengan base 24 jam

5. Fungsi-Fungsi Dalam SQL Server


Fungsi –fungsi dala SQL server dapat deklompokkan dalam dua
kelompok besar yaitu fungsi aggregate dan fungsi scalar. Bagian setelah ini
akan mendefinisikan fungsi-fungsi tersebut.

Database Client Server (SQL) 5


Lanjut
a. Fungsi Aggregate
Fungsi Keterangan
AVG() Returns the average value
COUNT() Returns the number of rows
FIRST() Returns the first value
LAST() Returns the last value
MAX() Returns the largest value
MIN() Returns the smallest value
SUM() Returns the sum

b. Fungsi Skalar
SQL Server menyediakan beberapa fungsi scalar yang digunakan dalam
pembuatan ekspresi scalar. Fungsi scalar bekerja pada satu nilai saja. Berikut
ini adalah kelompok fungsi-fungsi scalar :
1) Fungsi String
SQL Server menyediakan fungsi-fungsi String yang dapat
digunakan sebagai bagian dari ekspresi karakter manapun. Fungsi ini
digunakan untuk bermacam macam operasi string. Antara lain :
Fungsi Keterangan Sintaks
CHAR (expresi
CHAR Mengembalikan karakter dari nilai kode ascii Integer)
Fungsi ini digunakan untuk menentukan
posisi awal dari suatu karakter string CHARINDEX
CHARINDEX (String1) (String1,string2)
di dalam string lain (String 2).
Fungsi ini digunakan menampilkan sejumlah
tertentu karakter dihitung dari sebelah kiri LEFT(String,Jumlah
LEFT suatu karakter string. Karakter)
LEN Menghitung panjang karakter string LEN ( String )
Fungsi ini digunakan untuk mengubah huruf
LOWER besar menjadi kecil. LOWER (String)
Fungsi ini digunakan untuk menghilangkan
LTRIM karakter blank disebelah kiri string. LTRIM (String)
Fungsi ini digunakan untuk mengambil RIGHT(String,Jumlah
RIGHT sejumlah karakter mulai dari sebelah kanan. Karakter)

Database Client Server (SQL) 6


Lanjut
Fungsi ini digunakan untuk menghilangkan
setiap karakter kosong dari ujung kanan
RTRIM suatu string.

2) Fungsi Tanggal
Fungsi-fungsi tanggal berikut ini memiliki kegunaan untuk
mendapatkan nilai-nilai seputar data tanggal misalnya nama hari,
tanggal saat ini, nama bulan dan sebagainya. Berikut ini adala fungsi-
fungsi tanggal yang ada di SQL Server.
Fungsi Keterangan Sintaks
Fungsi untuk mendapatkan data tanggal
saat ini beserta waktunya hingga kecepatan
GETDATE() 100 milidetik SELECT GETDATE
FUNgsi ini digunakan untuk mendapatkan SELECT
nilai tertentu (item) dari data tanggal yang DATEPART(item,tan
DATEPART() disertakan. ggal)
SELECT
Fungsi ini digunakan untuk mendapatkan DATENAME(item,tan
DATENAME() nama hari dari tanggal tertentu ggal)
Fungsi ini digunakan untuk mendapatkan SELECT
beberapa "jarak" antara dua tanggal, DATEDIFF(item,tang
DATEDIFF() hasilnya berupa integer. gal1,tanggal2)
Fungsi ini menambahkan tanggal tertentu
dengan item tertentu (misalkan ditambah SELECT
bulan/month atau hari/day), dengan DATEADD(item,num
DATEADD() sejumlah bilangan tertentu. ber,tanggal)

6. Operator dalam SQL Server


SQL server mendukung hampir semua operator yang digunakan oleh
sebagian besar bahasa pemrograman. Tipe-tipe operator yang didukung oleh
SQL server adalah sebagai berikut:
a. Operator Aritmatika
Operator Keterangan
* Perkalian
/ Pembagian

Database Client Server (SQL) 7


Lanjut
% Modulus
- Pengurangan
+ Penjumlahan
Beberapa aturan mengenai penggunaan operator aritmatika adalah:
 Operasi aritmatika dapat dilakukan pada kolom numerik atau konstanta
numerik
 Modulus (%) operator tidak dapat digunakan pada kolom money,
smallmoney, float, atau tipe data real
Prioritas urutan dari operator aritmatika dalam sebuah ekspresi adalah
perkalian (*), pembagian (/), modulo (%) diikuti oleh pengurangan (-) dan
penambahan (+). Prioritas urutan dari operator dapat diubah dengan
menggunakan obyek pengelompokan utama disebut kurung (())
b. Operator Perbandingan
Operator perbandingan memungkinkan pengambilan baris dari tabel
berdasarkan kondisi yang ditentukan dalam klausa WHERE
Syntax:
SELECT column_list FROM table_name WHERE expression1
comparison_operator expression2
Operator Keterangan
|| Penggabungan
= Sama dengan
<> Tidak sama dengan
> Lebih besar dari
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan
!< Tidak kurang dari
!> Tidak lebih dari
!= Tidak sama dengan

c. Operator Logika
Operator logika digunakan untuk mengambil data yang dapat diekstraksi
dalam kisaran.
Syntax:

Database Client Server (SQL) 8


Lanjut
SELECT column_list FROM table_name
WHERE expression1 range_operator expression2 AND expression3

Operator Keterangan
NOT Negasi dari suatu nilai
AND Akan menghasilkan nilai true apabila dua nilai yang
dibandingkan bernilai true
OR Akan menghasilkan nilai salah apabila dua nilai yang
dibandingkan bernilai salah
BETWEEN Akan bernilai true apabila nilai yang dianalisa masih
berada dalam jangkauan
LIKE Akan bernilai true jika nilai yang dianalisa menemukan
nilai
standar
IN Akan berniai true apabila beberapa item yang ditemukan
bernilai true
SOME Akan menghasilkan nilai true apabila item apapun bernilai
true
ANY Akan menghasilkan nilai true apabila beberapa item
bernilai true
ALL Akan menghasilkan nilai true apabila semua nilai bernilai
benar

d. Operator List
Operator IN memungkinkan pemilihan nilai-nilai yang cocok dengan salah
satu dari nilai-nilai dalam daftar
Operator NOT IN membatasi pemilihan nilai-nilai yang cocok dengan
salah satu nilai dalam daftar
Syntax:

SELECT column_list FROM table_name


WHERE expression list_operator (‘value_list‘)

Database Client Server (SQL) 9


Lanjut
7. Ekspresi CASE
Perintah CASE pada SQL Server adala perintah yang fleksibel dan
sangat bagus dalam membangun ekspresi yang dinamis. Cara kerjanya mirip
dengan perintah if() pada bahasa pemograman lain. Ekpresi CASE
mengembalikan ekspresi juga, karena itu dapat dipergunakan di mana saja
pada statement Data Manipulation Language (DML) yaitu select, insert, update,
delete di mana sebuah ekspresi mungkin digunakan. Statement CASE ini
memiliki dua bentuk simple dan bentuk boolean.
a. Simple CASE
Pada statement CASE simple, data disebutkan dahulu dan kemudian
tiap nilai yang dipergunakan untuk melakukan tes disusun. Tetapi
statement CASE terbata pada perbandingan yang sama. Contoh
penggunaannya adalah sebagai berikut :

SELECT kd_plgn,
CASE kd_plgn WHEN ‘umum’ THEN ‘Pelanggan Umum’ WHEN ‘lk’ THEN ‘Luar Kota’
ELSE ‘tdk ada status’ END AS status_plgn FROM penjualan;

b. CASE Boolean
Bentuk CASE Boolean agak sedikit fleksibel dan mungkin sedikit
rumti. Pada setiap case individual terdapat ekspresi boolean. Contoh
SELECT
:
CASE WHEN 3*3 =9 THEN ‘tiga kali tiga = 9’ WHEN 1<2 THEN ‘1 lebih kecil dari 2’
WHEN 1<28>4 THEN ‘8 lebih besar dari 2’ END AS coba_case;

Database Client Server (SQL) 10


Lanjut
BAB II
QUERY DDL DAN DML
SQL Server memilii bahasa khusus untuk berkomunikasi dengan server .
Bahasa Query versi SQL Server disebut dengan T-SQL (Transact SQL). Pada
sesi ini kita akan mempelajari tentang dua kelompok bahasa yaitu, DDL (Data
Definition Language) dan DML (Data Manipulation Language).\

1. DDL (Data Definition Language)


Bagian dari SQL ini mendukung definisi data dan objek database seperti
pembuatan, penghapusan, dan modifikasi definisi table dan view. DDL juga
dapat digunakan untuk memberikan batasan akses ke suatu table atau view.
Beberapa perintah DDL yang dapat digunakan adalah sebagai berikut:
Perintah Keterangan
Create Database Untuk membuat database
Create Table Untuk membuat table
Create Index Untuk membuat index
Alter Table Untuk mengubah atau menyisipkan kolom ke dalam
table
Drop Table Untuk Menghapus table dari database
Drop Index Untuk menghapus index
Grant Memberikan izin akses kepada user

 Perintah create database:


Create Database
<nama_db>
 Perintah Create table:
Create table nama_table(column_name1 data_type(size), column_name1
data_type(size),….)
 Perintah alter table:
Alter table nama_table Add column_name type_data
 Perintah Drop table
Drop table nama_table

Database Client Server (SQL) 11


Lanjut
A. CONSTRAINTS
Constraints/batasan dalam database pada dasarnya adalah
pembatasan nilai-nilai yang diperbolehkan untuk diisikan dalam sebuah
kolom atau kolom-kolom yang terdapat dalam sebuah tabel. Dengan
menerapkan batasan-batasan dalam sebuah tabel maka dapat dipastikan
bahwa hanya data-data yang sesuai dengan batasan tersebut saja yang
dapat di sikan dalam tabel tersebut. Fungsi utama dari penerapan batasan-
batasan! constraint dalam sebuah tabel adalah untuk menjamin konsistensi
dan integritas data-data yang diisikan dalam sebuah tabel.
Constraint dapat di buat pada level tabel atau level kolom, kecuali
untuk constraint NOT NULL yang hanya dapat dibuat pada level kolom.

1. Primary Key
Primary Key atau Kunci Utama dalam sebuah tabel merupakan
kunci yang akan membatasi pengisian record dalam sebuah tabel agar
tidak duplikat (redundant). Syarat sebuah kolom! field dijadikan
PRIMARY KEY dalam sebuah tabel adalah unik dan tidak boleh kosong
(NOT NULL). Artinya bahwa nilai record-record dalam kolom yang
dijadikan PRIMARY KEY haruslah unik satu sama lain dan nilainya tidak
boleh di kosongkan. Jika sebuah kolom di beri constraint PRIMARY KEY
maka sudah pasti kolom tersebut nilainya tidak boleh kosong atau harus
berisi data.
Berikut adalah perintah dasar pembuatan constraint PRIMARY KEY:
Keterangan:
CONSTRAINT pk_(nama-tabel) nama-
PK = Singkatan dari jenis constraint yaitu PRIMARY KEY Nama-tabel =
kolom) [jenis_constraint]
Nama tabel tempat constraint tersebut di buat.
Nama-kolom = Nama kolom yang akan di beri constraint
Jenis_constraint = Jenis-jenis constraint yang akan dibuat
(PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK.
Contoh:
Contoh berikut adalah contoh perintah pembuatan constraint PRIMARY
KEY pada kolom nip dengan nama constraint-nya pk_dosen_nip di tabel
dosen pada level kolom.

Database Client Server (SQL) 12


Lanjut
CREATE TABLE dosen ( nip INT PRIMARY KEY,
nama_dosen VARCHAR(45), alamat_dosen VARCHAR(255)
);

Berikut contoh pembuatan constraint PRIMARY KEY pada level tabel untuk
kolom nip di tabel dosen.
CREATE TABLE dosen (
nip INT,
nama_dosen VARCHAR(45), alamat_dosen VARCHAR(255) CONSTRAINT pk_dosen_nip
);

2. Foreign Key
Foreign Key atau Kunci Tamu merupakan kunci yang digunakan
sebagai penghubung antara satu tabel dengan tabel lainnya. Jika
sebuah tabel memiliki Foreign Key maka tabel tersebut dapat di sebut
juga dengan tabel kedua dimana tabel utamanya adalah tabel yang
memiliki kolom Primary Key dari Foreign Key tersebut.

Perintah dasarnya:

CONSTRAINT fk_(nama-tabel)_(nama-kolom) FOREIGN


Keterangan:
KEY (namakolom) REFERENCES tabel-
FK = Singkatan dari FOREIGN KEY
Nama-Tabel = Nama tabel tempat FOREIGN KEY tersebut
dibuat. Nama-Kolom = Nama Kolom yang akan dijadikan
FOREIGN KEY FOREIGN KEY = Jenis constraint-nya, yaitu
FOREIGN KEY
REFERENCES = Kata kunci untuk merelasikan tabel ini ke tabel utamanya
(tabel yang memiliki PRIMAR KEY)
Tabel-Referensi = Tabel yang akan dijadikan referensi (tabel utama).
Kolom-Referensi = Kolom yang menjadi referensi dari tabel utama.

Berikut adalah contoh penggunaan FOREIGN KEY pada level kolom dan
pada level tabel:

Database Client Server (SQL) 13


Lanjut
CREATE TABLE
mahasiswa (
nim INT CONSTRAINT pk_mahasiswa_nim PRIMARY
KEY,
nip INT
CONSTRAINT fk_mahasiswa_nim
FOREIGN KEY (nip) REFERENCES dosen(nip),
nama_mhs VARCHAR(45),
alamat_mhs VARCHAR(255)
);

CREATE TABLE
mahasiswa
Pada ( FOREIGN KEY ada beberapa fitur tambahan yang
constraint
nim INTEGER CONSTRAINT pk_mahasiswa_nim PRIMARY KEY,
dapat
nip d berikan pada sebuah kolom dalam tabel, yaitu:
INTEGER
nama_mhs
[ON DELETEVARCHAR(45), alamat_mhs
{NO ACTION | CASCADE I SETVARCHAR(255),
NULL | SET DEFAULT} ]
CONSTRAINT fk_mahasiswa_nim FOREIGN KEY (nip)
REFERENCES dosen(nip)
);
Pilihan ini akan menentukan aksi apa yang akan di lakukan terhadap
sebuah baris/record dalam tabel, jika record tersebut memiliki hubungan
referensi (referential relationship) dan record yang di referensi di hapus
(DELETE) dari tabel induk.
Defaultnya adalah NO ACTION.
Jika pilihan CASCADE di gunakan, sebuah record akan di hapus dari
tabel referensinya jika record tersebut di hapus dari tabel induknya. Jika
pilihan NO ACTION yang digunakan, SQL Server akan menampilkan
pesan kesalahan dan proses penghapusan record pada tabel induk di
batalkan (ROLLED BACK).

Contoh :

Create table transaksi


(no_nota varchar(15) NOT
NULL, tgl_nota date NOT
NULL, kd_plgn varchar(10)
NOT NULL, total_byr money
NOT NULL,
CONSTRAINT fk_trans FOREIGN KEY (kd_plgn) REFERENCES

Database Client Server (SQL) 14


Lanjut
Jika perintah DELETE di lakukan pada sebuah record di tabel dosen,
dan properties ON DELETE CASCADE di berikan pada kolom
mahasiswa.nik, SOL Server melakukan pengecekan terhadap satu atau
lebih record yang memiliki ketergantungan di tabel mahasiswa. Jika ada
record yang memiliki ketergantungan tersebut, maka record tersebut
akan di hapus dari tabel mahasiswa sesuai dengan record yang di hapus
di tabel dosen.

Dengan kata lain, jika pilihan NO ACTION yang digunakan, SOL Server
akan menampilkan pesan kesalahan dan membatalkan penghapusan
data untuk record di tabel dosen tersebut jika terdapat paling tidak satu
record di tabel mahasiswa yang berhubungan dengan record tersebut.

[ON UPDATE {NO ACTION | CASCADE I SET NULL | SET DEFAULT} ]


Sama dengan [ON DELETE {CASCADE I NO ACTION}], yang
membedakan jika ON DELETE aksi dilakukan jika record di hapus
(DELETE), pada ON UPDATE aksi dilakukan jika record di rubah
(UPDATE).

Berikut adalah contoh pemberian pilihan ON DELETE CASCADE dan


ON UPDATE CASCADE pada sebuah tabel untuk kolom yang menjadi
FOREIGN KEY.

CREATE TABLE
mahasiswa (
nim INT CONSTRAINT pk_mahasiswa_nim PRIMARY
KEY,
nip INT
CONSTRAINT fk_mahasiswa_nim
FOREIGN KEY (nip) REFERENCES dosen(nip)
ON DELETE CASCADE ON UPDATE CASCADE,
nama_mhs VARCHAR(45), alamat_mhs VARCHAR(255)
);

3. Unique
Constraint UNIQUE merupakan sebuah constraint yang akan
membatasi pengisian record yang sama kedalam sebuah kolom jika
kolom tersebut di berikan constraint UNIQUE dalam sebuah tabel.
Constraint ini hampir sama dengan PRIMARY KEY, yaitu menjamin

Database Client Server (SQL) 15


Lanjut
bahwa setiap nilai

Database Client Server (SQL) 16


Lanjut
record yang ada dalam sebuah kolom UNIQUE tidak boleh ada yang
sama (unik satu sama lain).
UNIQUE dapat dibuat pada level kolom ataupun level tabel.
Sama dengan constraint PRIMARY KEY, FOREIGN KEY, CHECK.
Perintah dasarnya:
CONSTRAINT namaconstraint UNIQUE (field1,...)
Keterangan:
UO = Singkatan dari UNIQUE
Nama-Tabel = Nama tabel tempat UNIQUE tersebut
dibuat. Nama-Kolom = Nama Kolom yang akan dijadikan
UNIQUE UNIQUE = Jenis constraint-nya, yaitu UNIQUE

Berikut adalah contoh penggunaan UNIQUE dan PRIMARY KEY secara


bersamaan pada level kolom:

CREATE TABLE dosen (


nip INT
CONSTRAINT pk_dosen PRIMARY KEY,
namadosen VARCHAR(45),
alamatdosen VARCHAR(255)
CONSTRAINT uq_dosen UNIQUE (nip));

4. Not Null
Not Null merupakan constraint yang digunakan untuk menjamin
pengisian record ke sebuah tabel agar nilai record tersebut harus berisi
data. Sebuah kolom jika di berikan constraint NOT NULL, maka kolom
tersebut harus berisikan nilai untuk recordnya dan tidak boleh di
kosongkan. NOT NULL hanya bisa di definisikan dalam sebuah tabel
pada level kolom dan tidak bisa pada level tabel. Perbedaan antara NOT
NULL dan PRIMARY KEY adalah bahwa setiap kolom yang dijadikan
PRIMARY KEY pasti NOT NULL dan tidak berlaku sebaliknya.
Berikut adalah contoh penggunaan constraint NOT NULL:

CREATE TABLE dosen (


nip IN CONSTRAINT PK-dosen-nip PRIMARY KEY NOT
NULL ,
nama-dosen VARCHAR(45),
alamat-dosen

Database Client Server (SQL) 17


Lanjut
5. Check
CHECK merupakan constraint yang memaksa integritas domain
dengan membatasi pemasukan nilai yang mungkin di masukkan ke
dalam sebuah kolom atau beberapa kolom. Hampir sama dengan
constraint FOREIGN KEY dalam hal bagaimana mengendalikan nilai
yang akan di masukkan kedalam sebuah kolom. Perbedaannya adalah
pada bagaimana keduanya menentukan nilai mana yang valid.
FOREIGN KEY mendapatkan daftar nilai valid dari tabel yang lain,
sementara CHECK menentukan nilai valid dari ekspresi logika yang
tidak menggunakan data yang berdasarkan data pada kolom yang lain.
Contohnya, sangat mungkin bagi kita membatasi jangkauan nilai untuk
kolom gaji dengan membuat constraint CHECK yang membolehkan data
yang memiliki jangkauan dari
$15,000 hingga $100,000. Pembatasan ini akan mencegah pengisian
gaji di luar jangkauan nilai gaji normal. Untuk kasus tersebut dapat
dibuat constraint CHECK dengan menggunakan ekspresi logika
(BOOLEAN) yang mengembalikan nilai TRUE atau FALSE berdasarkan
operator logika yang dibuat. Berikut adalah contoh ekspresi logikanya:

Gaji >= 15000 AND salary


<= 100000
Dalam satu kolom dapat di terapkan lebih dari satu constraint
CHECK. Pengecekannya dilakukan berdasarkan urutan pembuatan
constraint CHECK tersebut. Selain itu satu constraint CHECK dapat di
terapkan di lebih dari satu kolom (multiple columns) dengan cara
membuatnya pada level tabel. Contohnya, Constraint Multiple CHECK
dapat digunakan untuk memastikan bahwa tiap record dalam kolom
country dengan nilai USA juga memiliki 2 karakter nilai pada kolom state.
Hal ini memungkinkan pengecekan kondisi lebih dari satu dalam satu
tempat

Berikut adalah contoh penggunaan constraint CHECK dalam sebuah tabel:

CREATE TABLE rekening (


No_rekening VARCHAR(15)CONSTRAINT pk_rekening_no_rekening
NOT NULL,
Kode_cabang CHAR(5)
CONSTRAINT fk_rekening_kode_cabang

Database Client Server (SQL) 18


Lanjut
FOREIGN KEY REFERENCES cabang_bank(kode_cabang), Pin
CHAR(6),
Saldo MONEY CONSTRAINT chk_rekening_saldo CHECK (saldo
> 50000));

2. DML (Data Manipulation Language)


DML adalah kumpulan perintah yang digunakan untuk memanipulasi data.
Perintah-perintah yang dimaksudkan adalah sebagai berikut :

a. Insert
Insert adalah perintah wajib pada SQL Server untuk memasukkan data
ke dalam tabel. Bentuk perintah tersebut adalah :

INSERT INTO <Nama_Table>( Field1, Field2, Field..n)


VALUES(<valueField1>, <valueField2>,
<Field...n>);
Atau

INSERT INTO <Nama_Table> VALUES(<valueField1>,


Contoh:
<valueField2><valueField...n>);
Insert dengan multiple record
INSERT INTO MATERIAL_GROUP VALUES('ELC','Electronic');
INSERT INTO MATERIAL_GROUP (MaterialGroup) VALUES
('ELC'), ('HOB'), ('COM')

b. Select
Statement select adalah statement dasar yang digunakan untuk
mengambil informasi dari database. Dengan statement ini user
dimungkinkan untuk mengambil data dari suatu tabel atau lebih bahkan dari
database lain. Hasil dari statement ini dikenal dengan result set yang
berbentuk tabel juga.
Statement select ini memiliki bentuk sederhana. Bentuk paling
sederhana dari statement ini adalah sebagai berikut :

SELECT [ALL | DISTINCT] nm_field FROM


{tabel1[tabel alias]},...

Database Client Server (SQL) 19


Lanjut
c. Where
Bentuk lain dari statement select dan kata kunci lainnya adalah sebagai
berikut :

SELECT daftar_select [INTO tabel_baru] FROM tabel


[WHERE kondisi] [GROUP BY ekspresi] [HaVING kondisi]
ORDER BY ekspresi_pengurutan [ASC | DESC]

Kondisi WHERE dapat memiliki operator perbandingan berikut ini :


 < > atau != yang artinya tidak sama dengan
 < lebih kecil dari ...
 > Lebih besar dari ...
 >= lebih besar sama dengan ..
 <= lebih kecil sama dengan ...
 !> tidak lebih besar
 !< tidak lebih kecil

Contoh : untuk mendapatkan record pada tabel transaksi1 yang total


bayarnya tidak lebih dari atau sama dengan lima puluh ribu digunakan
perintah berikut :

USE contoh2;
SELECT * FROM transaksi1 WHERE total_byr <= 50000;

d. Operator Boolean
Anda dapat menggunakan beberapa kondisi yang berbeda dengan
dihubungkan oleh operator boolean (AND, OR, NOT). Berikut ini adalah
contoh penggunaannya:

USE contoh2;
SELECT * FROM pegawai
WHERE departemen ='penjualan' AND almt='semarang';

Database Client Server (SQL) 20


Lanjut
e. Operator Himpunan

 Operator IN dan BETWEEN


Operator IN digunakan dengan beberapa argument (dalam kurung) untuk
melakukan pencarian data dengan kriteria-kriteria tertentu. Contoh :

USE contoh2;
SELECT * FROM pegawai
WHERE nip IN ('00001','00002','00003','00004','00005');

Operator BETWEEN mencari data dalam rentang atau range tertentu.


Kriteria yang diberikan memberikan batas atas dan batas bawah dari data
yang dicari. Contoh :

USE contoh2;
SELECT
kd_brg,nm_brg,hrg_beli FROM
barang

Operator LIKE digunakan untuk mencari kecocokan pola pada data di


dalam field. Tipe data pada field tersebut dapat berupa karakter atau
tanggal. Bentuk umum operator LIKE adalah :
Field [NOT] LIKE 'pola'

Ada beberapa karakter yang digunakan membentuk pola yang disebut


karakter wildcard yaitu :
 % (persen), simbol ini menspesifikasikan urutan dari nol hingga
karakter berjumlah banyak.
 _ (underscore), simbol ini menspesifikasikan sebuah karakter.

Contoh :
Contoh diatas adalah mencari dara pegawai dengan nm_kar berawalan
USE contoh2;
huruf ‘t’. *
SELECT
FROM pegawai
WHERE nm_kar LIKE 't%';

Database Client Server (SQL) 21


Lanjut
USE contoh2;
SELECT *
FROM pegawai
WHERE nm_kar LIKE '_o%';

Contoh diatas adalah mencari data pegawai yang huruf kedua namanya
adalah ‘o’.

f. Subquery
Subquery adalah sebuah kemampuan yang membuat statement
SELECT...FROM...WHERE dapat membandingkan nilai dari tabel dengan
hasil SELECT lainnya yang diletakkan setalah kata kunci WHERE.
Statement select yang diletakkan setelah kata kunci WHERE inilah yang
disebut dengan subquery.

 Subquery dengan Operator Perbandingan


Contoh penggunaan subquery dengan operator perbandingan adalah
sebagai berikut :

USE contoh2;
SELECT nm_brg FROM barang WHERE kd_brg=(SELECT kd_brg FROM
transaksi2 WHERE jmlh >=5);

Pada contoh diatas penggunaan subquery di atas subquery dikerjakan


dahulu yaitu mencari kd_brg pada tabel transaksi2 yag pada field
jumlahnya lebih besar atau sama dengan 5. Setelah mendapatkan datanya
maka outer query akan dikerjakan menampilkan nama barang pada tabel
barang yang kode barangnya sesuai dengan hasil inner query.

 Subquery dengan Operator IN


Subquery dengan operator IN digunakan ketika data yang dihasilkan oleh
subquery lebih dari satu nilai. Contoh :

USE contoh2;
SELECT nm_brg FROM barang WHERE kd_brg IN (SELECT
kd_brg FROM transaksi2 WHERE jmlh <=5);

Database Client Server (SQL) 22


Lanjut
g. Order By, Group By dan Having

 Order By
Kata kunci ini digunakan untuk menyusun tampilan hasil query dalam
urutan tertentu. Cara penulisannya adalah sebagai berikut :
ORDER BY {[nm_field | nmr_field [ASC | DESC ]]},...

Nmr_field adalah nomor dari field atau kolom dari jumlah field atau kolom
yang ditempilan, urutannya dimulai dari 1. Acs digunakan untuk
pengurutan secara ascending (kecil ke besar) dan DESC adalah
sebaliknya. Contoh :

USE contoh2;
SELECT *
FROM pegawai
ORDER BY

 Group By
Kata kunci ini digunakan untuk mengelompokkan satu atau lebih field yang
memiliki nilai yang sama untuk membentuk suatu kelompok. Contoh :

USE contoh2;
SELECT
departemen FROM
pegawai

 Having
Kata kunci ini digunakan untuk mendefinisikan sebuah kondisi yang
kemudian ditrapkan pada sekelompok data pada beberapa field yang
kemudian ditampilkan sebagai hasil query. Contoh :

USE contoh2;
SELECT
departemen FROM
pegawai
GROUP BY

Database Client Server (SQL) 23


Lanjut
Script diatas menampilkan data departemen yang jumlah data berdasarkan
departemen lebih dari sama dengan 6.

h. Operator Himpunan (Set)


 Union
Operator ini digunakan untuk menggabungkan hasil select dari beberapa
query menjadi satu kesatuan. Contoh penulisannya adalah sebagai berikut
:

USE contoh2;
SELECT
Intersect
nip,nm_kar,almt FROM
Intersect
pegawai dari dua tabel adalah himpunan yang memiliki field yang ada pada
WHEREtabel. Contoh penulisannya adalah sebagai berikut :
kedua
departemen='keuangan'
USE
UNION contoh2;
ALL
SELECT kd_brg
FROM barang
WHERE hrg_jual<
100000 INTERSECT
SELECT kd_brg
FROM

 Except
Operator ini memilik fungsi untuk mengembalikan sekumpulan nilai yang
ada di tabel pertama, tetapi tidak ada pada tabel kedua. Contoh
penggunaanya adalah sebagai berikut :

USE contoh2;
SELECT kd_brg
FROM barang
EXCEPT
SELECT kd_brg
FROM

Database Client Server (SQL) 24


Lanjut
i. Operator Join
Operator Join adalah clause untuk menggabungkan antara satu tabel
dengan tabel lainnya yang memiliki kondisi tertentu. Operator join terdiri
beberapa macam yaitu :
 Inner Join
Inner Join bertujuan untuk mencari kesamaan data antara tabel yang
satu dengan yang lainnya

Cara penulisannya adalah sebagai berikut :

SELECT Table1.field1, Table1.field...n


Atau
Table1.field2, Table2.field...n
SELECT Table1.field1,Table...n
FROM Table1,Table2, Table1.field...n,
Contoh
Table1.field2, Table2.field...n,
WHERE Table1.field_PK = Table2.fieldPK
TableN.field1,
AND Table2.field_PKTableN.field...n
= TableN.fieldPK
SELECT
FROM Table1 INNER JOIN Table2 ON Table1.field_PK
MATERIAL.MaterialNumber,
= Table2.fieldPK
MATERIAL.MaterialDescription,
OuterJOIN
INNER Join Tablen ON Table2.field_PK = TableN.fieldPK
MATERIAL_GROUP.Description
Pada
FROMouter Join iniINNER
MATERIAL data pada
JOINtabel pertama tetap diikutkan
MATERIAL_GROUP ON walaupun
tidak memiliki hubungan atau kesamaan apapun dalam tabel kedua. Ada
2 macam Outer Join yaitu :

Database Client Server (SQL) 25


Lanjut
 Left Outer Join

Digunakan untuk menampilkan semua data dari tabel 1 (kiri), baik


memiliki kesamaan seleksi kondisi ataupun tidak memiliki kesamaan
pada tabel 2 (kanan). Jika tidak ada data yang sama pada kondisi tabel
2(kanan) akan bernilai NULL.
Contoh : Tabel 1 = Material , Tabel 2 =Orders
Menampilkan semua material yang terjual dan tidak terjual

SELECT MATERIAL.MaterialNumber,
MATERIAL.MaterialDescriptin,
ORDERS.OrderDate,ORDERS.QtyOrder
FROM MATERIAL LEFT OUTER JOIN ORDERS ON
MATERIAL.MaterialNumber = ORDERS.MaterialNumber

 Right Outer Join

Digunakan untuk menampilkan semua data dari tabel 2 (kanan), baik


memiliki kesamaan seleksi kondisi ataupun tidak memiliki kesamaan
pada tabel 1 (kiri). Jika tidak ada data yang sama pada kondisi tabel
1(kiri) akan bernilai NULL.
Contoh : Tabel 1 = Material , Tabel 2 =Orders
Menampilkan semua material yang terjual dan tidak terjual
SELECT MATERIAL.MaterialNumber,
MATERIAL.MaterialDescription,
ORDERS.OrderDate,ORDERS.QtyOrder
FROM ORDERS RIGHT OUTER JOIN MATERIAL ON
MATERIAL.MaterialNumber = ORDERS.MaterialNumber

Database Client Server (SQL) 26


Lanjut
BAB III
INDEX & VIEW

1. Index
Index adalah objek database yang digunakan untuk meningkatkan
kecepatan database. Kecepatan disini dalam arti kecepatan untuk
menghasilkan dan menampilkan data yang diinginkan baik oleh user yang
menggunakan maupun para developer aplikasi.

Jenis-jenis Index

Dalam database SQL Server terdapat 2 jenis index yang dapat kita gunakan :
 Index Clustered (Clustered Index)
 Index Nonclustered (Non Clustered Index)

SQL Server secara otomatis akan membuat index pada setiap Primary Key dan
Foreign Key yang ada dalam database. Index juga dapat dibuat pada
kolom/field yang sering digunakan menjadi parameter dalam kondisi WHERE
maupun yang sering dijadikan parameter untuk mengurutkan data (ORDER
BY).

Aturan-aturan dalam membuat indeks

 Index tidak dapat dilakukan pada field (kolom) tabel yang memiliki tipe data
: Text, NText dan Image.
 Panjang total maksimum untuk semua kolom dalam tabel adalah 900 byte.
Bentuk umum pembuatan index dengan menggunakan query sql

Berikut ini adalah query sql yang dapat anda gunakan untuk membuat index
dalam sebuah tabel di database :

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX


nama_index ON nama_tabel (nama_kolom[,nama_kolom] )

Keterangan :
 Unique : membuat sebuah indeks dimana tiap baris (record) harus berisi
nilai indeks yang berbeda.
 Clustered | Non Clustered : menentukan jenis dari index yang akan dibuat.

Database Client Server (SQL) 27


Lanjut
 Nama_index : mendeskripsikan nama index yang dibuat.
 Nama_tabel : menentukan nama tabel yang akan dibuat indexnya.
 Nama_kolom : menentukan nama kolom dalam tabel yang akan dibuat
indexnya.

a. Clustered Index
Index Clustered merupakan penggunaan index berdasarkan urutan-
urutan data dalam database dan urutan data ini biasanya berdasarkan sebuah
kunci (primary key atau foreign key) yang ada dalam tabel yang ingin kita
cari atau tampikan datanya.

Karena pada umumnya pengurutan data hanya dilakukan 1 arah baik


secara ascending maupun descending maka dalam sebuah tabel biasanya
hanya terdapat sebuah clustered index didalamnya.

Penggunaan Clustered Index akan menghasilkan performance yang


lebih baik dalam hal mengupdate dan menghasilkan data daripada
penggunaan Nonclustered Index.

Berikut ini adalah bentuk dari query yang akan digunakan untuk
membuat clustered index dengan menggunakan Query Analyzer dan query
sql :
create clustered index kdplgidx on pelanggan(kd_plg)

Query SQL diatas hanya bisa dijalankan, jika kita belum pernah membuat
clustered index sebelumnya baik dengan enterprise manager maupun dengan
query analyzer.

b. Non Clustered Index


Dalam non clustered index secara fisik susunan record tidak berpengaruh.
Non clustered index menyiman pointer yang menunjuk ke baris/record dari
tabel. Dari sebuah tabel dapat dibuat beberapa non clustered index, sejauh
index tersebut dibutuhkan. Cara penulisannya adalah sebagai berikut :
Create non clustered index nclNama on tbl_mhs (nama)
Atau
Create index nclNama on tbl_mhs (nama)

Database Client Server (SQL) 28


Lanjut
2. View
View adalah tabel virtual atau query yang tersimpan di database server.
Data yang terakses melalui view tidak disimpan dalam database sebagai objek
tersendiri akan tetapi berupa query select dari satu atau lebih tabel.
View digunakan utk melakukan fungsi-fungsi berikut :
 Membatasi pengguna kepada baris data tertentu dalam tabel
 Membatasi pengguna kepada kolom tertentu dalam tabel
 Menggabungkan kolom dari beberapa tabel sehingga terlihat seperti
sebuah tabel
Berikut adalah cara penulisannya :

CREATE/ALTER/DROP VIEW nama_view [ (column [ ,...n ] )


Contoh
] [ WITH <view_attribute> [ ,...n ] ]
AS select_statement
CREATE VIEW: OPTION
Pengunaannya
[ WITH CHECK [Current
] [ Product
; ] List]
AS SELECT ProductID,ProductName
<view_attribute> ::=
SELECT ProductID FROM [Current Product List]
FROM Products
{
WHERE Discontinued=No
[ ENCRYPTION ]
[ SCHEMABINDING
Keuntungan
] View
[ VIEW_METADATA

1. Konsisten: View dapat menyediakan data secara konsisten, walaupun


struktur database diubah
2. Integritas Data: Perubahan pada tabel utama otomatis merubah view
3. Peningkatan Keamanan: Setiap pengguna dapat diberikan akses ke
database hanya melalui kumpulan view yang mengandung datayang
diperbolehkan untuknya, dengan batasan danpengendalian akses
pengguna
4. Mengurangi Kompleksitas
5. Penyederhanaan query

Database Client Server (SQL) 29


Lanjut
6. Kenyamanan
7. Kemudahan bagi pengguna, hanya mengetahui apa yang dibutuhkan
8. Mudah Pengaturan
9. View menyediakan metode untuk mengatur penampakan database

Database Client Server (SQL) 30


Lanjut
BAB IV
TRANSACT SQL (T-SQL)

1. Transact SQL
Transact SQL (T-SQL) adalah bahasa yang dikembangkan pada SQL
Server. T-SQL mengembangkan kemampuan SQL sehingga dapat
melengkapi dengan instruksi logic. Hasil proses dapat diolah lebih lanjut
dengan menggunakan control logic pemograman procedural seperti fungsi,
procedure, looping, case, if else dan lainnya.

Struktur penulisan :

DECLARE var1
Deklarasi Variabel
<datatype>, var2
<datatype>,
Nama variabel
var...n dimulai dengan karakter ‘@’
<datatype>
BEGIN
END
DECLARE @var1
<datatype>, @var2
<datatype>,
Assign Variabel@var...n

Variabel dapat diassign dengan 2 cara yaitu :


DECLARE @nrp
varchar(10)
Dengan SELECT DECLARE
statement
@nama varchar(6)
SELECT
--atau @local_variable = expression/Sql Statement
DECLARE @nrp varchar(10),

Dengan SET
SET @local_variable = expression

Database Client Server (SQL) 31


Lanjut
Contoh

DECLARE @nrp varchar(7)


SET Statement
Print @nrp = '3302019'
--atau
Print statement
SELECT @nrp =digunakan untuk menulis ke layar
'3302019'

DECLARE @nrp varchar(7)


Assign Variabel
SET @nrp dari SELECT Statement
= '3302019'
--atau
Assign
SELECTvariabel
@nrp =juga dapat diambil dari query dengan select statement
'3302019'
PRINT 'NRP saya : ' + @nrp
DECLARE @nama_customer
varchar(35) SELECT
@nama_customer=CustomerName
Tabel Variabel sebagai Tabel FROM
Customer
WHERE CustomerNumber='7000001'
Declare @mat_table table(
MaterialNumber int PRIMARY KEY,
MaterialDescription
Deklarasi Table Variabel varchar(50)
)
BEGI
Declare variable table(
N
<Field1> <dataType>,
INSERT
<Field2>INTO @mat_table VALUES('1','Material
<dataType>,
1')
<Field...n>INSERT
<dataType> INTO @mat_table
VALUES('2','Material
) 2') INSERT INTO
@mat_table VALUES('3','Material 3') SELECT *

Database Client Server (SQL) 32


Lanjut
Declare @mat_table table(
MaterialNumber int,
MaterialDescription varchar(50)
)
BEGI
N
INSERT INTO
@mat_table SELECT
MaterialNumber,
MaterialDescription
FROM
MATERIAL

Assign Variabel dari Sub Query

Declare @nama_vendor varchar(35)


SELECT @nama_vendor =
(SELECT vendorName
EXCEPTION
FROM VENDOR
WHERE Ketika
vendorNumber=5000001)
SQL kita dijalankan terdapat error, maka secara otomatis SQL
PRINT @nama_vendor
SERVER akan menampilkan pesan error sesuai dengan error number. SQL
Server dapat menangkap error dengan menggunakan :

BEGIN TRY
{ sql_statement | statement_block
} END :TRY
Contoh
BEGIN CATCH
[ { sql_statement
BEGIN TRY | statement_block } ]
END CATCH
SELECT
1/0; END
TRY BEGIN
CATCH
PRINT 'ERROR Pembagian dengan 0'

Database Client Server (SQL) 33


Lanjut
BAB V
STORED PROCEDURE

Stored Procedure adalah sekumpulan statement T-SQL yang disusun


sedemikian rupa untuk menjalankan tugas tertentu.

1. Create Stored Procedure


Sama seperti objek database lainnya Stored Procedure juga diciptakan
menggunakan CREATE. Bentuk penulisannya adalah sebagai berikut :

CREATE PROC[EDURE] [nm_schema]nm_procedure


[({@parameter data_type}
Contoh penggunaan Stored Procedure tanpa parameter :
[=default] [OUTPUT]
] [ ,…n]
CREATE
[ WITH PROCEDURE
{RECOMPILE |ENCRYPTION|EXECUTE AS ‘nm_user} ]
sp_select_vendor
As AS
Contoh penggunaan Stored Procedure dengan parameter :
SET NOCOUNT ON
Sql_statement […n]
SELECT * FROM
CREATE
PROCEDUREsp_insert_vendor
@nama_vendor varchar(35),
@alamat varchar(50),
@kota varchar(25),
@telepon varchar(15)
AS
BEGIN
INSERT INTOVENDOR VALUES(
@nama_vendor,
@alamat,
@kota,
@telepon
)
END

Database Client Server (SQL) 34


Lanjut
2. Alter Stored Procedure
Berikut adalah contoh alter stored procedure :

ALTER
Set PROCEDURE
‘NoCount On’ digunakan untuk menghilangkan message hasil output
sp_insert_vendor @nama_vendor
(affected row)
varchar(35), @alamat
varchar(50),
@kota varchar(25),
@telepon
3.varchar(15)
Execute Stored
AS Procedure
BEGIN untuk mengeksekusi stored procedure adalah sebagai berikut :
Perintah
SET NOCOUNT ON
BEGIN
EXECUTETRY
<nama_stored_procedure> <param1>, <param2>, <param…n>
Atau
INSERT INTO VENDOR VALUES(
@nama_vendor
EXEC <nama_stored_procedure>
, @alamat,
Contoh : <param1>, <param2>, <param…n>
@kota,
@telepon
EXECUTE sp_select_vendor
)
EXECUTE sp_insert_vendor 'cgw', 'ujungberung', 'bandung',
PRINT 'OK
'081321975455'
inserted' END TRY
BEGIN CATCH
PRINT 'GAGAL
inserted' END CATCH

Database Client Server (SQL) 35


Lanjut
4. Stored Procedure dengan Parameter OUTPUT
Selain parameter sebagai input pada stored procedure ini juga
mengijinkan untuk menghasilkan keluaran (output) dengan menambah keyword
output setelah parameter, dan eksekusinya pun menggunakan keyword output
juga. Penampung output dideklarasai dengan variable. Contoh :

CREATE PROCEDURE sp_select_vendor_by_number


@vendor_number int,
@vendor_name varchar(50) OUTPUT
AS
SET NOCOUNT ON
SELECT @vendor_name = vendorname
FROM VENDOR
WHERE vendorNumber = @vendor_number

DECLARE @nama_vendor varchar(50)


BEGIN
EXECUTE sp_select_vendor_by_number 5000001,@nama_vendor OUTPUT
PRINT 'Nama vendor : '+ @nama_vendor
END

Database Client Server (SQL) 36


Lanjut
BAB VI
TRIGGER

Trigger adalah T-SQL yang disimpan pada database server dan akan diaktivasi
melalui event ketika melakukan statement-statement SQL (Insert, Update,
Delete) pada sebuah table. Trigger dapat membantu dalam menjaga
konsistensi dan integritas data.

1. Create Trigger

2.CREATE TRIGGER
Alter Trigger
<nama_trigger> ON
<nama_table>|<nama_view> FOR
3.ALTER
| DropTRIGGER
AFTERTrigger
| INSTEAD OF
<nama_trigger> ON
[INSERT] [UPDATE] [DELETE]
<nama_table>|<nama_view>
DROP TRIGGER <nama_trigger>
AS
FOR | AFTER | INSTEAD OF
[INSERT] [UPDATE] [DELETE]
AS
4. Trigger Event
Nama Event Keterangan
After / For Insert Terjadi setelah statement
insert
After / For Update Terjadi setelah statement
update
After / For Delete Terjadi setelah statement
Delete

Contoh Trigger Insert :

CREATE TRIGGER
trg_material_after_insert ON Material
AFTER INSERT
AS
BEGI
N

Database Client Server (SQL) 37


Lanjut
Test Trigger Event

INSERT INTO MATERIAL


VALUES('GUITAR','UNT',1,10,'SPRT',1000000,900000,850000);

5. Alias in Trigger
Dalam trigger dikenal istilah alias atau referensi, yaitu sejenis variable resultset
yang menyimpan nilai dari suatu kolom di dalam table.

 Inserted

Table virtual untuk menampung nilai pada trigger event INSERT dan UPDATE

 Deleted

Table virtual untuk menampung nilai pada trigger event DELETE dan UPDATE

Contoh :

ALTER TRIGGER trg_material_after_insert


ON Material AFTER INSERT
AS
BEGIN
DECLARE @kodebarang int,
@namabarang varchar35)
SELECT @kodebarang =
MaterialNumber, @namabarang =
MaterialDescription FROM INSERTED
PRINT 'Data dengan spesifikasi : ' + CHAR(13) + CHAR(13) +
'Kode Barang : ' + LTRIM(str(@kodebarang)) + CHAR(13) +
'Nama Barang : ' + @namabarang+ CHAR(13) + CHAR(13) +
'Telah diinsert'
END

Database Client Server (SQL) 38


Lanjut
Contoh Trigger Delete

CREATE TRIGGER
trg_material_after_delete ON Material
AFTER DELETE
AS
DECLARE @namabarang varchar(35)
SELECT @namabarang =
MaterialDescription FROM DELETED
PRINT 'Data dengan Nama Barang : ' + @namabarang + ' telah

 Update

Tidak seperti trigger insert dan delete, trigger update memiliki 2 table virtual yaitu
inserte dan deleted. Dimana deleted=old (data sebelum diupdate)dan
inserted=new(data setelah diupdate).

Contoh :

CREATE TRIGGER
trg_material_after_update ON Material
AFTER UPDATE
AS
DECLARE @namabarangOld varchar(35),
@namabarangNew varchar(35)

Database Client Server (SQL) 39


Lanjut
SELECT @namabarangNew = MaterialDescription FROM INSERTED
PRINT 'Nama Barang telah dirubah dari '+@namabarangOld+'
menjadi '+@namabarangNew

Memeriksa column yang diupdate dengan

UPDATE(<namafield>) Contoh :

ALTER TRIGGER trg_material_after_update


ON Material AFTER UPDATE
AS
BEGI
N
DECLARE @namabarangOld
varchar(35), @namabarangNew
varchar(35), @satuanOld
varchar(3),
@satuanNew varchar(3),
@stokAwalOld int,
@stokAwalNew int
SELECT @namabarangOld = MaterialDescription,
@satuanOld = UoM,
@stokAwalOld =
BeginningStock FROM DELETED
SELECT @namabarangNew = MaterialDescription,
@satuanNew = UoM,
@stokAwalNew =
BeginningStock FROM INSERTED
if UPDATE(MaterialDescription)
PRINT 'Nama Barang telah dirubah dari ' + @namabarangOld + '
menjadi ' +
@namabarangNew
if
UPDATE(UoM)
PRINT 'Satuan telah dirubah dari ' + @satuanOld + ' menjadi ' +
@satuanNew
if UPDATE(BeginningStock)
PRINT 'Stock Awal telah dirubah dari ' +
Kombinasi Trigger Event

Event Trigger INSERT, UPDATE, DELETE dapat dibuat sekaligus


CREATE TRIGGER TrgMaterial
ON Material
AFTER INSERT,DELETE,UPDATE
AS

Database Client Server (SQL) 40


Lanjut
declare @operasi
varchar SET @operasi =
''
IF EXISTS(SELECT * FROM DELETED)
BEGIN
IF EXISTS(SELECT * FROM INSERTED)
SET @operasi = 'U'
ELSE
SET @operasi = 'D'
END
ELSE
SET @operasi =
'I' IF @operasi =
'I'
PRINT 'T-SQL INSERT...'
ELSE IF @operasi = 'U'
PRINT 'T-SQL UPDATE...'

Instead Of

Instead Of trigger hanya dipanggil tetapi tidak dieksekusi. TIdak seperti


After/For Instead Of dapat digunakan juga pada view. Instead Of tidak dapat
dijalankan pada table yang memiliki relasi ON DELETE dan ON UPDATE dan
WITH CHECK OPTION.

Contoh :

CREATE TABLE Mahasiswa(


nrp int PRIMARY KEY NOT NULL,
nama varchar(35),
CREATE TRIGGER TrgMhs
)
ON Mahasiswa
INSTEAD OF INSERT
AS
SELECT * FROM MAHASISWA
WHERE nrp = (SELECT nrp FROM INSERTED)

Database Client Server (SQL) 41


Lanjut
Rubah dengan After

ALTER TRIGGER TrgMhs


ON
Mahasiswa
Instead
AFTER Of Override Value
INSERT AS
Tambahkan field nilai
SELECT * FROM pada table mahasiswa
MAHASISWA

ALTER TABLE Mahasiswa ADD nilai int

Alter Trigger dengan case force nilai dengan 60 jika nilai < 60

ALTER TRIGGER TrgMhs


ON Mahasiswa
INSTEAD OF INSERT
AS
DECLARE @xnilai int
SET NOCOUNT ON
SELECT @xnilai=nilai FROM INSERTED
if @xnilai<60
INSERT INTO Mahasiswa SELECT nrp,nama,60 FROM INSERTED
else
INSERT INTO Mahasiswa SELECT * FROM INSERTED

Database Client Server (SQL) 42


Lanjut
Melihat trigger yang terpasang pada table
Sp_helptrigger View | Table

Contoh :
Sp_helptrigger Mahasiswa

Database Client Server (SQL) 43


Lanjut
BAB VII
USER DEFINED FUNCTION (UDF)

User Defined Function adalah suatu program yang ditulis dengan T-SQL
yang terdiri dari sekumpulan perintah yang tersimpan sebagai sebuah objek di
dalam database server dengan pengembalian nilai.

Create Function

CREATE FUNCTION <nama_function>([param1],[param2],[param..n])


RETURNS <data_type>
Alter Function
AS
BEGI
N
ALTER FUNCTION <nama_function>()
RETURN expression
RETURNS <data_type>
AS
Drop Function
BEGI
N
DROP FUNCTION <nama_function>
RETURN expression

1. Function Return Scalar


Adalah Function yang nilai kembalinya merupakan single value. Contoh :

CREATE
Cara FUNCTION getTotalQtyOrder()
penggunaanya :
RETURNS INT
AS
SELECT dbo.getTotalQtyOrder()
BEGI
N
DECLARE @jml int
SELECT @jml=SUM(QTYORDER)
FROM ORDERS_DETAIL
RETURN

Database Client Server (SQL) 44


Lanjut
Scalar Function dengan Parameter

CREATE FUNCTION getTotalQtyOrder


(@pMaterialNumber int)
Penggunaanya
RETURNS :
INT AS
BEGIN dbo.getTotalQtyOrder(300005)
SELECT
DECLARE @jml int
SELECT @jml=SUM(QTYORDER)
FROM ORDERS_DETAIL
Contoh
WHERE Function kombinasi= dengan
materialNumber Select Table
@pMaterialNumber
RETURN @jml
END
SELECT MaterialNumber,
dbo.getTotalQtyOrder(MaterialNumber)
Function Single Value
FROM ORDERS_DETAIL
GROUP BYMaterialNumber
Contoh mendapatkan nama material dari sebuah materialnumber :

CREATE FUNCTION getNamaMaterial


(@pMaterialNumber int)
RETURNS
Contoh Funtion kombinasi dengan Select Table tanpa join utuk mendapatkan
VARCHAR(35) AS
nama
BEGINmaterial :
DECLARE @nama varchar(35)
SELECT @nama=MaterialDescription
SELECT MaterialNumber,
FROM MATERIAL
WHERE materialNumber = @pMaterialNumber
RETURN @nama
END

Database Client Server (SQL) 45


Lanjut
dbo.getNamaMaterial(MaterialNumber) 'Nama Material',
dbo.getTotalQtyOrder(MaterialNumber) 'Total Qty Order'
FROM ORDERS_DETAIL
GROUP BY MaterialNumber

2. Function Return Inline Table Valued


Tidak seperti Scalar Function, Function Inline Table mengembalikan
Table sebagai nilai result. Pada return table tidak diizinkan untuk menggunakan
BEGIN…END. Contoh :

CREATE FUNCTION
Untuk dbo.getVendors()
pemanggilannya dengan mengembalikan table layaknya seperti
RETURNS TABLE
table
AS biasa, tidak seperti return data lainnya.
RETURN SELECT vendorNumber,VendorName FROM VENDOR
SELECT dbo.getVendors() - ERROR karena return sebagai table

Penggunaan yang benar

SELECT * FROM dbo.getVendors()

Function Return Inline Table-Valued Parameter

Contoh :

CREATE FUNCTION dbo.getVendorsByNumber(@pVendorNumber int)


RETURNS TABLE
AS
RETURN
SELECT vendorNumber,VendorName
FROM VENDOR
WHERE vendorNumber=@pVendorNumber
Penggunaan

SELECT * FROM dbo.getVendorsByNumber(5000001)

Update Inline Table Valued Function

Return Inline table juga dapat menggunakan DML UPDATE statement dengan
ketentuan single table.

Database Client Server (SQL) 46


Lanjut
UPDATE dbo.getVendorsByNumber(5000001) SET VendorName ='IBM OK'

Database Client Server (SQL) 47


Lanjut
DAFTAR PUSTAKA

Wahana Komputer., SQL Server 2008 Express Bagi Pemula, Penerbit Andi,
2010.
Utami, Ema., Sistem Basis Data menggunakan Microsoft SQL 2005, Penerbit
Andi, 2012.
Kusumah, Hadi., Praktikum Pemograman Client Server, 2010.

Database Client Server (SQL) 48


Lanjut

Anda mungkin juga menyukai