Anda di halaman 1dari 12

PERINTAH DASAR MYSQL | SYNTAX SQL

MYSQL meruakan program open source untuk pengolahan database / manajemen data. untuk menggunakan mysql tentu kita harus terlebih dahulu mempelajari perintah - perintah / syntax dasar dari pada mysql itu sendiri. adapun beberapa perintah - perintah / syntax dasar mysql adalah sebagai berikut : Membuat database Untuk membuat database baru, sehingga tidak berlaku jika database sudah ada atau anda tidak memiliki privilege. Sintaksnya : CREATE DATABASE nama_db ; Menghapus database Untuk menghapus database beserta seluruh table di dalamnya. Perintah ini tidak berlaku jika database tidak ada atau anda tidak memiliki privilege. Sintaksnya : DROP DATABASE nama_db ; Menggunakan database Untuk menjadikan database menjadi default dan referensi dari table yang nantinya anda gunakan. Perintah ini tidak berlaku jika database tidak ada atau anda tidak memiliki privilege. Sintaksnya : USE nama_db ; Menampilkan database Untuk menampilkan daftar yang ada dalam system saat itu. Sintaksnya : SHOW DATABASES ; LEVEL TABEL Membuat table Untuk membuat table minimal anda harus menentukan namanya dan tipe kolom yang anda inginkan. Sintaks yang paling sederhana (tanpa ada definisi lain) adalah : CREATE TABLE nama_tbl (kolom1 tipekolom1(),kolom2 tipekolom2(), ) ; Contoh : Anda ingin membuat table dengan nama profil yang memiliki kolom nama (bertipe char, lebar 20), kolom umur (bertipe integer), kolom jenis_kelamin (bertipe enum, berisi M dan F).

Sintaksnya : CREATE TABLE profil (nama CHAR(20), umur INT NOT NULL, jenis_kelamin ENUM(F,M) ) ; Sedangkan perintah yang agak lengkap dalam membuat sebuah table adalah dengan menyertakan definisi tertentu. Misalnya perintah seperti ini : CREATE TABLE peserta ( No SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, Nama CHAR(30) NOT NULL, BidangStudi ENUM(TS,WD) NOT NULL, PRIMARY KEY (No), INDEX (Nama, BidangStudi) ) ; Perintah di atas berarti membuat table peserta dengan kolom No sebagai PRIMARY KEY yaitu indeks table yang unik yang tidak bisa diduplikat dengan atribut AUTO_INCREMENT yaitu kolom yang otomatis dapat mengurutkan angka yang diisikan padanya. Sedangkan kolom Nama dan BidangStudi dijadikan indeks biasa. Membuat indeks pada table Menambahkan indeks pada table yang sudah ada baik yang unik ataupun yang biasa. Sintaksnya : CREATE INDEX nama_index ON nama_tbl (nama_kolom) ; CREATE UNIQUE INDEX nama_index ON nama_tbl (nama_kolom) ; Menghapus table Untuk menghapus table dalam database tertentu. Jika dilakukan maka semua isi, indeks dan atribut lain akan terhapus. Sintaksnya : DROP TABLE nama_tbl ; Menghapus indeks Untuk menghapus indeks pada suatu table. Sintaksnya : DROP INDEX nama-index ON nama_tbl ; Melihat informasi table Untuk melihat table apa saja yang ada di database tertentu. Sintaksnya : SHOW TABLES FROM nama_db ; Sedangkan untuk melihat deskripsi table atau informasi tentang kolom gunakan sintaks : DESC nama_tbl nama_kolom ; atau SHOW COLUMNS FROM nama_tbl FROM nama_db ; Mendapatkan atau menampilkan informasi dari table Untuk menampilkan isi table dengan option-option untuk menampilkan seluruh isi table digunakan : SELECT * FROM nama_tbl ; Untuk menampilkan kolom-kolom tertentu saja :

tertentu.

Misalnya

