109
i Modul Praktikum S S Q Q L L Sekolah Tinggi Informatika dan Komputer Indonesia 2006

sql

Embed Size (px)

Citation preview

Page 1: sql

i

Modul Praktikum

SSQQLL

Sekolah Tinggi Informatika dan Komputer Indonesia

2006

Page 2: sql

ii

Winner vs. Looser

Winner is always a part of solutions

Looser is always a part of problems

Winner sees answer in every problem

Looser sees problem in every answer

Winner always has a program

Looser always has an excuse

Winner always says, “It’s difficult, but it’s possible.”

Looser always says, “It’s possible, but it’s difficult.”

Page 3: sql

iii

Kata Pengantar ertama-tama penyusun ingin mengucapkan puji syukur kehadirat Tuhan Yang Maha Esa atas segala rahmat, taufik dan hidayah-Nya yang dilimpahkan kepada penyusun, sehingga dapat meneyelesaikan Buku Pedoman Praktikum SQL ini.

Buku Pedoman Praktikum ini kami susun untuk membantu mahasiswa dalam mengikuti praktikum SQL. MS SQL Server adalah salah satu produk Relational Database Management System (RDBMS) populer saat ini. Fungsi utamanya adalah sebagai database server yang mengatur semua proses penyimpanan data dan transaksi suatu aplikasi. Popularitas SQL Server akhir-akhir ini mulai menanjak dan setara dengan pesaing terdekatnya yaitu Oracle 9i dan Oracle 10g.

Saat ini versi terbaru adalah SQL Server 2005. Namun dalam praktikum SQL ini kita masih menggunakan Versi 2000 karena SQL Server 2005 saat modul ini dibuat masih dalam tahapan BETA. Versi 2000 memiliki feature-feature lengkap untuk membangun aplikasi mulai skala kecil sampai dengan tingkat enterprise.

Tak lupa Alhamdulillah kami ucapkan karena akhirnya revisi Modul SQL ini dapat diselesaikan. Pembuatan modul ini tak lepas dari campur tangan para asisten praktikum SQL Server yang telah meluangkan waktunya untuk merevisi modul ini. Terima kasih juga kami ucapkan kepada Kapuskom, Bpk. Sugeng Widodo yang senantiasa mendukung kami.

Tentunya, dalam penulisan modul ini tak lepas dari kesalahan, untuk itu kritik dan saran yang sifatnya membangun sangat kami harapkan dari berbagai pihak.

Akhirnya mudah-mudahan buku pedoman ini bermanfaat bagi pembaca.

Malang, September 2006

Penyusun

P

Page 4: sql

iv

Daftar Isi Winner vs. Looser ...................................................................... ii Kata Pengantar .......................................................................... iii Daftar Isi.................................................................................... iv

1. Membangun Database dan Mengatur Keamanannya . 1

2. Tabel................................................................................ 7

3. Memanipulasi Data......................................................... 26

4. Fungsi dalam SQL.......................................................... 38

5. View dan Index ............................................................... 47

6. Trigger............................................................................. 57

7. Transact - SQL................................................................ 66

8. Stored Procedure ........................................................... 80

Page 5: sql

1

PPrraakkttiikkuumm

1

MEMBANGUN DATABASE DAN MENGATUR KEAMANANNYA

Tujuan :

1 Praktikan mampu untuk membuat database dengan tiga (3) metode yang akan diujicobakan pada praktikum I ini.

2 Praktikan mampu untuk mengatur keamanan database-nya.

Persiapan :

1 Baca buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server 2000, khususnya mengenai pembuatan database serta manajemen user dan akses privileges.

2 Modul praktikum I.

Pekerjaan :

1 Kerjakan dan selesaikan semua tugas dan soal pada praktikum I di lembar jawaban yang sudah disediakan di modul.

2 Selesaikan Tugas Pendahuluan praktikum I, kemudian lanjutkan dengan mengerjakan langkah-langkah praktikum pada modul yang telah disiapkan.

3 Kerjakan Soal Praktikum I yang telah disediakan di modul, setelah selesai mengerjakan langkah-langkah praktikum.

4 Kerjakan Tugas Praktikum I sebagai latihan dirumah.

Hasil :

1 Kumpulkan modul praktikum Anda yang berisi jawaban Tugas Pendahuluan dan jawaban Soal Praktikum I sesuai dengan pertanyaan yang ada.

2 Tunjuk dan kumpulkan modul praktikum Anda yang berisi hasil pekerjaan Tugas Praktikum I kepada asisten pada pertemuan berikutnya.

Page 6: sql

2

Landasan Materi :

1 Definisi database & Database Management System (DBMS) Database adalah kumpulan fakta-fakta sebagai representasi dari dunia nyata

yang berhubungan dan mempunyai arti tertentu.

Database managemen system adalah sebuah program komputer yang memungkinkan pengguna untuk membuat dan memelihara database sehingga pengguna dapat memasukkan, mengubah, menghapus, memanipulasi, dan memperoleh kembali data tersebut dengan mudah. Sebagai contoh DBMS yang sering kita gunakan adalah Ms. Access, Ms. SQL Server, dan lain-lain.

2 Pembuatan Database SQL Server menyediakan tiga method untuk membuat database, yaitu : create database wizard, SQL Server Enterprise Manager, dan perintah T-SQL (Query) yang dapat disimpan dalam file dan dijalankan sebagaimana sebuah script.

Ms. SQL Server mengimplementasikan database dengan menyimpan 2 struktur, yaitu :

• Data Disimpan dengan file extensi *.mdf. File ini berkembang dengan penyimpanan table dan objek database lainnya.

• LOG Disimpan dalam file dengan extensi *.ldf. file ini berisi catatan transaksi, yaitu : mencatat modifikasi table (update), mencatat data baru (insert), mencatat penghapusan data (delete).

Database dapat mempunyai penyimpanan sekunder sebagai backup dalam file extensi *.ldf.

3 Manajemen User dan Akses Privileges Suatu database yang kompleks dapat diakses oleh banyak user dengan

batasan-batasan tertentu. Antara user yang satu dengan user yang lainnya dapat mempunyai tingkatan yang berbeda.

Salah satu alasan mengapa perlu adanya beberapa user dengan tingkat hak akses yang berbeda-beda adalah untuk keamanan data. Data-data yang penting dan sifatnya rahasia kadang tidak boleh diakses oleh user secara umum, hanya user tertentu saja yang boleh mengaksesnya. Dengan adanya manajemen user yang baik maka data tersebut dapat dijamin.

Beberapa ijin ajses yang dapat diberikan oleh suatu user pada user yang lain terlihat pada tabel berikut :

Ijin Akses Deskripsi

Page 7: sql

3

Select Ijin akses untuk membaca data.

Delete Ijin akses untuk menghapus data.

Insert Ijin akses untuk menulis atau memasukkan data baru.

Update Ijin akses untuk memodifikasi data.

Execute Ijin akses untuk mengeksekusi atau menjalankan prosedur tersimpan (stored procedure)

References Ijin akses untuk menciptakan tabel yang merferensikan pada tabel yang lain.

ALL Semua ijin akses yang telah disebutkan diatas, yaitu select, delete, update, insert, execute, fan references.

Dan daftar statemen ijin akses untuk membuat objek database yang baru terlihat pada daftar tabel berikut :

Statemen Deskripsi

Create Database Statemen untuk memberikan ijin akses pada user untuk membuat database.

Create Default Statemen untuk memberikan ijin akses pada user untuk membuat default database.

Create Function Statemen untuk memberikan ijin akses pada user untuk membuat fungsi.

Create Procedure

Statemen untuk memberikan ijin akses pada user untuk membuat prosedur.

Create Rule Statemen untuk memberikan ijin akses pada user untuk membuat rule.

Create Table Statemen untuk memberikan ijin akses pada user untuk membuat tabel.

Create View Statemen untuk memberikan ijin akses pada user untuk membuat view.

Backup Database

Statemen untuk memberikan ijin akses pada user untuk melakukan backup database.

Backup Log Statemen untuk memberikan ijin akses pada user untuk melakukan backup log database.

Tugas Pendahuluan Praktikum I 1. Jelaskan dengan singkat mengenai sistem database ! 2. Sebutkan sedikitnya 3 DBMS yang Anda kenal selain DBMS yang

disebutkan di modul ! 3. Bagaimana Ms. SQL Server mengimplementasikan database-nya ?

Page 8: sql

4

Jawaban Tugas Pendahuluan Praktikum I

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 9: sql

5

Langkah selanjutnya :

Ikuti langkah-langkah praktikum.

Langkah-langkah praktikum :

1. Pembuatan Database Pastikan SQL Server dalam keadaan running dengan cara melihat pada service manager.

Membangun database menggunakan Create Database Wizard 1. Buka SQL Server Enterprise Manager, dan pilih server mana yang

ingin Anda gunakan untuk membuat database. Untuk memilih server, mulai dengan meng-klik folder Ms. SQL Server. Klik folder SQL Server Group, dan kemudian klik nama server (local)(Windows NT) yang akan Anda gunakan. Dari menu tools, pilih Wizard.

Page 10: sql

6

2. Klik database, lalu klik ganda Create Database Wizard untuk mulai membuat database, atau klik Create Database Wizard, kemudian klik OK untuk melanjutkan.

3. Klik next untuk melanjutkan ke tampilan nama database dan spesifikasi lokasi. Ketikkan nama database yang ingin Anda buat dan path lokasi dimana Anda ingin menyimpan data file dan log file. Lokasi tersebut harus berisi valid drive dan folder yang telah ada pada local system Anda. Jika Anda klik tombol browse […] disebelah kanan dua kotak teks, Anda dapat mencari dan memilih foldernya. Setelah Anda memberi nama database dan lokasi ke path, klik next untuk melanjutkan.

Page 11: sql

7

4. Tampilan Name The Database File muncul. Pada kotak dialog ini Anda dapat mengetikkan nama dan initial size untuk masing-masing file database. Primary file database secara otomatis dibuat dan diberi nama dalam awalan. Anda dapat menyetujui nama itu atau mengetikkan yang berbeda. Primary data file berektensi *.mdf. Jika Anda telah memikirkan seberapa besar file database itu, ketik nilai untuk initial size sekarang. Bila sebaliknya, tinggalkan default size. Anda dapat memodifikasinya dikemudian hari menggunakan enterprise manager atau command ALTER DATABASE. Beberapa file yang Anda buat pada saat pertama, atau primary file, akan menjadi secondary file dan secara otomatis aan diberi ektensi *.ndf. semua file yang dibuat ini akan ditempatkan pada primary filegroup. Tidak ada option user-defined filegroup pada Create Database Wizard.

Page 12: sql

8

5. Tampilan Define The Database File Growth akan muncul. Secara umum, Anda harus memilih fasilitas Automatic file growth bila membutuhkan overhead. Bila sebaliknya, maka Anda perlu mengatur ukuran database secara manual sesuai kebutuhan. Anda dapat menspesifikasikan bagaimana database Anda seharusnya bertambah : Apakah menggunakan ukuran MB atau menggunakan ukuran persen dari ukuran sekarang. Klik next untuk melanjutkan.

Page 13: sql

9

6. Tampilan Name The Transaction Log Files muncul. Tampilan ini nampak sama dengan tampilan Name The Database Files, tapi yang ini untuk log file. Klik next untuk melanjutkan.

7. Tampilan Define The Transaction Log File Growth tampil. Tampilan ini terlihat sama dengan Define The Database File

Page 14: sql

10

Growth, tetapi ini untuk mendifinisikan option growth untuk log file. Klik next untuk melanjutkan.

8. Tampilan Completing The Create Database Wizard muncul. Lihat ulang informasi yang telah Anda spesifikasikan untuk database yang baru Anda buat. Jika Anda setuju, klik Finish untuk mengakhiri pembuatan database. Bila sebaliknya, klik Back dan lakukan perubahan lagi seperlunya.

9. Kotak dialog Create Database Wizard Message muncul untuk memberi informasi kepada Anda bahwa database Anda telah dibuat dengan sukses. Klik OK untuk menutup kotak dialog ini.

10. Kotak Message yang lain muncul, menanyakan apakah Anda akan membuat maintenance plan untuk database Anda yang baru. Pembuatan maintenance plan direkomendasikan untuk memastikan bahwa performance database Anda bagus, memback up secara tetap pada saat system failure, dan melakukan pengecekan pada saat tidak konsisten.

Membangun database menggunakan Enterprise Manager 1. Buka Enterprise manager. Pada jendela sebelah kiri, klik SQL

Server group yang berisi nama dari server yang Anda inginkan untuk membangun database, dan kemudian klik server itu. Klik kanan folder database dan pilih new database

2. Window Database Properties terbuka, dengan tab General aktif. Ketikkan nama database dalam kotak Name.

Page 15: sql

11

3. Klik tab Data Files. Enterprise manager secara otomatis akan membuat primary data filedengan nama database Anda seperti awalan dan dengan PRIMARY sebagai file group. Anda dapat mengubah nama, lokasi, dan ukuran primary file, tetapi Anda tidak dapat mengubah filegroup untuk primary data file. Ketikkan nama (logical name), lokasi (physical name), ukuran dan file group untuk masing-masing data file yang Anda buat. Untuk data file selain dari primary file, Anda dapat mengetikkan user-defined filegroup, dan filegroup akan dibuat untuk Anda.

