BASIS DATA BERBASIS SQL
Gambar
12.1 di samping ini adalah gambar sekumpulan komputer server yang
biasanya ada pada perusahaan penyedia jasa internet atau pada bagian
teknologi informasi perusahaan-perusahaan besar. Salah satu fungsi
peralatan ini adalah sebagai pusat data yang dibutuhkan penggunanya.
Peran sebagai pusat data ini membutuhkan DBMS dan aplikasi basis data
yang kuat. Perangkat DBMS seperti Microsoft SQL Server, Oracle, MySQL,
PostgreSQL biasanya menjadi pilihan. Fungsi-fungsi lanjut yang
disediakan oleh DBMS tersebut sangat membantu kecepatan kerja, keamanan,
dan keakuratan data yang disampaikan.
Bab ini membahas tiga standar
kompetensi yaitu melakukan pemrograman data deskripsi (SQL) tingkat
dasar, mengoperasikan bahasa pemrograman data deskripsi (SQL) tingkat
lanjut dan membuat program basis data dengan Microsoft SQL Server. Kedua
standar kompetensi ini disatukan karena kedekatan materi bahasan.
Susunan sub bab tidak langsung mengacu pada kompetensi dasar, tapi lebih
pada kecocokan materi. Ringkasan akan disampaikan di akhir bab kemudian
dilanjutkan dengan soal-soal latihan. Sebelum kalian mempelajari bab
ini buka kembali bab-bab tentang pemecahan masalah, sistem operasi,
algoritma lanjutan, dasar-dasar basis data, dan aplikasi basis data
berbasis Microsoft Access pada bab-bab sebelumnya.
SEKILAS TENTANG SQL
Dalam DBMS biasanya tersedia paket bahasa yang digunakan untuk
mengorganisasi basis data yang ada, yaitu Data Definition Language (DDL)
dan Data Manipulation Language (DML).
Data Definition Language (DDL)
Data Definition Language (DDL) adalah satu paket bahasa DBMS yang
berguna untuk melakukan spesifikasi terhadap skema basis data. Hasil
kompilasi dari DDL adalah satu set tabel yang disimpan dalam file khusus
yang disebut Data Directory/Dictionary. Secara umum perintah perintah
dalam DDL berhubungan dengan operasi-operasi dasar seperti membuat basis
data baru, menghapus basis data, membuat tabel baru, menghapus tabel,
membuat indeks, mengubah struktur tabel. Contoh perintah DDL misalnya,
Create Table, Create Index, Alter, dan Drop Database.
Data Manipulation Language
Data Manipulation Language (DML) adalah satu paket DBMS yang
memperbolehkan pemakai untuk mengakses atau memanipulasi data
sebagaimana yang telah diorganisasikan sebelumnya dalam model data yang
tepat. Dengan DML dapat dilakukan kegiatan :
- Mengambil informasi yang tersimpan dalam basis data.
- Menyisipkan informasi baru dalam basis data.
- Menghapus informasi dari tabel.
Terdapat
dua tipe DML yaitu prosedural dan non prosedural. Prosedural DML
membutuhkan pemakai untuk menspesifikasikan data apa yang dibutuhkan dan
bagaimana cara mendapatkannya, sedang non prosedural DML membutuhkan
pemakai untuk menspesifikasikan data apa yang dibutuhkan tanpa tahu
bagaimana cara mendapatkannya.
SQL merupakan kependekan dari
Structured Query Language (Bahasa Query Terstruktur). SQL lebih dekat
dengan DML dari pada DDL. Namun tidak berarti SQL tidak menyediakan
perintah DDL. SQL lebih menekankan pada aspek pencarian dari dalam
tabel. Aspek pencarian ini sedemikian penting karena di sinilah
sebenarnya inti dari segala upaya kita melakukan pengelolaan data. Data
dalam basis data diorganisasi sedemikian rupa dengan tujuan untuk
memudahkan pencarian di kemudian hari.
Sebagai sebuah bahasa, SQL
telah distandarisasi dan mengalami beberapa perubahan atau
penyempurnaan. SQL muncul pertama kali pada tahun 1970 dengan nama
Sequel (nama yang masih sering digunakan hingga saat ini). Standarisasi
yang pertama dibuat pada tahun 1986 oleh ANSI (American National
Standards Institute) dan ISO (International Standard Organization), yang
disebut SQL-86. Pada tahun 1989 SQL-86 diperbaharui menjadi SQL-89.
Standar terakhir yang dibuat adalah SQL-92.
Pernyataan-pernyataan SQL
digunakan untuk melakukan beberapa tugas seperti : update data pada
basis data, atau menampilkan data dari basis data.
Beberapa software
RDBMS yang dapat menggunakan SQL, seperti : Oracle, Sybase, Microsoft
SQL Server, MySQL, Microsoft Access, Ingres, dsb. Setiap software basis
data mempunyai mungkin bahasa perintah / sintaks yang berbeda, namun
pada prinsipnya mempunyai arti dan fungsi yang sama. Perintah utama
dalam SQL adalah select. Struktur utama perintah adalah sebagai berikut:
Select <kolom>
From <table>
Where <kondisi>
Kita akan menggunakan perintah-perintah ini pada bagian-bagian berikut.
MEMPERSIAPKAN PERANGKAT LUNAK BERBASIS SQL
Seperti disebutkan di bagian awal bab, perangkat lunak yang akan
kita gunakan adalan Microsoft SQL Server. Pada kesempatan ini versi yang
dipakai adalah versi 2005 Developer Edition. Penjelasan sekilas tentang
Microsoft SQL Server dapat dilihat pada bab 10.
Kebutuhan Operasi
Microsoft SQL Server adalah perangkat lunak yang berjalan pada
platform Microsoft Windows, sehingga kebutuhan utama dari perangkat
lunak ini adalah tersedianya komputer yang telah terinstal sistem
operasi Windows, terutama versi Server. Hal ini karena Windows versi
Server memberikan integrasi yang lebih baik. Selain itu dari sisi
keamanan dan alokasi kerja model client-server, versi server memberikan
unjuk kerja yang lebih baik.
Microsoft SQL Server adalah perangkat
lunak yang harus diaktifkan sebagai service pada Windows. Jika belum
dijalankan maka kita tidak akan dapat menggunakannya. Default-nya,
ketika Microsoft SQL Server diinstal maka secara otomatis, service ini
akan dibuat dan dijalankan setiap kali Windows dihidupkan. Namun untuk
memastikan kalian dapat memeriksanya dengan membuka Control Panel,
kemudian pilih Administrative Tool. Pada jendela Administrative Tool
(Gambar 12.2) klik ganda pada ikon Service sehingga terbuka jendela
seperti pada Gambar 12.3.
Pada
jendela Service carilah nama service SQL Server kemudian periksalah di
kolom status, apakah sudah started atau belum. Jika belum jalankan
(start) service ini.
12.2.2.Menjalankan Perangkat Lunak Basis Data Berbasis SQL
Setelah terinstal maka kita dapat menggunakan Microsoft SQL
Server dengan memanggil GUI client dari Microsoft SQL Server yang
disebut sebagai SQL Server Management Studio. Ketika pertama kali
dipanggil maka tampilan akan tampak seperti pada Gambar 12.4.
Setiap
kali kita membuka SQL Server Management Studio, kita akan diperiksa
apakah kita berhak menggunakan SQL Server atau tidak. Jika SQL Server
dijalankan pada mesin lokal dan menggunakan Windows Authentication maka
kita dapat langsung menekan tombol Connect untuk masuk ke lingkungan SQL
Server. Tetapi bila SQL Server dijalankan dari komputer lain (server)
kita akan diminta memasukkan user name dan password yang telah
didaftarkan.
Ada informasi penting dari Gambar 12.4 di atas yang
kalian perlu ketahui. Pada gambar tersebut terlihat bahwa kita akan
mengakses tipe server Database Engine, yaitu server yang berhubungan
dengan masalah aplikasi basis data. SQL Server menyediakan beberapa tipe
server yang dapat diakses. Namun tidak dijelaskan pada buku ini. Selain
itu nama server yang akan diakses adalah ARMBLACKMATE. Hal ini karena
SQL Server diinstal pada komputer dengan nama ARM-BLACKMATE sehingga
kita perlu nama server sama dengan nama dimana SQL Server berjalan.
MENU / FITUR UTAMA
Setelah kita berhasil masuk ke dalam lingkungan SQL Server maka
kita akan disuguhi tampilan awal dari SQL Server Management Studio
seperti pada Gambar 12.5.
Ada
dua bagian penting yang ada pada bagian awal ini yaitu Object Explorer
dan Summary Panel. Object Explorer adalah tempat kita melihat obyekobyek
apa saja yang ada di dalam SQL Server. Pada gambar di atas kalian bisa
melihat obyek-obyek yang tersedia. Untuk sementara yang paling penting
adalah Databases. Sedangkan Summary panel merupakan tempat keterangan
atau ringkasan yang ada pada Object Explorer. Coba klik pada salah satu
obyek di Object Explorer, maka isi Summary panel juga akan berubah
sesuai dengan obyek yang kita pilih.
Kita akan fokus pada obyek
Databases. Coba klik tanda + (atau tanda node) di depan obyek Databases,
sehingga akan tampak tampilan seperti pada Gambar 12.6 di samping ini.
Pada Gambar tersebut tampak ada empat basis data yang sudah ada pada SQL
Server, yaitu AdventureWorks, AdventureWorksDW, latihan01SQL dan
Northwind2007SQL. Keempat basis data ini termasuk user object karena
merupakan buatan pengguna. SQL Server juga membuat sendiri basis data
ketika proses instalasi berlangsung. Basis data ini biasa disebut
sebagai system object. Biasanya ada beberapa system object yang tersedia
yaitu Master, Model, MSDB, Resource, TempDB, dan Distribution. Basis
data ini tidak boleh dihapus karena akan membuat sistem menjadi tidak
bekerja normal. Untuk memeriksanya, coba klik node di depan System
Databases.
Sementara ini kita tidak akan berhubungan dengan System
Databases. Kita akan melihat pada user object. Klik pada salah satu
basis data maka tampilan pada Summary Panel akan berubah. Perhatikan
Gambar 12.7. Pada gambar tersebut tampak bahwa basis data AdventureWorks
berisi berbagai komponen antara lain Database Diagrams, Tables, Views
dan yang lainnya. Setiap basis data yang kita buat di SQL server akan
punya komponen-komponen ini secara default. Meskipun kita tidak membuat
Database Diagrams misalnya, komponen Database Diagrams tetap disediakan.
12.4. PEMBUATAN DAN PENGISIAN TABEL
Pembuatan Basis Data
Sebelum kita membuat tabel, kita harus membuat lebih dahulu basis
datanya. Untuk membuat basis data baru, klik kanan pada Databases dan
pilih New Database. Jendela untuk membuat basis data baru akan terbuka
(Gambar 12.8). Pada textbox di depan Database name, ketikkan nama basis
data yang akan dibuat. Pada contoh ini namanya adalah Lat-01. Kemudian
klik OK. Perhatikan pada Object Explorer, basis data baru sudah
terbentuk dan memiliki komponen-komponen yang sama dengan basis data
lainnya.
Pembuatan Tabel
Setelah basis data terbentuk kita baru bisa membuat tabel. Klik
kanan pada komponen Tables di basis data Lat-01 dan pilih New Table…
Bagian Summary panel akan berubah menjadi seperti pada Gambar 12.9.
Kalian bisa mulai memasukkan atribut atau kolom dari tabel yang akan
dibuat. Pembuatan tabel ini sama persis dengan apa yang telah kalian
lakukan dengan Microsoft Access. Penentuan tipe data, lebar data dan
primary key juga tidak jauh berbeda. Yang agak berbeda adalah SQL Server
menyediakan tipe data yang lebih banyak daripada Microsoft Access.
Untuk menentukan primary key, pilih atribut kemudian tekan tanda kunci
pada toolbar.
Pada
gambar di atas, kita membuat tabel dengan 5 kolom yaitu NoInduk, Nama,
Alamat, Kota, NoTelepon. Masing-masing bertipe nchar dengan lebar data
yang bervariasi. Untuk menentukan lebar data, lihatlah pada bagian
property dari kolom. Setelah selesai simpan tabel dengan nama tertentu.
Pada contoh di atas tabel disimpan dengan nama siswa. SQL server akan
memberikan awalan nama (prefix) dbo secara default. Tetapi ini bisa kita
rubah. Jadi nama tabel yang kita buat di atas akan menjadi dbo.siswa.
Pengisian Data pada Tabel
Setelah semua tabel terbentuk, kita dapat mengisi tabel dengan
data-data yang kita inginkan. Dengan menggunakan GUI SQL Server
Management Studio kita dapat mengisi data seperti halnya pada Access.
Klik kanan pada nama tabel kemudian pilih Open Table. Jendela baru pada
Summary panel akan terbuka dan siap untuk diisi datanya. Gambar 12.10
menunjukkan bagaimana kita mengisi data pada sebuah tabel. Setiap kali
kalian mengisi untuk satu baris harus diikuti dengan menekan Enter. Jika
tidak maka data tidak tersimpan. Cobalah isi tabel-tabel yang lain.
OPERASI PADA TABEL DAN VIEW
Relasi Antar Tabel
Tabel-tabel yang telah kalian buat dan isi di atas masih merupakan
tabel yang berdiri sendiri tidak ada hubungan antar tabel. Padahal kalau
dilihat dari tabel-tabel yang ada kita bisa membuat model hubungannya
(lihat bab 10 dan 11 tentang relasi antar tabel). Tabel siswa
berhubungan dengan tabel program, tabel guru berhubungan dengan tabel
bidang dan tabel program. Untuk membuat hubungan antar tabel ini kita
bisa menggunakan komponen Database Diagrams. Klik kanan pada Database
Diagrams kemudian pilih New Database Diagram. Jendela baru akan terbuka
seperti tampak pada Gambar 12.11.
Pada
jendela Add Table klik Add untuk memilih tabel yang akan kita
relasikan. Pada contoh ini kita akan pilih semua tabel karena semua
saling terkait. Klik Add beberapa kali sampai tidak ada nama tabel di
jendela Add Table. Setelah semua tabel terpilih buat relasi seperti
tampak pada Gambar 12.12. Cara menghubungkan tabel satu dengan tabel
yang lain sama persis dengan yang kita lakukan di Microsoft Access.
Simpan diagram ini.
Membuat View
View sama dengan Query pada Microsoft Access. SQL Server juga
menyediakan fitur GUI untuk membuat View seperti halnya GUI Query pada
Microsoft Access. Untuk membuat View, klik kanan pada View kemudian
pilih New View sehingga jendela seperti Gambar 12.13 terbuka. Pilih Add
Table untuk menambahkan satu atau lebih tabel yang akan kita buat
View-nya. Misalnya kita pilih tabel siswa. Klik Close untuk menutup
jendela tersebut. Sehingga akan muncul tampilan seperti tampak pada
Gambar 12.14.
Ada empat bagian penting pada Gambar 12.14 yaitu
jendela Diagram, jendela Criteria, jendela SQL dan jendela Result.
Jendela Diagram digunakan sebagai tempat tabel-tabel sumber yang akan
kita buat View-nya. Jendela Criteria adalah tempat kita menentukan
kriteria-kriteria pada View. Jendela SQL adalah tempat menuliskan
perintah SQL dari View yang kita buat. Jendela Result adalah tempat
untuk menampilkan hasil dari View.
Pada
Gambar 12.14, kita telah memilih tabel Siswa sebagai sumber View dan
muncul pada jendela Diagrams. Kita akan membuat View sederhana
berdasarkan tabel ini. Klik *(All Columns) di bawah nama tabel Siswa.
Isi jendela SQL otomatis akan berubah. Isi jendela SQL akan berubah
sesuai dengan apa yang kalian lakukan pada jendela Diagram dan jendela
Criteria. Kemudian klik tanda seru (!) pada toolbar untuk mengeksekusi
View tersebut atau klik kanan di salah satu bagian pada Gambar 12.14
(boleh di jendela Diagram/Criteria/SQL/Result) kemudian pilih Execute
SQL. Kalian akan memperoleh tampilan seperti pada Gambar 12.15. Simpan
View ini dengan cara klik pada ikon Disket pada Toolbar kemudian
masukkan nama View.
Kalau
kalian perhatikan, langkah-langkah membuat View di atas sama persis
dengan apa yang kalian lakukan ketika membuat Query pada Microsoft
Access. Kita akan buat beberapa contoh yang lebih kompleks. Perhatikan
contoh-contoh berikut.
Contoh 12.1. View untuk menampilkan nama Guru yang alamat rumahnya di luar kota Malang.
Pada
contoh ini kita menggunakan tabel Guru sebagai sumber View. Buat View
baru kemudian tampilkan jendela seperti pada Gambar 12.13. Pilih tabel
Guru kemudian Close. Klik Nama, Alamat dan Kota pada kotak tabel Guru.
Kemudian pada jendela Criteria, pilih baris Kota dan pada kolom Filter
ketikkan pernyataan <> ‘Malang’. Jalankan View ini, kalian akan
mendapatkan hasil seperti pada Gambar 12.16.
Kolom
Filter pada jendela Criteria digunakan untuk memilih baris yang sesuai
dengan keinginan kita. Pada contoh di atas, digunakan untuk memilih
baris yang isi kolom Kotanya bukan ‘Malang’. Kita menggunakan tanda
<> untuk menyatakan ketidaksamaan.
Contoh 12.2. View untuk menampilkan nama, nomor induk, dan program keahlian Siswa secara urut abjad nama.
Contoh
ini membutuhkan minimal 2 tabel, yaitu tabel Siswa dan tabel Program.
Perhatikan relasi antar tabel pada Gambar 12.12. Tabel Siswa berhubungan
langsung dengan tabel Program. Dengan cara yang sama seperti Contoh
12.13, pilih tabel Siswa dan tabel Program. Pada kotak Siswa di jendela
Diagram pilih Nama dan NoInduk sedangkan pada kotak Program pilih
NamaProgram. Pada jendela Criteria, pilih baris Nama dan klik pada kolom
Sort Type kemudian pilih Ascending. Kemudian jalankan View tersebut.
Kalian akan mendapat hasil seperti pada Gambar 12.17. Perhatikan pada
jendela Result, kolom Nama ditampilkan berurutan sesuai dengan abjad.
Contoh 12.3. View untuk menampilkan nama Guru dan bidang keahliannya secara urut abjad nama.
Berdasarkan
relasi tabel pada Gambar 12.12, maka View pada contoh ini membutuhkan
tiga buah tabel yaitu tabel Guru, Guru_Bidang dan Bidang. Kolom Nama ada
di tabel Guru sedangkan kolom NamaBidang ada pada tabel Bidang. Pilih
tiga tabel tersebut. Pada kotak Guru di jendela Diagram pilih Nama
kemudian pada kotak Bidang pilih NamaBidang. Pada jendela Criteria,
pilih baris Nama dan klik pada kolom Sort Type kemudian pilih Ascending.
Jalankan View ini. Perhatikan hasil yang diperoleh.
MENGGUNAKAN T-SQL
Transact-SQL (disingkat T-SQL) adalah varian dari bahasa basis
data SQL yang dikeluarkan oleh perusahaan Microsoft dan Sybase.
Microsoft SQL Server hanya mengenali bahasa SQL tipe T-SQL ini. Oleh
karena itu jika kalian ingin menggunakan Microsoft SQL Server, maka
kalian harus memahami bahasa ini.
Secara umum T-SQL tidak berbeda
jauh dengan SQL standard. Hal ini karena T-SQL sebenarnya adalah bahasa
SQL standar yang diberi tambahan perintah-perintah khusus untuk membantu
kerja dalam SQL Server. Perintah SELECT, FROM dan WHERE yang telah kita
singgung di awal bab, tetap menjadi perintah utama di T-SQL.
Untuk
membuat perintah-perintah T-SQL ini SQL Server mempunyai jendela Query
yang dapat kita buka dengan cara klik pada tombol New Query di bawah
Menu Bar (lihat Gambar 12.19). Sebelumnya pilih terlebih dahulu
basisdata yang ingin kita gunakan dengan cara klik pada nama basis data
di Object Explorer. Setelah jendela Query terbuka kalian dapat mulai
mengetikkan perintah-perintah SQL.
Definisi Tabel dengan T-SQL
Hampir semua aktivitas di dalam SQL Server dapat dilakukan dengan
menggunakan perintah-perintah T-SQL. Termasuk membuat tabel. Pada sub
bab sebelumya kalian telah membuat tabel-tabel dengan menggunakan
fasilitas GUI. Kalian juga bisa membuat tabel-tabel tersebut dengan
perintah-perintah SQL. Perintah-perintah yang berhubungan dengan
definisi tabel termasuk dalam kategori DDL. Perintah untuk pendefinisian
atau pembuatan tabel baru adalah CREATE TABLE. Sedangkan untuk
menghapus kita menggunakan perintah DROP TABLE
Buat basis data baru
dengan nama Lat-01_SQL. Kemudian pilih basis data tersebut. Buka jendela
Query seperti pada Gambar 12.18. Kiata akan membuat tabel-tabel yang
sama seperti pada Lat-01 tetapi dengan perintah SQL. Tabel pertama yang
kita buat adalah tabel Siswa (lihat kembali struktur tabel ini pada
Tabel 12.1 di atas). Ketikkan perintah berikut ini, kemudian jalankan
dengan klik tanda seru (!).
CREATE TABLE [dbo].[Bidang](
[IdBidang] [smallint] NOT NULL,
[NamaBidang] [nchar](20)NULL,
[Deskripsi] [nchar](100)NULL,
CONSTRAINT [PK_Bidang] PRIMARY KEY CLUSTERED
(
[IdBidang] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Perintah CREATE TABLE diikuti dengan nama tabel yang akan kita
buat ([dbo].[Bidang]) kemudian diikuti dengan daftar kolom yang ada pada
tabel tersebut. Pada daftar kolom ini, tipe data, lebar data dan
kondisi lainnya (misalnya NOT NULL atau NULL) harus dicantumkan. Setelah
itu baru bagian CONSTRAINT dari tabel tersebut dituliskan. Bagian
CONSTRAINT ini biasanya berisi pendefinisian Primary Key dari tabel
tersebut. Perhatikan cara penulisan perintah-perintah di atas.
Setelah
kalian jalankan, periksalah pada bagian node Tables apakah tabel kalian
sudah terbentuk atau belum. Klik kanan pada Tables basis data kalian di
Object Explorer kemudian pilih Refresh. Tabel baru yang kalian buat
akan muncul di bawah Object Tables. Buatlah tabel-tabel lainnya dengan
cara yang sama. Berikut ini perintah-perintah pembuatan masing-masing
tabel.
Tabel Program
CREATE TABLE [dbo].[Program](
[IdProgram] [smallint] NOT NULL,
[NamaProgram] [nchar](20) NULL,
[Deskripsi] [nchar](100) NULL,
CONSTRAINT [PK_Program] PRIMARY KEY CLUSTERED
(
[IdProgram] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Tabel Guru
CREATE TABLE [dbo].[Guru](
[NIP] [nchar](15) NOT NULL,
[Nama] [nchar](20) NULL,
[Alamat] [nchar](30) NULL,
[Kota] [nchar](20) NULL,
[Telepon] [nchar](15) NULL,
CONSTRAINT [PK_Guru] PRIMARY KEY CLUSTERED
(
[NIP] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Tabel Siswa
CREATE TABLE [dbo].[Siswa](
[NoInduk] [nchar](10) NOT NULL,
[Nama] [nchar](20) NULL,
[Alamat] [nchar](30) NULL,
[Kota] [nchar](20) NULL,
[Telepon] [nchar](15) NULL,
[IdProgram] [smallint] NULL,
CONSTRAINT [PK_Siswa] PRIMARY KEY CLUSTERED
(
[NoInduk] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Tabel Guru_Program
CREATE TABLE [dbo].[Guru_Program](
[NIP] [nchar](15) NOT NULL,
[IdProgram] [smallint] NOT NULL,
CONSTRAINT [PK_Guru_Program] PRIMARY KEY CLUSTERED
(
[NIP] ASC,
[IdProgram] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Tabel Guru_Bidang
CREATE TABLE [dbo].[Guru_Bidang](
[IdBidang] [smallint] NOT NULL,
[NIP] [nchar](15) NOT NULL,
CONSTRAINT [PK_Guru_Bidang] PRIMARY KEY CLUSTERED
(
[IdBidang] ASC,
[NIP] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Pada
perintah-perintah pembuatan tabel di atas, kita belum membuat relasi
antar tabel. Relasi antar tabel pada SQL biasanya dinyatakan dalam
hubungan FOREIGN KEY (lihat kembali pengertian FOREIGN KEY pada bab 10
dan 11). Kita perlu memodifikasi tabel dengan menambahkan CONSTRAINT
agar tabel dapat mengerti relasi antar tabel. Buka kembali jendela Query
kemudian ketikkan perintah-perintah berikut ini.
ALTER TABLE [dbo].[Siswa] WITH CHECK ADD CONSTRAINT
[FK_Siswa_Program] FOREIGN KEY([IdProgram])
REFERENCES [dbo].[Program] ([IdProgram])
ALTER TABLE [dbo].[Guru_Program] WITH CHECK ADD
CONSTRAINT [FK_Guru_Program_Guru] FOREIGN KEY([NIP])
REFERENCES [dbo].[Guru] ([NIP])
ALTER TABLE [dbo].[Guru_Bidang] WITH CHECK ADD CONSTRAINT
[FK_Guru_Bidang_Bidang] FOREIGN KEY([IdBidang])
REFERENCES [dbo].[Bidang] ([IdBidang])
ALTER TABLE [dbo].[Guru_Bidang] WITH CHECK ADD CONSTRAINT
[FK_Guru_Bidang_Guru] FOREIGN KEY([NIP])
REFERENCES [dbo].[Guru] ([NIP])
Perintah untuk memodifikasi atau merubah struktur tabel adalah ALTER
TABEL
kemudia diikuti dengan nama tabel yang ingin dirubah. Perhatikan pada
baris ALTER TABLE [dbo].[Siswa] WITH CHECK ADD CONSTRAINT
[FK_Siswa_Program]
FOREIGN KEY([IdProgram]). Tabel yang ingin dimodifikasi adalah
dbo.Siswa dan tabel ini berhubungan dengan tabel Program
sehingga
dituliskan FK_Siswa_Program. Kolom IdProgram pada tabel Siswa merupakan
FOREIGN KEY sehingga dituliskan sebagai FOREIGN KEY([IdProgram]). Kolom
IdProgram ini berasal dari tabel program sehingga pada bagian akhir
perintah harus dituliskan referensi tabelnya (ditulis dengan REFERENCES
[dbo].[Program] ([IdProgram])). Dengan cara yang sama relasi-relasi
antar tabel di atas dibuat.
Perintah DROP TABEL sangat mudah
dilakukan yaitu tinggal menambahkan nama tabel didepan perintah
tersebut. Misalnya DROP TABLE [dbo].[Bidang].
Pengisian
Perubahan dan Penghapusan Isi Tabel dengan SQL Setelah semua tabel
selesai dibuat, maka kita dapat mengisi data pada masing-masing tabel
dengan menggunakan perintah INSERT. Perintah ini termasuk dalam kelompok
DML. Kita akan mencoba menggunakan perintah ini pada tabel Bidang. Kita
periksa dulu isi tabel Bidang dengan cara klik kanan pada nama tabel
kemudian pilih Open Table. Isi tabel akan muncul pada jendela Summary
(Gambar 12.20). Tutup kembali jendela Open Table tersebut.
Buka jendela Query kemudian ketikkan perintah berikut.
INSERT INTO [Lat-01].[dbo].[Bidang]
([IdBidang]
,[NamaBidang]
,[Deskripsi])
VALUES
(8, 'Jaringan Wireless', NULL)
Perintah
INSERT diikuti dengan nama basis data dan nama tabel
([Lat-01].[dbo].[Bidang])kemudian diikuti dengan nama kolom yang ada
pada tabel tersebut. Kata kunci VALUES digunakan untuk memberi petunjuk
bahwa bagian setelah kata kunci ini adalah data yang akan dimasukkan.
Perhatikan,
karena ada 3 kolom di tabel Bidang, maka kita juga memasukkan 3 buah
data. Data pertama (8) harus terisi karena pada definisi tabel Bidang,
kolom IdBidang dinyatakan NOT NULL. Data ketiga yaitu untuk kolom
Deskripsi kita isi NULL karena kita ingin mengosongkan isi kolom ini.
Jalankan
perintah di atas. Kemudian klik kanan pada tabel Bidang kemudian pilih
Refresh. Kemudian klik kanan lagi pada tabel Bidang dan pilih Open
Table. Data yang kalian masukkan sudah berada pada tabel Bidang (Gambar
12.21).
Kalau
kalian perhatikan, perintah INSERT di atas terlalu panjang. Coba hapus
bagian daftar nama kolom pada perintah tersebut. Kemudian ganti data di
bawah VALUES menjadi (9, ’Digital Animation’, NULL). Kemudian jalankan
dan periksalah hasilnya. Apa yang terjadi? Setelah Refresh, kalian akan
menjumpai bahwa data kalian juga dapat dimasukkan tanpa harus menyebut
daftar nama kolom pada perintah INSERT.
Seringkali dalam pengisian
data pada suatu tabel, kita melakukan kesalahan. Kesalahan dapat berupa
kesalahan ketik atau kesalahan pembacaan data. Sehingga ketika
diperiksa, kita menginginkan untuk merubah/memperbaiki data tersebut.
Proses ini biasa disebut sebagai update data. SQL menyediakan perintah
UPDATE untuk melakukan proses ini. Perintah ini masih termasuk dalam
kelompok DML.
Misalnya kita ingin merubah isi kolom NamaBidang pada
IdBidang yang ke-5 (lihat Gambar 12.21). Dari ‘Fotografi’ kita rubah
menjadi ‘Fotografi Digital’ maka kita ketikkan perintah seperti berikut.
UPDATE [Lat-01].[dbo].[Bidang]
SET [NamaBidang] = 'Fotografi Digital'
WHERE [IdBidang] = 5
Periksa kembali isi tabel Bidang. Jangan lupa untuk me-refresh dulu tabel Bidang sebelum perintah Open Table dijalankan.
Penghapusan data dengan SQL dilakukan dengan perintah DELETE. Perlu
diperhatikan bahwa perintah DELETE akan menghapus isi seluru baris.
Kalau kalian hanya ingin mengosongkan isi satu bagian dari baris (atau
satu sel) saja gunakan perintah UPDATE. Misalnya kita ingin kita
menghapus baris yang IdBidangnya sama dengan 8 maka kita ketikkan dengan
perintah seperti berikut.
DELETE FROM [Lat-01].[dbo].[Bidang]
WHERE [IdBidang] = 8
Mencari dan Menampilkan Data (View) dengan SQL
Seperti telah disinggung di awal bab, perintah utama dalam SQL
adalah SELECT, FROM dan WHERE. Sebagian besar aktivitas kita menggunakan
SQL berhubungan dengan perintah-perintah ini. Untuk menggunakan
perintahperintah ini, buka jendela Query kemudian ketikkan perintah yang
kalian inginkan. Jalankan dengan menekan tombol tanda seru (!).
Perintah
SELECT digunakan untuk memilih kolom mana saja yang akan ditampilkan.
Jika kita ingin menampilkan semua kolom, kita cukup menggunakan tanda *.
Perintah FROM digunakan untuk menentukan asal kolom yang ingin kita
tampilkan datanya. Perintah WHERE digunakan untuk membatasi baris-baris
yang akan kita tampilkan agar sesuai dengan kriteria yang kita inginkan.
WHERE bisa dari tabel atau hasil dari View yang lain. Perhatikan
contoh-contoh penggunaan SQL berikut ini.
Contoh 12.4. Menampilkan semua data pada tabel Bidang.
Contoh
ini kita membutuhkan tabel Bidang. Sedangkan kolom yang kita ingin
tampilkan adalah semua kolom. Kita dapat menggunakan tanda * atau
mendaftar semua kolom yang ada pada tabel Bidang. Berikut adalah
perintah SQL dan hasil eksekusinya.
Jika
kalian ingin menyimpan dalam bentuk View perintah di atas, tambahkan
sebelum pernyataan SELECT perintah CREATE VIEW <nama_view> AS.
Ganti <nama_view> dengan nama yang kalian inginkan.
Contoh 12.5. Menampilkan data nama dan alamat siswa.
Pada contoh
ini kita membutuhkan tabel Siswa. Sedangkan kolom yang kita inginkan
adalah kolom nama, alamat, dan kota. Kita tidak bisa menggunakan tanda
*, tetapi harus mendaftarkan nama kolom nama dan alamat setelah perintah
SELECT. Perhatikan perintah SQL dan outpunya berikut ini.
Contoh 12.6. Menampilkan data nama siswa yang rumahnya di Batu.
Pada
contoh ini kita membutuhkan pernyataan WHERE untuk membatasi baris yang
ingin kita tampilkan. Tabel yang dipakai adalah tabel Siswa dan kolom
yang ingin ditampilkan adalah kolom Nama. Kalau kalian perhatikan hasil
eksekusi contoh 12.2 di atas, yang alamat rumahnya di Batu ada dua orang
yaitu Pepe Ricard dan Bubi Red. Pernyataan WHERE diikuti dengan kondisi
yang harus dipenuhi. Pada kasus ini adalah Kota=’Batu’. Berikut ini
perintah SQL secara lengkap dan outputnya. Perhatikan cara penulisannya.
Contoh 12.7. Menampilkan data nama, alamat dan kota dari guru yang rumahnya tidak di Malang.
Pada
bagian ini kita juga menggunakan perintah WHERE untuk membatasi data
yang ingin kita tampilkan. Tabel yang kita gunakan adalah tabel guru dan
kolom yang kita butuhkan adalah kolom nama, alamat dan kota. Pernyataan
yang rumahnya tidak di Malang merupakan kondisi yang harus dipenuhi.
Sehinga secara lengkap pernyataan akan tampak seperti berikut.
Contoh 12.8. Menampilkan data nama siswa dan program keahlian yang diikuti.
Pada
contoh ini kita melibatkan dua buah tabel yang saling berhubungan yaitu
tabel Siswa dan tabel Program. Yang kita ingin tampilkan adalah kolom
Nama pada tabel Siswa dan kolom NamaProgram pada tabel Program. Untuk
kasus seperti ini pada perintah SELECT pemanggilan nama kolom harus
didahului dengan nama tabelnya. Sedangkan pada FROM kita menggunakan
perintah INNER JOIN untuk menggabung dua tabel. Perlu kalian cermati
(lihat Tabel 12.1 di atas), pada tabel Siswa terdapat Foreign Key yaitu
IdProgram yang merupakan Primary Key pada tabel Program. IdProgram ini
merupakan penghubung yang dapat kita gunakan untuk menggabung dua tabel.
Perhatikan pernyataan SQL berikut ini dan cermati outputnya.
Contoh 12.9. Menampilkan data nama siswa yang mengikuti program keahlian RPL.
Contoh
ini merupakan kelanjutan dari contoh 12.4. Kita menambahkan pernyataan
WHERE untuk menampilkan nama yang ikut program keahlian RPL.
Selain itu kita hanya ingin menampilkan kolom Nama dari tabel Siswa. Perhatikan pernyataan SQL berikut dan hasil eksekusinya.
Contoh 12.10. Menampilkan data nama guru dan bidang keahliannya.
Contoh
ini lebih kompleks dari contoh-contoh di atas. Kita melibatkan tiga
buah tabel, yaitu tabel Guru, tabel Guru_Bidang dan tabel Bidang.
Perhatikan relasi antar tabel tersebut pada Gambar 12.11. Ada dua INNER
JOIN yang kita gunakan, yaitu INNER JOIN tabel Guru dengan tabel
Guru_Bidang dan INNER JOIN Guru_Bidang dengan tabel Bidang. Perhatikan
bagaimana membuat pernyataan INNER JOIN.
Contoh
Contoh 12.11. Menampilkan data nama guru yang bidang keahliannya Pemrograman Web atau Basis Data.
Contoh
ini merupakan pengembangan dari contoh 12.10. Kita ingin menampilkan
guru yang bidang keahliannya Pemrograman Web atau Basis Data.
Kita
perlu menambahkan perintah WHERE untuk membatasi baris. Pada WHERE kita
juga perlu operator OR. Perhatikan perintah SQL dan hasil eksekusinya
berikut ini.
Bandingkan
dengan hasil eksekusi contoh 12.10. Cobalah ganti OR dengan AND dan
jalankan kembali perintah SQL tersebut. Bagaimanakah hasilnya?
Contoh-contoh di atas dapat dikembangkan lagi dengan banyak variasi.
Dengan banyak mencoba dan berlatih maka kalian akan dapat memahami dengan baik penggunaan perintah-perintah SQL.
FUNGSI, PROCEDURE DAN TRIGGER
Microsoft SQL Server menyediakan fasilitas-fasilitas tingkat
lanjut yang tidak dimiliki oleh Microsoft Access seperti kemampuan
membuat fungsi, mendefinisikan store procedure dan trigger. Hal ini
karena SQL Server diperuntukkan sebagai basis data server yang
membutuhkan kinerja yang lebih kuat dari Microsoft Access.
12.7.1.FUNGSI
T-SQL menyediakan banyak fungsi yang digunakan untuk mempermudah
tugas-tugas dalam pengelolaan basis data. Beberapa fungsi penting akan
disampaikan di sini. Untuk lebih lengkapnya silahkan baca manual atau
onlinehelp dari SQL Server.
- Fungsi-fungsi yang berhubungan dengan numeric
Fungsi-fungsi
penting yang berhubungan dengan numeric (angka) adalah isNumeric dan
Round. Fungsi isNumeric digunakan untuk memeriksa apakah isi suatu data
berupa data angka atau tidak. Buka jendela Query kemudian ketikkan
perintah seperti pada contoh 12.12 dan periksalah hasilnya. Tabel Siswa
mempunyai kolom Telepon yang isi datanya sekilas berupa angka. Kita
dapat memeriksa dengan menggunakan fungsi isNumerik. Pada hasil eksekusi
di bawah ini terlihat nilai hasil pemeriksaan menghasilkan angka 0
untuk seluruh data. Angka 0 berarti false. Berarti, semua data pada
kolom Telepon bukan data numeric.
Contoh 12.12. Menggunakan fungsi isNumeric.
Fungsi
ROUND digunakan untuk membulatkan bilangan pecahan ke bilangan bulat
terdekat. Misalnya 13.58 akan menjadi 14.00. Perhatikan contoh berikut
ini.Fungsi ROUND digunakan untuk membulatkan bilangan pecahan ke
bilangan bulat terdekat. Misalnya 13.58 akan menjadi 14.00. Perhatikan
contoh berikut ini.
- Fungsi-fungsi yang berhubungan dengan string
Fungsi-fungsi
penting yang berhubungan dengan karakter (string) antara lain adalah
LEFT, RIGHT, LEN, LOWER, UPPER, LTRIM, dan RTRIM.
LEFT digunakan
untuk memilih sejumlah karakter tertentu dari sebelah kiri sedangkan
RIGHT dari sebelah kanan. Hasil dari RIGHT tergantung dari lebar data
yang kalian tetapkan pada pembuatan table. LEN digunakan mengetahui
panjang karakter pada data. Perhatikan contoh berikut.
Contoh 12.14. Menggunakan LEFT, RIGHT dan LEN.
LOWER
digunakan untuk merubah karakter menjadi huruf kecil, sedangkan UPPER
sebaliknya. LTRIM digunakan untuk menghilangkan space di sebelah kiri
data string, sedangkan RTRIM di sebelah kanan.
Lihat contoh berikut.
Contoh 12.15. Menggunakan fungsi UPPER dan LOWER.
- Fungsi-fungsi yang berhubungan dengan waktu
Fungsi-fungsi yang berhubungan dengan waktu yang penting antara lain:
GETDATE, MONTH, DAY, YEAR, DATENAME, DATEADD, and DATEDIFF.
GETDATE
digunakan untuk mendapatkan tanggal sekarang dari system computer.
MONTH digunakan untuk mengambil bagian bulan dari data tanggal. DAY
digunakan untuk mengambil bagian tanggal dari data tanggal. YEAR
digunakan untuk mengambil bagian tahun dari data tanggal. DATENAME
digunakan untuk mendapatkan nama hari dari suatu tanggal. DATEADD
digunakan untuk menambah atau mengurangi data tanggal. DATEDIFF
digunakan untuk melihat selisih antara dua buah data tanggal. Perhatikan
contoh berikut.
12.7.2.Procedure dan Stored Prosedure
Selain fungsi-fungsi yang tersedia di atas, SQL Server juga
memperkenalkan user-defined function. Fungsi ini adalah fungsi yang
dapat kita buat sendiri untuk mempercepat pengelolaan basis data.
Kadang-kadang fungsi jenis ini disebut juga procedure. Ada dua tipe user
defined function yaitu scalar dan inline table-value. Fungsi scalar
menghasilkan satu nilai keluaran melalui kata kunci Return. Inline
Table-Value menghasilkan suatu table baru ketika dieksekusi. Perhatikan
contoh berikut.
Contoh 12.17. Membuat fungsi scalar.
Fungsi yang ada di samping ini diberi nama dbo.FullName.
Parameter
yang digunakan ada dua yaitu @FirstName dan @LastName. Perhatikan
bagaimana mendefinisikan suatu fungsi dan parameternya. Output dari
fungsi akan bertipe data nVarChar dengan lebar data 35. Fungsi ini akan
memberikan output satu nilai yaitu gabungan dari @LastName dan
@Firstname. Sehingga kita bisa
nyatakan ini termasuk dalam fungsi scalar.
Pada
kode yang di blok, terlihat bagaimana fungsi tersebut dipanggil pada
suatu pernyataan query. Perhatikan output yang dihasilkan. Terbentuk
kolom baru yang berisi gabungan kolom LastName dan FirstName. Stored
procedure adalah potongan kode program yang dapat menerima parameter
input dan menghasilkan satu atau lebih parameter output. Stored
procedure umumnya digunakan untuk operasi-operasi pada basis data.
Biasanya suatu perintah SQL yang rumit, panjang dan kompleks disimpan
sebagai stored procedure. Jika kita ingin melakukan operasi tersebut
kita tidak perlu mengetik ulang, cukup kita panggil nama stored
procedure dan kita eksekusi langsung.
Perintah untuk membuat stored
procedure adalah CREATE PROCEDURE kemudian diikuti dengan nama
procedure-nya. Perhatikan contoh berikut ini.
Contoh 12.18. Membuat stored procedure.
Buka jendela Query, kemudian ketikkan kode berikut ini.
CREATE PROCEDURE hapusBaris
@IdNumber smallint
AS
DELETE
FROM dbo.Bidang Where dbo.Bidang.IdBidang = @IdNumber
Procedure
yang kita buat ini bernama hapusBaris dengan satu parameter yaitu
@IdNumber dengan tipe data smallint. Pernyataan setelah AS adalah
pernyataan SQL yang akan dikerjakan ketika stored procedure di atas
dijalankan.
Trigger
Trigger adalah tipe khusus dari stored procedure yang akan
dieksekusi ketika suatu kejadian muncul. Kejadian tersebut misalnya
ketika ada penambahan data (INSERT), penghapusan data (DELETE) atau
perubahan data (UPDATE). Trigger biasanya merupakan komponen dari suatu
table.
Cara membuatnya adalah klik node di depan table yang anda pilih.
Setelah
muncul daftar komponen table tersebut klik kanan pada Trigger dan pilih
New Trigger. SQL Server akan menampilkan jendela baru yang isinya
adalah template dari Trigger. Hapus semua teks pada jendela tersebut
kemudian ketikkan contoh berikut ini.
Contoh 12.19. Membuat trigger.
CREATE TRIGGER coba_trigger
ON dbo.Bidang FOR INSERT
AS
DECLARE @varNama Varchar(20)
SELECT @varNama = NamaBidang FROM INSERTED
PRINT 'Anda baru memasukan data : ' + @varNama
Trigger
di atas berada pada table Bidang. Nama triggernya adalah coba_trigger
dan akan dijalankan ketika event pemasukkan data (INSERT) pada table
dbo.Bidang terjadi.
ADMINISTRASI SQL SERVER
Security dan Authentication.
Security atau keamanan basis data merupakan komponen yang sangat
penting. Karena sifatnya yang berperan sebagai server maka sebenarnya
SQL Server secara teori dapat diakses oleh siapa saja. Hal ini tentu
akan sangat merugikan jika ada pihak-pihak yang tidak bertanggung jawab
melakukan perubahan, perusakan atau bahkan menghapus basis data yang
kita buat dengan susah payah.
SQL Server menyediakan mekanisme
Authentication untuk membatasi siapa yang berhak masuk ke dalam sistem
SQL Server. Ada dua model authentication yaitu Windows Authentication
dan SQL Server Authentication.
- Windows Authentication. Pada model
ini SQL Server tidak melakukan pengecekan pada user name dan password
yang diberikan namun dipercayakan pada system operasi Windows. Artinya
sebenarnya hanya user yang terdaftar pada computer tersebut yang mungin
bisa masuk pada SQL Server.
- SQL Server Authentication. Informasi
user name dan password disimpan dalam SQL Server sehingga setiap kali
ada user yang akan masuk koneksi ke SQL Server, SQL Server akan
memeriksanya.
Untuk melihat model authentication apa yang ada di SQL
Server, klik kanan pada nama server di jendela Object Explorer kemudian
pilih Properties.
Pada jendela Server Properties pilih bagian Security sehingga tampilan akan tampak seperti pada Gambar 12.22.
Untuk
menambahkan user yang bisa masuk ke SQL Server, klik node pada Security
di Object Explorer, kemudian klik kanan Logins. Pilih New Logins untuk
membuka jendela Login seperti pada Gambar 12.23. Buat user baru yang
kalian inginkan.
12.8.2.Permissions
Permissions berhubungan dengan hak akses seorang user pada suatu
basis data. Seorang yang sudah terdaftar sebagai user pada SQL Server
tidak secara otomatis bisa menggunakan basis data yang ada jika belum
diberi hak. Untuk mengubah hak user pada basis data tertentu, klik node
pada Logins. Klik kanan pada nama user yang terdaftar di bawah Logins
kemudian pilih Properties. Pada jendela Login Properties, pilih bagian
User Mapping sehingga tampilan akan tampak seperti pada Gambar 12.24.
Gambar
di atas menunjukka user dengan nama sa merupakan pemilik (db_owner)
dari beberapa basis data (lihat basis data yang dicentang). Kita dapat
mengatur peran (role) seorang member pada basis data dengan mencentang
atau tidak pada bagian Database role membership.
RINGKASAN
- Data Definition Language (DDL) adalah satu paket bahasa DBMS
yang berguna untuk melakukan spesifikasi terhadap skema basis data
sedangkan Data Manipulation Language (DML) adalah satu paket DBMS yang
memperbolehkan pemakai untuk mengakses atau memanipulasi data
sebagaimana yang telah diorganisasikan sebelumnya dalam model data yang
tepat.
- SQL lebih menekankan pada aspek pencarian dari dalam tabel hal ini karena pencarian adalah inti dari pengelolaan data.
- Pembuatan Tabel dan View pada SQL server dapat dilakukan dengan cara GUI atau dengan menggunakan perintah-perintah SQL.
- Perintah utama SQL adalah SELECT, FROM dan WHERE.
- Microsoft SQL Server menyediakan fasilitas fungsi built-in dan user-defined function.
-
Stored procedure adalah potongan kode program yang dapat menerima
parameter input dan menghasilkan satu atau lebih parameter output.
Trigger adalah tipe khusus dari stored procedure yang akan dieksekusi ketika suatu kejadian muncul
-
SQL Server menyediakan mekanisme Authentication untuk membatasi siapa
yang berhak masuk ke dalam sistem SQL Server dengan dua model yaitu
Windows Authentication dan SQL Server Authentication. Selain itu
keamanan data juga diatur dengan cara pemberian permissions.
REFERENSI :
smkibukartini.sch.id