â› 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.
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)
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)
c. Operator Logika
Operator logika digunakan untuk mengambil data yang dapat diekstraksi
dalam kisaran.
Syntax:
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 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;
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.
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:
Berikut adalah contoh penggunaan FOREIGN KEY pada level kolom dan
pada level tabel:
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 :
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.
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
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:
a. Insert
Insert adalah perintah wajib pada SQL Server untuk memasukkan data
ke dalam tabel. Bentuk perintah tersebut adalah :
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 :
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';
USE contoh2;
SELECT * FROM pegawai
WHERE nip IN ('00001','00002','00003','00004','00005');
USE contoh2;
SELECT
kd_brg,nm_brg,hrg_beli FROM
barang
Contoh :
Contoh diatas adalah mencari dara pegawai dengan nm_kar berawalan
USE contoh2;
huruf ‘t’. *
SELECT
FROM pegawai
WHERE nm_kar LIKE 't%';
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.
USE contoh2;
SELECT nm_brg FROM barang WHERE kd_brg=(SELECT kd_brg FROM
transaksi2 WHERE jmlh >=5);
USE contoh2;
SELECT nm_brg FROM barang WHERE kd_brg IN (SELECT
kd_brg FROM transaksi2 WHERE jmlh <=5);
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
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
SELECT MATERIAL.MaterialNumber,
MATERIAL.MaterialDescriptin,
ORDERS.OrderDate,ORDERS.QtyOrder
FROM MATERIAL LEFT OUTER JOIN ORDERS ON
MATERIAL.MaterialNumber = ORDERS.MaterialNumber
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).
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 :
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.
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.
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.
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
Dengan SET
SET @local_variable = expression
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'
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
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
CREATE TRIGGER
trg_material_after_insert ON Material
AFTER INSERT
AS
BEGI
N
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 :
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)
UPDATE(<namafield>) Contoh :
Instead Of
Contoh :
Alter Trigger dengan case force nilai dengan 60 jika nilai < 60
Contoh :
Sp_helptrigger Mahasiswa
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
Cara FUNCTION getTotalQtyOrder()
penggunaanya :
RETURNS INT
AS
SELECT dbo.getTotalQtyOrder()
BEGI
N
DECLARE @jml int
SELECT @jml=SUM(QTYORDER)
FROM ORDERS_DETAIL
RETURN
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
Contoh :
Return Inline table juga dapat menggunakan DML UPDATE statement dengan
ketentuan single table.
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.