SELECT kolom1,kolom2, FROM nama_tbl ; Untuk menampilkan isi suatu kolom dengan kondisi tertentu SELECT kolom1 FROM nama_tbl WHERE kolom2=isikolom ; Modifikasi struktur table Dapat digunakan untuk mengganti nama table atau mengubah strukturnya seperti manambah kolom atau indeks, menghapus kolom atau indeks, mengubah tipe kolom dsb. Sintaks umum : ALTER TABLE nama_tbl action ; Untuk menambah kolom baru di tempat tertentu dapat menggunakan : ALTER TABLE nama_tbl ADD kolom_baru type() definisi ; Untuk menambah kolom_baru bertipe integer setelah kolom1 digunakan : ALTER TABLE nama_tbl ADD kolom_baru INT NOT NULL AFTER kolom1 ; Untuk menambah indeks baru pada table tertentu baik yang unik ataupun yang biasa: ALTER TABLE nama_tbl ADD INDEX nama_index (nama_kolom) ; ALTER TABLE nama_tbl ADD UNIQUE nama_indeks (nama_kolom) ; ALTER TABLE nama_tbl ADD PRIMARY KEY nama_indeks (nama_kolom) ; Untuk mengubah nama kolom dan definisinya, misalnya mengubah nama kolom_baru dengan tipe integer menjadi new_kolom dengan tipe char dengan lebar 30 digunakan: ALTER TABLE nama_tbl CHANGE kolom_baru new_kolom CHAR(30) NOT NULL ; Untuk menghapus suatu kolom dan seluruh atributnya, misal menghapus kolom1 : ALTER TABLE nama_tbl DROP kolom1 ; Untuk menghapus indeks baik yang unik ataupun yang biasa digunakan : ALTER TABLE nama_tbl DROP nama_index ; ALTER TABLE nama_tbl DROP PRIMARY KEY ; Modifikasi informasi dalam table Untuk menambah record atau baris baru dalam table, sintaksnya : INSERT INTO nama_tbl (nama_kolom) VALUES (isi_kolom) ; atau INSERT INTO nama_tbl SET nama_kolom=isi_kolom ; Misalnya untuk menambah dua baris pada table profil dengan isi nama = deden & ujang dan isi umur = 17 & 18 adalah : INSERT INTO profil (nama,umur) VALUES (deden,17), (ujang,18) atau INSERT INTO profil SET nama=deden, umur=17 ; INSERT INTO profil SET nama=ujang, umur=18 ;

Untuk memodifikasi record atau baris yang sudah ada yang bersesuaian dengan suatu kolom. Misalnya untuk mengubah umur deden menjadi 18 pada contoh di atas dapat digunakan sintaks : UPDATE profil SET umur=18 WHERE nama=qalit ; Untuk menghapus record atau baris tertentu dalam suatu table. Misalnya untuk menghapus baris yang ada nama ujang digunakan sintaks : DELETE FROM profil WHERE nama=ujang ; Jika WHERE tidak disertakan maka semua isi dalam table profil akan terhapus.

Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama EF Codd yang membahas tentang ide pembuatan basis data relasional pada bulan Juni 1970. Artikel ini juga membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi nama SEQUEL (Structured English Query Language). Setelah terbitnya artikel tersebut, IBM mengadakan proyek pembuatan basis data relasional berbasis bahasa SEQUEL. Akan tetapi, karena permasalahan hukum mengenai penamaan SEQUEL, IBM pun mengubahnya menjadi SQL. Implementasi basis data relasional dikenal dengan System/R. Di akhir tahun 1970-an, muncul perusahaan bernama Oracle yang membuat server basis data populer yang bernama sama dengan nama perusahaannya. Dengan naiknya kepopuleran Oracle, maka SQL juga ikut populer sehingga saat ini menjadi standar de facto bahasa dalam manajemen basis data.

Standarisasi
Standarisasi SQL dimulai pada tahun 1986, ditandai dengan dikeluarkannya standar SQL oleh ANSI. Standar ini sering disebut dengan SQL86.Standar tersebut kemudian diperbaiki pada tahun 1989 kemudian diperbaiki lagi pada tahun 1992. Versi terakhir dikenal dengan SQL92. Pada tahun 1999 dikeluarkan standar baru yaitu SQL99 atau disebut juga SQL99, akan tetapi kebanyakan implementasi mereferensi pada SQL92. Saat ini sebenarnya tidak ada server basis data yang 100% mendukung SQL92. Hal ini disebabkan masing-masing server memiliki dialek masing-masing.

