Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Materi Database Basics SQL Scripts untuk DDL dan DML Operasi CRUD Operasi antar tabel Tujuan Instruksional Khusus Mahasiswa dapat merancang database sederhana sesuai kasus masing-masing kelompok Database Basics Database adalah suatu kumpulan data yang saling berhubungan yang diorganisasi sedemikian rupa sehingga kelak dapat dimanfaatkan dengan cepat dan mudah dan disimpan dalam media penyimpanan tertentu. Database dapat dianggap sebagai suatu tempat untuk sekumpulan berkas data terkomputerisasi . Maksud dari database adalah untuk menyimpan semua data yang diinginkan dalam satu lokasi, sehingga pencarian data menjadi lebih mudah dan redundant dapat tereliminasi Database Basics Akses Data mencakup pemerolehan data maupun pemanipulasian seperti menambah , mengubah , dan menghapus data. Dalam implementasinya, data berbentuk tabel. Tabel merupakan obyek database yang memuat record (row/baris) dimana masing-masing record tersebut merupakan gabungan dari beberapa sifat data yang identik. Nilai-nilai yang terkandung dalam sifat data tersebut disebut field. Database Basics Field/Column Record SQL Scripts untuk DDL dan DML Structured Query Language (SQL) merupakan standar dalam pengaksesan database relasional. Secara umum, SQL terbagi menjadi dua kategori pernyataan yaitu : 1. 2. DDL (Data Definition Language) DML (Data Manipulation Language). Data Definition Language DDL adalah perintah-perintah yang biasa digunakan untuk mendefinisikan skema ke DBMS. Skema adalah deskripsi lengkap tentang struktur field, record dan hubungan data pada basis data. Tugas utama skema adalah menjabarkan struktur basis data kepada DBMS Secara detail beberapa hal yang perlu dijabarkan pada DBMS adalah : nama database, nama record dan fieldfield, nama field kunci, nama indeks dan field yang menjadi indeks DDL (lanjutan) Indeks merupakan suatu mekanisme yang lazim digunakan pada basis data, yang memungkinkan pengambilan data dapat dilakukan dengan cepat. DDL juga dipakai untuk mendefinisikan subskema. Subskema adalah view dari basis data. Subskema merupakan himpunan bagian dari skema, dengan kata lain, subskema bisa mencakup sebagian atau seluruh skema. Sebuah basis data hanya bisa mempunyai sebuah skema, tetapi bisa memiliki banyak subskema, tergantung oleh jumlah pengguna basis data. Data Manipulation Language DML adalah perintah-perintah yang digunakan untuk mengubah, memanipulasi data pada basis data. Tindakan seperti menghapus, mengubah dan mengambil data menjadi bagian dari DML. Secara khusus bagian DML ada yang disebut dengan DQL atau Query berarti pertanyaan atau permintaan. Contoh Penggunaan DDL, DML dan DQL DDL – Menciptakan Database bernama dbPenggajian CREATE DATABASE dbPenggajian DML – Memilih Database Use dbPenggajian DDL – Menciptakan tabel tLogin CREATE TABLE tLogin ( UserID varchar(10) NOT NULL, Password varchar(32) NOT NULL, PRIMARY KEY (UserID) ) ENGINE=MyISAM; Contoh Penggunaan DDL, DML dan DQL (lanjutan) DML – Memasukan data ke tabel tLogin INSERT INTO tlogin (`UserID`, `Password`) VALUES (‘moly', '1234'), (‘pegasus', ‘1235'), (‘mercury', ‘1236'); DQL – Menampilkan seluruh data dari tabel tLogin SELECT * FROM tLogin; DDL – Menghapus tabel tLogin DROP tLogin; Operasi CRUD CRUD merupakan singkatan dari Create Read Update Delete. Operasi CRUD merupakan operasi membutuhkan sebuah database. yang total Perintah Dasar MySQL Mengakses MySQL pertama kali Untuk menjalankan MySQL pertama kali cukup dengan mengetikkan perintah MySQL pada Command Prompt sebagai berikut : C:\>mysql\bin>mysql –u root –h localhost atau jika menggunakan XAMPP C:\>XAMPP\mysql\bin>mysql –u root –h localhost Perintah Dasar MySQL (lanjutan) Lokasi MySQL berada pada direktori C:\mysql\bin. Parameter mysql digunakan agar System Prompt berpindah ke MySQL Prompt, dan parameter -u (User) menunjuk kepada nama user yang akan login ke MySQL, parameter -h (Host) adalah menunjuk kepada mesin server yang menjalankan MySQL. Biasanya juga ditambahkan parameter -p (Password) adalah menunjuk kepada password dari user yang akan login, jika menggunakan password. Perintah Dasar MySQL (lanjutan) Setelah memasukan Nama User, dan Host tekan enter sehingga hasilnya sebagai berikut : Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 27 Server version: 5.1.30-community MySQL Community Server (GPL Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql> Perintah Dasar MySQL (lanjutan) MySQL menampilkan selamat datang dilengkapi dengan nomor urut koneksi ke server MySQL (Connection id is 27) dan versi MySQL yang digunakan (version : 5.1.30community). Sebagai tanda bahwa MySQL server dalam keadaan siap menjalankan tugasnya akan tampil MySQL Prompt yang ditandai dengan mysql> Perintah Dasar MySQL (lanjutan) Menampilkan Database menggunakan perintah SHOW Databases; Contoh : mysql> SHOW DATABASES; +-----------------------+ | Database | +-----------------------+ | information_schema | | mysql | | test | +-----------------------+ 3 rows in set (0.00 sec) Perintah Dasar MySQL (lanjutan) Perintah Show Databases akan menghasilkan atau menampilkan daftar database yang terdapat pada RDBMS MySQL Baris ‘3 rows in set (0.00 sec)’ menampilkan informasi tentang jumlah baris atau jumlah database yang dihasilkan oleh perintah MySQL (Show Databases), yang dilengkapi dengan jumlah waktu dalam satuan detik yang digunakan untuk memproses perintah MySQL tersebut. Perintah Dasar MySQL (lanjutan) Perintah untuk membuat database baru adalah : Create Database Nama_Database; mysql> CREATE DATABASE dbMhs; Query OK, 1 row affected (0.02 sec) Perintah Dasar MySQL (lanjutan) Memilih atau menentukan database Untuk menentukan atau memilih database yang akan digunakan (contoh dbMhs) adalah dengan cara memberi perintah USE/CONNECT Nama_Database; mysql> USE dbMhs; Database changed Atau : mysql> CONNECT dbMhs; Connection id: 3 Current database: dbMhs Perintah Dasar MySQL (lanjutan) Perintah untuk membuat tabel baru adalah Create Table Nama_Table; mysql> CREATE TABLE tMhs ( nim varChar(12) Not Null, nama varChar(20) Not Null); Query OK, 0 rows affected (0.09 sec) Perintah Dasar MySQL (lanjutan) Pada tabel tMhs tersebut dibuat 2 field yang masingmasing field diikuti oleh beberapa atribut, berikut penjelasan masing masing field : 1. nim adalah field yang menampung data-data nim mahasiswa dengan tipe data varchar dan lebar data sebanyak 12 digit maksimal. 2. nama adalah field yang menampung data-data nama mahasiswa dengan tipe data varchar dan lebar data sebanyak 20 digit. Perintah Dasar MySQL (lanjutan) Perintah untuk menampilkan struktur tabel ada dua macam yaitu : mysql> SHOW COLUMNS FROM tMhs; atau mysql> DESCRIBE tMhs; +------------+-------------+------+-----+---------+----------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------+ | nim | varchar(12) | | | | | | nama | varchar(20) | | | | | +------------+-------------+------+-----+---------+----------+ 2 rows in set (0.00 sec) Perintah Dasar MySQL (lanjutan) Perintah mengisi data Pada MySQL terdapat beberapa cara mengisi data ke dalam table antara lain sebagai berikut : INSERT INTO Nama_Tabel Set Kolom1 = ‘Data_Kolom1’, Kolom2 = ‘Data_Kolom2’; mysql> INSERT INTO tMhs Set nim = ‘2005-12-001’, nama = ‘Prasti’; Query OK, 1 row affected (0.00 sec) Perintah Dasar MySQL (lanjutan) Perintah mengisi data Berikut adalah cara lain dalam memasukan data ke dalam suatu table : mysql> INSERT INTO tMhs VALUES(‘2002-12-003’,’Jeniffer’); Query OK, 1 row affected (0.00 sec) Perintah Dasar MySQL (lanjutan) Menampilkan Data Data yang kita masukan ke dalam tabel dapat di tampilkan menggunakan perintah sebagai berikut : SELECT * FROM Nama_Tabel; mysql> SELECT * FROM tMhs; +---------------+---------------+ | nim | nama | +---------------+---------------+ | 2002-12-001 | Prasti | | 2002-12-003 | Jeniffer | +---------------+---------------+ 2 row in set (0.02 sec) Perintah Dasar MySQL (lanjutan) Mengubah Struktur Tabel Kadang-kadang dalam pembuatan suatu table ada fieldfield masih kurang sehingga perlu adanya penambahan satu atau lebih field dalam sebuah table. Untuk itu tidak perlu membuat table baru, karena MySQL telah menyedia-kan perintah untuk menambah atau menyisipkan field diantara field-field yang telah ada pada suatu table. Perintah Dasar MySQL (lanjutan) mysql> ALTER TABLE tMhs --> Add jurusan varChar(15) Not Null; Query OK, 1 row affected (0.06 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> DESCRIBE tMhs; +------------+-------------+------+-----+---------+----------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------+ | nim | varchar(12) | | | | | | nama | varchar(20) | | | | | | jurusan | varchar(12) | | | | | +------------+-------------+------+-----+---------+----------+ 3 rows in set (0.02 sec) Perintah Dasar MySQL (lanjutan) Secara default setiap field yang baru ditambahkan akan menempati posisi terakhir seperti pada contoh di atas. Jika Anda ingin menempatkan diantara field yang ada misalnya field harus berada pada urutan ke 3 maka tambahkan perintah AFTER kemudian nama field sebelumnya. mysql> ALTER TABLE tMhs Add fakultas varChar(20) Not Null AFTER nim; Query OK, 1 row affected (0.06 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> DESCRIBE tMhs; Perintah Dasar MySQL (lanjutan) Sebaliknya jika field-field yang Anda buat ternyata tidak berguna semuanya sehingga harus dihilangkan dari struktur table maka perintahnya adalah sebagai berikut : mysql> ALTER TABLE tMhs DROP fakultas; Query OK, 1 row affected (0.05 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> DESCRIBE tMhs; Perintah Dasar MySQL (lanjutan) Mengubah Data User bisa saja salah dalam menginputkan data ke dalam table, sehingga perlu adanya pengubahan data dalam field-field tertentu. Atau ada field baru ditambahkan ke dalam table sehingga datanya harus dimasukkan. Untuk keperluan ini MySQL telah menyediakan perintah sebagai berikut : UPDATE Nama_Tabel SET Kolom = ‘Pengubahan_Data’ WHERE kriteria; Perintah Dasar MySQL (lanjutan) Mengubah Data Contoh : mysql> UPDATE tMhs Set nim = ‘2002-12-002’ WHERE nama = ‘Prasti’; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 Untuk melihat hasil pengubahan ketikan perintah berikut : mysql> Select * FROM tMhs; Perintah Dasar MySQL (lanjutan) Menampilkan data dengan kriteria tertentu dapat dilakukan dengan menambahkan perintah WHERE. mysql> SELECT * FROM tMhs WHERE nama = ’Prasti’; Menampilkan data pada kolom tertentu. Kadang-kadang kita hanya membutuhkan data-data tertentu saja tanpa harus menampilkan semua isi data pada setiap kolom(field). Adapun perintahnya adalah Select Kolom1, Kolom2 From Nama_Tabel; Perintah Dasar MySQL (lanjutan) Adapun perintahnya adalah : Select Kolom1, Kolom2 From Nama_Tabel; Contoh : mysql> SELECT nim, nama FROM tMhs; +---------------+--------------+ | nim | nama | +---------------+--------------+ | 2002-12-002 | Prasti | | 2002-12-003 | Jeniffer | +---------------+--------------+ 2 rows in set (0.00 sec) Perintah Dasar MySQL (lanjutan) Menampilkan data secara berurutan. Bila kita ingin menampilkan data secara berurut cukup dengan menambahkan perintah ORDER BY sehinggga penulisan perintahnya adalah sebagai berikut : SELECT * FROM Nama_Tabel ORDER BY Kolom_Yang_Akan_Diurut Jenis_Pengurutan Perintah Dasar MySQL (lanjutan) Jenis pengurutan ada dua yaitu Ascending (urut naik) dan Descending (urut turun). Contoh di bawah ini menggunakan jenis pengurutan Ascending, perhatikan nama berurut naik (alphabet) sedangkan pada kolom nim menjadi tidak berurutan karena yang diurutkan adalah kolom nama. mysql> SELECT * FROM tMhs ORDER BY nama ASC; +-------------+------------+ | nim | nama | +-------------+------------+ | 2002-12-003 | Jeniffer | | 2002-12-002 | Prasti | +-------------+------------+ 2 rows in set (0.00 sec) Perintah Dasar MySQL (lanjutan) Perintah untuk menghapus data adalah : DELETE FROM Nama_Tabel WHERE KRITERIA mysql> DELETE FROM tMhs WHERE nama = ‘Prasti’; Query OK, 1 row affected (0.03 sec) Catatan : MySQL tidak akan menanyakan konfirmasi ulang kepada Anda untuk menghapus atau membatalkan penghapusan data. Untuk itu pastikan bahwa data yang akan dihapus adalah data yang tepat. Sebab data yang telah dihapus tidak dapat dikembalikan dengan cara apapun (tidak ada perintah Undo atau Undelete seperti pada windows). Perintah Dasar MySQL (lanjutan) Menghapus tabel dan Database Penghapusan tabel dan database dilakukan dengan perintah DROP Contoh Menghapus tabel : mysql> DROP TABLE tMhs; Query OK, 0 row affected (0.00 sec) Contoh Menghapus database : mysql> DROP DATABASE dbMhs; Query OK, 0 row affected (0.01 sec) Perintah Dasar MySQL (lanjutan) Keluar dari MySQL Untuk keluar dari MySQL kita dapat menggunakan salah satu dari perintah berikut ini : 1. mysql> Quit Bye 2. mysql> Exit Bye 3. mysql> \q Bye Operasi antar tabel Pada kenyataannya bahwa pembuatan sebuah system pasti tidak menggunakan satu table saja. Tentu ada operasi antar table disana. Hal ini memungkinkan untuk menampilkan data dari beberapa table dalam satu tampilan sekaligus. Penggabungan antar table ini disebut dengan JOIN, sedangkan hubungan antar table disebut dengan RELASI. Dalam melakukan relasi antar table, maka perlu adanya join key yang nantinya akan menentukan record antar table dapat saling berhubungan. Operasi antar tabel Untuk memahami operasi antar tabel, maka siapkan database dengan 3 buah tabel sbb : Nama database : dbPegawai Nama Tabel : 1. 2. 3. tInfoPrib tBagian tPekerjaan Operasi antar tabel Table tInfoPrib: CREATE TABLE tInfoPrib ( Nip VARCHAR( 5 ) NOT NULL , Nama VARCHAR( 25 ) NOT NULL , Kota VARCHAR( 15 ) NULL , TglLahir DATE NOT NULL , JK CHAR( 1 ) NOT NULL , PRIMARY KEY ( Nip ) ); Operasi antar tabel Table tBagian : CREATE TABLE tBagian ( KodeBag CHAR( 1 ) NOT NULL , NamaBag CHAR( 15 ) NOT NULL , UNIQUE ( NamaBag ) ); Operasi antar tabel Table tPekerjaan : CREATE TABLE tPekerjaan ( Nip VARCHAR( 5 ) NOT NULL , KodeBag CHAR( 1 ) NOT NULL , Gaji INT NOT NULL , PRIMARY KEY ( Nip ) ); Operasi antar tabel mysql> Select tInfoprib.nip, tInfoprib.nama, tpekerjaan.gaji -> From tInfoprib, tpekerjaan -> WHERE tInfoPrib.nip=tpekerjaan.nip; Hasil : +-------+------------------+---------+ | nip | nama | gaji | +-------+------------------+---------+ | 12345 | Dian Permana | 1200000 | | 12346 | Tamara Febrianti | 1000000 | | 12347 | Dara Permatasari | 1200000 | | 12348 | Dita Nurafni | 1200000 | | 12349 | Dhani Akbar | 1000000 | | 12350 | Aan Setiawan | 1000000 | | 12351 | Raul Sitompul | 1400000 | | 12352 | Rahmanda | 1000000 | | 12353 | Niken | 1000000 | +-------+------------------+---------+ 9 rows in set (0.00 sec) Operasi antar tabel mysql> Select tPekerjaan.Nip, tBagian.NamaBag As Departemen -> From tPekerjaan, tBagian -> WHERE tpekerjaan.kodebag = tbagian.kodebag; Hasil : +-------+------------+ | Nip | Departemen | +-------+------------+ | 12345 | Produksi | | 12346 | Pemasaran | | 12347 | Akuntansi | | 12348 | SDM | | 12349 | Pemasaran | | 12350 | Produksi | | 12351 | Produksi | | 12352 | Pemasaran | | 12353 | Pemasaran | | 12354 | Pemasaran | +-------+------------+ 10 rows in set (0.05 sec) Operasi antar tabel mysql> SELECT i.Nip, i.Nama, p.Gaji -> FROM tInfoprib i, tPekerjaan p -> WHERE i.nip=p.nip; Hasil : +-------+------------------+---------+ | Nip | Nama | Gaji | +-------+------------------+---------+ | 12345 | Dian Permana | 1200000 | | 12346 | Tamara Febrianti | 1000000 | | 12347 | Dara Permatasari | 1200000 | | 12348 | Dita Nurafni | 1200000 | | 12349 | Dhani Akbar | 1000000 | | 12350 | Aan Setiawan | 1000000 | | 12351 | Raul Sitompul | 1400000 | | 12352 | Rahmanda | 1000000 | | 12353 | Niken | 1000000 | +-------+------------------+---------+ 9 rows in set (0.00 sec) Operasi antar tabel mysql> SELECT i.Nip, i.Nama, p.Gaji -> FROM tInfoprib i, tPekerjaan p -> WHERE i.nip=p.nip AND i.jk ='W'; Hasil : +-------+------------------+---------+ | Nip | Nama | Gaji | +-------+------------------+---------+ | 12346 | Tamara Febrianti | 1000000 | | 12347 | Dara Permatasari | 1200000 | | 12348 | Dita Nurafni | 1200000 | | 12352 | Rahmanda | 1000000 | | 12353 | Niken | 1000000 | +-------+------------------+---------+ 5 rows in set (0.00 sec)