Materi SQL
Materi SQL
A. Tipe data
1. Number
a. Int “jumlah angka maksimal 11 karakter”
Tipe Fixed Point MySQL:
b. DECIMAL
Tipe data fixed point adalah tipe data angka pecahan (desimal), dimana jumlah angka
pecahan (angka di belakang koma) sudah di tentukan dari awal.
Contoh 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.
Deklarasi Jangkauan
DECIMAL (4,1) -999,9 to 999,9
DECIMAL (6,2) -9999,99 to 9999,99
DECIMAL (3,2) -9,99 to 9,99
DECIMAL (8,2) -999999,99 to 999999,99
Atribut AUTO_INCREMENT
Atribut AUTO_INCREMENT digunakan untuk tipe data numerik (biasanya tipe data INT),
dimana jika kita menetapkan sebuah kolom dengan atribut AUTO_INCREMENT, maka setiap
kali kita menginputkan data, nilai pada kolom ini akan bertambah 1. Nilai pada kolom tersebut
juga akan bertambah jika kita input dengan NULL atau nilai 0.
Pada sebuah tabel, hanya 1 kolom yang dapat dikenai atribut AUTO_INCREMENT. Setiap
kolom AUTO_INCREMENT juga akan dikenakan atribut NOT NULL secara otomatis. Kolom
AUTO_INCREMENT juga harus digunakan sebagai KEY (biasanya PRIMARY KEY)
Atribut BINARY
Atribut BINARY digunakan untuk tipe data huruf, seperti CHAR dan VARCHAR. Tipe data
CHAR, VARCHAR dan TEXT tidak membedakan antara huruf besar dan kecil (case-
insensitive), namun jika diberikan atribut BINARY, maka kolom tersebut akan membedakan
antara huruf besar dan kecil (case-sensitive)
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 NOT NULL dapat digunakan pada hampir semua tipe data, Fungsinya untuk
memastikan bahwa nilai pada kolom tersebut tidak boleh kosong. Jika kita menginput data,
namun tidak memberikan nilai untuk kolom tersebut, akan menghasilkan error pada MySQL.
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.
Dapat kita lihat bahwa jika kita memberikan nilai NULL kepada kolom nama yang telah
diberikan atribut NOT NULL, MySQL akan memberikan error. Juga pada kolom no, dimana
kita lompat dengan memberikan nilai 6, namun untuk kolom selanjutnya, akan tetap ditambah
sebanyak 1, karena dikenai atribut AUTO_INCREMENT.
3. Merubah tabel
a. Merubah tipe data kolom MYSqL
Jika kita ingin langsung memasukkan 2 baris data atau lebih dalam satu perintah query INSERT
MySQL, tinggal menambahkan isi data untuk baris berikutnya dibelakang perintah dengan
format penulisan sebagai berikut:
Untuk situasi dimana kolom yang akan diisi tidak diketahui urutannya, atau kita hanya akan
mengisi sebagian kolom saja, maka kita harus mendefenisikan kolom-kolom mana saja yang
akan digunakan. Untuk keperluan tersebut, MySQL menyediakan variasi query INSERT
Input data tidak boleh ada double penginputan primary key karena akan terjadi error, tapi untuk
menghilangkan error tersebut bisa menggunakan IGNORE
kita ingin menampilkan seluruh dosen pada tabel daftar_dosen dan diurutan kolom alamat
secara abjad, maka querynya adalah sebagai berikut:
Misalkan kita ingin menampilkan data 5 nama dosen paling atas yang dirutkan
berdasarkan nama, maka querynya adalah:
mysql> SELECT * FROM mata_kuliah ORDER BY nama_matkul LIMIT 5;
+-------------+-------------------+------------+----------+------------+
| kode_matkul | nama_matkul | jumlah_SKS | semester | NIP_dosen |
+-------------+-------------------+------------+----------+------------+
| DTBASE | Database | 4 | 4 | 0275430005 |
| FISDAS | Fisika Dasar | 2 | 1 | 0480432066 |
| JARKOM | Jaringan Komputer | 3 | 3 | 0770435006 |
| MATDAS | Matematika Dasar | 4 | 1 | 0160436012 |
| MIKROP | Mikro Prosesor | 2 | 5 | 0480432066 |
+-------------+-------------------+------------+----------+------------+
5 rows in set (0.00 sec)
langsung saja kita gunakan untuk pencarian nama_dosen yang diawali dengan huruf ‘S’:
‘S%’ : Cocok dengan kata yang diawali dengan S, dan diikuti dengan karakter apa saja,
contoh: ‘S’, ‘Sa’, ‘Si’, ‘Saaaaaa’, ‘Susi’, dan ‘Sabrina Sari’.
‘S_’: Cocok dengan kata yang diawali dengan S, dan diikuti dengan satu karakter apa
saja, contoh: ‘Si’, ‘Sa’, ‘Su’, ‘Se’, dan ‘St’.
‘A__i’: Cocok dengan kata yang diawali dengan ‘A’, diikuti oleh 2 karakter bebas,
namun diakhiri dengan i, contoh: ‘Andi’, ‘ardi’, ‘aaai’.
‘%e’: Cocok dengan seluruh kata dengan panjang berapapun yang diakhiri dengan huruf
‘e’, contoh: ‘Kece’, ‘Kue’, dan ‘mie’.
‘%dia%’: Cocok dengan seluruh kata yang mengandung kata ‘dia’, contoh: ‘media’,
‘kemudian’, ‘dia’, dan ‘diaaaa’.
Kita juga dapat menggabungkan operasi LIKE dengan operator logika OR atau AND untuk
pencarian yang lebih kompleks. Misalkan saya ingin mencari kolom nama_dosen yang diakhiri
huruf ‘i’ atau kolom alamat yang diawali dengan huruf ‘m’. Querynya adalah sebagai berikut:
Atau menggunakan or atau and untuk menghapus lebih dari satu baris
Sebagai contoh untuk tabel daftar_dosen, misalkan kita ingin menghapus 3 baris terakhir dari
tabel daftar_dosen yang dimulai dari abjad terakhir dari nama dosen. Untuk keperluan ini,
pertama-tama kita harus mengurutkan tabel daftar_dosen dengan menggunakan kolom nama
dosen secara terbalik, lalu menghapus 3 record paling awal.
Namun jika informasi tersebut tidak kita butuhkan, MySQL menyediakan query TRUNCATE
seperti contoh berikut:
Secara internal, TRUNCATE dijalankan dengan cara menghapus tabel menggunakan DROP,
lalu membuat ulang tabel itu kembali. Cara ini akan lebih cepat dari pada perintah DELETE
yang menghapus baris satu persatu. Perbedaan kecepatan eksekusi ini baru terasa jika tabel
tersebut memiliki jumlah record yang banyak.
Penekanan untuk judul diatas, query DISTINCT digunakan hanya untuk memanipulasi
tampilan hasil dari tabel. Duplikasi yang dihapus adalah untuk tampilan data, bukan tabel asli
dari MySQL.
Misalkan dari tabel daftar_dosen, kita ingin menampilkan hanya asal kota dari seluruh dosen
yang ada. Maka querynya adalah sebagai berikut:
Saya menambahkan perintah ORDER BY agar tampilan lebih rapi dengan diurutkan
berdasarkan alamat.
Dari hasil query tersebut, dapat dilihat bahwa nama kota yang sama akan tampil lebih dari sekali.
Hal ini terjadi karena terdapat beberapa dosen yang kebetulan beralamat di kota yang sama
dengan dosen lainnya. Jika yang kita inginkan bahwa untuk setiap kota yang sama, hasil query
harus muncul 1 kali saja, kita akan memerlukan perintah DISTINCT.
Sehingga untuk contoh kasus kita sebelumnya untuk menampilkan seluruh kota 1 kali saja, maka
querynya:
Hak akses ini berarti user dapat memiliki hak akses untuk seluruh database yang terdapat di
dalam MySQL. Contoh penulisan query GRANT untuk level ini adalah:
GRANT SELECT ON *.* TO 'user'@'localhost';
Hak akses ini berarti user memiliki hak akses penuh untuk sebuah database. Contoh penulisan
query GRANT untuk level database ini adalah:
Hak akses ini berarti user memiliki hak akses untuk sebuah tabel yang berada pada sebuah
database. Contoh penulisan query GRANT untuk level ini adalah:
Hak akses yang dimiliki user hanya terbatas pada level sebuah tabel saja.
Hak akses ini adalah hak akses paling kecil yang dapat diberikan kepada sebuah user. Dengan
hak akses level kolom, user hanya memiliki hak akses untuk beberapa kolom pada sebuah tabel.
Contoh penulisan query GRANT untuk level kolom ini adalah:
Level paling akhir ini kita membatasi hak akses user hanya untuk kolom tertentu saja. Penulisan
kolom yang diperbolehkan diletakkan di dalam tanda kurung.