Page 16: sql

12

Lokasi untuk masing-masing file ada pada default folder pada drive yang diinstall SQL Server. Anda dapat mengubah setting dengan mengetikkan path baru atau dengan menggunakan browse.

4. Dalam file properties pada bagian bawah, Anda dapat memilih option Automatic-grow file pada per-file basis. Pilih nama dari file yang ingin Anda set pilihan pertumbuhannya. Anda kemudian dapat menspesifikasikanpertumbuhan file itu dalam megabytes (dengan memilih in megabytes) atau percetage (dengan memilih By percent) dari free space yang ada dalam file. Anda juga dapat menspesifikasikan ukuran maksimum file dengan meng-klik Restrict File Growth dan memasukkan ukuran yang mendekati dalam megabytes, atau Anda dapat meniggalkan file size tanpa restrict dengan memilih unrestricted file growth. Anda dapat mengatur option tersebut pada masing-masing file. Anda juga dapat meninggalkan defaults dan mengesetnya di kemudian hari menggunakan window Enterprise Manager Database Properties. Jika Anda ingin menghapus file dari daftar, pilih nama dari file dan tekan tombol Delete.

5. Setelah selesai mengkonfigurasi semua data file, klik tab Transaction Log dalam window Database Properties untuk konfigurasi file transaction log. Log file dikonfigurasi dengan cara yang sama dengan data files, kecuali bahwa Anda tidak dapat

Page 17: sql

13

memilih filegroup untuk log files karena tidak termasuk pada beberapa filegroup. Ketikkan nama file(logical name), lokasi (physical name), dan initial size untuk log files atau file. Pilih option Atomatic-growth untuk log files seperti yang dijelaskan pada langkah 4.

Membangun database menggunakan command T-SQL (Query Analyzer) Untuk membuat sebuah database dengan T-SQL, diperlukan syntax sebagai berikut :

§ Tanpa parameter nilai-nilai optional

§ Dengan menggunakan parameter lengkap (dicontohkan pembuatan database dengan nama MyData yang berisi data file (MyData_root), satu secondary data file (My_Data1), yang sisanya dalam primary filegroup secara default, dan satu transaction log file (Log_Data1) )

CREATE DATABASE MyData

CREATE DATABASE MyData

ON

(NAME = MyData_root, ------Primary data file

FILENAME = ‘C:\Program Files\Microsoft SQL

Server\MSSQL\Data\mydataroot.mdf’,

SIZE=8MB,

MAXSIZE=9MB,

FILEGROWTH=100KB),

(NAME = MyData1, ------Secondary data file

FILENAME = ‘C:\Program Files\Microsoft SQL

Server\MSSQL\Data\mydata1.ndf’,

SIZE=1000MB,

MAXSIZE=1500MB,

FILEGROWTH=100MB)

LOG ON

Page 18: sql

14

Untuk menghapus sebuah database yang sudah dibuat dapat dilakukan dengan instruksi :

2. Manajemen User dan Akses Privileges Membuat User Baru

Di dalam SQL server yang berjalan di mesin windows NT atau Windows 2000 Family, user yang dapat ditambahkan ke dalam SQL server merupakan user sistem operasi. Di antara beberapa user dari sistem operasi tersebut, tidak semuanya menjadi user pada SQL Server. User sistem operasi yang belum menjadi user database server, ketika ingin menjadi user pada database server, perlu didaftar terlebih dahulu.

Sebelum melangkah membuat user baru pada database server, Anda akan diperkenalkan dulu dengan bagaimana menambahkan user baru pada sistem operasi Windows 2000. ikuti langkah-langkah berikut:

1. Buka control panel melalui menu start di bagian kiri taskbar, kemudian pilih setting dan pilih Control Panel. Windows Panel akan muncul.

2. Klik ganda pada ikon Users and Passwords sehingga muncul kotak dialog user and Passwords.

3. Pada kotak dialog tersebut, klik tombol Add … sehingga muncul kotak dialog Add New User. Isilah kotak edit pada field Username dengan ‘tamu’, fullname dengan ‘semua tamu’ dan description dengan ‘login untuk semua tamu’. Setelah selesai mengisi field-field tersebut, klik next untuk melanjutkan.

4. Kotak dialog permintaan password akan muncul. Pada kotak dialog ini ada field yang harus diisi, yaitu Password dan Confirm Password. Kedua field tersebut harus diisi dengan value yang sama. Sebagai contoh dalam pembahasan ini gunakan password ‘test’. Jika sudah, klik Next untuk melanjutkan.

5. Tampilan berikutnya adalah level akses dari user yang dibuat. Dalam hal ini ada tiga pilihan, yaitu Standard user, Restricted user, dan Other. Standard user berarti user dapat memodifikasi setting komputer dan menginstall program tetapi tidak dapat membaca file milik user lain bila tanpa ijin. Restric user berarti user dapat menjalankan komputer dan menyimpan dokumen tetapi user tidak dapat menginstall program dan mengubah sistem setting. Pilihan yang ketiga adalah Other. Dengan pilihan ini user dapat menjadi administrator, ORA DBA, atau yang lainnya. Pilih Standard user kemudian klik Finish.

6. Anda telah selesai membuat user baru untuk sistem operasi. Dalam windows User and Passwords terlihat ada satu user baru dengan nama tamu.

7. Klik OK untuk mengakhirinya.

DROP DATABASE MyData

Page 19: sql

15

Setelah selesai membuat user untuk sistem operasi Windows, selanjutnya Anda dapat membuat user untuk database server. Langkah untuk membuat user untuk database server. Langkah untuk membuat user baru pada SQL server adalah sebagai berikut :

1. Pada aplikasi Interprese Manager, kembangkan folder databases. 2. Setelah muncul semua database, kembangkan folder database

MyData. 3. Klik kanan objek user, kemudian klik New Database User. 4. Setelah kotak dialog Database User Properties muncul, klik

tombol drop down list dari field Login name. Pada list tersebut akan muncul beberapa user yang ada. Anda dapat memilih user tamu. Field User name akan otomatis terisi sendiri.

5. Pada bagian database Role membersip, anda akan masuk pada Public. Artinnya Anda sebagai pengguna user umum dimana user ini tidak mempunyai hak istimewa seperti melakukan administrasi terhadap database server, dan lain sebagainya.

6. Jika sudah selesai, Anda klik tombol OK. Terlihat pada Window Enterprise Manager, objek user akan bertambah satu user, yaitu user tamu.

Melakukan Login Untuk menjalankan Ms. SQL Server, user yang digunakan secara

otomatis menggunakan user yang sedang menggunakan sistem operasinya, jika SQL Server disetting berdasar Windows Authentication. Jika anda sedang login pada sistem operasi dengan menggunakan administrator maka ketika anda membuka aplikasi Enterprise Manager dari SQL Server secara otomatis akan melakukan login sebagai administrator.

Jika anda ingin melakukan login dengan user lain, anda dapat melakukan langkah-langkah berikut:

1. Pada window Enterprise Manager, klik objek database server. 2. Klik tombol New Login pada toolbar sehingga muncul kotak dialog SQL

Server Login Properties. 3. Pada Field Name, Anda dapat mengisi dengan nama user yang akan

melakukan login. 4. Pada bagian Authentication Anda dapat memilih apakah secara

Windows Authentication atau SQL Server Authentication. Jika Anda memilih Windows Authentication, pada bagian field Name anda dapat melakukan klik tombol bertanda .. untuk memilih usernya. Jika anda memilih SQL Server Autehntication Anda masukkan nama user dengan cara mengetikkannya. Field Password akan aktif. Anda dapat mengetikkan password dari user yang akan login. Pada bagian database anda dapat memilih pada database mana user tersebut aktif. Pada bagian ini Anda dapat mencoba memasukkan untuk user tamu. Jika sudah selesai, klik tombol OK.

Page 20: sql

16

5. Kotak dialog Confirm New Password akan muncul. Kotak dialog ini muncul karena ketika Anda membuat user baru pada SQL Server, Anda belum memasukkan password. Klik OK pada kotak dialog tersebut.

Anda telah selesai melakukan login dengan user tamu, tetapi mungkin anda akan menemukan beberapa pesan yang memberitahukannya bahwa user tersebut belum dapat mengakses database karena belum ada ijin akses terhadap data-datanya. Hal ini disebabkan karena user tamu belum diberi ijin untuk mengakses data pada database tersebut.

Memberikan Ijin Akses Seorang user yang telah membuat suatu objek database dapat

memberikan ijin akses kepada user yang lain. Statemen dalam T-SQL yang dapat digunakan untuk memberikan ijin akses adalah dengan statemen GRANT. Sintaks dari statemen GRANT secara lengkap adalah sebagai berikut:

Statement permissions:

Keterangan :

- GRANT adalah statamen untuk menspesifikasikan pemberian ijin akses. - ALL adalah menspesifikasikan bahwa semua ijin akses diberikan. - Statement adalah berisi statement ijin akses apa saja yang diberikan.

Statemen ini merupakan statemen ijin akses yang telah disebutkan pada pembahasan sebelumnya. Statemen yang lebih dari satu dipisahkan dengan tanda koma.

- TO adalah keyword untuk menspesifikasikan kepada siapa ijin akses tersebut diberikan.

- User_account adalah nama user yang diber ijin akses.

Ijin akses dapat diberikan menggunakan keyword ALL, jika semua ijin akses akan diberikan. Tetapi jika hanya beberapa statemen ijin akses saja, Anda dapat menyebutkan langsung statemen ijin akses tersebut.

GRANT { ALL | statement [,…n] }

To user_account {,…n}

Page 21: sql

1

Object permissions :

Keterangan :

- Privileges adalah keyword opsional yang dapat Anda sertakan pada SQL-92

- Permission adalah ijin akses yang diberikan. Daftar ijin akses telah dijelaskan pada bagian sebelumnya. Jika ijin akses yang diberikan lebih dari satu maka dipisahkan dengan tanda koma. Ijin akses ini disertai dengan nama-nama objek database yang diberikan. Objek database tersebut dapat berupa tabel, view, stored procedure, extended procedure, dan lain-lain.

- Column adalah nama-nama kolom yang diijinkan untuk diatas sesuai dengan ijin akses yang diberikan pada daftar ijin akses tersebut.

- Table adalah nama-nama tabel yang diijinkan untuk diakses. - View adalah nama-nama view yang diijinkan untuk diakses. - Stored procedure adalah nama-nama stored procedure yang diijinkan

untuk dieksekusi (dijalankan). - Extended procedure adalah nama-nama eksetended prosedur yang

diijinkan untuk dijalankan. - User defined function adalah nama-nama user defined function (fungsi)

yang diijinkan untuk dieksekusi. - WITH GRANT OPTION adalah untuk menspesifikasikan bahwa user

yang diberi ijin akses tersebut dapat memberikan ijin aksesnya kepada user yang lain.

- AS{group | Role } menspesifikasikan optional nama dari user account dalam database pada group atau role untuk mengeksekusi statemen GRANT. Pembahasan mengenai Role akan disampaikan pada bagian selanjutnya.

Untuk memahami bagaimana penggunaan sintaks di atas, anda akan mencoba beberapa contoh penggunaan dari statemen GRANT. Langkah pertama menjalankan SQL Query Analyser dan melakukan koneksi dengan

GRANT

{ ALL [ PRIVILEGEs] | permission [ ,…n]

}

