Bahasa SQL
Bahasa SQL
2. Data Manipulation Language (DML) adalah jenis instruksi SQL yang berkaitan
dengan data yang ada dalam tabel, tentang bagaimana menginput,
menghapus, memperbaharui serta membaca data yang tersimpan di dalam
database. Contoh perintah SQL untuk DML : SELECT, INSERT, DELETE, dan
UPDATE.
3. Data Control Language (DCL) adalah jenis instruksi SQL yang berkaitan dengan
manajemen hak akses dan pengguna (user) yang dapat mengakses database
maupun tabel. Termasuk diantaranya : GRANT dan REVOKE.
Selain ketiga jenis perintah SQL, terdapat juga 2
jenis SQL tambahan : Transaction Control
Language, dan Programmatic SQL.
• Transaction Control Language (TCL) adalah perintah SQL untuk proses
transaksi. Proses transaksi ini digunakan untuk perintah yang lebih dari 1,
namun harus berjalan semua, atau tidak sama sekali. Misalnya untuk
aplikasi critical seperti transfer uang dalam sistem database perbankan.
Setidaknya akan ada 2 perintah, yaitu mengurangi uang nasabah A, dan
menambah uang nasabah B. Namun jika terjadi kesalahan sistem, kedua
transaksi ini harus dibatalkan. Tidak bisa hanya satu perintah saja.
Termasuk ke dalam TCL adalah perintah : COMMIT, ROLLCABK, dan SET
TRANSACTION.
• Programmatic SQL berkaitan dengan sub program (stored procedure)
maupun penjelasan mengenai struktur database. Contoh perintah seperti :
DECLARE, EXPLAIN, PREPARE, dan DESCRIBE.
MENJALANKAN PERINTAH (QUERY) MYSQL
• Setiap perintah, atau sering juga disebut “query” di dalam MySQL harus
diakhiri dengan tanda titik koma “;” dan akan dieksekusi setelah
tombol Enter ditekan. Selama query MySQL belum diakhiri dengan “;”
maka itu dianggap masih dalam satu perintah.
• Selain menggunakan “;”, query MySQL juga akan mengeksekusi perintah juga
diakhiri dengan tanda “\g”.
Penulisan perintah (query) MySQL juga tidak
harus dalam satu baris. Misalnya, kita bisa
menjalankan query berikut:
ika kita telah membuat query MySQL, namun
memutuskan untuk membatalkannya, dapat
dilakukan dengan kode “\c”. Contoh querynya:
Aturan Penulisan huruf BESAR dan kecil
dalam MySQL
• Konsep penggunaan huruf besar dan
huruf kecil dalam MySQL akan berbeda
tergantung saat penggunaannya.
• MySQL tidak membedakan penulisan
huruf besar maupun kecil (case
insensitive) dalam penulisan fungsi dan
identifier.
• Sebagai contoh, ketiga query ini akan
menghasilkan output yang sama (kecuali
header dari tabel):
• Untuk penulisan nama database dan nama tabel,
MySQL akan mengikuti sistem operasi dimana MySQL
Server berjalan.
• Untuk Sistem Operasi Windows, nama database mahasiswa dianggap
sama dengan MaHaSIsWA, namun dalam MySQL Server yang berjalan
pada Linux, kedua database tersebut dianggap berbeda (case
sensitive).
• Karena hal ini, ada baiknya kita membiasakan menggunakan
kesepakatan dalam penamaan. Disarankan untuk menggunakan
selalu huruf kecil dalam penulisan database, tabel dan variabel dalam
MySQL, sehingga perbedaan huruf tidak akan menjadi masalah pada
kemudian hari jika MySQL Server pindah sistem operasi.
TIPE DATA DALAM MYSQL
TIPE DATA NUMERIK
(Integer, Fixed Point, dan Floating Point)
• Tipe Data Integer MySQL: Tinyint , Smallint, Mediumint, Integer (Int),
dan Bigint
Format query untuk tipe data integer adalah:
• Besar dari tipe data fixed point ini tergantung dari opsional query [M,D]
dimana M adalah total jumlah digit keseluruhan, dan D adalah jumlah digit
dibekang koma (pecahan). Contohnya DEC [6,2] akan mendefiniskan suatu
kolom agar memuat 6 digit angka, dengan 4 angka di depan koma, dan 2
digit angka di belakang koma.
• Maksimal nilai untuk M adalah 65, dan maksimal nilai D adalah 30. Dengan
syarat, nilai D tidak boleh lebih besar dari nilai M. Jika kita tidak
menyertakan M dan D dalam mendefinisikan suatu kolom DECIMAL, maka
secara sistem M akan di set 10. Dan D default 0. Tipe data DECIMAL ini
cocok digunakan untuk kolom yang difungsikan untuk menampung nilai
uang.
Tipe Floating Point : FLOAT dan DOUBLE
• Jika pada tipe fixed point kita mendefiniskan suatu kolom dengan
nilai pecahan yang tetap, untuk tipe floating point, nilai pecahan yang
dapat diinput bisa berbeda-beda.
• Untuk tipe floating point, MySQL menyediakan 2 jenis tipe data,
yaitu FLOAT dan DOUBLE.
• Perbedaan keduanya terletak pada presisi (ketelitian)
pembulatan. FLOAT menggunakan single-precision,
sedangkan DOUBLE menggunakan double-precision.
• Untuk tipe data FLOAT dan DOUBLE, format querynya adalah:
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
• Sama seperti pada tipe data DECIMAL, nilai opsional query [M, D] dimana M adalah total jumlah
digit keseluruhan, dan D adalah jumlah digit dibekang koma (pecahan). Maksimal nilai M dan D
akan berbeda pada tiap komputer, tergantung kemampuan prosesor mengolah tipe data floating
point. FLOAT biasanya akan akurat untuk penyimpanan sekitar 7 angka desimal, sedangkan
DOUBLE mencapai 15 angka desimal.
• Opsional query UNSIGNED jika di nyatakan, akan menghilangkan kemampuan tipe data untuk
meyimpan angka negatif (tidak menambah jangkauan sebagaimana tipe data integer)
• Opsional query ZEROFILL sama seperti integer, akan mengisi angka 0 pada bagian kiri angka.
tipe data string: CHAR, VARCHAR, BINARY,
VARBINARY, TEXT dan BLOB.
• Perbedaan dari tipe data ini adalah dari ukuran, cara penyimpanan,
dan dukungan case-sensitif (perbedaan huruf besar dan kecil).
TIPT CHAR dan VARCHAR
• Format query tipe data CHAR dan VARCHAR:
CHAR [(M)]
VARCHAR [(M)]
• Dimana M adalah jumlah karakter yang akan dialokasikan oleh MySQL. Misalkan nilai M=5, maka MySQL menyediakan 5 karakter
untuk kolom tersebut. Nilai maksimal M adalah 255 karakter untuk CHAR, dan 65,535 karakter untuk VARCHAR. Jika nilai M tidak di
nyatakan, nilai defaultnya M=1.
• Perbedaan antara CHAR dan VARCHAR adalah dari cara MySQL mengalokasikan ukuran penyimpanan data yang diinput kedalam
kolom tersebut. Contohnya, jika kita mendefiniskan sebuah tabel dengan kolom bertipe CHAR(5), walaupun huruf atau karakter
yang kita inputkan hanya 1 karakter, MySQL tetap menyimpan kolom tersebut untuk 5 karakter. Namun jika kita definiskan sebagai
VARCHAR(5), dan kita menginput data dengan jumlah karakter 2, maka ukuran penyimpanan hanya akan menggunakan 2 karakter,
sehingga VARCHAR lebih fleksibel dan efisien.
• Tetapi untuk fleksibilitas ini, tipe VARCHAR memerlukan proses tambahan untuk menyimpan ukuran dari masing-masing data.
Sehingga VARCHAR akan sedikit lebih lambat bila dibandingkan CHAR. Walaupun demikian, proses ini hampir tidak terdeteksi,
anda bebas menggunakan CHAR atau VARCHAR untuk tipe data string.
• kebutuhan akan tipe data antara CHAR dan VARCHAR bergantung kepada seperti apa
data yang akan kita input. Tipe data CHAR cocok digunakan untuk kolom yang
memiliki jumlah karakter tetap, misalnya untuk nomor KTP, ID pelanggan dan NIM
mahasiswa. Sedangkan tipe data VARCHAR akan lebih cocok digunakan untuk kolom
yang berisi data yang berbeda-beda ukuran, seperti nama, alamat dan kota.
• Baik CHAR maupun VARCHAR data yang diinput akan disimpan secara case insensitif,
dimana huruf besar dan kecil tidak dibedakan.
• Untuk tipe data CHAR, jika kita menginputkan data dengan spasi dibelakangnya,
misalnya ‘aku ’ (terdapat 3 spasi setelah ‘aku’), maka sewaktu menampilkan data,
spasi tersebut akan otomastis dihapus oleh MySQL, menjadi‘aku’. Pertimbangkan
menggunakan VARCHAR jika hal ini anda butuhkan, dimana VARCHAR akan tetap
menampilkan ‘aku ’.
Tipe Data BINARY dan VARBINARY dalam MySQL
• Pada dasarnya tipe data BINARY dan VARBINARY sama dengan CHAR dan VARCHAR, perbedaannya hanya pada struktur
peyimpanan dalam MySQL, dimana tipe data binary akan disimpan secara biner (bit per bit), bukan secara karakter seperti CHAR.
Sederhananya, hal ini akan berefek pada case-sensitif data (perbedaan penggunaan huruf besar dan huruf kecil).
• Pada tipe data CHAR, jika kita menyimpan data ‘A’, maka secara internal MySQL akan menyimpannya sebagai karakter ‘A’, dimana
‘A’ akan sama dengan ‘a’. Namun untuk tipe data BINARY, ‘A’ akan disimpan sebagai bit dari ‘A’, yaitu 65, dan akan berbeda dengan
‘a’, dimana nilai binernya adalah 97.
BINARY [(M)]
VAR BINARY [(M)]
• Dimana sama seperti tipe data CHAR dan VARCHAR, M adalah jumlah karakter yang akan dialokasikan oleh MySQL. Misalkan
nilai M adalah 5, maka MySQL menyediakan 5 karakter untuk kolom tersebut. Nilai M maksimal 255 karakter untuk BINARY,
dan 65,535 karakter untuk VARBINARY. Jika nilai M tidak di ny
• BINARY akan disimpan dalam ukuran yang tetap, sedangkan VARBINARY akan berubah sesuai ukuran data (sama dengan
perbedaan antara CHAR dan VARCHAR)atakan, nilai defaultnya adalah 1.
Tipe Data TEXT MySQL
• Untuk data string yang lebih besar, MySQL menyediakan tipe data TEXT,
yang terdiri dari : TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT.
• Setiap tipe data text disimpan berdasarkan berapa data yang diinput, sama
seperti VARCHAR, dimana jika kita mendefinisikan suatu kolom
sebagai LONGTEXT, dan hanya berisi 100 karakter, ukuran penyimpanan
yang digunakan sekitar 100 byte, bukan 4GB.
Tipe Data BLOB MySQL
• Tipe data BLOB adalah tipe data versi binary dari TEXT, dimana karakter akan
disimpan dalam bit. Dan untuk karakter huruf, huruf besar dan kecil akan
dibedakan (‘A’ tidak sama dengan ‘a’). Sama seperty TEXT, BLOB juga memiliki
beberapa tipe : TINY BLOB, BLOB, MEDIUM BLOB, dan LONGBLOB.
• Ukuran serta jangkauan dari BLOG sama seperti TEXT
• Karena sifatnya yang tersimpan secara binary,tipe data BLOB dapat digunakan
untuk menyimpan data multimedia, seperti gambar dan musik kedalam tabel
MySQL.
TIPE DATA DATE
• tipe data date (tanggal), tipe data ini digunakan untuk menyimpan data
yang berkaitan dengan tanggal dan waktu.
• Tipe data date, terdiri dari: DATE, TIME, DATETIME, TIMESTAMP, dan YEAR.
• Perbedaan dari tipe-tipe tersebut terletak pada format penyimpanan data.
• CCYY : input untuk tahun, dimana YY berupa tahun 2 digit, seperti 98, 78,
dan 00, sedangkan untuk CCYY adalah tahun dengan 4 digit, seperti 2001,
1987, 2012. Untuk tahun dengan 2 digit, MySQL mengkonversinya dengan
aturan 70-99 menjadi 1970-1999 dan 00-69 menjadi 2000-2069.
• MM: bulan dalam format dua digit, seperti 05,07,dan 12.
• DD: tanggal dalam format dua digit, seperti 14, 06 dan 30.
• hh: jam dalam format 2 digit, seperti 06,09, dan 12.
• mm: menit, dalam format 2 digit, seperti 15, 45, dan 59.
• ss: detik, dalam format 2 digit, seperti 10, 40, dan 57.
• Jika MySQL tidak dapat membaca format, atau data tidak tersedia, maka
data akan diisi sesuai dengan nilai pada Zero Value
Tipe Data ENUM dan SET dalam MySQL
• Tipe data ENUM merupakan tipe data yang khusus untuk kolom
dimana nilai datanya sudah kita tentukan sebelumnya.
• Pilihan ini dapat berisi 1 sampai dengan 65,535 pilihan string. Dimana
kolom yang didefinisikan sebagai ENUM hanya dapat
memilih satu diantara pilihan string yang tersedia.
• Contoh penggunaan ENUM misalnya untuk kolom yang berisi daftar
Jurusan yang harus dipilih mahasiswa. Pilihan ini harus sudah tersedia
sebelumnya, dan kita dapat menggunakan tipe data enum untuk
memastikan bahwa jurusan yang dipilih adalah jurusan yang telah
ditentukan sebelumnya dan hanya 1 jurusan.
Tipe data SET dalam MySQL
• Berbeda dengan tipe data ENUM dimana pilihan yang tersedia untuk
kolom hanya dapat 1 data, untuk kolom SET kita dapat memilih satu
atau lebih nilai yang tersedia dari 1 sampai 64 pilihan string yang
tersedia.
• Contoh penggunaan tipe data SET adalah untuk data tentang hobby
seseorang, karena bisa aja seseorang memiliki hobi yang lebih dari 1,
namun kita ingin memilih dari kumpulan list yang telah kita buat
sebelumnya.
Atribut Tipe Data dalam MySQL
• Untuk pembuatan sebuah tabel dalam MySQL, selain mendefinisikan
tipe data, kita juga dapat mendefinisikan atribut dari tipe data
tersebut
• Atribut tipe data adalah aturan yang kita terapkan untuk sebuah
kolom.
• Atribut DEFAULT
Atribut DEFAULT dapat digunakan pada hampir semua tipe data. Fungsinya
untuk menyediakan nilai bawaan untuk kolom seandainya tidak ada data yang diinput
kepada kolom tersebut.
• Atribut NULL
Atribut NULL berkebalikan dengan NOT NULL, dimana jika sebuah kolom didefinisikan
dengan NULL, maka kolom tersebut tidak harus berisi nilai.
• Atribut SIGNED
Atribut SIGNED digunakan untuk tipe data numerik. Berlawanan dengan atribut UNSIGNED,
dimana atribut ini berfungsi agar kolom dapat menampung nilai negatif. Atribut SIGNED biasanya
dicantumkan hanya untuk menegaskan bahwa kolom tersebut mendukung nilai negatif, karena
MySQL sendiri telah menyediakan nilai negatif secara default untuk seluruh tipe numerik.
• Atribut UNSIGNED
Atribut UNSIGNED digunakan untuk tipe data numerik, namun berbeda sifatnya untuk tipe
data INT,DECIMAL dan FLOAT. Untuk tipe data INT,
atribut UNSIGNED berfungsi mengorbankan nilai negatif, untuk mendapatkan jangkauan nilai
positif yang lebih tinggi. Namun untuk tipe data DECIMAL dan FLOAT, atribut UNSIGNED hanya
akan menhilangkan nilai negatif, tanpa menambah jangkauan data.
• Atribut ZEROFILL
Atribut ZEROFILL digunakan untuk tipe data numerik, dimana berfungsi untuk tampilan format data
yang akan mengisi nilai 0 di sebelah kanan dari data. Jika kita menggunakan atribut ZEROFILL untuk
suatu kolom, secara otomatis kolom tersebut juga dikenakan attribut UNSIGNED.
Lets Do It
Masuk ke dalam Mysql
Menampilkan database
Membuat Database
Menghapus Database
Menggunakan query “drop database Akademik;”
Membuat table dalam database
• Memilih database yang akan digunakan
Membuat table, menampilkan table, dan
detail tabel
• Buat tiga table berikut :
• Mengisi data pada tabel
Menjadikan salah satu field sebagai Foreign Key pada table lain.
Jika table sudah dibuat sebelumnya maka menggunakan perintah alter
table, jika belum ada maka create table dan definisikan FK-nya
• Contoh membuat FK di awal pembuatan table :
• Contoh Jika sebelumnya sudah dibuat tebal beserta fieldnya namun
belum ada FK-nya
See u next