Senin, 29 April 2013

Tugas 8

Pengertian DML (DATA MANIPULATION LANGUAGE).
DML (Data Manipulation Language) merupakan bahasa basis data yang berguna untuk melakukan proses modifikasi dan pengambilan data pada suatu basis data. Modifikasi yang dapat dilakukan adalah penambahan (insert), pembaharuan (update), penghapusan (delete).
o Insert Baris dalam Tabel
INSERT INTO (, … , )
VALUES (, … , );
INSERT INTO departments(department_id, department_name,
manager_id, location_id)
VALUES (70, ‘Public Relations’, 100, 1700);
o Insert Baris dengan Nilai NULL
INSERT INTO
VALUES (, … , , NULL);
INSERT INTO departments
VALUES (100, ‘Finance’, NULL, NULL);
o Insert Baris berdasarkan Tabel Lain
INSERT INTO (, … , )
[Syntax Query SQL];
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees WHERE job_id LIKE ‘%REP%’;
o Update Baris dalam Tabel
UPDATE
SET = [WHERE condition];
UPDATE employees
SET department_id = 70 WHERE employee_id = 113;
o Update 2 Kolom dengan Sub-Query
UPDATE
SET = ([Syntax Query SQL]);
UPDATE employees
SET job_id = (SELECT job_id FROM employees WHERE employee_id = 205);
o Delete Baris dalam Tabel
DELETE FROM
WHERE = ;
DELETE FROM departments
WHERE department_name = ‘Finance’;
o Delete Baris berdasarkan Tabel Lain
DELETE
WHERE = ([Syntax Query SQL]);
DELETE FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE ‘%Public%’);
o Select Query
SELECT FROM
[WHERE ]
[GROUP BY ] [HAVING ]
[ORDER BY ]

Data Manipulation Language (DML) berisi pernyataan SQL yang digunakan untuk mencari/menampilkan, menyisipkan/memasukkan, memperbaharui dan menghapus data tabel. Saya membagi pernyataan DML menjadi dua bagian, yaitu Pernyataan dan Klausa.
1. Pernyataan
1.1. SELECT
Syntax:
SELECT [DISTINCT] * | column_list
FROM table_reference
[WHERE predicates]
[GROUP BY group_list]
[HAVING having_condition]
[ORDER BY order_list]
Digunakan untuk mencari/menampilkan record dari tabel. Pernyataan ini bisa menampilkan semua atau sebagian data tabel. Gunakan tanda bintang (“*”) untuk menampilkan nilai dari semua kolom. Kolom yang dideklarasikan dalam klausa SELECT dapat berasal dari satu tabel atau banyak tabel, juga dapat berupa kolom tabel, nilai lateral, dan nilai hasil perhitungan yang dipisahkan oleh tanda koma. Klausa FROM mengidentifikasikan tabel dimana datanya akan ditampilkan. Pernyataan berikut akan menampilkan data dari dua kolom (CustNo dan Company), plus sebuah nilai lateral (“Current”) dan nilai hasil perhitungan untuk semuarecord dari tabel Customer
SELECT
  CustNo,
  Company,
  "Current" AS CURRENT,
  CAST(LastInvoiceDate AS DATE)