{

[ ( column [ ,…n] ) ] ON { table |

View}

| ON { table | view } [ ( column [ ,…n

] ) ]

| ON {stored_procedure | extended_procedure

}

| ON { user_defined_function}

Page 22: sql

2

user sa. Setelah berhasil melakukan koneksi dan menjalankan SQL Query Analyser, selanjutnya anda lakukan koneksi dengan user tamu melalui menu File kemudian pilih Connect. Setelah anda melakukan koneksi dengan dua user tersebut, pada window SQL Query Analyser akan terdapat dua buah window SQL Editor,. Satu buah window untuk user sa dan satu buah lainnya untuk user tamu.

Setelah kedua window SQl Editor tersebut muncul, Anda dapat melakukan eksekusi pernyataan T-SQL untuk masing-masing user. Anda dapat mengecek apakah user tamu yang baru saja anda gunakan untuk berhubungan dengan database sudah dapat mengakses data pada database MyData atau belum dengan mengeksekusi statemen T-SQL berikut :

Ketika anda mengeksekusi pernyataan di atas, SQL Server akan menampilkan pesan error. Hal ini terjadi karena user tamu tidak mempunyai ijin akses terhadap tabel mata kuliah. Masukkan statemen berikut pada window SQL Editor user sa untuk memberikan ijin akses pada user tamu.

Setelah Anda mengeksekusi pernyataan diatas, kemudian anda mencoba mengeksekusi statemen SELECT untuk user tamu seperti statemen sebelumnya, maka SQL server akan mengumpulkan hasilnya.

Contoh diatas adalah contoh pemberian ijin akses dengan satu ijin akses. Anda dapat memberikan beberapa ijin akses sekaligus seperti yang telah disampaikan sebelumnya dengan menuliskannya dengan dipisahkan tanda koma. Statamen berikut adalah statemen untuk memberikan ijin akses SELECT dan UPDATE untuk tabel dosen.

USE MyData

GO

SELECT * FROM {nama_tabel}

USE MyData

GO

GRANT SELECT ON {nama_tabel} TO tamu

USE MyData

GO

GRANT SELECT,UPDATE ON {nama_tabel} TO tamu

Page 23: sql

3

Setelah mengeksekusi statemen dicatat, user tamu akan mempunyai ijin akses untuk melihat dan memodifikasi data pada tabel dosen. Untuk mencoba hasil eksekusi dari statemen di atas, Anda dapat melakukan retrieving data dengan statemen SELECT berikut:

Selanjutnya Anda juga dapat melakukan modifikasi data pada table tersebut dengan menggunakan user tamu.

Contoh-contoh diatas adalah contoh penggunaan statetemen GRANT untuk memberikan ijin akses. Selaint itu, anda juga dapat memberikan ijin akses statemen, Contoh pemberian ijin akses statemen adalah pada pernyataan T-SQL berikut :

Dengan mengeksekusi pernyataan T-SQL di atas maka user tamu akan mempunyai ijin untuk membuat tabel pada database MyData. Melalui window SQL editor user tamu Anda dapat menjalankan statemen berikut untuk membuat table sample kemudian mengisi tabel tersebut dengan beberapa kata.

Setelah menjalankan statemen diatas, Anda dapat memasukkan data dengan menggunakan statemen insert. Eksekusi statemen berikut untuk memasukkan data.

USE MyData

GO

SELECT * FROM {nama_tabel}

Use MyData

GO

GRANT CREATE TABLE TO tamu

USE MyData

GO

CREATE TABLE contoh( no int, nama varchar(10))

USE MyData

GO

INSERT INTO contoh VALUES (1, ‘Contoh 1’)

INSERT INTO contoh VALUES (2, ‘Contoh 2’)

Page 24: sql

4

Setelah anda selesai mengeksekusi pernyataaan-pernyataan di atas, Anda dapat mengecek hasilnya dengan menjalankan statemen SELECT.

Mencabut Ijin Akses

Ijin akses yang telah diberikan oleh seseorang uses kepada user yang lain dapat dicabut kembali oleh user yang memberikan hak akses. Kapan saja user tersebut ingin mencabutnya maka dengan statemen REVOKE ijin akses tersebut dapat dicabut tanpa harus konfirmasi dengan user yang bersangkutan. Statemen REVOKE menggunakan sintaks yang sama dengan statemen GRANT. Perbedaannya adalah kalau pada statemen GRANT menggunakan keyword TO sedanggkan pada statemen REVOKE menggunakan keyword FROM.

Pada bagian sebelumnya anda telah memberikan ijin akses SELECT pada tabel mata kulliah untuk user tamu. Statemen berikut adalah statemen untuk mencabut ijin akses tersebut.

Setelah ini anda mengeksekusi statemen di atas, maka ijin akses SELECT pada tabel mata kuliah untuk user tamu telah dicabut. Untuk membuktikannya anda dapat menjalankan statemen SELECT pada table mata kuliah menggunakan user tamu. SQL server akan menampilkan pesan error seperti pada gambar berikut :

Dengan cara yang sama anda dapat menggunakan statemen REVOKE untuk mencabut ijin akses statemen. Contoh berikut adalah contoh bagaimana mencabut ijin akses statemen CREATE TABLE dari user tamu.

Setelah statemen dia atas dieksekusi, user tamu tidak bisa lagi membuat tabel pada database MyData. Jika ini dilakukan maka SQL Server akan menampilkan pesan error yang sama.

USE MyData

GO

REVOKE SELECT ON {nama_tabel} FROM tamu

USE MyData

GO

REVOKE CREATE TABLE FROM tamu

Page 25: sql

5

Soal Praktikum I 1. Buat database menggunakan T-SQL dengan parameter lengkap ! (Ketentuan

bebas).

2. Apa perbedaan antara GRANT dan REVOKE ?

Jawaban Soal Praktikum I

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 26: sql

6

Tugas Praktikum I Dari query Analyzer buat script untuk membangun sebuah database yang bernama created.sql dengan ketentuan sebagai berikut :

• Nama database : STIKI_XXX • Nama Primary data : STIKI_XXX_DATA • Ukuran awal = 20 Mb • Ukuran maksimal = 50 Mb • Ukuran perkembangan file = 2 Mb • Nama log : STIKI_XXX_LOG dengan nilai – nilai parameter sama

dengan diatas. Catatan : ( X = tiga digit terakhir nrp )

Jawaban Tugas Praktikum I

NRP

NAMA

HARI/JAM PRAKTIKUM

KELAS

Page 27: sql

7

PPrraakkttiikkuumm

2

TABEL

Tujuan :

1. Praktikan memahami struktur pembuatan tabel. 2. Praktikan mampu membuat tabel. 3. Praktikan dapat memasukkan data ke dalam tabel.

Persiapan :

1. Baca buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server 2000, khususnya mengenai tabel.

2. Modul praktikum II.

Pekerjaan :

1. Kerjakan dan selesaikan semua tugas dan soal pada praktikum II di lembar jawaban yang sudah disediakan di modul.

2. Selesaikan Tugas Pendahuluan praktikum II, kemudian lanjutkan dengan mengerjakan langkah-langkah praktikum pada modul yang telah disiapkan.

3. Kerjakan Soal Praktikum II yang telah disediakan di modul, setelah selesai mengerjakan langkah-langkah praktikum.

4. Kerjakan Tugas Praktikum II sebagai latihan dirumah.

Hasil :

1. Kumpulkan modul praktikum Anda yang berisi jawaban Tugas Pendahuluan dan jawaban Soal Praktikum I sesuai dengan pertanyaan yang ada.

2. Tunjuk dan kumpulkan modul praktikum Anda yang berisi hasil pekerjaan Tugas Praktikum I kepada asisten pada pertemuan berikutnya.

Landasan Materi :

1. Data Definition Language (DDL)

Page 28: sql

8

Tabel dalam database adalah komponen utama yang membentuk database

itu sendiri. Baris(row) dan kolom (column) mengindikasikan data (record).Cara

untuk mengatur dan memanipulasi data pada database dilakukan dengan

bantuan instruksi SQL seperti SELECT, INSERT, UPDATE, DELETE. Instruksi

untuk membuat, mengubah, dan menghapus table dilakukan melalui DDL

yaitu dengan CREATE TABLE, ALTER TABLE, DROP TABLE

Pada contoh dibawah ini adalah sebuah table Mahasiswa STIKI Malang

dengan bentuk sebagai berikut :

Tabel : Mahasiswa

NR

P

Nama Jenis kelamin Alamat Kota Propinsi Telpon

Setiap kolom mempunyai nilai yang terkait dengan tipe data tertentu.

Himpunan yang berupa nilai kolom yang valid atau dapat diterima (acceptable)

disebut sebagai DOMAIN.

Nilai kolom diluar domain tersebut dianggap sebagai pelangggaran atas

integritas data. Usaha untuk mengelompokkkan nilai dalam himpunan yang

berlaku disebut dengan CONSTRAINT atau batasan nilai.

2. Tipe Data

Adapun tipe yang banyak digunakan pada Ms.SQL Server adalah :

Page 29: sql

9

char(n)

: Mendefinisikan string sepanjang n karakter. Bila n tidak

didefinisikan maka panjang karakter adalah 1.

varchar(n) : Mendefinisikan string sepanjang variabel n.

binnary(n) : Untuk menyimpan bit pattern seperti heksadecimal. Contoh :

0x0fa9008e

datetime

: Mendefinisikan tanggal, menyimpan tahun, bulan, hari, jam, menit,

detik dan seperseribu detik (milliseconds). Nilai tanggal sampai

dengan 31 desember 9999.

text : Menyimpan teks sampai dengan 2 GB. Text disebut juga dengan

binary large objects (BLOBs)

image : Mendefinisikan binary data untuk menyimpan image seperti GIF,

JPG, TIFF, dll.

money : Bilangan pecahan dengan 4 angka dibelakang koma. Digunakan

untuk perhitungan moneter.

smallint : Sama dengan int, membutuhkan 50% memory yang ditempati int.

int : Mendefinisikan integer, bilangan bulat yang menampung angka

sebanyak 4 byte.

float(n) : Mendefinisikan angka pecahan (floating point). Nilai n adalah

jumlah angka yang dapat ditampung . sysname

real(n) : sama dengan float namun menempati memory 50% dari float.

smalldatetime : sama dengan datetime hanya dengan presisi lebih kecil dimana satuan

waktu terkecil adalah menit dan nilai tanggal sampai dengan 6 juni

2079.

numeric(n,p) : Mendefinisikan angka pecahan baik fixed desimal ataupun floating

point. Nilai n adalah jumlah bytes total dan p adalah presisi angka

dibelakang koma. Numeric analog dengan DECIMAL(n,p).

Page 30: sql

10

3. Unicode Charakter String Unicode adalah karakter international yang menampung 16 bit per karakter. Unicode digunakan oleh bahasa non

latin, misalnya Jepang, Jerman, Thai, dll.

nchar : Unicode karakter maksimum 4.000 karakter.

nvarchar : Unicode karakter dengan data variable maksimum 4.000 karakter. Sysname adalah contoh tipe data yang

didefinisikan sebagai synonym dari nvarchar(128) dan digunakan untuk referensi ke nama object database.

ntext : Unicode texts dengan panjang dua pangkat tigapuluh

(1.073.741.823)karakter.

Untuk dapat melihat semua tipe data yang ada dalam Ms.SQL Server adalah dengan

menggunakan perintah stored procedure sp_datatype_info.

4. Mendefinisikan tipe data baru

Tipe data dapat dibangun dari tipe data yang sudah ada.

Syntax secara umum untuk membuat tipe data baru :

Syntax secara umum untuk menghapus tipe data baru :

Kunci kata NONULL atau NULL dapat ditambahkan dalam mendefinisikan tipe

data.

Contoh :

SP_ADDTYPE alamat,'varchar(9)',nonull

USE nama_database

SP_ADDTYPE nama_tipe_data_baru,tipe_data_SQL

USE nama_database

SP_DROPTYPE nama_tipe_data_baru

Page 31: sql

11

Alur komunikasi data antara user dengan database menggunakan SQL

Dalam membuat sebuah tabel dan kolom ada beberapa aturan :

1. Nama tabel dan kolom mempunyai panjang karakter 1-30 dan karakter

pertama harus huruf, karakter berikutnya boleh gabungan huruf, garis

bawah dan angka dan tidak diperbolehkan mengandung spasi.

2. Tidak mengandung Reserved word yang ada pada SQL (contoh:select, where,

create, dll).

3. Dalam satu user tidak boleh mempunyai nama tabel yang sama, tetapi

dalam tabel yang berbeda boleh memiliki nama kolom yang sama.

4. Tidak bersifat case sensitive.

Perintah perintah yang berhubungan dengan tabel :

INSTRUKSI

CREATE TABLE

:

KETERANGAN

Membuat tabel

SP_COLUMN : Memeriksa struktur suatu tabel

ALTER TABLE : Mengubah struktur tabel

DROP TABLE : Menghapus tabel

SELECT : Memilih query tabel

INSERT : Menyisipkan baris data ke tabel

UPDATE : Mengubah data pada tabel

DELETE : Menghapus data pada suatu table

Page 32: sql

12

5. Membuat Tabel

Syntax:

Batasan (constraint) = Yang mengikat atribut apakah sebagai primary Key, Fpreign

Key, Unique, Not Null, dll.

6. Melihat Struktur Tabel

Syntax:

7. Memodifikasi dan menambah Field pada Tabel

Untuk memodifikasi sebuah field pada tabel , syntax:

Untuk menambah sebuah field pada tabel , syntax:

CREATE TABLE nama_tabel(nama_filed1 tipedata batasan, nama_filed2 tipedata batasan,……..)

sp_columns Nama tabel;

ALTER TABLE Nama_tabel ALTER COLUMN Nama_Field tipe_data(panjang) constraint

ALTER TABLE Nama_tabel ADD Nama_Field_baru tipe_data(panjang) constraint

Page 33: sql

13

8. Menghapus Tabel

Syntax:

9. INTEGRITAS DATA

Integritas data adalah konsistensi dan kebenaran data yang disimpan. Antara

kehidupan nyata dan nilai dari data harus dilindungi oleh system, agar mempunyai arti

yang sesuai.

Integritas data tetap dijaga melalui beberapa cara, antara lain :

- Validasi field secara individual

- Verifikasi satu field melalui field yang lainnya

- Validasi data dari satu table ke table yang lainnya.

- Verifikasi bahwa transaksi berjalan secara sukses dari awal hingga akhir

Beberapa jenis integritas data

9.1 Integritas Entitas

Dalam tabel setiap baris harus mempunyai identitas yang unik yang disebut

dengan primary key. Hubungan antara primary key dan foreign key menyatakan

apakah sebuah baris table dapat diubah atau di hapus.

Batasan :

- PRIMARY KEY

- UNIQUE KEY

- UNIQUE INDEX

- IDENTITY

9.2 Integritas Domain

DROP TABLE Nama_tabel;

Page 34: sql

14

Menyatakan bahwa nilai data sesuai dengan kenyataannya. System dalam hal ini

melakukan CHECK sesuai dengan aturan (rule)yang berlaku.

Batasan dan implementasi :

- DEFAULT

- CHECK

- FOREIGN KEY

- Tipe data, default, rules

9.3 Integritas Referensial

Menyatakan relasi antar table bahwa hubungan foreign key dengan primary key.

Sebuah foreign key tidak dapat dimasukkan kedalam sebuah table bila primary key tidak

atau belum ada.

Batasan dan implementasi :

- CHECK

- FOREIGN KEY

- TRIGGERS DAN STORE PROCEDURE

9.4 Integritas melalui aturan yang didefinisikan sendiri

Sesuai dengan aturan logika dan bisnis yang ada maka pemakai dapat menetapkan

batasan dan aturan dari data yang disimpan.

Batasan dan implementasi :

- Batasan melalui table dan kolom pada saat pembuatan table.

- FOREIGN KEY

- TRIGGERS DAN STORE PROCEDURE

Sekarang akan dibahas constraint yang ada dalam Ms.SQL Server beserta contoh

penggunaannya.

Page 35: sql

15

10. PRIMARY KEY

Primary Key disebut sebagai constraint untuk menjaga integritas data, yaitu sebuah

primary key tidak boleh mempunyai duplikat dan otomatis tidak boleh kosong. Secara

umum syntax untuk membuat sebuah primary key adalah:

Atau jika primary key terdiri atas banyak kolom (multiple column), maka constraint

dapat dibuat sebagai berikut:

11. NOT NULL

Jika sebuat kolom pada tabel tidak boleh kosong maka constraint NOT NULL harus

diberikan.

12. UNIQUE

UNIQUE digunakan untuk menjamin bahwa nilai kolom adalah tunggal tidak

mempunyai duplikat. Primary key dan unique keduanya adalah kunci kata yang

mempunyai arti sama.

Ms.SQL Server mengijinkan field dengan constraint unique untuk mempunyai nilai

NULL. Bila satu kolom mempunyai nilai NULL, maka nilai NULL tidak boleh muncul

lagi. Primary key sebaliknya tidak boleh kosong karena primary key secara implicit

adalah NOT NULL.

CREATE TABLE Nama_Tabel (Nama_Field Tipedata CONSTRAINT

pk_Namatabel PRIMARY KEY, … )

CREATE TABLE NamaTabel(NamaField1 TipeData1, NamaField2

TipeData2, NamaField3 TipeData3, NamaField4 TipeData4, NamaField5

TipeData5, NamaField6 TipeData6, NamaField7 TipeData7, CONSTRAINT

pk_NamaTabel PRIMARY KEY (NamaField3, NamaField2, NamaField7) )

Page 36: sql

16

13. CHECK

CHECK digunakan untuk menjamin bahwa nilai kolom dalah dalam ruang nilai

tertentu. Misalnya nilai mata kuliah dibatasi tidak boleh melebihi nilai 100.

Operator logika seperti AND, OR, dan NOT dapat disertakan dalam pembuatan

batasan ini.

14. FOREIGN KEY

FOREIGN KEY adalah kolom pada sebuah tabel yang menunjukkan bahwa kolom

tersebut adalah primary key pada tabel lain.

Tabel Mahasiswa

NRP Nama JK Alamat Kota Propinsi Telpon

98111761 Aan

Isnaini

Jl.Raya Sepanjang

80 Gondanglegi

Malang Jatim 0341877769

Tabel Mata_kuliah

Kode_mata_kuliah Nama_Kuliah SKS

TKK-04 Sistem Database 3

Tabel ambil_kuliah ForeignKey

Kode_mata_kuliah NRP Nilai_Uts Nilai_Uas Grade

TKK-04 98111761 90 98 A

Pada sekenario di atas, record (TKK-04,98111761) pada tabel ambil_kuliah tidak dapat

dihapus karena referensi dari TKK-04 (filed kode_mata_kuliah ditabel mata_kuliah),

98111761( field nrp di tabelmahasiswa) masih ada.

Penulisan constraint foreignkey adalah :

CONSTRAINT fk_nama_constraint FOREIGN KEY field REFERENCES

nama_tabel(field)

Page 37: sql

17

Foreign key harus menunjuk ke primary key atau unique pada tabel lain.

15. DEFAULT

Nilai default sebuah kolom dapat disuplai oleh system, jika pemakai tidak memberikan

nilai pada field tersebut. DEFAULT tidak berlaku untuk kolom dengan tipe data

timestamp atau field yang mempunyai property IDENTITY.

16. IDENTITY

IDENTITY merupakan property sebuah field, yaitu system menciptakan nomor urut

secara otomatis pada setiap memasukkan record baru.

Penggunaan:

Setiap terjadi INSERT, maka kolom akan mendapatkan nomor urut, yang dimulai dari

No_awal, dan setiap record berikutnya ditambahkan nilai inkremen (default adalah 1).

CREATE TABLE pendaftar( no_daftar int IDENTITY(100,2), nama char(20))

Pada awalnya no_daftar adalah 100. Untuk setiap record baru berikutnya, no_daftar

akan bernilai 102, 104, 106, dan seterusnya.

NamaKolom Tipe IDENTITY(No_awal, incremen)

Page 38: sql

18

17. Drop Constraint

DROP digunakan untuk menghapus constraint yang ada.

Contoh:

18. Mengisi data pada Tabel

Syntax:

19. Meng-copy data dari Tabel lain

Suatu kolom pada sebuah tabel dapat diisi dengan data yang sama dengan

kolom tabel lain dengan syarat type data dan panjang field kedua table tersebut

sama. Syntax:

Jika 2 buah tabel mempunyai struktur yang sama maka syntax di atas dapat

dipersingkat menjadi :

ALTER TABLE nama_tabel DROP fk_nama_constraint

INSERT INTO Nama_tabel (Nama_Field1, Nama_Field2,

Nama_Field3)VALUES (data1, data2,data3);

INSERT INTO Nama_tabel_tujuan (Field1, Field2, Field3) SELECT

field_sumber1, field_sumber2, field_sumber3) FROM Nama_tabel_sumber;

