Menguasai Structured Query Language (SQL)
Image by lilit via Flickr
Database, tabel, baris, dan kolom
Dalam konteks bahasa SQL, pada umumnya informasi tersimpan dalam tabel-tabel yang secara logik merupakan struktur 2 dimensi yang terdiri dari baris-baris data (row atau record) yang berada dalam satu atau lebih kolom (column). Baris pada tabel sering disebut sebagai instance dari data sedangkan kolom sering disebut sebagai attributes atau field.
Keseluruhan tabel-tabel itu dihimpun dalam satu kesatuan yang disebut database.
Gambar 1 Database, tabel, kolom, dan baris
Type data pada MySQL
Berikut ini tabel data type yang dapat digunakan untuk field-field tabel pada database MySQL.
Tabel 1 Type data field pada MySQL
| Name | Keterangan | Ukuran |
| TINYINT[(M)] [UNSIGNED] [ZEROFILL] | Signed range -128 – 127
Unsigned range 0 – 255. |
1 |
| SMALLINT[(M)]. [UNSIGNED] [ZEROFILL] | Signed range -32768 – 32767
Unsigned range 0 – 65535. |
2 |
| MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] | Signed range -8388608-8388607
Unsigned range 0 – 16777215. |
3 |
| INT[(M)] [UNSIGNED] [ZEROFILL] | Signed range -2147483648 – 2147483647
Unsigned range 0 – 4294967295. |
4 |
| BIGINT[(M)] [UNSIGNED] [ZEROFILL] | Signed range -9223372036854775808 – 9223372036854775807
Unsigned Range 0 – 18446744073709551615. |
8 |
| FLOAT(Precision) | Angka floating point. Presisi boleh 4 atau 8. FLOAT(4) adalah single precision dan FLOAT(8) adalah double precision (lihat juga DOUBLE).
Range -3.402823466E+38F – -1.175494351E-38, 0, -1.175494351E-38 – 3.402823466E+38F. |
4 |
| FLOAT[(M,D)] | Angka floating point kecil. Tidak boleh unsigned.
Range -3.402823466E+38F – -1.175494351E-38, 0, -1.175494351E-38 – 3.402823466E+38F. |
4 |
| DOUBLE PRECISION[(M,D)] | Angka floating point normal. Tidak boleh unsigned.
Range -1.7976931348623157E+308 – -2.2250738585072014E-308, 0, 2.2250738585072014E-308 – 1.7976931348623157E+308. |
8 |
| REAL[(M,D)] | Sama seperti DOUBLE | 8 |
| DECIMAL [(M,D)] | Angka unpacked floating point. Tidak boleh unsigned. Range sama seperti DOUBLE.
Berkelakuan seperti CHAR |
M+D |
| NUMERIC [(M,D)] | Sama seperti DECIMAL | M+D |
| TIMESTAMP [(M)] | Timestamp otomatis. Berisi waktu pada saat tabel diakses, dalam UNIX time. | 4 |
| DATE | Untuk menyimpan informasi tanggal.
Format : ‘YY-MM-DD’, ‘YYYY-MM-DD‘, dan ‘YYMMDD’. Range 0000-00-00 to 9999-12-31. |
4 |
| TIME | Untuk menyimpan informasi waktu
Format : ‘HH:MM:SS, ‘HHMMSS’, ‘HHMM’, ‘HH’. |
3 |
| DATETIME | Untuk menyimpan informasi tanggal dan waktu.
Format “YYYY-MM-DD HH:MM:SS”. Range ’0000-01-01 00:00:00′ – ’9999-12-31 23:59:59′. |
8 |
| CHAR(M) [binary] | String dengan panjang tetap, selalu tersimpan sesuai dengan panjang yang ditentukan.
Range 1 – 255 characters. Seluruh space akhiran dibuang saat di-retriev. Di-sortir dan dibandingkan secara case insensitive kecuali jika diberikan binary keyword. |
M |
| VARCHAR(M) [binary] | String dengan panjang variabel, tersimpan sesuai dengan panjangnya saat itu.
Range 1 – 255 characters. Seluruh space akhiran dibuang saat di-retriev. Di-sortir dan dibandingkan secara case insensitive kecuali jika diberikan binary keyword. |
L+1 |
| TINYTEXT and TINYBLOB | TEXT/BLOB dengan panjang maksimum 255 karakter. | L+1 |
| TEXT and BLOB | TEXT/BLOB dengan panjang maksimum 65535 karakter. | L+2 |
| MEDIUMTEXT and MEDIUMBLOB | TEXT/BLOB dengan panjang maksimum 16777216 karakter. | L+3 |
| LONGTEXT and LONGBLOB | TEXT/BLOB dengan panjang maksimum 4294967295 karakter. | L+4 |
| ENUM(‘value’,'value2′,…) | Objeck string yang hanya boleh memiliki satu nilai dari nilai yang dimungkinkan (atau NULL). | 1 or 2 |
| SET(‘value’,'value2′,…) | Objeck string yang boleh memiliki lebih dari satu nilai dari nilai yang dimungkinkan (atau NULL). | 1-8 |
Membuat database
Pada modul ini kita akan membuat database dengan nama shopping yang terdiri dari tabel-tabel:
- publishers , berisi daftar nama penerbit buku
- titles, berisi daftar judul buku
Gunakan perintah di bawah ini untuk membuat database pada MySQL server.
# mysqladmin create <nama-database>
Contohnya
# mysqladmin create shopping
Database “shopping” created.
Membuat tabel
Setelah database terbuat, anda harus membuat tabel yang akan menyimpan data yang anda butuhkan. Sebagai contoh kita akan membuat tabel daftar penerbit buku (publishers). Tabel ini berisi field-field sebagai berikut:
Tabel 2 Struktur tabel publishers
| Field | Type | Panjang | Keterangan |
| pub_id | char | 3 | berisi nomor identifikasi penerbit, primary key tabel ini |
| pub_name | char | 20 | berisi nama penerbit |
| city | char | 10 | berisi nama kota tempat penerbit berada |
| state | char | 10 | nama provinsi tempat penerbit berada |
Gunakan perintah mysql <nama-database> untuk membuat tabel yang dimaksud di atas.
# mysql shoppingWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 403 to server version: 3.22.10-betaType 'help' for help.mysql>
Prompt mysql> merupakan tempat anda memasukkan perintah-perintah MySQL yang akan kita pelajari sebentar lagi. Setiap perintah SQL pada MySQL harus diakhiri dengan tanda titik-koma (;). Untuk keluar dari prompt mysql> gunakan perintah quit.
Pada prompt mysql ketikkan perintah-perintah untuk membuat tabel publishers, sebagai berikut
mysql> create table publishers (-> pub_id int,-> pub_name char(20),-> city char(10),-> state char(10)-> );Query OK, 0 rows affected (0.06 sec)
Setelah itu, pada database shopping akan terdapat tabel publishers yang belum terisi data.
Latihan
Buat tabel – tabel di bawah ini pada database shopping.
Tabel 3 Struktur tabel authors
| Field | Type | Panjang | Keterangan |
| au_id | integer | Nomor identifikasi penulis buku | |
| au_fname | char | 20 | First name penulis |
| au_lname | char | 20 | Last Name penulis |
| city | char | 10 | Berisi nama kota tempat penerbit berada |
| state | char | 10 | Nama provinsi tempat penerbit berada |
Tabel 4 Struktur tabel titles
| Field | Type | Panjang | Keterangan |
| title_id | char | 6 | Identifikasi judul buku, primary key |
| title | char | 80 | Judul buku |
| type | char | 15 | Jenis kategori buku |
| pub_id | char | 3 | Identifikasi penerbit, foreign key ke tabel publishers |
| price | integer | Harga judul buku ini | |
| advance | integer | ||
| royalty | integer | Royalti | |
| ytd_sales | integer | ||
| notes | char | 200 | Catatan tentang judul ini |
| pubdate | int | Tahun penerbitan |
Insert Query
Untuk mengisi data pada suatu tabel, gunakan perintah SQL INSERT. Syntaksnya adalah:
INSERT INTO nama-tabel (kolom1,kolom2, …) VALUES (nilai1, nilai2, …);
Contohnya jika anda ingin mengisi tabel publishers dengan data sebagai berikut:
- Nomor kode; 1
- Nama penerbit: Gramedia
- Kota : Jakarta
- State: Indonesia
Maka perintah SQL INSERT yang harus anda ketikkan adalah sebagai berikut:
mysql> INSERT INTO publishers (pub_id, pub_name, city, state)-> VALUES-> (1, ‘Gramedia’, ‘Jakarta’, ‘Indonesia’);Query OK, 1 row affected (0.01 sec)
Selain melalui prompt mysql, anda dapat juga mengisi data pada database melalui file yang telah berisi data, tentunya dalam format syntaks SQL yang benar. Contohnya, buat file dengan nama PUBLISHER.SQL dengan ini sebagai berikut:
INSERT INTO publishers VALUES ('100','Addison-Wesley','MA','USA');INSERT INTO publishers VALUES ('101','BANTAM BOOK','MA','USA');INSERT INTO publishers VALUES ('102','Harper Business','MA','USA');INSERT INTO publishers VALUES ('103','Hewlett Packard','MA','USA');INSERT INTO publishers VALUES ('104','John Wiley & Sons, Inc','MA','USA');INSERT INTO publishers VALUES ('105','Macmillan Publishing Company','MA','USA');INSERT INTO publishers VALUES ('106','McGraw Hill','MA','USA');INSERT INTO publishers VALUES ('107','O\'Reilly & Associates, inc','MA','USA');INSERT INTO publishers VALUES ('108','Osborne McGraw-Hill','MA','USA');INSERT INTO publishers VALUES ('109','Prentice Hall','MA','USA');INSERT INTO publishers VALUES ('110','Sams','MA','USA');INSERT INTO publishers VALUES ('111','Wiley','MA','USA');INSERT INTO publishers VALUES ('112','Microsoft','MA','USA');
Lalu , dari prompt Linux, ketikkan perintah:
# mysql shopping < PUBLISHERS.SQL
Perhatikan bahwa pada sintaks INSERT, untuk semua field yang bertype char, data yang dimasukkan harus diapit oleh tanda petik ‘’, sedangkan untuk type integer tidak.
Latihan
- Isikan data pada tabel authors dan titles dengan file AUTHORS.SQL dan TITLES.SQL yang dapat anda download dari alamat sini.
Menggunakan Query SELECT
Perintah SELECT digunakan untuk melihat data dari satu atau beberapa tabel. Syntasknya secara sederhana adalah:
SELECT kolom-kolom
FROM nama-tabel
Menampilkan kolom tertentu
Misalnya, untuk melihat nama-nama pengarang buku yang terdapat pada tabel authors, dapat anda gunakan perintah:
SELECT au_lname, au_fnameFROM authors
Hasilnya akan terlihat daftar nama yang tediri dari dua kolom , masing-masing au_lname dan au_fname, seperti berikut ini:
+------------+----------+| au_lname | au_fname |+------------+----------+| Purbo | Onno || Daniel | Akhmad || Arif | Aulia || Nursasono | Rudi |+------------+----------+8 rows in set (0.00 sec)
Ekspression pada query
Tampilan kolom hasil query dapat kita modifikasi sehingga mengeluarkan informasi yang kita butuhkan. Misalnya untuk menampilkan harga discount dari harga normal pada tabel title, anda dapat menggunakan:
SELECT title_id, type, price , price * 0.1FROM titles
Hasilnya adalah kolom-kolom nomor buku, jenis buku, harga, dan harga discount yang merupakan perkalian harga dengan 0.1.
+----------+----------------------+-------+-------------+| title_id | type | price | price * .1 |+----------+----------------------+-------+-------------+...| PR2807 | PROGRAMMING | 4 | 0.4 || IN7709 | INTERNET | 65 | 6.5 || UN6462 | UNIX | 18 | 1.8 || CO0175 | COMMUNICATION | 97 | 9.7 || IN2467 | INTERNET | 28 | 2.8 || IN9823 | INTERNET | 49 | 4.9 || IN8724 | INTERNET | 62 | 6.2 || MA5142 | MARKETING | 64 | 6.4 || UN9539 | UNIX | 35 | 3.5 || IN9247 | INTERNET | 83 | 8.3 || UN1623 | UNIX | 10 | 1.0 || NE5367 | NETWORKING | 2 | 0.2 || UN2956 | UNIX | 77 | 7.7 || MA8688 | MARKETING | 80 | 8.0 || IN3551 | INFOSYS | 71 | 7.1 || UN9725 | UNIX | 13 | 1.3 || PR6948 | PROGRAMMING | 55 | 5.5 |+----------+----------------------+-------+-------------+174 rows in set (0.02 sec)
Distinct
Keyword DISTINCT dapat anda gunakan untuk menghilangkan record-record yang duplikasi. Misalnya jalankan query berikut ini.
SELECT type FROM titles
Hasilnya
+----------------------+| type |+----------------------+...| INTERNET || MARKETING || UNIX || INTERNET || UNIX || NETWORKING || UNIX || MARKETING || INFOSYS || UNIX || PROGRAMMING |+----------------------+174 rows in set (0.02 sec)
Pada contoh di atas, jika ingin menampilkan kolom type yang tidak duplikasi, maka perintah querynya adalah sebagai berikut
SELECT DISTINCT type FROM titles
dan hasilnya adalah sebagai berikut
+----------------------+| type |+----------------------+...| DATABASE || ELECTRONICS || ENVIRONMENT || FINANCE || INFOSYS || INTERNET || INVESTMENT || MANAGEMENT || MARKETING || MISC || NETWORKING || PROGRAMMING || QUALITY ASSURANCE || SOFTWARE || UNIX || USER'S MANUAL |+----------------------+18 rows in set (0.02 sec)
Jika ada lebih dari satu kolom, maka keyword DISTINCT hanya akan menghilangkan record yang seluruh kolomnya sama.
SELECT *
Untuk melihat seluruh isi kolom dari suatu tabel anda dapat menggunakan query SELECT *. Contohnya :
SELECT * FROM authors
Hasilnya adalah
+-------+------------+----------+----------+-----------+| au_id | au_lname | au_fname | city | state |+-------+------------+----------+----------+-----------+| 1 | White | Johnson | US | CA || 2 | Purbo | Onno | Bandung | Indonesia || 3 | Daniel | Akhmad | Bandung | Indonesia || 4 | Zamfarra | Zilmy | Bandung | Indonesia || 5 | Arif | Aulia | Bandung | Indonesia || 5 | Suhardiman | Basuki | Surabaya | Indonesia || 6 | Straight | Dean | MA | USA || 7 | Nursasono | Rudi | Jakarta | Indonesia |+-------+------------+----------+----------+-----------+8 rows in set (0.04 sec)
Mem-filter hasil query dengan where
Anda dapat membatasi hasil query dengan keyword WHERE sehingga record-record yang dikeluarkan hanyalah record yang sesuai dengan kriteria yang anda inginkan. Misalnya jika anda ingin menampilkan seluruh judul buku yang berharga di bawah 10, maka querynya adalah
SELECT title, priceFROM titlesWHERE price < 3
Hasilnya adalah
+----------------------------------------------------+-------+| title | price |+----------------------------------------------------+-------+| CPU 16 | 1 || Understanding DCE | 1 || 15th Arrl andTapr Digital Communications Conferenc | 2 || TCP/IP Netwrok Administrator | 2 |+----------------------------------------------------+-------+4 rows in set (0.01 sec)
Equality dan inequality
Pada contoh sebelumnya kita melihat sebuah operator < yang digunakan untuk membandingkan apakah operand sebelah kiri lebih kecil daripada operand sebelah kanan. Pada SQL, terdapat operator equality dan inequality lain yaitu:
Tabel 5 Operator equality dan inequality
| Operator | Guna |
| = | operand kiri sama dengan operand kanan |
| <> atau != | operand kiri tidak sama dengan operand kanan |
| >= | operand kiri lebih besar atau sama dengan operand kanan |
| <= | operand kiri lebih kecil atau sama dengan operand kanan |
Operator logic AND dan OR
Operator ini digunakan untuk menggabungkan dua atau lebih kondisi. Misalnya untuk melihat buku yang berjenis “Database” harganya kurang dari $3 , dapat anda gunakan query berikut ini
SELECT title, type, priceFROM titlesWHERE type = ‘DATABASE’ AND price < 50
Hasilnya adalah
+---------------------------+-------+| title | price |+---------------------------+-------+| Oracle PL/SQL Programming | 42 || Database Developer | 8 |+---------------------------+-------+2 rows in set (0.01 sec)
Between
Keyword BETWEEN dapat anda gunakan untuk membatasi suatu kolom berada pada suatu batas nilai tertentu. Misalnya untuk mencari buku yang harganya berkisar antara $2 hingga $5, dapat anda gunakan query:
SELECT title, price, typeFROM titlesWHERE price BETWEEN 30 AND 100
Hasilnya
+---------------------------+-------+----------+| title | price | type |+---------------------------+-------+----------+| Oracle PL/SQL Programming | 42 | DATABASE || Oracle PL/SQL Programming | 62 | DATABASE || Oracle Performance Tuning | 83 | DATABASE |+---------------------------+-------+----------+3 rows in set (0.01 sec)
Like
Keyword LIKE digunakan u ntuk mencari data yang memiliki pola tertentu. Misalnya untuk mencari buku yang judulnya mengandung kata UNIX, dapat anda gunakan query;
SELECT title, priceFROM titlesWHERE title LIKE ‘%windows%’
Hasilnya adalah
+---------------------------------+-------+| title | price |+---------------------------------+-------+| Connectic Quick Cam for Windows | 25 || Borland Delphi for Windows | 55 |+---------------------------------+-------+2 rows in set (0.01 sec)
Pada keyword LIKE dapat anda gunakan tanda-tanda khusus (wildcard) sebagai berikut ini:
Tabel 6 Wildcard pada keyword LIKE
| Tanda | Arti |
| % | Sembarang nol atau lebih karakter |
| _ | Sembarang satu karaker |
| [ ] | Sembarang karakter yang berada dalam tanda kurung siku |
Misalnya untuk mencari judul buku yang berawalan dengan huruf A, maka digunakan query
SELECT title FROM titlesWHERE title LIKE ‘A%’
Untuk mencari judul buku yang memiliki kode BU1234, BI1234, dan BW1234, maka digunakan query
SELECT title FROM titlesWHERE title like ‘B[UIW]1234’
Men-sortir data
Hasil query dapat anda sortir sesuai dengan kebutuhan anda dengan keyword ORDER BY. Misalnya untuk menampilkan daftar judul buku sesuai dengan urutan abjad, gunakan query
SELECT title, priceFROM titlesORDER BY title
Untuk men-sortir dengan urutan terbalik, gunakan keyowrd tambahan DESC, seperti ini
SELECT title, priceFROM titlesORDER BY title DESC
Anda dapat mensortir lebih dari satu kolom , misalnya query berikut ini
SELECT title, priceFROM titlesORDER BY title, price
akan menghasilkan tampilan daftar buku yang terurut berdasarkan abjad dan harganya.
Agregate Function
Selain dari pengolahan record-record, SQL juga menyediakan fungsi-fungsi yang dapat digunakan untuk menghitung hasil tampilan. Fungsi-fungsi itu adalah seperti berikut ini.
Tabel 7 Fungsi-fungsi agregate
| Nama Fungsi | Guna |
| sum() | menghitung jumlah ekspesi numerik |
| avg() | menghiting rata-rata ekspesi numerik |
| min() | menghitung angka minimal ekspesi numerik |
| max() | menghitung angka maksimal ekspesi numerik |
| count() | menghitung jumlah non-null ekspesi |
| count(*) | menghitung jumlah baris |
Misalnya untuk mengetahui harga rata-rata dari buku yang ada di daftar yang anda miliki, gunakan query
SELECT avg(price)FROM titles
Hasilnya
+------------+| avg(price) |+------------+| 49.1149 |+------------+1 row in set (0.00 sec)
Untuk mengetahui jumlah buku yang ada pada daftar, dapat anda gunakan query
SELECT count(*)FROM titles
Hasilnya
+----------+| count(*) |+----------+| 174 |+----------+1 row in set (0.00 sec)
Sub agregate dengan Group By
Fungsi count(*) dapat digunakan untuk mengetahui jumlah seluruh buku yang anda miliki. Untuk mengetahui jumlah buku dan harga rata-rata setiap jenis buku, anda harus menggunakan GROUP BY yang dikombinasikan dengan sum() dan avg() seperti berikut ini.
SELECT type, AVG(price) , SUM(price)FROM titlesGROUP BY type
Hasilnya
+----------------------+------------+------------+| type | avg(price) | sum(price) |+----------------------+------------+------------+| COMMUNICATION | 76.8000 | 384 || COMPUTER ENGINEERING | 28.6667 | 86 || DATABASE | 48.7500 | 195 || ELECTRONICS | 50.6667 | 608 || ENVIRONMENT | 41.3636 | 455 || FINANCE | 51.0000 | 357 || INFOSYS | 57.5455 | 633 || INTERNET | 55.5556 | 1000 || INVESTMENT | 41.5000 | 166 || MANAGEMENT | 73.5000 | 147 || MARKETING | 60.6667 | 182 || MISC | 38.3333 | 115 || NETWORKING | 15.5000 | 31 || PROGRAMMING | 47.7727 | 1051 || QUALITY ASSURANCE | 80.0000 | 80 || SOFTWARE | 37.1429 | 260 || UNIX | 45.5849 | 2416 || USER'S MANUAL | 63.3333 | 380 |+----------------------+------------+------------+18 rows in set (0.02 sec)
Mem-filter hasil agregate function
Untuk mem-filter tampilan setelah dilakukan fungsi agregate, digunakan keyword HAVING. Misalnya untuk menampilkan jenis kategori yang harga rata-ratanya di atas $60, digunakan query
SELECT type, AVG(price)FROM titlesGROUP BY typeHAVING AVG(price)>60
Hasilnya
+-------------------+------------+| type | avg(price) |+-------------------+------------+| COMMUNICATION | 76.8000 || MANAGEMENT | 73.5000 || MARKETING | 60.6667 || QUALITY ASSURANCE | 80.0000 || USER'S MANUAL | 63.3333 |+-------------------+------------+5 rows in set (0.02 sec)
Bandingkan jika anda menggunakan query
SELECT type, AVG(price)FROM titlesWHERE price > 60GROUP BY type
dimana proses filtering terjadi sebelum dirata-ratakan, artinya yang dirata-ratakan adalah buku yang memiliki harga di atas $60, maka hasilnya adalah
+-------------------+------------+| type | avg(price) |+-------------------+------------+| COMMUNICATION | 76.8000 || DATABASE | 72.5000 || ELECTRONICS | 74.2000 || ENVIRONMENT | 78.0000 || FINANCE | 78.0000 || INFOSYS | 76.5000 || INTERNET | 75.1111 || INVESTMENT | 84.0000 || MANAGEMENT | 73.5000 || MARKETING | 72.0000 || MISC | 63.0000 || PROGRAMMING | 74.0000 || QUALITY ASSURANCE | 80.0000 || UNIX | 79.8421 || USER'S MANUAL | 77.2500 |+-------------------+------------+15 rows in set (0.02 sec)
Join
Pada contoh-contoh sebelumnya kita hanya menggunakan sat tabel pada satu saat. Umumnya aplikasi dengan SQL server melakukan query dengan menggunakan lebih dari satu tabel pada satu saat.
Sekarang kita akan mencoba untuk melakukan query dengan tabel publishers digabungkan dengan tabel titles, dimana kita akan menampilkan daftar buku dan penerbitnya dalam satu query. Untuk hal ini kita memerlukan informasi baik dari tabel titles maupun tabel publishers. Proses penggabungan lebih dari satu tabel ini disebut join, sedangkan hubungan keduanya disebut relation.
Untuk melakukan join, tabel-tabel itu harus memiliki common key atau join key yang menentukan bagaimana baris-baris antar kedua tabel tersebut saling berhubungan. Contohnya pada tabel publishers dan titles, kedua tabel ini saling berbagi common key yang bernama pub_id. Pada tabel publishers, pub_id secara unik mengindetifikasi suatu baris pada tabel itu. Pada tabel titles, suatu nilai pub_id secara unik mengidentifikasi suatu baris pada tabel publishers. Ini berarti bahwa judul buku dengan pub_id ini diterbitkan oleh penerbit yang tercantum pada baris yang ditunjukkan oleh pub_id pada tabel publishers.
Secara diagram, hubungan kedua tabel tersebut dapat digambarkan sebagai berikut:
Gambar 2 Relasi tabel publishers dan titles
Saat menggabung dua tabel, SQL server tidak langsung mengerti hubungan antar dua tabel tersebut. Artinya anda harus menuliskan common key yang digunakan dalam penggabungan ini. Contohnya, untuk menampilkan daftar buku dan penerbitnya dari tabel titles dan publishers, dapat anda gunakan query berikut ini.
SELECT title, pub_nameFROM titles, publishersWHERE titles.pub_id = publishers.pub_id
Hasilnya adalah sebagai berikut:
+----------------------------------------------------+----------------+| title | pub_name |+----------------------------------------------------+----------------+...| PSD | Prentice Hall || The Java Solution Guide | Prentice Hall || 13th Arrl Digital Communications Conference | Prentice Hall || 15th Arrl and Tapr Digital Communications Conferen | Prentice Hall || Unix Networking Programming | Sams || Termcap & terminfo | Sams || Using C on the Unix System | Sams || SCO in a Nitshell | Sams || Radio Communication | Sams || The Programming Language | Sams || Z80 Apllication | Sams || The New IEEE Standard Dictionary of Electrical and | Sams || Wireless Digital Communicators Design and Theory | Sams || Building A Sucessful Software Business | Sams || Mathcad 4.0 | Sams || 15th Arrl andTapr Digital Communications Conferenc | Sams |+----------------------------------------------------+----------------+174 rows in set (0.03 sec)
Jika anda lupa untuk mencantumkan common key pada join, anda akan mendapatkan hasil yang sangat banyak yang merupakan daftar yang berisi iterasi judul buku untuk setiap baris penerbit.
Menghapus record dengan Delele Query
Untuk menghapus suatu record dengan kriteria tertentu, gunakan query berikut ini
DELETE FROM nama-tabel WHERE kriteria
Misalnya jika anda hendak menghapus record judul buku pada tabel titles yang memiliki harga di bawah $20, gunakan query berikut ini:
DELETE FROM titles WHERE price < 20
Untuk medelete seluruh record pada suatu tabel, gunakan perintah DELETE tanpa menentukan kriterianya, seperti :
DELETE FROM nama-table
Modifikasi record dengan Update query
Untuk memodifikasi nilai kolom dari suatu record, gunakan query UPDATE seperti berikut ini.
UPDATE nama-tabelSET nama-kolom1=nilai-baru1, nama-kolom2=nilai-baru2,...WHERE kriteria
Contohnya jika anda hendak memodifikasi nilai harga buku menjadi 50% untuk buku yang harganya masih berada di bawah $20, gunakan query
UPDATE titlesSET price=price * 1.5WHERE price < 20
Untuk memodifikasi nilai suatu kolom secara keseluruhan, gunakan query UPDATE tanpa kriteria, misalnya
UPDATE titlesSET price=100
Query ini akan meneybabkan seluruh harga buku pada tabel titles menjadi $100.
Menambah record dengan INSERT
Untuk menambah record pada suatu tabel, gunakan query INSERT berikut ini
INSERT INTO nama-tabel(kolom1, kolom2, ... kolomn)VALUES (nilai1, nilai2, ... nilain)
Misalnya untuk menambahkan data berikut ini
- Nomor Indentifikasi Buku PE0034
- Judul Buku “Visual C++ 5.0, The Complete Refference”
- Jenis Buku “PEMROGRAMAN”
- Penerbit Osborne (kode 102)
Maka pada tabel titles, gunakan query berikut ini:
INSERT INTO titles(title_id, title, type, pub_id, price, advance, royalty, ytd_sales, notes, pubdate)VALUES('PE0034', 'Visual C++ 5.0, The Complete Refference', 'PEMROGRAMAN', '102',34,0,0,0,' ', 1998)
Insert query dapat juga dituliskan tanpa nama-nama field seperti di atas, asalkan jumlah field parameter yang anda cantumkan pada keyword VALUES sama dengan jumlah field yang ada ada tabel yang sedang anda insertkan. Misalnya
INSERT INTO titles VALUES('PE0034', 'Visual C++ 5.0, The Complete Refference', 'PEMROGRAMAN', '102',34,0,0,0,' ', 1998)
![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=e1e0f964-768e-4f17-8471-466b420c8102)



Recent Comments