FROM Customer
Gunakan kata kunci DISTINCT untuk membatasi data yang ditampilkan hanya sekali pada record yang berbeda, artinya data yang sama pada kolom tersebut hanya ditampilkan sekali saja. Kata kunci ini hanya dapat dipakai dengan kolom sederhana bertipe Char dan Integer, tidak dapat dipakai untuk kolom yang bertipe Blob dan Memo. Untuk mendapatkan record dengan suatu kriteria logika, tambahkan klausa WHERE dalam pernyataan tersebut dan untuk mengelompokkan data gunakan klausa GROUP BY. Klausa HAVING digunakan untuk membatasi record yang ditampilkan berdasarkan hasil dari fungsi aggregate, sedangkan untuk mengurutkan data gunakan klausa ORDER BY. Pernyataan SELECT juga dapat digunakan sebagai subquery dalam pernyataan INSERT, DELETE dan UPDATE.
1.2. DELETE
Syntax:
DELETE
FROM table_reference
[WHERE predicates]
Digunakan untuk menghapus satu record atau lebih dari suatu tabel. Klausa WHERE akan membatasi penghapusan tersebut berdasarkan kriteria logika yang dideklarasikan. Jika tidak mendeklarasikan klausa WHERE maka semua record dalam tabel tersebut akan terhapus. Pernyataan berikut akan menghapus semua data tabel Employee.
DELETE
FROM Employee
Dan pernyataan di bawah ini akan menghapus semua baris dalam tabel Employee jika nilai dari kolom Empno ditemukan dalam subquery pencarian data kolom Empno dari tabel Old_Employee.
DELETE
FROM Employee
WHERE (Empno IN (SELECT Empno FROM Old_Employee))
Pernyataan DELETE hanya mendukung subquery SELECT dalam klausa WHERE.
1.3. INSERT
Syntax:
INSERT INTO table_reference
[(columns_list)] 
VALUES (update_atoms)
Pernyataan INSERT berfungsi untuk menambahkan record data baru pada suatu tabel. Nama tabel yang dinyatakan dalam klausa INTO merupakan tabel yang akan menerima data. Daftar kolom yang dipisahkan oleh tanda koma dan berada dalam tanda kurung merupakan kolom-kolom dari tabel, sedang klausa VALUES merupakan nilai-nilai yang disisipkan yang dipisahkan oleh tanda koma dan berada dalam tanda kurung. Jika tidak ada kolom yang dideklarasikan, maka nilai yang diberikan disimpan dalam kolom secara berurutan dalam struktur tabel, sehingga nilai pertama dalam klausa VALUES akan dimasukkan dalam kolom pertama tabel, demikian seterusnya.
Jika daftar kolom dinyatakan secara jelas maka nilai yang diberikan akan disimpan sesuai dengan urutan daftar kolom tersebut. Kolom-kolom yang tidak dinyatakan dalam daftar kolom tidak mempunyai nilai (kosong bukan nol). Jumlah kolom yang dinyatakan harus sama dengan jumlah nilai dalam klausa VALUES. Pernyataan berikut hanya memasukkan suatu nilai dalam kolom CustNo dan Company dari tabel Employee, dan nilai kolom-kolom lain adalah kosong.
INSERT INTO Customer
(CustNo, Company)
VALUES (9842, "Inprise Corporation")
Untuk menambahkan record pada satu tabel yang berasal dari tabel lain, hilangkan klausa VALUES dan gunakan subquery sebagai sumber baris baru tersebut.
INSERT INTO Customer
(CustNo, Company)
SELECT CustNo, Company
FROM OldCustomer
Pernyataan INSERT juga hanya mendukung subquery SELECT dalam klausa VALUES.
1.4. UPDATE
Syntax:
UPDATE table_reference
SET column_ref = update_atom
[, column_ref = update_atom...]
[WHERE predicates]
Untuk memodifikasi satu record atau lebih yang telah ada dalam suatu tabel. Nama tabel dalam pernyataan UPDATE merupakan tabel yang akan menerima perubahan data. Setiap ungkapan dalam klausa SET terdiri atas nama kolom, operator penugasan (=), nilai update dari kolom tersebut. Nilai kondisi update_atom dalam pernyataan UPDATE bisa berupa nilai lateral, nilai tunggal (satu record) dari hasil subquery SELECT, atau nilai hasil perhitungan.
UPDATE SalesInfo
SET TaxRate = 0.0825
Jika nilai kondisi update_atom berasal dari suatu subquery SELECT, sebuah pernyataan SELECT harus dibuat untuk setiap kolom yang akan di-update dalam tabel yang dimaksud. Subquery SELECT tersebut harus berada dalam tanda kurung. Pernyataan berikut meng-update dua kolom OnHand dan InventoryDate dalam tabel Inventory, masing-masing dengan subquery SELECT terpisah.
UPDATE Inventory
SET OnHand = OnHand – (SELECT SUM(Orders.QtySold)
                       FROM Orders
                       WHERE (Orders.PartNo = Inventory.PartNo)
                             AND (Orders.OrderDate BETWEEN "10/01/1999"
                             AND "10/31/1999")),
InventoryDate = OnHand – (SELECT MAX(Orders.OrderDate)
                          FROM Orders
                          WHERE (Orders.PartNo = Inventory.PartNo)
                                AND (Orders.OrderDate BETWEEN "10/01/1999"
                                AND "10/31/1999"))
Klausa WHERE membatasi update record dalam tabel, jika tidak ada klausa WHERE yang dinyatakan maka semua baris tabel akan di-update dengan menggunakan ungkapan dalam klausa SET.
UPDATE SalesInfo
SET TaxRate = 0.0825
WHERE (State = "CA")
Pernyataan UPDATE hanya mendukung subquery SELECT dalam klausa WHERE.