INSERT INTO Tabel_tujuan SELECT *FROM Tabel_asal ;

Page 39: sql

19

Tugas Pendahuluan Praktikum II

1. Jelaskan dengan singkat mengenai table, field dan record !

2. Sebut dan jelaskan dengan singkat tentang jenis integritas data !

Jawaban Tugas Pendahuluan Praktikum II

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 40: sql

20

LANGKAH-LANGKAH PRAKTIKUM:

1. Buat tabel berikut melalui QUERY ANALYZER, lengkap dengan constraint:

Mahasiswa_XXX(Nrp, nama, jk, alamat, kota, propinsi, telpon)

Nrp char 10

Nama varchar 30

Jk char 1

Alamat varchar 46

Kota char 22

Propinsi char 25

Telpon varchar 15

Perhatikan:

- Nrp merupakan primary key

- Nama, Alamat tidak boleh kosong

- Kota bila tidak disisi maka akan otomatis diisi dengan ‘MALANG ‘

- Jk mempunyai nilai ‘L’ atau ‘P’

2. Buat tabel Mata_kuliah_XXX

Mata_Kuliah (kode_mata_kuliah, Nama_kuliah, Sks)

kode_mata_kuliah char 8

Nama_kuliah varchar 16

Sks int

Perhatikan:

- Kode_mata_kuliah merupakan primary key

Page 41: sql

21

- Nama_kuliah dan Sks tidak boleh kosong

3. Buat tabel ambil_kuliah_XXX

Ambil_Kuliah (kode_mata_kuliah, Nrp, Nilai_Uts, Nilai_Uts,Grade)

kode_mata_kuliah char 8

Nrp char 10

Nilai_Uts int

Nilai_Uas int

Grade Char 1

Perhatikan:

- Kode_mata_kuliah merupakan Foreign key yang mengacu pada tabel

Mata_Kuliah_XXX (field kode_ mata_kuliah).

- Nrp merupakan Foreign key yang mengacu pada tabel Mahasiswa_XXX (field

Nrp).

- Nilai_Uts, Nilai_Uas tidak boleh melebihi 100

4. Modifikasi field Telpon pada tabel Mahasiswa_XXX sehingga type-nya

menjadi char.

5. Isi satu record pada Data mahasiswa yang telah dibuat. Perintah SQL nya

adalah :

INSERT INTO Mahasiswa_XXX (NRP,Nama,Jk,Alamat,Kota,Propinsi,Telpon)

VALUES (‘98111761’,’Aan Isnaini’,’L’,’Jl. Raya Sepanjang 80 Gondanglegi’,’

Malang’,Jatim’,’877769’)

5. Tambahkan data di bawah ini:

Page 42: sql

22

NRP NAMA JK ALAMAT

KOTA PROPINSI TELFON

99110800 Agnes

Monica

Jl. Karya Timur

280

Jakarta DKI

Jakarta

0216452444

97110211 M. Yoesni Jl. Sunan Giri

V/16

Gresik Jatim 031772739

98111761 Antoni

Stevens

Jl. Melati XI/234 Lubuk

Linggau

Sumatra 0561567448

6. Tampilkan data dari tabel Mahasiswa_XXX

Perintah SQL:

SELECT * FROM Mahasiswa_XXX;

Soal Praktikum II

1. Apa perbedaan antara Primary Key dan Foreign Key ?.

2. Apa persamaan antara Primary Key dan keyword UNIQUE ?

Page 43: sql

23

Jawaban Soal Praktikum II

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 44: sql

24

Tugas Praktikum II

1. Buat tabel-tabel dari sebuah perpustakaan dengan tipe data dan aturan-

aturannya:

Tabel Anggota

Nama Field Type Panjang Aturan

No_Anggot

a

Char 8 Not Null, Unique, Primary

Key

Nama Varchar2 20 Not Null

Alamat Varchar2 30 Can Be Null, Default =

‘Malang’

Telepon Number 10 Can Be Null

Tabel Buku

Nama Field Type Panjang Aturan

No_Buku Char 8 Not Null, Unique, Primary Key

Judul Varchar2 20 Not Null

Pengarang Varchar2 30 Can Be Null

Penerbit Varchar2 20 Can Be Null

Jumlah Number 10 Not Null

2. Isi data minimal 3 data. (Sesuaikan dengan soal no. 5 dan 6)

3. Jelaskan apa yang dimaksud dengan primary key dan foreign key. Jelaskan

hubungan keduanya.

4. Tampilkan semua data dari tabel anggota dan tabel buku.

5. Tampilkan data anggota yang beralamat di Surabaya.

6. Tampilkan data anggota yang ada di kota Malang dan Situbondo.

Page 45: sql

25

Jawaban Tugas Praktikum II

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 46: sql

26

PPrraakkttiikkuumm

3

MEMANIPULASI DATA

Tujuan :

1. Praktikan mampu untuk memanipulasi data dan mampu mencari data (Retrieval)

Persiapan :

1. Baca buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server 2000, khususnya mengenai transact-sql.

2. Modul praktikum III.

Pekerjaan :

1. Kerjakan dan selesaikan semua tugas dan soal pada praktikum III di lembar jawaban yang sudah disediakan di modul.

2. Selesaikan Tugas Pendahuluan praktikum III, kemudian lanjutkan dengan mengerjakan langkah-langkah praktikum pada modul yang telah disiapkan.

3. Kerjakan Soal Praktikum III yang telah disediakan di modul, setelah selesai mengerjakan langkah-langkah praktikum.

4. Kerjakan Tugas Praktikum III sebagai latihan dirumah.

Hasil :

1. Kumpulkan modul praktikum Anda yang berisi jawaban Tugas Pendahuluan dan jawaban Soal Praktikum III sesuai dengan pertanyaan yang ada.

2. Tunjuk dan kumpulkan modul praktikum Anda yang berisi hasil pekerjaan Tugas Praktikum III kepada asisten pada pertemuan berikutnya.

Landasan Materi :

1. Mengupdate data pada Tabel

Syntax:

Page 47: sql

27

Contoh :

Merubah data mahasiswa dengan NRP ‘98111761’ pada Mahasiswa_XXX

dengan data baru

UPDATE Mahasiswa_XXX SET Alamat=’Jl. Candi IIIB

No.111’,kota=’Malang’,Telpon=’0341567448’ WHERE

nrp=’98111761’

Pemanfaatan operasi aritmatika untuk merubah data. Misalnya Sebuah

perusahaaan akan menaikkan gaji pegawainya sampai 20 %.

2. Menghapus data pada Tabel

Syntax:

Dalam menghapus dan update bisa dilakukan untuk menghapus banyak

baris atau menghapus semua isi dari tabel tergantung dari kondisi yang

diberikan.

Contoh :

Hapus Isi semua record pada Data mahasiswa yang telah dibuat dimana

Mahasiswa dengan alamat yang tidak diisi<nilai=default> akan dihapus.

Perintah SQL nya adalah :

DELETE FROM Mahasiswa_XXX WHERE Alamat=’Malang’

UPDATE Nama_tabel SET Field1=Data1,Field2=Data2,Field3=Data3 WHERE

kondisi1,kondisi2

UPDATE Data_Gaji SET gaji=gaji*1.2

DELETE FROM Nama_tabel WHERE kondisi1

Page 48: sql

28

3. Mencari Data / Retrieval (SELECT)

Select adalah instruksi yang paling banyak digunakan dalam SQL. SELECT

memilih spesifik kolom dari satu atau beberapa tabel.

