MySQL DQL, DDL, DML, dan DCL
Apa itu SQL?
SQL merupakan singkatan dari Structured Query Language. SQL atau juga sering disebut sebagai query merupakan suatu bahasa (language) yang digunakan untuk mengakses database. SQL dikenalkan pertama kali dalam IBM pada tahun 1970 dan sebuah standar ISO dan ANSII ditetapkan untuk SQL. Standar ini tidak tergantung pada mesin yang digunakan (IBM, Microsoft atau Oracle). Hampir semua software database mengenal atau mengerti SQL. Jadi, perintah SQL pada semua software database hampir sama.
Terdapat 3 (tiga) jenis perintah SQL, yaitu DDL, DML dan DCL.
Apa itu DDL?
DDL atau Data Definition Language merupakan perintah SQL yang berhubungan dengan pendefinisian suatu struktur database, dalam hal ini database dan table. Beberapa perintah dasar yang termasuk DDL ini antara lain :
+ CREATE
-contoh :
create database [if not exists] kampus;
create table mahasiswa(nim char(9) not null primary key,
nama_mahasiswa char(40), alamat char(50));
Bentuk perintah di atas akan membuat sebuah database baru dengan nama sekolah dan table siswa. Aturan penamaan sebuah database atau table sama seperti aturan penamaan sebuah variabel, dimana secara umum nama database boleh terdiri dari huruf, angka dan under-score (_). Jika database yang akan dibuat sudah ada, maka akan muncul pesan error. Namun jika ingin otomatis menghapus database yang lama jika sudah ada, aktifkan option IF NOT EXISTS.Setiap kita membuat database baru, maka sebenarnya MySQL akan membuat suatu folder (direktori) sesuai dengan nama databasenya yang ditempatkan secara default di \mysql\data. Di dalam folder tersebut nantinya akan terdapat file-file yang berhubungan dengan tabel dalam database.
+ ALTER
- contoh :
alter table mahasiswa add jenkel char (1);
alter table koleksi add author varchar (20);
Bentuk perintah di atas akan mengubah suatu table dengan menambahkan variabel jenkel pada table siswa dan variabel author pada table koleksi.
+ RENAME
rename table mahasiswa to pelajar ;
rename table koleksi to barang ;
Bentuk perintah di atas akan mengubah nama suatu table. Huruf yang berwarna merah menandakan nama table yang baru sedangkan huruf yang bergaris bawah menandakan table yang akan diganti namanya.
+ DROP
- contoh :
drop database [if exists] nama_database;
drop database [if exists] kampus;
Bentuk perintah di atas akan menghapus kolom dan indeks dengan nama nama_database dan sekolah. Jika databasenya ada maka database dan juga seluruh tabel di dalamnya akan dihapus. Jadi berhati-hatilah dengan perintah ini! Jika nama database yang akan dihapus tidak ditemukan, maka akan ditampilkan pesan error. Aktifkan option IF EXISTS untuk memastikan bahwa suatu database benar-benar ada.
Apa itu DML?
DML atau Data Manipulation Language merupakan perintah SQL yang berhubungan dengan manipulasi atau pengolahan data atau record dalam table. Perintah SQL yang termasuk dalam DML antara lain :
+ SELECT
- contoh:
select * from mahasiswa;
select * from koleksi;
+ INSERT
- contoh:
insert into mahasiswa(nim,nama_mahasiswa,alamat)
values('921411155','Firman','Jl.palma Blok B No 36');
insert into koleksi(id_koleksi, title, author, publisher, thn_terbit, stok)
values('103','Sistem Basis Data','Robert,'Yudistira','2012','7')
Bentuk perintah di atas akan menambahkan suatu data pada table yang sudah ditentukan. Contohnya seperti diatas. Huruf yang berwarna merah menandakan data yang akan ditambahkan. Huruf yang bergaris bawah menandakan tablenya (mahasiswa, koleksi)dan variable-variabelnya.
+ UPDATE
- contoh:
update mahasiswa set jenkel='L' where nim='921411155';
update koleksi set author='Oneway' where id_koleksi='103';
Bentuk perintah di atas digunakan untuk mengubah suatu data pada table yang sudah ditentukan. Huruf yang berwarna merah menandakan data yang akan ditambahkan. Huruf yang bergaris bawah menandakan tablenya (mahasiswa, koleksi) dan variable-variabelnya (nim, id_koleksi).
+ DELETE
-contoh:
delete from mahasiswa where nim : '921411155';
delete from koleksi where id_koleksi='103';
Bentuk perintah di atas digunakan untuk mengubah suatu data pada table yang sudah ditentukan. Huruf yang berwarna merah menandakan kondisi data yang akan diinginkan. Huruf yang bergaris bawah menandakan nama tablenya
Apa itu DCL?
DCL atau Data Control Language merupakan perintah SQL yang berhubungan dengan pengaturan hak akses user MySQL, baik terhadap server, database, tabel maupun field. Perintah SQL yang termasuk dalam DCL antara lain :
+ GRANT
Grant digunakan untuk mengatur izin akses pada kolom yang ditentukan saja. Konfigurasi izin akses columns_priv ini lebih sedikit dibandingkan dengan tabel tables_priv. Hak akses yang diizinkan meliputi select, insert, update dan references.
Contoh penggunaan izin akses kolom :
grant update(nama) on nm_db.nm_tbl to nm_user@localhost identified by ‘nm_passwd’;
Dari perintah diatas user tersebut akan bisa melakukan perintah update pada kolom nama saja. Seperti contoh dibawah :
update nm_tbl set nama=’nm_baru’ where id=23;
Selain penggunaan diatas kita bisa juga melakukan penampilan untuk kolom tertentu dan ada juga kolom yang bisa di update juga. Maka kita bisa menggunakan kombinasi seperti ini.
grant select(id,nama,alamat,usia), update(alamat,usia) on nm_db.nm_tbl to nm_user@localhost identified by ‘nm_passwd’;
+ REVOKE
Revoke merupakan kebalikan dari perintah grant yaitu menghapus atau mencabut kembali izin akses user MySQL yang sebelumnya telah diberikan. Tingkat pilihan yang dapat digunakan juga sama dengan perintah grant sehingga semua izin akses dengan grant dapat dicabut kembali.
Menghapus Akses Penuh
revoke all on *.* from nm_user@localhost identified by ‘nm_passwd’;
Perintah diatas membuat salah satu user tidak mempunyai izin akses lagi. Meski sudah dicabut aksesnya user tersebut masih dapat login ke database MySQL tapi tidak perlu khawatir karena user tersebut tidak bisa berbuat apa-apa lagi.
Menghapus Akses Database
revoke all on nm_db.nm_tbl from nm_user@localhost identified by ‘nm_passwd’;
Perintah diatas izin akses user pada tabel tertentu telah dicabut sehingga tidak bisa mengakses kembali.
Menghapus Akses Kolom
revoke update(nama) on nm_db.nm_tbl from nm_user@localhost identified by ‘nm_passwd’;
Peintah diatas akan mencabut akses untuk kolom yang telah ditentukan sebelumnya.
Tipe Data MySQL
Type {storage} | Name | Range | Attributes | Default |
---|---|---|---|---|
Numeric {1 byte} |
TINYINT[(M)] | -128 TO 127 [0 to 255 if UNSIGNED] |
AUTO_INCREMENT UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE |
NULL [0 if NOT NULL] |
Numeric {2 bytes} |
SMALLINT[(M)] | -32,768 to 32,767 [0 to 65,535] |
AUTO_INCREMENT, UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE |
NULL [0 if NOT NULL] |
Numeric {3 bytes} |
MEDIUMINT[(M)] | -8,388,608 to 8,388,607 [0 to 16,777,215] |
AUTO_INCREMENT, UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE |
NULL [0 if NOT NULL] |
Numeric {4 bytes} |
INT[(M)] | -/+2.147E+9 [0 to 4.294E+9] |
AUTO_INCREMENT, UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE |
NULL [0 if NOT NULL] |
Numeric {8 bytes} |
BIGINT[(M)] | -/+9.223E+18 [0 to 18.45E+18] |
AUTO_INCREMENT, UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE |
NULL [0 if NOT NULL] |
Numeric {4 or 8} |
FLOAT(p) | p=0-24 --> "FLOAT" p=25-53 --> "DOUBLE" |
UNSIGNED, ZEROFILL | NULL [0 if NOT NULL] |
Numeric {4 bytes} |
FLOAT[(M,D)] | Min=+/-1.175E-38 Max=+/-3.403E+38 |
UNSIGNED, ZEROFILL | NULL [0 if NOT NULL] |
Numeric {8 bytes} |
DOUBLE[(M,D)] | Min=+/-2.225E-308 Max=+/-1.798E+308 |
UNSIGNED, ZEROFILL | NULL [0 if NOT NULL] |
Numeric {M+2} |
DECIMAL[(M,[D])] Stored as string |
Max Range = DOUBLE range Fixed point vs. DOUBLE float |
UNSIGNED, ZEROFILL | NULL [0 if NOT NULL] |
Bit {8 bytes} |
BIT[(M)] | Binary. Display by [add zero or converting with BIN()]. M=1-64 | Prior to 5.03 TINYINT(1) Synonym |
NULL [0 if NOT NULL] |
String {M char's} |
CHAR[(M)] | M=0-255 Characters, FIXED. Right padded with spaces. |
BINARY, CHARACTER SET | NULL ["" if NOT NULL] |
String {M char's1} |
VARCHAR(M) | M=0-65,535 Characters M=0-255 <v5.0.3 |
BINARY, CHARACTER SET | NULL ["" if NOT NULL] |
String {#char's1} |
TINYTEXT2 | 0-255 Characters | BINARY, CHARACTER SET | NULL ["" if NOT NULL] |
String {#char's1} |
TEXT2 | 0-65,535 Char's | BINARY, CHARACTER SET | NULL ["" if NOT NULL] |
String {#char's1} |
MEDIUMTEXT2 | 0-16,777,215 Char's | BINARY, CHARACTER SET | NULL ["" if NOT NULL] |
String {#char's1} |
LONGTEXT2 | 0-4,294,967,295 Char's | BINARY, CHARACTER SET | NULL ["" if NOT NULL] |
String {M bytes} |
BINARY[(M)] | M=0-255 bytes, FIXED. | Global Only (case sensitive) |
NULL ["" if NOT NULL] |
String {M bytes} |
VARBINARY(M) | 0-65,535 bytes M=0-255 <v5.0.3 |
Global Only (case sensitive) |
NULL ["" if NOT NULL] |
String {#bytes1} |
TINYBLOB | 0-255 bytes | Global Only (case sensitive) |
NULL ["" if NOT NULL] |
String {#bytes1} |
BLOB | 0-65,535 bytes | Global Only (case sensitive) |
NULL ["" if NOT NULL] |
String {#bytes1} |
MEDIUMBLOB | 0-16,777,215 bytes | Global Only (case sensitive) |
NULL ["" if NOT NULL] |
String {#bytes1} |
LONGBLOB | 0-4,294,967,295 bytes | Global Only (case sensitive) |
NULL ["" if NOT NULL] |
String {1-2 bytes} |
ENUM2 ("A1","A2",...) |
Column is exactly 1 of 1-65,535 values | CHARACTER SET | NULL [1st value if NOT NULL] |
String {1-8 bytes} |
SET2 ("A1","A2",...) |
Column is 0 or more values in list of 1-64 members | CHARACTER SET | NULL ["" if NOT NULL] |
Date & Time {3 bytes} |
DATE | "1000-01-01" - "9999-12-31" | Global Only (YYYY-MM-DD) |
NULL ["0000-00-00" if NOT NULL] |
Date & Time {8 bytes} |
DATETIME | "1000-01-01 00:00:00" - "9999-12-31 23:59:59" |
Global Only (YYYY-MM-DD hh:mm:ss) |
NULL ["0000-00-00 00:00:00" if NOT NULL] |
Date & Time {3 bytes} |
TIME | "-838:59:59" - "838:59:59" | Global Only (hh:mm:ss) |
NULL ["00:00:00" if NOT NULL] |
Date & Time {4 bytes} |
TIMESTAMP | 19700101000000 - 2037+ |
Global Only (YYYYMMDDhhmmss) |
Current Date & Time |
Date & Time {1 bytes} |
YEAR | 1900 - 2155 | Global Only (YYYY) |
NULL ["0000" if NOT NULL] |
DataBase Management system
DBMS adalah suatu sistem atau perangkat lunak yang dirancang untuk mengelola suatu basis data dan menjalankan operasi terhadap data yang diminta banyak pengguna.
Fungsi DBMS :
- Definisi data dan hubungannya
- Memanipulasi data
- Keamanan dan integritas data
- Security dan integritas data
- Recovery/perbaikan dan concurency data
- Data dictionary
- Unjuk kerja / performance
MACAM-MACAM DBMS (DATBASE MANAGEMENT SYSTEM)
MySQL
MySQL merupakan sebuah perangkat lunak system manajemen basis data SQL (bahasa inggris : data management system) atau DNMS yang multithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis di bawah lisensi GNU General Public Licenci (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL . Tidak seperti Apache yang merupakan software yang dikembangkan oleh komunitas umum, dan cipta untuk code sumber dimiliki oleh penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia yaitu MySQL AB. MySQL AB memegang penuh hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah : david axmark, allan larsson, dan Michael “monthy widenius.
ORACLE
Oracle adalah relational database management system (RDBMS) untuk mengelola informasi secara terbuka, komprehensif dan terintegrasi. Oracle Server menyediakan solusi yang efisien dan efektif karena kemampuannya dalam hal sebagai berikut:
Microsoft SQL server 2000