Structured Query Language DDL (Data Definition Language) 31 Mei 2006 2006, M. Ramadhan 1
Pendahuluan Yang akan dibahas: Bahasa basis data: DDL, DML Mengenal SQL: standar, manfaat SQL: Data Definition Language Membuat, mengubah, menghapus basis data Membuat, mengubah, menghapus tabel Membuat, mengubah, menghapus view Membuat dan mengubah index 31 Mei 2006 2006, M. Ramadhan 2
Tujuan Mahasiswa diharapkan : Mengetahui kegunaan bahasa basis data. Mampu membedakan antara DDL dgn DML. Mengetahui sejarah, standar, dan manfaat SQL. Mampu menuliskan pernyataan SQL untuk mendefinisikan, mengubah dan menghapus basis data, tabel, dan view. Mampu menuliskan pernyataan SQL untuk mendefinisikan dan menghapus index. 31 Mei 2006 2006, M. Ramadhan 3
Bahasa Basis Data Memungkinkan pengguna: Membuat dan mengubah skema basis data. Mengelola data seperti menambah, mengubah dan menghapus data. Oleh karena itu, bahasa basis data terdiri atas dua komponen, yaitu: DDL (Data Definition Language) DML (Data Manipulation Language) 31 Mei 2006 2006, M. Ramadhan 4
DDL (Data Definition Language) Bahasa untuk mendefinisikan skema atau memodifikasi skema yang ada. Hasilnya: sekumpulan tabel yang disebut kamus data (data dictionary). Kamus data (disebut juga katalog, direkori) mengintegrasikan metadata. Metadata mendeskripsikan objek dalam basis data: definisi record, item data, dsb. 31 Mei 2006 2006, M. Ramadhan 5
DML (Data Manipulation Language) Bahasa untuk memanipulasi data, yaitu untuk: Menyisipkan data baru ke dalam basisdata Memodifikasi data dalam basisdata Menemukan kembali data dalam basisdata Menghapus data dari dalam basisdata Ada dua jenis DML, yaitu: DML prosedural DML non-prosedural 31 Mei 2006 2006, M. Ramadhan 6
DML prosedural dan non-prosedural DML prosedural: bahasa yang memungkinkan pengguna memerintahkan sistem secara tepat bagaimana memanipulasi data. DML non-prosedural: bahasa yang memungkinkan user menyatakan data apa yang dibutuhkan dan bukan bagaimana data diperoleh. Contoh: SQL, QBE 31 Mei 2006 2006, M. Ramadhan 7
Mengenal SQL Bahasa standar untuk basis data relasional Lebih dari 100 DBMS mendukung SQL Diusulkan pertama kali oleh D. Chamberlin, 1974, peneliti di Lab. Riset IBM, San Jose, dengan nama SEQUEL (Structured English Query Language) Versi revisi SEQUEL/2 didefinisikan th. 1976 dan namanya berubah menjadi SQL. Hingga kini masih banyak orang melafalkan SQL sebagai see-quel 31 Mei 2006 2006, M. Ramadhan 8
Standar SQL 1986, SQL standar dibakukan oleh ANSI (American National Standards Institute) 1987, SQL standar diadopsi sebagai standar internasional oleh International Standard Organization (ISO) 1989, ISO mempublikasikan addendum yang mendefinisikan Integrity Enhancement Feature 1992, revisi oleh ISO menghasilkan SQL2, disebut juga SQL-92 (ISO, 1992). 1999, standar SQL3 atau SQL-99 31 Mei 2006 2006, M. Ramadhan 9
Tools >< SQL DBMS masa kini telah menyediakan tools yang mudah digunakan tanpa harus mengetikkan pernyataan SQL untuk: mendefinisikan, mengubah, dan menghapus skema basis data. menambah, mengubah, dan menghapus data. Walaupun demikian, pemahaman terhadap SQL memberikan banyak manfaat. 31 Mei 2006 2006, M. Ramadhan 10
Manfaat SQL Source code SQL dapat disimpan dan di-run pada sistem yang sama atau berbeda untuk memperoleh objek basis data yang sama. Pernyataan SQL dapat ditanamkan ke dalam bahasa prosedural dan memenuhi kebutuhan pemrograman operasi basis data. Memberikan pemahaman yang lebih baik sebagai fundasi penggunaan tools visual sehingga penggunaan tools tersebut lebih efektiv. 31 Mei 2006 2006, M. Ramadhan 11
SQL: Data Definition Language Yang akan dibahas: Membuat, mengubah, menghapus basis data Membuat, mengubah, menghapus tabel Membuat, mengubah, menghapus view Membuat, menghapus index Create Database Create Table Create View Create Index Alter Database Alter Table Alter View Drop Database Drop Table Drop View Drop Index 31 Mei 2006 2006, M. Ramadhan 12
Mendefinisikan Basis data Basis data adalah container tempat tabel terkait, view, index dan objek lainnya. Pernyataan SQL: Create Database NamaBasisData Misalnya mendefinisikan basis data MyBooks: Create Database MyBooks Gunakan klausa Set untuk setting basis data, misalnya basis data hanya untuk dibaca saja: Create Database MyBooks Set Read_Only 31 Mei 2006 2006, M. Ramadhan 13
Mengubah dan Menghapus Basis data Basis data yang ada dapat diubah, misalnya mengganti nama MyBooks menjadi Bukuku: Alter Database MyBooks Modify Name = Bukuku Mengubah setting basis data dengan klausa Set, misalnya Alter Database MyBooks Set Read_Write Menghapus basis data: Drop Database NamaBasisData 31 Mei 2006 2006, M. Ramadhan 14
Mendefinisikan Tabel (1) Gunakan syntax berikut: Create Table NamaTabel (NamaKolom1 TipeData1, : : NamaKolomN TipeDataN) Contoh, mendefinisikan tabel Buku: Create Table Buku (ISBN Char(10), Judul VarChar(25), ThTerbit Integer) 31 Mei 2006 2006, M. Ramadhan 15
Konvensi Nama Dalam MS SQL Server, aturan nama sbb: Maksimum 128 karakter Terdiri atas huruf dan boleh diikuti dengan angka, simbol khusus: _(garis bawah), #, $, @ Jangan menggunakan kata kunci SQL. Bila terpaksa, tulis nama di antara dua tanda petik ganda atau di antara dua kurung siku [ ]. Sebaiknya hanya menggunakan huruf dan angka supaya tidak timbul masalah pada multiplatform dan atau multisistem. 31 Mei 2006 2006, M. Ramadhan 16
Tipe Data Character, Text Exact Numeric Approximate Numerics Money Date, Time Bit, Binary, Image 31 Mei 2006 2006, M. Ramadhan 17
Tipe Data: Character (1) Tipe Data Char(panjang) Character(panjang) NChar(panjang) NCharacter(panjang) National Char(panjang) National Character(panjang) Keterangan String dengan panjang tetap, 1 s.d 8000 karakter. Jika panjang diabaikan, nilai default 1. String karakter Unicode dengan panjang tetap, 1 s.d 4000. Jika panjang diabaikan, default 1. 31 Mei 2006 2006, M. Ramadhan 18
Tipe Data: Character (2) Tipe Data Char Varying(panjang) Character Varying(panjang) VarChar(panjang) NChar Varying(panjang) NCharacter Varying(panjang) VarChar(panjang) National Char Varying(panjang) National Character Varying(panjang) Keterangan String dengan panjang variabel, 1 s.d 8000 karakter. Jika panjang diabaikan, nilai default 1. String karakter Unicode dengan panjang variabel, 1 s.d 4000. Jika panjang diabaikan, nilai default 1. 31 Mei 2006 2006, M. Ramadhan 19
Tipe Data: Text Tipe Data Text NText National Text Keterangan Data teks dengan panjang variabel sampai 2.147.483.647 karakter. Data teks Unicode dengan panjang variabel sampai 1.072.741.823 karakter atau 2.147.483.647 byte. 31 Mei 2006 2006, M. Ramadhan 20
Tipe Data: Exact Numerics Tipe Data Jangkauan Harga Ukuran (byte) BigInt (-2 63 )s.d (2 63-1) (-9,223,372,036,854,775,808) s.d (9,223,372,036,854,775,807) Int Integer (-2 31 )s.d (2 31-1) (-2,147,483,648) s.d (2,147,483,647) SmallInt (-2 15 )s.d (2 15-1) (-32,768) s.d (32,767) TinyInt 0 s.d (2 8-1) atau 0 s.d 255 1 8 4 2 31 Mei 2006 2006, M. Ramadhan 21
Tipe Data: Approximate Numerics Tipe Data Jangkauan Harga Keterangan Float(n) Real Float(24) - 1.79E+308 s.d -2.23E-308, 0, dan 2.23E-308 s.d 1.79E+308-3.40E + 38 s.d -1.18E - 38, 0, dan 1.18E - 38 s.d 3.40E + 38 n = 1 s.d 24: 4 byte presisi 7 digit n = 25 s.d 53: 8 byte presisi 15 digit 4 byte 31 Mei 2006 2006, M. Ramadhan 22
Tipe Data: Money Tipe Data Jangkauan Harga Ukuran (byte) Money -922,337,203,685,477.5808 s.d 922,337,203,685,477.5807 8 SmallMoney - 214,748.3648 s.d 214,748.3647 4 31 Mei 2006 2006, M. Ramadhan 23
Tipe Data: Date, Time Tipe Data Jangkauan Harga Akurasi (Ketelitian) DateTime 1 Januari 1753 s.d 31 Desember 9999 SmallDateTime 1 Januari 1900 s.d 6 Juni 2079 3.33 milidetik 1 menit 31 Mei 2006 2006, M. Ramadhan 24
Tipe Data: Bit, Binary, Image Tipe Data Bit Binary(n) varbinary (n) Binary Varying(n) Keterangan Berharga 1, 0, atau NULL Data biner dg panjang tetap, n berharga 1 s.d 8000. Ukuran n byte. Jika panjang diabaikan, nilai default 1. Data biner dg panjang variabel, n berharga 1 s.d 8000. Ukuran n byte. Jika panjang diabaikan, nilai default 1. Image Data biner dg panjang variabel, dari 0 s.d (2 31-1) atau(2,147,483,647) byte 31 Mei 2006 2006, M. Ramadhan 25
Null, Harga Default Null berarti data aktual tidak diketahui. Harga default adalah harga yang diberikan oleh sistem ketika baris baru ditambahkan. Pada pernyataan Create Table, setelah nama kolom tambahkan: ekspresi Null untuk kolom yang boleh kosong ekspresi Not Null u/ kolom yg tak boleh kosong klausa Default harga bila diperlukan. 31 Mei 2006 2006, M. Ramadhan 26
Contoh penggunaan Null dan harga default Create Table Buku (ISBN Char(10) Not Null, Judul VarChar(25) Null Default, ThTerbit Integer Null Default Null); Pernyataan di atas mendefinisikan tabel Buku dengan kolom: ISBN tidak boleh kosong, Judul boleh kosong dengan harga default ThTerbit boleh kosong dgn nilai default Null 31 Mei 2006 2006, M. Ramadhan 27
Menambah Kolom Baru Gunakan syntax berikut: Alter Table NamaTabel Add NamaKolomBaru TipeData Tambahkan ekspresi Null dan atau klausa Default bila diperlukan. Menambahkan kolom IdPenerbit bertipe integer dan boleh Null ke dalam tabel Buku: Alter Table Buku Add IdPenerbit Integer Null 31 Mei 2006 2006, M. Ramadhan 28
Menghapus Kolom Gunakan syntax berikut: Alter Table NamaTabel Drop NamaKolom Misalnya mnghapus kolom ThTerbit dari dalam tabel Buku: Alter Table Buku Drop ThTerbit 31 Mei 2006 2006, M. Ramadhan 29
Mengubah Kolom Untuk mengubah tipe data, ukuran, boleh Null atau tidak suatu kolom, gunakan syntax: Alter Table NamaTabel Alter Column NamaKolom Mengubah kolom ThTerbit bertipe Integer, boleh Null, nilai Default Null, menjadi bertipe SmallInt, tidak boleh Null, Default 2000: Alter Table Buku Alter Column ThTerbit SmallInt Not Null Default 2000 31 Mei 2006 2006, M. Ramadhan 30
Constraints Constraint dibutuhkan untuk menjamin integritas basis data. Pada pernyataan Create Table, dapat ditambahkan empat jenis constraint: Primary key Unique Foreign key Check 31 Mei 2006 2006, M. Ramadhan 31
Primary key Pada SQL Server 2000: Setelah pendefinisian kolom terakhir, tambahkan Constraint NamaConstraint Primary Key (NamaKolom) Pernyataan Constraint NamaConstraint boleh diabaikan. Jumlah NamaKolom maksimum 16 buah (composite key). Setelah NamaKolom dapat ditambahkan pernyataan Asc untuk menaik atau Desc untuk menurun. 31 Mei 2006 2006, M. Ramadhan 32
Unique Unique mirip primary key, namun kolomnya boleh Null. Setelah pendefinisian kolom terakhir, tambahkan Constraint NamaConstraint Unique (NamaKolom) Pernyataan Constraint NamaConstraint boleh tidak ditulis. Jumlah NamaKolom maks. 16 buah (komposit). Sebh tabel dpt memiliki 250 unique constraint. Setelah NamaKolom dapat ditambahkan pernyataan Asc untuk menaik atau Desc untuk menurun 31 Mei 2006 2006, M. Ramadhan 33
Contoh penggunaan primary key dan unique Create Table Buku (ISBN Char(10) Not Null, Judul VarChar(25) Null Default, ThTerbit Integer Null Default Null, constraint IsbnPk Primary Key (ISBN), constraint JudThUq Unique(Judul,ThTerbit)); Pernyataan di atas mendefinisikan tabel Buku : Primary key ISBN Kombinasi Judul dan ThTerbit unik (tidak boleh ada yang sama harganya) 31 Mei 2006 2006, M. Ramadhan 34
Foreign key (1) Foreign key adalah sebuah kolom atau lebih dalam sebuah tabel yang harganya cocok dengan harga primary key atau unique constraint dalam tabel lain (atau tabel dirinya sendiri) yang terkait. Setiap kolom foreign key harus memiliki tipe data dan ukuran yang sama dengan kolom primary key atau kolom unique constraint yang diacu. 31 Mei 2006 2006, M. Ramadhan 35
Foreign key (2) Pada SQL Server 2000: Setelah pendefinisian kolom terakhir, tambahkan Constraint NamaConstraint Foreign Key (NamaKolom) References NamaTabelAcuan (NamaKolom) Pernyataan Constraint NamaConstraint boleh diabaikan. Sebuah tabel dapat memiliki hingga 253 buah foreign key 31 Mei 2006 2006, M. Ramadhan 36
Contoh penggunaan foreign key Create Table Buku (ISBN Char(10) Not Null, Judul VarChar(25) Null Default, ThTerbit Integer Null Default Null, IdPenerbit Integer Not Null, constraint ISBNpk Primary Key (ISBN), constraint IdPenerbitFk Foreign Key (IdPenerbit) References Penerbit (IdPenerbit), constraint JudThUq Unique(Judul,ThTerbit)); 31 Mei 2006 2006, M. Ramadhan 37
Check Constraint (1) Digunakan untuk menjamin validitas harga suatu kolom sesuai dg domain kolom tsb. Pernyataan Check (kriteria) ditulis setelah pendefinisian kolom. Create Table Buku (ISBN Char(10) Not Null, Judul VarChar(25) Null Default, ThTerbit Integer Null Default Null Check (ThTerbit >= 1990)); 31 Mei 2006 2006, M. Ramadhan 38
Check Constraint (2) Cara lain dengan menulis pernyataan Constraint NamaConstraint Check (kriteria) setelah pendefinisian kolom terakhir. Create Table Buku (ISBN Char(10) Not Null, Judul VarChar(25) Null Default, ThTerbit Integer Null Default Null, constraint ISBNpk Primary Key (ISBN), constraint ThTerbitCk Check (ThTerbit >= 1990)); 31 Mei 2006 2006, M. Ramadhan 39
Menambah Constraint Syntax: Alter Table NamaTabel Add Constraint NamaConstraint TipeConstraint Format penulisan TipeConstraint bergantung pd jenis constraint, sama dg format pendefinisiannya Misalnya menambahkan foreign key pada tabel Buku yang terhubung dg tabel Penerbit: Alter Table Buku Add constraint IdPenerbitFk Foreign Key (IdPenerbit) References Penerbit (IdPenerbit) 31 Mei 2006 2006, M. Ramadhan 40
Menghapus Constraint Syntax: Alter Table NamaTabel Drop Constraint NamaConstraint Misalnya menghapus constraint foreign key IdPenerbitFk dari tabel Buku: Alter Table Buku Drop constraint IdPenerbitFk 31 Mei 2006 2006, M. Ramadhan 41
View (1) Definisi: Tabel basis (base table) adalah sebuah tabel yang secara fisik disimpan dalam basis data. View adalah hasil dinamis dari sebuah atau lebih operasi terhadap tabel basis. View adalah tabel virtual yang secara aktual tidak ada dalam basis data, tetapi dihasilkan berdasarkan permintaan user sesuai dengan kebutuhannya. 31 Mei 2006 2006, M. Ramadhan 42
View (2) Tujuan: Memberikan keamanan dg menyembunyikan sebagian basis data terhadap user tertentu. Memungkinkan user mengakses data sesuai dengan kebutuhannya, sehingga data yang sama dapat dilihat dengan cara berbeda oleh user yang berbeda, pada waktu yang sama. Menyederhanakan operasi rumit terhadap tabel basis (base table). 31 Mei 2006 2006, M. Ramadhan 43
View (3) View digunakan untuk: Memilih sekumpulan baris tertentu dari sebuah tabel (proses seleksi). Memilih sekumpulan kolom tertentu dari sebuah tabel (proses proyeksi). Men-join-kan beberapa tabel. Menggabungkan baris beberapa tabel menggunakan operasi union. 31 Mei 2006 2006, M. Ramadhan 44
View (4) Proses proyeksi, misalnya: Membuat view JudulTh untuk menampilkan kolom Judul dan ThTerbit dari tabel Buku : Create View JudulTh As Select Judul, ThTerbit From Buku 31 Mei 2006 2006, M. Ramadhan 45
View (5) Proses seleksi, misalnya: Membuat view BukuBaru untuk menampilkan semua kolom tabel Buku yang terbit tahun 2005 ke atas: Create View BukuBaru As Select * From Buku Where (ThTerbit >= 2005) 31 Mei 2006 2006, M. Ramadhan 46
View (6) Proses proyeksi dan seleksi, misalnya: Membuat view JudulTh05 untuk menampilkan kolom Judul dan ThTerbit dari tabel Buku yang terbit pada tahun 2005 : Create View JudulTh05 As Select Judul, ThTerbit From Buku Where (ThTerbit = 2005) 31 Mei 2006 2006, M. Ramadhan 47
View (7) Definisi view dapat juga dibuat berdasarkan view yang telah didefinisikan sebelumnya. Membuat view JudulTh05 untuk menampilkan kolom dari view JudulTh yang terbit pada tahun 2005 : Create View JudulTh05 As Select * From JudulTh Where (ThTerbit = 2005) 31 Mei 2006 2006, M. Ramadhan 48
View (8) Join dua tabel atau lebih yang terhubung: Misalnya menampilkan kolom Judul dari tabel Buku dan kolom Nama dari tabel Penerbit yang terhubung melalui kolom Idpenerbit : Create View BukuPenerbit As Select Buku.Judul, Penerbit.Nama From Buku Join Penerbit On Buku.IdPenerbit = Penerbit.IdPenerbit 31 Mei 2006 2006, M. Ramadhan 49
View (9) Create View BukuPenerbit As Select Buku.Judul, Penerbit.Nama From Buku Join Penerbit On Buku.IdPenerbit = Penerbit.IdPenerbit Memberikan hasil yang sama dengan : Create View BukuPenerbit As Select Buku.Judul, Penerbit.Nama From Buku, Penerbit Where Buku.IdPenerbit = Penerbit.IdPenerbit 31 Mei 2006 2006, M. Ramadhan 50
View (10) Apa hasil dari pernyataan SQL berikut? Create View BukuPenerbit As Select Buku.Judul, Penerbit.Nama From Buku, Penerbit 31 Mei 2006 2006, M. Ramadhan 51
View (11) Menggabungkan baris dari dua tabel atau lebih. Misalnya menggabungkan Nama dan NoTelp dari tabel Pengarang dengan Nama dan NoTelp dari tabel Penerbit: Select Nama, NoTelp From Pengarang Union Select Nama, NoTelp From Penerbit 31 Mei 2006 2006, M. Ramadhan 52
View (12) Mengubah View nenggunakan Alter View dengan syntax yg sama dengan Create View Misalnya, mengubah view BukuBaru dengan kriteria sebelumnya (ThTerbit >= 2005) menjadi (ThTerbit >= 2006) : Alter View BukuBaru As Select * From Buku Where (ThTerbit >= 2006) 31 Mei 2006 2006, M. Ramadhan 53
Kriteria / Kondisi (1) Antara lain digunakan pada pernyataan: Constraint Check (kriteria) Select From Where (kriteria) Kriteria/kondisi adalah ekspresi boolean, menghasilkan harga True atau False Ekspresi boolean menggunakan operator perbandingan yang membandingkan dua harga: > >= < <= = <> Contoh: ThTerbit >= 1990 ThTerbit = 2005 31 Mei 2006 2006, M. Ramadhan 54
Kriteria / Kondisi (2) Untuk ekspresi boolean yang lebih rumit, gunakan operator logika berikut: Not And Or Between In Like Contoh: ThTerbit >= 1990 And ThTerbit <= 2005 ThTerbit Between 1990 And 2005 Judul Like %Visual Basic% NIM Like 04% ThTerbit In(1999,2002,2005) 31 Mei 2006 2006, M. Ramadhan 55
Index (1) Index dibuat untuk meningkatkan kinerja dan efisiensi penyaringan, pencarian dan pengurutan baris berdasarkan kolom tertentu. Secara internal, SQL Server membuat index ketika misalnya: pernyataan DML, misalnya pernyataan select dieksekusi. primary key dispesifikasikan unique constraint dispesifikasikan. 31 Mei 2006 2006, M. Ramadhan 56
Index (2) Membuat index, syntax: Create Index NamaIndex On NamaTabel (NamaKolom1,NamaKolom2, ) Jumlah kolom maksimum 16 buah Setelah NamaKolom dapat ditambahkan Desc untuk menurun atau Asc untuk menaik (default) Index tak dapat dilakukan pada kolom bertipe Text, NText, Image. Panjang total maksimum untuk semua kolom adalah 900 byte. 31 Mei 2006 2006, M. Ramadhan 57
Index (3) Membuat indeks ThIsbnIx untuk tabel Buku berdasarkan kolom ThTerbit dan ISBN: Create Index ThIsbnIx On Buku (ThTerbit, ISBN) 31 Mei 2006 2006, M. Ramadhan 58
Menghapus Yang Dihapus Syntax Pernyataan SQL Basis data Tabel View Index Drop Database NamaBasisData Drop Table NamaTabel Drop View NamaView Drop index NamaIndex 31 Mei 2006 2006, M. Ramadhan 59
Daftar Istilah DDL DML SQL Basis Data Tabel Baris Kolom Tipe Data Primary key constraint Foreign key constraint Unique constraint Check constraint View Index 31 Mei 2006 2006, M. Ramadhan 60
Yang Sudah Dipelajari Bahasa basis data: DDL, DML Mengenal SQL: standar, manfaat Membuat, mengubah, menghapus basis data Membuat, mengubah, menghapus tabel Konvensi nama Constraint Tipe data Harga default Membuat, mengubah, menghapus view Membuat dan mengubah index 31 Mei 2006 2006, M. Ramadhan 61
Daftar Pustaka Connolly, Thomas., et.al., 2002. Database System. Wokingham England, Addison- Wesley Publishing Company. Vieira, Robert, 2006. Beginning SQL Server 2005 Programming. Indianapolis, Wiley Publishing, Inc. Otey, Michael dan Conte, Paul, 2001. SQL Server Developer's Guide, Berkeley, Osborne / McGraw-Hill. 31 Mei 2006 2006, M. Ramadhan 62
TAMAT 2006, M. Ramadhan 31 Mei 2006 2006, M. Ramadhan 63