Secara umum bentuk SELECT adalah:

Bila kunci kata “WHERE” tidak diberikan, maka yang diseleksi adalah seluruh

record dalam tabel. Predikat menyatakan kualifikasi dari record yang ditemukan,

bila memenuhi syarat, maka record tersebut akan dipilih.

Select * adalah karakter khusus (wild character) yang menyatakan bahwa kolom

yang dipilih adalah seluruh kolom yang ada pada tabel tersebut.

mempunyai arti sama dengan:

Contoh berikut menampilkan Nama_kuliah dan Sks:

SELECT Nama_kuliah, Sks FROM Mata_kuliah_XXX

4. Predikat dengan WHERE

Dengan menggunakan WHERE, maka seleksi dilakukan tidak pada seluruh

record, melainkan hanya pada record yang memenuhi syarat.

Bentuk klausa WHERE adalah:

Beberapa operator yang berlaku yaitu:

= sama dengan

SELECT Kolom1, kolom2, … FROM NamaTabel WHERE predikat

SELECT * FROM mata_kuliah_XXX

SELECT Kode_mata_kuliah, Nama_Kuliah, Sks FROM Mata_Kuliah_XXX

WHERE Kolom <operator> <nilai>

Page 49: sql

29

<> tidak sama dengan

< lebih kecil

<= lebih kecil atau sama

> lebih besar

>= lebih besar atau sama

Contoh :

Tampilkan data kuliah yang jumlah sks nya dibawah 3

SELECT * FROM Mata_kuliah WHERE sks < 3

5. AND, OR, dan NOT

Untuk menggabungkan lebih dari satu kondisi, diperlukan logical AND dan

OR. Sedangkan untuk negasi, diperlukan NOT

Contoh :

Tampilkan Mahasiswa laki-laki yang berasal dari Malang

SELECT Nama, Alamat, Kota FROM Mahasiswa_XXX WHERE

kota=‘Malang’ AND jk=‘L’

Prioritas AND lebih kuat dari OR, sehingga kondisi OR harus dipisahkan

dalam kurung sebelum AND.

6. BETWEEN dan NOT BETWEEN

BETWEEN menyederhanakan pencarian “antara” (range) seperti berikut:

Cari Nama_kuliah yang mempunyai sks antara 1 sampai 3. Dengan menggunakan

BETWEEN maka bentuk query adalah :

Contoh :

Cari Nama_kuliah yang jumlah Sks nya tidak diantara 1 sampai 3 jam

SELECT Kolom1, Kolom2 FROM tabel WHERE kolom BETWEEN nilai1 AND

nilai2

Page 50: sql

30

SELECT * FROM kursus WHERE JumlahJam NOT BETWEEN 30

AND 40

7. LIKE & NOT LIKE

Umumnya LIKE digunakan untuk permintaan yang mencari suatu teks

berdasarkan prefix (kata depan), sufix (kata akhir) atau kata tengah.

Contoh :

Cari Mahasiswa yang bertempat tinggal di kota “Gresik”

SELECT nama, alamat, kota FROM Mahasiswa_XXX WHERE kota

LIKE ‘Gresik’

Cari Mahasiswa yang tempat tinggalnya dimulai dengan ‘B’

SELECT nama, alamat, kota FROM Mahasiswa_XXX WHERE kota

LIKE ‘G%’

Perhatikan bahwa tanda % menyerupai “wild character” yang bisa di variasi dalam

menggunakannya. tanda % adalah terdiri dari 0,1 atau beberapa karakter, maka

tanda _ (under score/garis bawah) merepresentasikan persis satu karakter.

NOT LIKE digunakan sebagai negasi misalnya dengan pertanyaan

Contoh :

Cari Mahasiswa yang alamat rumahnya tidak dimulai dengan “Jl.”

SELECT nama, alamat, kota FROM Mahasiswa_XXX WHERE

alamat NOT LIKE ‘%Jl%’

SELECT Kolom1, Kolom2, .. .. FROM NamaTabel WHERE Kolom LIKE nilai

Page 51: sql

31

8. IN & NOT IN

IN digunakan untuk mencari nilai dalam satu kelompok nilai (daftar/list). Nilai

dalam daftar terdiri atas satu atau lebih.

Contoh :

Cari perserta yang bertempat tinggal di kota “Malang” dan “Jakarta”

SELECT nama, alamat, kota FROM Mahasiswa_XXX WHERE kota

IN ('Malang','Jakarta')

Bila di negatifkan pertanyaan tersebut, maka hasilnya adalah :

SELECT nama, alamat, kota FROM peserta WHERE kota NOT IN

('Malang','Jakarta')

9. IS NULL & IS NOT NULL

NULL adalah nilai yang belum diisi. NULL tidak identik dengan spasi(blank).

10. Tampilan Tersusun (Sortir)

Tampilan dari hasil SELECT dapat di susun (sort) menurut satu atau beberapa

kolom.

Bila kunci kata where tidak diberikan, maka seluruh record dalam tabel akan

ditampilkan.

Contoh : Tampilkan seluruh mahasiswa menurut abjad

SELECT * FROM Mahasiswa_XXX ORDER BY inisial

SELECT Kolom1,Kolom2,… FROM namatabel WHERE Kolom IN

SELECT Kolom1,Kolom2,… FROM namatabel WHERE predikat ORDER BY

Kolom

Page 52: sql

32

Susunan dapat diatur dari A ke Z (ASCending)atau dari Z ke A (DESCending).

Defaultnya adalah ASC.

Untuk menyususn secara terbalik adalah :

SELECT * FROM Mahasiswa_XXX ORDER BY inisial DESC

11. DISTINCT

DISTINCT menghilangkan nilai ganda, sehinggga membuatnya menjadi

tunggal. Hal ini dilakukan dengan mengeliminasi nilai yang sama.

Contoh : Berasal dari kota mana saja mahasiswa yang ada ?

SELECT kota FROM mahasiswa_XXX

untuk menghilangkan duplikasi pada tampilan, maka digunakan kunci kata

DISTINCT

SELECT DISTINCT kota FROM mahasiswa_XXX

Tugas Pendahuluan Praktikum III

1. Sebut dan jelaskan perintah yang digunankan untuk memanipulasi data !

2. Sebut dan jelaskan perintah yang digunankan untuk mencari data (Retrival)

!

Page 53: sql

33

Jawaban Tugas Pendahuluan Praktikum III

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 54: sql

34

Langkah selanjutnya :

Ikuti langkah-langkah praktikum.

Langkah-langkah praktikum :

Agar anda dapat lebih memahami tentang manipulasi data ikutilah

langkah - langkah berikut ini :

a) Aktifkan Tools Query Analyzer

b) Update semua data mahasiswa yang beralamat di Malang sehingga

alamatnya berubah menjadi ’Jl.Raya tidar 100 Malang’ dan nomor

telfonnya menjadi ‘0341567448’

c) Isikan data berikut pada tabel Mata_Kuliah_XXX yang telah anda

buat pada praktikum II

KODE_mata_kuliah NAMA_KULIAH SKS

TKD1113 Fisika Dasar 3

TKD1111 Manajemen Umum 2

TKD1224 Matematika Diskrit 3

TKK1248 Praktikum Visual Basic 1

TKK1247 Tugas Akhir 6

TKK1249 Sistem Berkas 4

Update kolom SKS, sehingga jumlah SKS menjadi 2 kalinya

d) isi data pada tabel ambil_kuliah :

Kode_mata

_kuliah

NRP Nila

i_Ut

s

Nilai_

Uas

Gr

ad

e

TKD1113 98311256 60 60 C

Page 55: sql

35

TKD1111 98311262 75 80 B

TKD1224 98111701 89 98 A

TKK1249 98111668 57 61 C

TKK1248 98311386 40 55 D

e) Lihat daftar mahasiswa wanita yang berasal bukan dari Malang

f) Cari nama mahasiswa yang namanya dimuali dengan huruf ‘D’, huruf

kedua tidak di ketahui, huruf ketiga adalah ‘D’ dan huruf selanjutnya tidak

diketahuai

g) Cari nama mahasiswa yang namanya dimulai dengan huruf ‘F’, huruf kedua

tidak di ketahui, huruf kelima adalah ‘i’ dan huruf selanjutnya tidak

diketahuai

h) Tampilkan seluruh Mahasiswa yang tidak lulus

i) Tampilkan mahasiswa yang punya nilai ‘A’ dan bertempat tinggal di luar

Malang atau bondowoso (gunakan IN)

j) Susun daftar Mahasiswa menurut abjad, namun dibuat berdasarkan alamat

kota mereka

k) Tampilkan nama kota tersusun dari secara descending dari para mahasiswa

l) Tampilkan nilai mahasiswa dari yang paling besar ke yang paling

kecil,hilangkan duplikasi tampilan (untuk nrp yang sama).

Soal Praktikum III

1. Berikan kesimpulan tentang praktikum III !

Page 56: sql

36

Jawaban Soal Praktikum III

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 57: sql

37

Tugas Praktikum III

Buatlah suatu database untuk praktikum di STIKI Malang. Buat tabel-tabel

yang diperlukan dan isikan data minimal 5 data pada tabel master dan 10 data

pada tabel transaksi.

Jawaban Tugas Praktikum III

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 58: sql

38

PPrraakkttiikkuumm

4

FUNGSI DALAM SQL

Tujuan :

1. Praktikan mampu untuk memahami dan menguasai fungsi-fungsi SQL

Persiapan :

1. Baca buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server 2000, khususnya mengenai transact-sql.

2. Modul praktikum IV.

Pekerjaan :

1. Kerjakan dan selesaikan semua tugas dan soal pada praktikum IV di lembar jawaban yang sudah disediakan di modul.

2. Selesaikan Tugas Pendahuluan praktikum IV, kemudian lanjutkan dengan mengerjakan langkah-langkah praktikum pada modul yang telah disiapkan.

3. Kerjakan Soal Praktikum IV yang telah disediakan di modul, setelah selesai mengerjakan langkah-langkah praktikum.

4. Kerjakan Tugas Praktikum IV sebagai latihan dirumah.

Hasil :

1. Kumpulkan modul praktikum Anda yang berisi jawaban Tugas Pendahuluan dan jawaban Soal Praktikum IV sesuai dengan pertanyaan yang ada.

2. Tunjuk dan kumpulkan modul praktikum Anda yang berisi hasil pekerjaan Tugas Praktikum IV kepada asisten pada pertemuan berikutnya.

Page 59: sql

39

Landasan Materi

1. Aritmatik

Penghitungan aritmatika dapat dilakukan dengan menggunakan * / + - seperti

umumnya

2. Kelompok Nilai

Fungsi AVG, Max, MIN, SUM, COUNT adalah fungsi yang memproses tabel

dengan kualifikasi tertentu.

3. AVG

Mencari rata-rata

Nilai perbandingan adalah hasil dari query baru (yang disebut sebagai

“subquery”).

Contoh :

SELECT * FROM Ambil_kuliah_XXX WHERE nilai_uas>(select

AVG (nilai_uas) from ambil_kuliah_XXX)

4. MAX

Mencari maksimum

5. MIN

Mencari minimum

SELECT AVG(field_numerik) from nama_tabel

SELECT MAX(nilai_uas) FROM ambil_kuliah_XXX

SELECT MIN(nilai_uas) FROM ambil_kuliah_XXX

Page 60: sql

40

6. COUNT

Menghitung record dengan kualilfikasi tertentu. COUNT(*) menyatakan hitung

seluruh record yang berlaku.

7. SUM

Menjumlah nilai dari kolom tertentu

8. GROUP BY

Group By Menyeleksi himpunan yangdihitung berdasarkan fungsi spesifik seperti

AVG, COUNT atau lainya.

9. GROUP BY … HAVING

HAVING berlaku untuk kelompok query Group By dan berfungsi seperti WHERE.

Hanya group yang mempunyai kriteria tersebut yang akan diproses(pada where

yang diproses adalah setiap record dalam tabel). Berikut adalah daftar mahasiswa

yang mempunyai nilai uas rata-rata diatas 80 :

SELECT COUNT(*) FROM mahasiswa_XXX

SELECT SUM(nilai_uas) FROM ambil_kuliah_XXX

SELECT nrp,COUNT(*) FROM ambil_kuliah GROUP BY nrp

SELECT nrp,AVG(nilai_uas) FROM ambil_kuliah GROUP BY nrp HAVING

AVG(nilai_uas)>80

Page 61: sql

41

10. JOIN

Join adalah teknik yang digunakan untuk mengakses lebih dari satu tabel dan

menggabungkan hasilnya. Perhatikan tabel sesi di bawah ini

11. Menggunakan Alias

Alias digunakan untuk menyederhanakan tulisan, agar tidak terlalu panjang.

SELECT nrp, mahasiswa_xxx.nama, grade FROM ambil_kuliah_XXX,

mahasiswa_XXX WHERE

ambil_kuliah_XXX.nrp=mahasiswa_XXX.nrp

Penulisan dapat disederhanakan menjadi :

SELECT nrp,M.nama,grade,FROM ambil_kuliah_XXX

A,mahasiswa_XXX M WHERE A.nrp=M.nrp

Join biasa dilakukan pada 2 buah tabel atau lebih.

Tugas Pendahuluan Praktikum IV

1. Apa yang dimaksud dengan subquery ?