Pemakaian dasar
Secara umum, SQL terdiri dari dua bahasa, yaitu Data Definition Language (DDL) dan Data Manipulation Language (DML). Implementasi DDL dan DML berbeda untuk tiap sistem manajemen basis data (SMBD)[1], namun secara umum implementasi tiap bahasa ini memiliki bentuk standar yang ditetapkan ANSI. Artikel ini akan menggunakan bentuk paling umum yang dapat digunakan pada kebanyakan SMBD.

Data Definition Language (DDL)


DDL digunakan untuk mendefinisikan, mengubah, serta menghapus basis data dan objekobjek yang diperlukan dalam basis data, misalnya tabel, view, user, dan sebagainya. Secara umum, DDL yang digunakan adalah CREATE untuk membuat objek baru, USE untuk menggunakan objek, ALTER untuk mengubah objek yang sudah ada, dan DROP untuk menghapus objek. DDL biasanya digunakan oleh administrator basis data dalam pembuatan sebuah aplikasi basis data.

CREATE CREATE

digunakan untuk membuat basis data maupun objek-objek basis data. SQL yang umum digunakan adalah:
CREATE DATABASE nama_basis_data CREATE DATABASE

membuat sebuah basis data baru.

CREATE TABLE nama_tabel CREATE TABLE

membuat tabel baru pada basis data yang sedang aktif. Secara umum, perintah ini memiliki bentuk
CREATE TABLE [nama_tabel] ( nama_field1 tipe_data [constraints][, nama_field2 tipe_data, ...] )

atau
CREATE TABLE [nama_tabel] ( nama_field1 tipe_data [, nama_field2 tipe_data, ...] [CONSTRAINT nama_field constraints] )

dengan: nama_field adalah nama kolom (field) yang akan dibuat. Beberapa sistem manajemen basis data mengizinkan penggunaan spasi dan karakter nonhuruf pada nama kolom. tipe_data tergantung implementasi sistem manajemen basis data. Misalnya, pada MySQL, tipe data dapat berupa VARCHAR, TEXT, BLOB, ENUM, dan sebagainya. constraints adalah batasan-batasan yang diberikan untuk tiap kolom. Ini juga tergantung implementasi sistem manajemen basis data, misalnya NOT NULL, UNIQUE, dan sebagainya. Ini dapat digunakan untuk mendefinisikan kunci primer (primary key) dan kunci asing (foreign key). Satu tabel boleh tidak memiliki kunci primer sama sekali, namun sangat disarankan mendefinisikan paling tidak satu kolom sebagai kunci primer. Contoh:
CREATE TABLE user ( username VARCHAR(30) CONSTRAINT PRIMARY KEY, passwd VARCHAR(20) NOT NULL,

tanggal_lahir DATETIME );

akan membuat tabel user seperti berikut:


username passwd tanggal_lahir

Data Manipulation Language (DML)


DML digunakan untuk memanipulasi data yang ada dalam suatu tabel. Perintah yang umum dilakukan adalah:
SELECT SELECT SELECT untuk menampilkan data INSERT untuk menambahkan data baru UPDATE untuk mengubah data yang sudah ada DELETE untuk menghapus data

adalah perintah yang paling sering digunakan pada SQL, sehingga kadang-kadang istilah query dirujukkan pada perintah SELECT. SELECT digunakan untuk menampilkan data dari satu atau lebih tabel, biasanya dalam sebuah basis data yang sama. Secara umum, perintah SELECT memiliki bentuk lengkap: ( QUERY BUDIN ) Cilegon.
SELECT [nama_tabel|alias.]nama_field1 [AS alias1] [, nama_field2, ...] FROM nama_tabel1 [AS alias1] [INNER|LEFT|RIGHT JOIN tabel2 ON kondisi_penghubung] [, nama_tabel3 [AS alias3], ...] [WHERE kondisi] [ORDER BY nama_field1 [ASC|DESC][, nama_field2 [ASC|DESC], ...]] [GROUP BY nama_field1[, nama_field2, ...]] [HAVING kondisi_aggregat]

dengan:

kondisi adalah syarat yang harus dipenuhi suatu data agar ditampilkan. kondisi_aggregat adalah syarat khusus untuk fungsi aggregat.

Kondisi dapat dihubungkan dengan operator logika, misalnya AND, OR, dan sebagainya. Contoh: Diasumsikan terdapat tabel user yang berisi data sebagai berikut.
username Aris Budi passwd tanggal_lahir jml_transaksi total_transaksi 6 0 10.000 0

6487AD5EF 09-09-1987 97AD4erD 01-01-1994

Charlie Daniel Erik

548794654 06-12-1965 FLKH947HF 24-04-1980 94RER54 17-08-1945

24 3 34

312.150 0 50.000

Contoh 1: Tampilkan seluruh data.


SELECT * FROM user

Contoh 2: Tampilkan pengguna yang tidak pernah bertransaksi.


SELECT * FROM user WHERE total_transaksi = 0

Contoh 3: Tampilkan username pengguna yang bertransaksi kurang dari 10 dan nilainya lebih dari 1.000.
SELECT username FROM user WHERE jml_transakai < 10 AND total_transaksi > 1000

Contoh 4: Tampilkan total nominal transaksi yang sudah terjadi.


SELECT SUM(total_transaksi) AS total_nominal_transaksi FROM user

Contoh 5: Tampilkan seluruh data diurutkan berdasarkan jumlah transaksi terbesar ke terkecil.
SELECT * FROM user ORDER BY jml_transaksi DESC

Fungsi aggregat

Beberapa SMBD memiliki fungsi aggregat, yaitu fungsi-fungsi khusus yang melibatkan sekelompok data (aggregat). Secara umum fungsi aggregat adalah:
SUM untuk menghitung total nominal data COUNT untuk menghitung jumlah kemunculan data AVG untuk menghitung rata-rata sekelompok data MAX dan MIN untuk mendapatkan nilai maksimum/minimum dari sekelompok data.

Fungsi aggregat digunakan pada bagian SELECT. Syarat untuk fungsi aggregat diletakkan pada bagian HAVING, bukan WHERE.

Subquery

Ada kalanya query dapat menjadi kompleks, terutama jika melibatkan lebih dari satu tabel dan/atau fungsi aggregat. Beberapa SMBD mengizinkan penggunaan subquery. Contoh: Tampilkan username pengguna yang memiliki jumlah transaksi terbesar.
SELECT username FROM user WHERE jml_transaksi = ( SELECT MAX(jml_transaksi) FROM user ) 1. INSERT

Untuk menyimpan data dalam tabel dipergunakan sintaks:


INSERT INTO [NAMA_TABLE] ([DAFTAR_FIELD]) VALUES ([DAFTAR_NILAI])

Contoh:
INSERT INTO TEST (NAMA, ALAMAT, PASSWORD) VALUES ('test', 'alamat', 'pass'); 2. UPDATE

Untuk mengubah data menggunakan sintaks:


UPDATE [NAMA_TABLE] SET [NAMA_KOLOM]=[NILAI] WHERE [KONDISI]

Contoh:
UPDATE Msuser set password="123456" where username="abc" DELETE

Untuk menghapus data dipergunakan sintaks:


DELETE FROM [nhew andiz] [KONDISI]

Contoh:
DELETE FROM TEST WHERE NAMA='test';

DDL Syntax
This article describes basic DDL syntax in Oracle Database. Create user and grant privileges (sys as sysdba):
CREATE USER tester IDENTIFIED BY password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; GRANT CREATE SESSION, CREATE TABLE TO tester;

CREATE TABLE
Syntax:
CREATE TABLE t1 ( id NUMBER PRIMARY KEY, c1 NUMBER UNIQUE ); CREATE TABLE t2 ( id NUMBER PRIMARY KEY, c1 NUMBER REFERENCES t1(c1) ); CREATE TABLE t3 ( id NUMBER, c1 NUMBER, CONSTRAINT t3_pk PRIMARY KEY(id), CONSTRAINT t3_fk FOREIGN KEY(c1) REFERENCES t1(c1) );