2. Kapan alias digunakan ?

3. Apa yang Anda ketahui tentang join ? sebutkan macam-macam join yang

Anda tahu !

SELECT nrp, mahasiswa_XXX.nama, grade FROM ambil_kuliah_XXX,

mahasiswa_XXX WHERE ambil_kuliah_XXX.nrp=mahasiswa_XXX.nrp

Page 62: sql

42

Jawaban Tugas Pendahuluan Praktikum IV

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 63: sql

43

Langkah selanjutnya :

Ikuti langkah-langkah praktikum.

Langkah-langkah praktikum :

Agar anda dapat lebih memahami tentang manipulasi data ikutilah langkah -

langkah berikut ini :

a) aktifkan Tools Query Analyzer

b) Buat tabel asisten_XXX dengan ketentuan :

Asisten_XXX(kd_ass,Nrp)

Kd_ass char 10

Nrp char 10

Kd_ass merupakan primary key

Nrp merupakan foreign key yang mengacu pada tabel mahasiswa_XXX

c) Buat tabel praktikum_XXX dengan ketentuan :

praktikum_XXX(kd_prak, nama_praktikum,ruang)

kd_prak char 10

Nama_praktikum Varchar 30

Ruang varchar 46

Kd_prak merupakan primary key

d) Buat tabel honor_XXX dengan ketentuan :

honor_XXX(kd_ass, jumlah_jam,honor)

kd_ass char 10

jumlah_jam int

honor float

Page 64: sql

44

kd_ass merupakan foreign key yang mengacu pada tabel asisten_XXX (field

kd_ass)

e) Isi data asisten_XXX :

Kd_ass NRP

S10054 99110800

S78678 97110211

S45389 98111761

f) Isi data praktikum_XXX :

Kd_prak Nama_praktikum Ruang

P10054 Pascal Lan A dan Lan B

P22094 Turbo C++ Unix

P90877 Ms.Sql Server2000 Database

P78678 Cobol Lan A dan Lan B

P45389 Rpg As400

S43535 Html HTML

S56743 Operation Research Unix

g) Isi data honor_XXX :

Kd_ass Jumlah_jam Honor

S10054 12 96000

S78678 6 48000

S45389 8 64000

h) Tambahkan 10% honor untuk mereka yang mempunyai honor dibawah rata-

rata

Page 65: sql

45

i) Cari asisten yang honornya antar 50.000 sampai dengan 100.000

j) tampilkan asisten yang honornya lebih kecil dari rata-rata.

k) Tampilkan daftar honor asisten dan kurangi dengan pajak penghasilan 15%

l) Tampilkan data asisten secara lengkap (nrp,nama,alamat)yang honornya

paling kecil

m) Berapa banyak asisten yang honornya diatas rata-rata

n) Hitung jumlah honor asisten yang honornya diatas rata-rata

Soal Praktikum IV

1. Kenapa nilai field pada foreign key harus ada terlebih dahulu pada field

primary key yang diacu?

2. Berikan kesimpulan Anda mengenai praktikum IV ini !

Jawaban Soal Praktikum IV

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 66: sql

46

Tugas Praktikum IV

1. Buat query dengan menggunakan perintah-perintah SQL : Having,

Group By, Intersect, Distinct. (dengan menggunakan tabel yang dibuat

pada tugas sebelumnya)

2. Tulis juga output seriap perintah.

Jawaban Tugas Praktikum IV

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 67: sql

47

PPrraakkttiikkuumm

5

VIEW DAN INDEX

Tujuan :

1 Praktikan mampu memahami view dan index.

Persiapan :

1. Baca buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server 2000, khususnya mengenai view dan index.

2. Modul praktikum V.

Pekerjaan :

1. Kerjakan dan selesaikan semua tugas dan soal pada praktikum V di lembar jawaban yang sudah disediakan di modul.

2. Selesaikan Tugas Pendahuluan praktikum V, kemudian lanjutkan dengan mengerjakan langkah-langkah praktikum pada modul yang telah disiapkan.

3. Kerjakan Soal Praktikum V yang telah disediakan di modul, setelah selesai mengerjakan langkah-langkah praktikum.

4. Kerjakan Tugas Praktikum V sebagai latihan dirumah.

Hasil :

1. Kumpulkan modul praktikum Anda yang berisi jawaban Tugas Pendahuluan dan jawaban Soal Praktikum V sesuai dengan pertanyaan yang ada.

2. Tunjuk dan kumpulkan modul praktikum Anda yang berisi hasil pekerjaan Tugas Praktikum V kepada asisten pada pertemuan berikutnya.

Page 68: sql

48

Landasan Materi :

1. View

Sebuah VIEW adalah tabel yang dibangun dari satu atau beberapa tabel yang sudah

ada. Secara fisik VIEW tidak membuat penyimpanan data seperti tabel, melainkan

hanya menyimpan referansi/pointer ke record pada tabel-tabel yang berkaitan. VIEW

disebut juga sebagai “Virtual Table”.

Secara umum aturan membuat VIEW adalah:

Sebagai contoh adalah sebuah VIEW yang terbentuk dari satu tabel:

CREATE VIEW v1 AS SELECT nrp, Nama FROM mahasiswa_XXX

Karena VIEW dibentuk tanpa mencantumkan nama kolom baru, maka v1 mewarisi

kolom yang yang dipilih pada tabel mahasiswa_XXX.

Menjalankan view diatas :

SELECT * FROM v1

a. Menghapus VIEW

VIEW dapat dihapus dengan menggunakan DROP VIEW seperti berikut:

b. VIEW Dari Beberapa Tabel

VIEW dapat diciptakan dari beberapa tabel, misalnya sebuah join sederhana seperti

berikut:

VIEW V4 terdiri atas kolom yang dihasilkan melalui SELECT, yaitu

mahasiswa_XXX, Asisten_XXX, dan honor_XXX

CREATE VIEW NamaView (Kolom1, Kolom2) AS SELECT Kolom1, Kolom2

FROM NamaTabel WHERE predikat

DROP VIEW v1

Page 69: sql

49

CREATE VIEW v4 AS SELECT A.nrp, M.nama FROM asisten_XXX

A,Mahasiswa_XXX M WHERE A.nrp=M.nrp

c. Mengubah VIEW

Untuk dapat langsung mengubah VIEW, gunakan ALTER sama dengan syntax

alter pada tabel.

d. Updating dan insert data Melalui VIEW

Updating dapat dilakukan ke dalam VIEW dengan memberikan nilai seperti pada

inserting dan updating tabel. Namun perlu diperhatikan “NOT NULL” optioan

dan CONSTRAINT lainnya, sebelum memasukkan nilai ke dalam VIEW.

CREATE VIEW v6 (name, address, city) AS SELECT nama, alamat,

kota FROM mahasiswa_XXX WHERE kota=’JAKARTA’

INSERT INTO v6 values (‘Dandi Romo’, 9, ‘BANDUNG’)

Perhatikan bahwa walaupun dalam WHERE dibatasi kota=’JAKARTA’, namun

SQL tidak dapat menolak nilai kota yang bukan ‘JAKARTA’

Agar konsistensi dapat dijaga, maka pada saat VIEW dibuat, pada akhir instruksi

harus ditambahkan “WITH CHECK OPTION”

Contoh :

ALTER VIEW v6(name, address, city) AS SELECT nama, alamat, kota

FROM mahasiswa_XXX WHERE kota=’JAKARTA’ WITH CHECK

OPTION

INSERT INTO v6 values (‘Galih Galinggis’,10, ‘BANDUNG’)

Akan muncul error :

ERROR at line 2:

ORA-01402: view WITH CHECK OPTION where-clause violation

Page 70: sql

50

e. Batasan Manipulasi Melalui VIEW

Melalui VIEW dapat dilakukan INSERT, UPDATE, dan DELETE dengan

beberapa limitasi yaitu:

q Tidak dapat memasukkan record baru jika mengabaikan nilai NOT NULL

pada basis tabel dari VIEW tersebut.

q Tidak dapat melakukan INSERT atau UPDATE jika salah satu kolom dalam

VIEW merupakan hasil kalkulasi atau hasil dari nilai balik fungsi.

q Tidak dapat melakukan INSERT, UPDATE, atau DELETE jika dalam

VIEW terdapat GROUP BY atau DISTINCT.

2. INDEX

a. Penggunaan Index

Dalam konteks SQL-Server, index adalah sebuah obyek database yang dibuat

berdasarkan kolom dalam tabel.

Index mempercepat pencarian data. Dengan menggunakan index ,data tidak perlu

dicari dari awal hingga akhir, melainkan menggunakan algoritma pencarian yang

efisien, sehingga waktu proses menjadi semakin cepat. Tanpa index, proses

pemanggilan table scan terjadi, yang berarti query processor harus melalui masing-

masing record dalam tabel secara indvidual untuk menemukan record yang sesuai

dengan kriteria yang dipilih. Proses ini sama dengan mengalokasikan informasi

spesifik di dalam buku. Anda dapat menggunakan daftar isi atau index untuk

menemukan topik tertentu secara mudah. Tanpa itu semua, Anda harus membuka

dan mencari melalui semua halaman sampai Anda menemukan yang Anda cari.

Index mempunyai Overhead selain tempat memory yang lebih besar, juga

reorganisasi data karena operasi insert dan delete menjadi lebih kompleks.

Dengan demikian index tidak boleh digunakan secara sembarang, melainkan dengan

perencanaan dan performance tuning yang baik.

b. Memilih kolom untuk index

Page 71: sql

51

Index dipilih berdasarkan selektifitas dari query yaitu beberapa sereing record

diakses melalui select, update atau delete. Selektifitas dipengaruhi oleh criteria

pencarian, yaitu bagaimana memenuhi criteria tersebut dengan mengakses atribut

apa saja.

Hal-hal yang dapat dijadikan landasan untuk membuat index adalah :

o Kolom yang sangat sering dicari

o Primary key dan Foreign key

o Kolom yang diakses secara abjad

o Kolom yang diakses dan sering digunakan dengan join

o Kolom yang sering dicari berdasarkan urutan (range)

o Kolom yang sering menjadi predikat pada kunci kata “Where”

Hal-hal yang menyarankan untuk tidak menggunakan index adalah :

o Hasil query melebihi 20% jumlah record

o Kolom yang mempunyai nilai valid sedikit (misalnya jenis kelamin)

o Panjang kolom yang besar.

Untuk melihat index yang sudah ada gunakan stored procedure sp_helpindex

namatabel dan sp_spaceused untuk mengetahui pemakaian disk.

c. Clustered Index

Dengan Clustered index secara fisik record disusun sesuai dengan susunan index.

Dengan demikian hanya ada satu clustered index yang boleh didefinisikan dalam

satu tabel. Primary key adalah kandidat baik untuk menjadi clustered index (index

secara implicit diciptakan melalui constraint primary key). Dalam menciptakan

index, maka secara default otomatis yang dipilih adalah non clustered index. Cara

membuat index adalah:

DROP dijalankan untuk memastikan bahwa index tersebut belum ada.

DROP INDEX CI_NoPeg

CREATE CLUSTERED INDEX CI_NoPeg ON Pegawai (NoPeg)

Page 72: sql

52

d. Non Clustered Index

Dalam non clustered index secara fisik susunan record tidak berpengaruh. Non

clustered index menyimpan pointer yang menunjuk ke baris atau record dari tabel.

Dalam sebuah tabel dapat dibuat banyak non clustered index, sejauh index tersebut

dibutuhkan. Dalan syntax create index pilih NONCLUSTERED adalah default.

Cara membuatnya adalah:

Atau:

e. Unique Index

Secara otomatis unique index diciptakan melalui constraint primary key dan

unique. Sistem akan memeriksa setiap saat record baru diciptakan atau di-update.

Membuat unique index secara manual adalah:

Tugas Pendahuluan Praktikum V

1. Apa yang dimaksud dengan view ? Sebutkan keuntungan dari view ! 2. Apa yang dimaksud dengan index ? Sebutkan keuntungan dari index !

DROP INDEX NI_Nama

CREATE NONCLUSTERED INDEX NI_Nama ON Pegawai (Nama)

CREATE INDEX NI_Nama ON Pegawai (Nama)

CREATE UNIQUE INDEX UI_KTP ON Pegawai (KTP)

Page 73: sql

53

Jawaban Tugas Pendahuluan Praktikum V

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 74: sql

54

Langkah selanjutnya :

Ikuti langkah-langkah praktikum.

Langkah-langkah praktikum :

a. Aktifkan Tools Query Analyzer

b. Buat sebuah VIEW yang terdiri dari kd_ass dan nama asisten yang mempunyai

honor diatas rata-rata (join tabel mahasiswa_XXX dan Honor_XXX)

c. Buat sebuah view yang akan menampilkan isi data Nrp, Nama, Alamat, dan nomor

telpon dari mahasiswa_XXX dimana hanya mahasiswa yang mempunyai nama

‘Agnes Monica’dan nomor telfonya = 031772739 saja.

d. Isi data pada data mahasiswa_XXX melalui view yang dibuat dengan data :

NRP NAMA JK ALAMAT

KOTA PROPINSI TELFON

98111724 Wendy

Setiawan

L Jl.hartako

no.1

Makassar Sulsel 0411869174

98111720 Indra

Rahmanto

L Jl.Merak

timur No. 99

Blora

Cepu Jatim 023772739

e. Buat view dari tabel honor_XXX dan Lakukan update data honor dengan

memberikan THR pada setiap assiten dengan jumlah 23 % dari honor yang diterima.

f. Buat view dari tabel honor_XXX dan Lakukan update data honor dengan

memberikan bonus bagi yang mengajar lebih dari 10 jam sebasar 5 % dari total

honor yang diterima.

g. Buat view dari tabel praktikum_XXX dan Lakukan update data ruangan menjadi

UNIX bila kd_prak memiliki angka ganjil di setiap akhir kode. Gunakan fungsi IN

Soal Praktikum V

1. Sebutkan batasan manipulasi melalui view !

2. Apa kegunaan dari index ?

Page 75: sql

55

Jawaban Soal Praktikum V

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 76: sql

56

Tugas Praktikum V

Gunakan tabel anggota,buku, dan pinjam yang telah anda buat untuk

menampilkan data nama anggota yang mempunyai huruf depannya ‘A’ atau ‘a’

tampilkan menjadi huruf besar semua.

Jawaban Tugas Praktikum V

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 77: sql

57

PPrraakkttiikkuumm

6

TRIGGER

Tujuan :

1 Praktikan mampu memahami trigger. 2 Praktikan mampu membuat trigger.

Persiapan :

1 Baca buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server 2000, khususnya mengenai trigger.

2 Modul praktikum VI.

Pekerjaan :

1 Kerjakan dan selesaikan semua tugas dan soal pada praktikum VI di lembar jawaban yang sudah disediakan di modul.

2 Selesaikan Tugas Pendahuluan praktikum VI, kemudian lanjutkan dengan mengerjakan langkah-langkah praktikum pada modul yang telah disiapkan.

3 Kerjakan Soal Praktikum VI yang telah disediakan di modul, setelah selesai mengerjakan langkah-langkah praktikum.

4 Kerjakan Tugas Praktikum VI sebagai latihan dirumah.

Hasil :

1 Kumpulkan modul praktikum Anda yang berisi jawaban Tugas Pendahuluan dan jawaban Soal Praktikum VI sesuai dengan pertanyaan yang ada.

2 Tunjuk dan kumpulkan modul praktikum Anda yang berisi hasil pekerjaan Tugas Praktikum VI kepada asisten pada pertemuan berikutnya.

Page 78: sql

58

Landasan Materi :

1. Database Trigger

Trigger adalah blok program transact-SQL yang diassosiasikan dengan tabel dan

disimpan dalam database. Trigger dieksekusi bila terjadi suatu database “event”.

Database event adalah insert, update dan delete.

Trigger akan beraksi bila terjadi misalnya :

- sebuah baris baru (record) dimasukkan ketabel

- peremajaan record

- penghapusan record

Karena itu sebuah trigger terdiri atas :

- uraian, kapan trigger dilepaskan (fired)

- tabel yang diassosiasikan dengan trigger tersebut

- program transact-sql yang dijalankan oleh trigger tersebut

Manfaat Trigger

q Meluruskan aturan-aturan yang harus berlaku

q Menjaga nilai sebelum dimasukkan ke dalam database

q Keamanan Sistem

q Membuat historical record (riwayat perubahan)

q Dan lain-lain

Deklarasi Trigger :

CREATE TRIGGER namatrigger

ON namatabel for insert,update,delete

AS

DECLARE ………….. <deklarasi variable>

Page 79: sql

59

Tergantung dari event yang dipilih :

FOR INSERT

Trigger aktif pada saat record baru

FOR UPDATE

Trigger aktif pada saat record diubah

FOR DELETE

Trigger aktif pada saat record dihapus

Untuk melihat efek trigger, berikut adalah contoh sebuah tabel sederhana. Trigger

mytrigger akan dilepaskan, setiap kali tabel tersebut diisi dengan record baru.

CREATE TRIGGER mytrigger ON mahasiswa_XXX FOR INSERT

AS PRINT 'Record baru :' +CONVERT(char(30),getdate(),103 +’ By

Big_bugsBSD 2002’)

Trigger yang bernama mytrigger dibuat dan setiap sesudah record baru diisi ke tabel,

maka program trigger akan aktif.

Test trigger yang baru dibuat :

INSERT INTO mahasiswa_XXX (nrp,nama,jk,alamat,kota,propinsi)values

(‘00111362’,’Anang Fatoni','L','Jl.Sepanjang 80 GDL,'Malang',’Jatim’)

Page 80: sql

60

Hasil :

Record baru :08/08/2002 By Big_bugsBSD 2002

(1 row(s) affected)

Di dalam trigger secara implicit dapat diakses “koleksi” record yang dimasukkan

(“inserted”), maupun kumpulan record yang dihapus (“deleted”)

Record tersebut masuk ke dalam tabel virtual yang bernama “inserted” dan “deleted”.

Pada kasus “INSERT” hanya ada tabel virtual “inserted”, sedangkan pada

“DELETE” hanya terdapat tabel virtual “deleted”.

Untuk “UPDATE” muncul 2 buah tabel virtual, record yang lama masuk ke tabel

“deleted”, sedangkan record yang baru masuk ke tabel virtual “inserted”

CREATE TRIGGER mytrigger ON mahasiswa_XXX FOR INSERT

AS PRINT 'Record baru :' +CONVERT(char(30),getdate(),103)

SELECT No_peserta,nama,jk,alamat,kota FROM inserted

Test Trigger:

Hasil:

Record baru :06/05/2002

No_peserta Nama JK Alamat Kota

---------------- ---------------- --- -------------------------- -------------

13 Ahmad Aan L Jl. Sepanjang 80 GL Malang

(1 row(s) affected)

INSERT INTO peserta (nrp,nama,jk,alamat,kota) values (00123513,'Ahmad

Aan','L','Jl.Sepanjang 80','Malang')

Page 81: sql

61

Demikian juga pada saat terjadi proses pengupdate-an dan penghapusan data

bisa memanggil koleksi record yang dihasilkan.

2. Menghapus Trigger

Menghapus trigger dilakukan dengan instruksi

Contoh:

DROP TRIGGER trupd1

Tugas Pendahuluan Praktikum VI

1. Kapan sebuah trigger dieksekusi ?

2. Apa manfaat dari trigger ?

Jawaban Tugas Pendahuluan Praktikum VI

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

DROP TRIGGER NamaTrigger

Page 82: sql

62

LANGKAH_LANGKAH PRAKTIKUM:

a. Aktifkan Tools Query Analyzer

b. Buat sebuah tabel prak_jln_XXX dengan ketentuan :

id_dtr : char 5

peserta : int

max : int

id_dtr merupakan primary key

max merupakan jumlah maksimum praktikan dalam satu sesi

c. Buat sebuah tabel daftar_praktikum_XXX dengan ketentuan :

no_daftar : int

nrp : char 10

kd_prak : char 10

id_dtr : char 5

No_daftar merupakan primary key dan otomatis isinya dimulai dengan 1

(gunakan identity)

Nrp mereferensi ke tabel Mahasiswa_XXX (field nrp)

Kd_Prak merupakan referensi ke tabel praktikum_XXX (field kd_prak)

Id_dtr foreignkey ke tabel prak_jln_XXX (field id_dtr)

d. Isi data pada 2 buah tabel yang telah dibuat minimal 3 data secara variasi.

e. Dengan menggunakan 2 tabel yang sudah dibuat, buatlah trigger yang

setiap kali jika ada pendaftar baru maka jumlah peserta pada tabel

prak_jln_XXX akan ditambahkan 1. Sebaliknya jika ada pendaftar yang

Page 83: sql

63

dihapus maka jumlah peserta akan dikurangi 1. Perhatikan bahwa awalnya

kolom jumlah peserta pada tabel sesi adalah kosong, yang berarti NULL,

bukan 0. Oleh karena itu untuk mengubah nilai NULL, diperlukan fungsi

ISNULL (namavariable,0) sebagai berikut:

UPDATE sesi SET jumlahpeserta = ISNULL (jumlahpeserta,0) +1

f. Dengan menggunakan 2 tabel yang sudah dibuat, rubahlah trigger yang

telah dibuat pada langkah ‘e’ dimana setiap kali jika ada pendaftar baru

maka jumlah maksimal peserta pada tabel prak_jln_XXX akan dikurangi 1.

Sebaliknya jika ada pendaftar yang dihapus maka jumlah peserta akan

ditambah 1.

g. Buat sebuah trigger yang mencatat riwayat honor asisten (historical), yakni

setiap kali ada perubahan honor asisten, maka perubahan itu akan dicatat di

tabel khusus yang bernama h_asisten_XXX

Struktur tabel h_asisten_XXX

Kd_ass char 10

honor float

tgl_update datetime

h. Lakukan testing terhadap trigger yang telah dibuat dengan memperhatikan

cara kerja trigger tersebut.

Soal Praktikum VI

1. apa yang dimaksud dengan ‘event’ pada trigger ? 2. Apa yang dimaksud dengan tigger ? Sebutkan bagian dari trigger ?

Page 84: sql

64

Jawaban Soal Praktikum VI

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 85: sql

65

Tugas Praktikum VI

1. Gunakan tabel anggota,buku, dan pinjam yang telah anda buat untuk

membuat trigger :

a. membuat riwayat / historical setiap kali ada denda yang masuk dan

buat total terakhir jumlah denda yang ada menurut event terakhir kali.

b. membuat penghitungan jumlah record yang ada.

Jawaban Tugas Praktikum VI

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 86: sql

66

PPrraakkttiikkuumm

7

TRANSACT-SQL

Tujuan :

1. Praktikan mampu untuk mengerti dan memahami Transact-SQL

Persiapan :

1. Baca buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server 2000, khususnya mengenai trigger.

2. Modul praktikum VII.

Pekerjaan :

1. Kerjakan dan selesaikan semua tugas dan soal pada praktikum VII di lembar jawaban yang sudah disediakan di modul.

2. Selesaikan Tugas Pendahuluan praktikum VII, kemudian lanjutkan dengan mengerjakan langkah-langkah praktikum pada modul yang telah disiapkan.

3. Kerjakan Soal Praktikum VII yang telah disediakan di modul, setelah selesai mengerjakan langkah-langkah praktikum.

4. Kerjakan Tugas Praktikum VII sebagai latihan dirumah.

Hasil :

1. Kumpulkan modul praktikum Anda yang berisi jawaban Tugas Pendahuluan dan jawaban Soal Praktikum VII sesuai dengan pertanyaan yang ada.

2. Tunjuk dan kumpulkan modul praktikum Anda yang berisi hasil pekerjaan Tugas Praktikum VII kepada asisten pada pertemuan berikutnya.

Page 87: sql

67

Landasan Materi :

1. Transact-SQL

TRANSACT-SQL adalah bahasa pemrograman yang dikembangkan dari SQL.

Seperti diketahui SQL adalah bahasa non procedural, artinya alur program tidak seperti

bahasa pemrograman bisa, melainkan melalui “request” dan “response”.

Melalui perintah SQL seseorang melakukan query atau transaksi, yang kemudian

akan menerima jawaban dari Database Server berupa hasil atau ResultSet.

Query dan transaksi dilakukan di bagian Client,sedangkan pemrosesan dilakukan

pada Server.

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 pemrograman procedural seperti Fungsi, Procedure, Loop, Case, If Then Else, dan

lainnya.

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

Keterangan :

SELECT digunakan juga untuk eksekusi aritmatika atau lainnya. Misalnya :

SELECT @v1 = @v1 - 100

DECLARE

/* deklarasi variable */

@v1 int,

@nama varchar(30)

Page 88: sql

68

Variable dapat digunakan untuk mengambil nilai dari sebuah query:

Contoh :

DECLARE @nama char(30)

SELECT @nama = nama

FROM mahasiswa_XXX WHERE nrp=’98111761’

PRINT @nama

Hasil:

Aan Isnaini

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

Contoh:

PRINT “Nama yang ditemukan adalah :”

PRINT @nama

PRINT “Nama yang ditemukan adalah :”+@nama

3. Menjalankan Program Transact-SQL

Deklarasi Variable

Tipe dari variable yang dapat dideklarasikan adalah bagian dari Ms. SQL yaitu

char, varchar, datetima, int, money, dan lainnya.

Contoh deklarasi Variable:

DECLARE

@honor int,

@total int,

@nama varchar(30),

@instansi char(10),

Page 89: sql

69

@tgl_hari_ini datetime,

@tgl_nanti datetime

SELECT @honor=300000

SELECT @nama=’HUGO LOMBARDI’

SELECT @tgl_hari_ini=getdate()

SELECT @instansi=’ECOMODA’

SELECT @tgl_nanti=@tgl_hari_ini

PRINT ( ‘Honor anda adalah’)

PRINT ( @honor )

PRINT ( @nama )

PRINT ( @instansi )

PRINT ( @tgl_hari_ini )

PRINT ( @tgl_nanti )

Hasil:

Honor anda adalah

300000

HUGO LOMBARDI

ECOMODA

MAY 5 2002 10:18AM

MAY 5 2002 10:18AM

4. Variable Global

Variable global adalan variable yang disiapkan oleh SQL-Server untuk memberikan

informasi kepada Client. Variable global bersifat read-only.

Page 90: sql

70

Nama variable global diawali dengan @@.

@@error adalah bilangan bulat yang menyatakan nomor error. Jika variable

tersebut tidak sama dengan 0, maka system memberikan indikasi bahwa

terjadi error dan identitas error dinyatakan dalam angka.

@@cursor_rows adalah nilai balik dari cursor yang terakhir kali diolah.

@@fetch_status adalah nilai balik dari “fetch” pada cursor. Nilai 0 adalah OK.

@@identity memberikan nilai otomatis setiap kali INSERT dilakukan. Nilai ini

adalah identitas dari record tersebut.

@@nestlevel adalah nesting level dari stored procedures atau triggers

@@rowcount memberikan nilai balik berupa jumlah baris (rows) yang

terpengaruh oleh instruksi terakhir. Setelah instruksi IF atau

WHILE, maka @@rowcount dihapus menjadi 0.

@@spid adalah Server Process Id

5. IF

IF digunakan dalam mengendalikan alur program berdasarkan kondisi.

IF kondisi

Instruksi

IF kondisi

Instruksi1

ELSE

Instruksi2

IF kondisi

BEGIN

Instruksi1

Page 91: sql

71

Contoh:

DECLARE @honor int,

@rata_rata int

SELECT @honor=100000

SELECT @rata_rata=200000

IF @honor > @rata_rata

PRINT “Honor diatas rata-rata”

ELSE

PRINT “Honor dibawah rata-rata”

Hasil:

Honor dibawah rata-rata

Bila diaplikasikan pada tabel asisten_XXX, maka nilai honor dapat diambil dari

asisten:

DECLARE @honor int,

@rata_rata int,

@asisten char(8)

SELECT @asisten=’98111761’

SELECT @honor=honor FROM asisten_XXX WHERE nrp=@asisten

SELECT @rata_rata=200000

IF @honor > @rata_rata

PRINT “Honor diatas rata-rata”

ELSE

PRINT “Honor dibawah rata-rata”

Page 92: sql

72

penggunaan blok IF BEGIN END dapat dilakukan bila instruksi dalam IF lebih dari

satu instruksi..

6. WHILE

WHILE digunakan dalam mengeksekusi satu blok program berulang-ulangsampai

kondisi pada WHILE menjadi false.

Contoh:

DECLARE @I int

SELECT @i=5

WHILE @i > 0

BEGIN

PRINT “ i = “+str( @i)

SELECT @i = @i - 1

END

Hasil:

i = 5

i = 4

i = 3

i = 2

i = 1

WHILE kondisi

BEGIN

Page 93: sql

73

Perhatikan bahwa fungsi str() diperlukan untuk mengkonversi bilangan integer

menjadi string (teks).

7. CONTINUE dan BREAK

CONTINUE dan BREAK berkaitan dengan WHILE. CONTINUE melanjutkan

alur program pada pemeriksaan kondisi WHILE, sedangkan BREAK mengakibatkan

alur program keluar dari WHILE.

8. RETURN

RETURN akan menghentikan program dari eksekusi. RETURN dapat digunakan

dalam memproses error.

IF @@error <> 0

BEGIN

PRINT “Error…”

WHILE kondisi1

BEGIN

IF kondisi2

CONTINUE

END

WHILE kondisi1

BEGIN

IF kondisi2

Page 94: sql

74

RETURN

END

9. CASE

CASE menyederhanakan IF yang berlapis dengan tujuan agar program dapat

dimengerti/dibaca lebih mudah.

IF kondisi1

ELSE IF kondisi2

ELSE IF kondisi3

ELSE

Dapat diganti:

Contoh:

DECLARE @t char(1),

@hasil varchar(255)

SELECT @t=’B’

SELECT @hasil=

CASE

WHEN @t=’A’ THEN

‘Karakter A’

WHEN @t=’B’ THEN

CASE

WHEN kondisi1 THEN

WHEN kondisi1 THEN

WHEN kondisi1 THEN

ELSE

Page 95: sql

75

‘Karakter B’

ELSE

‘Tidak diketahui’

END

PRINT “Hasil adalah “+@hasil

Hasil:

Hasil adalah : Karakter B

Perhatikan bahwa CASE diatas digunakan untuk mengambil nilai variable:

SELECT @hasil=CASE

Berikut adalah variasi dari CASE:

DECLARE @t char(1),

@hasil varchar(255)

SELECT @t=’X’

SELECT @hasil=

CASE @t

WHEN ’A’ THEN

‘Karakter A’

WHEN ’B’ THEN

‘Karakter B’

ELSE

‘Tidak diketahui’

END

Page 96: sql

76

PRINT “Hasil adalah “+@hasil

Contoh pada SQL-Query:

DECLARE @jk char,

@nama varchar(16),

@teks varchar(255)

SELECT @jk=jk, @nama=nama FROM mahasiswa_XXX WHERE

nrp=’98111724’

SELECT @teks=

CASE @jk

WHEN ’L’ THEN ‘Laki-laki’

WHEN ’P’ THEN ‘Perempuan’

ELSE ‘?’

END

PRINT @nama + “ adalah “ + @teks

Hasil:

Wendy Setiawan adalah Laki-laki

Soal Pendahuluan Praktikum VII

1. Apa yang dimaksud dengan T-SQL ?

2. Bagaimana kerangka dari T-SQL ?

Page 97: sql

77

Jawaban Tugas Pendahuluan Praktikum VII

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 98: sql

78

Langkah selanjutnya :

Ikuti langkah-langkah praktikum.

Langkah-langkah praktikum :

a. Buat sebuah T-SQL untuk menghitung Nilai rata-rata langsung dari tabel

asisten_XXX. Buat keterangan bahwasannya assieten tersebut memiliki honor

diatas rata-rata atau dibawah rata-rata.

Soal Praktikum VII

1. Struktur kontrol apa saja yang dapat digunakan dalam T-SQL ?

2. Bagaimana menjalankan T-SQL ?

Jawaban Soal Praktikum VII

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 99: sql

79

Tugas Praktikum VII

4.1 Gunakan tabel anggota, buku, dan pinjam yang telah anda buat untuk membuat T-SQL : menghitung denda anggota yang paling banyak dan berdasarkan rata-rata yang ada cari yang paling besar jumlah denda yang diterima.

Jawaban Tugas Praktikum VII

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 100: sql

80

8

STORED PROCEDURE

Tujuan :

1. Praktikan mampu untuk memahami stored procedure.

Persiapan :

1. Baca buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server 2000, khususnya mengenai trigger.

2. Modul praktikum VIII.

Pekerjaan :

1. Kerjakan dan selesaikan semua tugas dan soal pada praktikum VIII di lembar jawaban yang sudah disediakan di modul.

2. Selesaikan Tugas Pendahuluan praktikum VIII, kemudian lanjutkan dengan mengerjakan langkah-langkah praktikum pada modul yang telah disiapkan.

3. Kerjakan Soal Praktikum VIII yang telah disediakan di modul, setelah selesai mengerjakan langkah-langkah praktikum.

4. Kerjakan Tugas Praktikum VIII sebagai latihan dirumah.

Hasil :

1. Kumpulkan modul praktikum Anda yang berisi jawaban Tugas Pendahuluan dan jawaban Soal Praktikum VIII sesuai dengan pertanyaan yang ada.

2. Tunjuk dan kumpulkan modul praktikum Anda yang berisi hasil pekerjaan Tugas Praktikum VIII kepada asisten pada pertemuan berikutnya.

Page 101: sql

81

Landasan Materi :

1. PROSEDUR

Prosedur adalah program yang dapat dipanggil/dielsekusi 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).