Using CTAS statement, you can create table based on another table. Limitations - only NOT NULL and CHECK constraints are copied over.
/* structure and data */ CREATE TABLE t4 AS SELECT * FROM t1; /* only structure */ CREATE TABLE t5 AS SELECT * FROM t1 WHERE 1 = 2;

ALTER TABLE
Following rules apply to ALTER TABLE statement:

Column data type can't be shortened if column is not empty Column precision and scale, can't be shortened if column is not empty Column length can be shortened as long as existing data don't get truncated

Syntax:
ALTER ALTER ALTER ALTER ALTER TABLE TABLE TABLE TABLE TABLE t5 t5 t5 t5 t5 ADD ADD ADD ADD ADD c2 c3 c4 c5 c6 VARCHAR2(30); VARCHAR2(30); VARCHAR2(30); VARCHAR2(30); VARCHAR2(30);

ALTER TABLE t5 ADD CONSTRAINT t5_pk PRIMARY KEY (id); ALTER TABLE t5 ADD CONSTRAINT t5_pk PRIMARY KEY (id) DEFERRABLE; ALTER TABLE t5 ADD CONSTRAINT t5_c2_chk CHECK(REGEXP_LIKE(c2,'[^@]+[@]{1}[^@]+.[^@]+')); ALTER TABLE t5 DROP COLUMN c6; ALTER TABLE t5 DROP (c4, c5); ALTER TABLE t5 MODIFY c3 VARCHAR2(50); ALTER TABLE t5 RENAME COLUMN c3 to c4; ALTER TABLE t5 RENAME TO t5_bkp; -- equivalent of RENAME t5 TO t5_bkp;

Managing Constraints
Following constraint types are implemented in Oracle: PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK and NOT NULL. NOT NULL is internally implemented as CHECK. Expression used in CHECK constraint must return TRUE or FALSE. FOREIGN KEY can reference only columns, which have PRIMARY KEY or UNIQUE constraint defined. Disabling and validating constraints:
ALTER ALTER ALTER ALTER TABLE TABLE TABLE TABLE t3 t3 t3 t3 MODIFY MODIFY MODIFY MODIFY CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT t3_pk t3_pk t3_pk t3_pk ENABLE VALIDATE; ENABLE NOVALIDATE; DISABLE VALIDATE; DISABLE NOVALIDATE;

DISABLE VALIDATE clauses disables DML statements. Deferring constraints within current transaction:
SET SET SET SET CONSTRAINTS ALL DEFERRED; CONSTRAINTS ALL IMMEDIATE; CONSTRAINT t5_pk DEFERRED; CONSTRAINT t5_pk IMMEDIATE;

First statement applies to all deferrable constraints.

Handling Columns With SET UNUSED


SET UNUSED statement mark column unused, it doesn't remove the column.

Data is not removed, but is inaccessible Statement faster than DROP COLUMN New column can be added to the table, with the same name as one marked as unused

If column of LONG type is marked as unused, new column of this type can't be added to the same table Dropping any column from table which has any column marked as unused, implicitly drops all columns marked as unused in this table

Example:
ALTER TABLE t5_bkp SET UNUSED(c2); ALTER TABLE t5_bkp DROP UNUSED COLUMNS;

Related data dictionary view:


SELECT * FROM USER_UNUSED_COL_TABS;

ON DELETE
Oracle doesn't support ON DELETE UPDATE, however it does support ON DELETE CASCADE.
CREATE TABLE t6 ( id NUMBER PRIMARY KEY, a NUMBER(2,1) ); CREATE TABLE t7 ( id NUMBER PRIMARY KEY, b NUMBER REFERENCES t6(id) ON DELETE CASCADE ); BEGIN INSERT INTO t6 VALUES(1, 0.7); INSERT INTO t6 VALUES(2, 0.9); INSERT INTO t6 VALUES(3, 1.1); INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO COMMIT; END; / t7 t7 t7 t7 t7 VALUES(1, VALUES(2, VALUES(3, VALUES(4, VALUES(5, 1); 2); 2); 3); 3);

SELECT * FROM t6; -- 3 rows SELECT * FROM t7; -- 5 rows DELETE FROM t6 WHERE id = 1; COMMIT;

Drop user with all his objects (sys as sysdba):


DROP USER tester CASCADE;