Membuat Prosedur

CREATE PROCEDURE dapat disingkat dengan CREATE PROC. Berikut adalah

contoh sebuah prosedur yang menampilkan honor instruktur:

CREATE PROCEDURE pr_honor AS

SELECT kd_ass, honor FROM honor_xxx

RETURN

Menjalankan prosedur tersebut dengan EXEC atau langsung nama prosedure

Untuk mengkoreksi sebuah prosedur, maka kunci kata ALTER harus digunakan.

CREATE PROCEDURE NamaProsedur AS

Deklarasi_variable

EXEC pr_honor

ALTER PROCEDURE pr_honor AS

SELECT kd_ass, honor,jumlah_jam FROM honor_xxx

RETURN

Page 102: sql

82

Untuk menghapus prosedur gunakan DROP

Untuk secara otomatis mengubah prosedur tanpa ALTER, dapat dibuat script

sebagai berikut:

USE stiki_xxx

IF EXIST (SELECT name FROM sysobjects WHERE name = ‘pr_honor’ AND

type = ‘P’) DROP PROCEDURE pr_honor

go

CREATE PROCEDURE pr_honor AS SELECT kd_ass, honor,jumlah_jam

FROM honor_xxx

go

2. Parameter

Prosedur dapat mempunyai parameter berupa variable yang disuplai oleh program

yang memanggilnya.

Pada saat eksekusi, parameter diberikan sebagai berikut:

DROP PROCEDURE NamaProsedur

CREATE PROC NamaProsedur (@p1 int, @p2 char(16), …)

AS

Deklarasi_variable

EXEC namaprocedure 210,’teks’,…

Page 103: sql

83

Contoh:

Tampilkan honor untuk asisten tertentu yang diberikan berdasarkan kode asisten

ALTER PROCEDURE pr_honor (@ini char(6))AS select

jumlah_jam,honor from honor_xxx where kd_ass=@ini

Cara mengeksekusi :

EXEC pr_honor ‘S56743’

Hasil :

Jumlah_jam honor

------------------- -----------

42 330000

3. Nilai Default

Bila pada saat eksekusi procedure tidak diberikan parameter, maka nilai parameter

tersebut menjadi kosong (null). Untuk menghindari niali null, maka pemberian

nilai pada parameter dapat menggunakan nilai default.

ALTER PROCEDURE pr_honor (@ini char(6)=’S56743’)AS select

jumlah_jam,honor from honor_xxx where kd_ass=@ini

RETURN

EXEC pr_honor ‘S90877’

Hasil :

Jumlah_jam honor

------------------- -----------

34 200000

Page 104: sql

84

EXEC pr_honor

Hasil :

Jumlah_jam honor

------------------- -----------

42 330000

Berikut adalah contoh program yang menedeteksi parameter, bila kosong maka pesan

error akan ditampilkan.

ALTER PROCEDURE pr_honor (@ini char(6)=null)AS

if @ini=null

begin

declare @pesan char(6)

select @pesan='kosong'

print @pesan

return

end

select jumlah_jam,honor from honor_xxx where kd_ass=@ini

RETURN

4. Parameter Output

Nilai parameter bisa diolah pada program procedure dan untuk kemudian parameter

tersebut dapat diubah dan diberikan nilainya pada program yang memanggilnya.

CREATE Proc m

@p1 int, @p2 int, @h int OUTPUT

as select @h=@p1*@p2

Page 105: sql

85

Eksekusi :

EXEC m 10,20,@hsl OUTPUT

print 'hasil = ' +str(@hsl)

Pada contoh ada 3 parameter, yaitu p1 dan p2 sebagai input parameter dan h

sebagai output parameter.

Pada saat eksekusi p1 adalah 10, p2 adalah 20 dan hsl merupakan hasil perkalian.

Berikut adalah program pr_honor1 yang memberikan nilai balik berupa parameter

output @dana

@dana akan dibaca oleh program yang memenggilnya dan mencetak hasilnya ke

layar.

create proc pr_honor1 @ini char(6)=null,@dana int output

as

if @ini=null

begin

print 'parameter kosong'

return

end

select @dana = honor from honor_xxx where kd_ass=@ini

return

Eksekusi :

DECLARE @h int

EXEC pr_honor1 ' S56743',@h OUTPUT

print 'honor = ' +str(@h)

Page 106: sql

86

Soal Pendahuluan Praktikum VIII

1. Apa yang dimaksud dengan store procedure ?

2. Apa yang dimaksud dengan parameter output ? Apa kegunaannya ?

Jawaban Tugas Pendahuluan Praktikum VIII

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 107: sql

87

Langkah selanjutnya :

Ikuti langkah-langkah praktikum.

Langkah-langkah praktikum :

a. Buat sebuah Store Procedure untuk menghitung Nilai rata-rata langsung dari

tabel asisten_XXX. Buat keterangan bahwasannya assisten tersebut memiliki

honor diatas rata-rata atau dibawah rata-rata.

b. Buat sebuah Store Procedure untuk menghitung Nilai rata-rata tiap praktikan

dalam satu kelas praktikum. (Buat tabel baru untuk menampung nilai-nilai

praktikum. Samakan dengan kartu praktikum anda). Buat keterangan

bahwasannya praktikan tersebut memiliki nilai diatas rata-rata atau dibawah

rata-rata.

Page 108: sql

88

Soal Praktikum VIII

1. Bagaimana menjalankan sebuah store procedure ?

Jawaban Soal Praktikum VIII

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :

Page 109: sql

89

Tugas Praktikum VIII

Gunakan tabel anggota, buku, dan pinjam yang telah anda buat untuk

membuat Store Procedure :

menghitung denda anggota yang paling banyak dan berdasarkan rata-rata yang

ada cari yang paling besar jumlah denda yang diterima.

Jawaban Tugas Praktikum VIII

NRP Acc

NAMA

HARI/JAM PRAKTIKUM

KELAS Nilai :