Data Manipulation Languange (DML) di Dalam Query Microsoft Access

Terdapat beberapa syntak SQL untuk DML ini, diantaranya:

• SELECT

• UNION

• UPDATE

• DELETE

• INSERT INTO

• SELECT … INTO

• TRANSFORM

• PARAMETER

Beberapa contoh dibawah ini bisa dijadikan bahan untuk belajar:

SELECT (Query Standar)

SELECT [Order Details].OrderID, [Order Details].ProductID, Products.ProductName, [Order Details].UnitPrice, [Order Details].Quantity, [Order Details].Discount

FROM Products INNER JOIN [Order Details] ON Products.ProductID = [Order Details].ProductID

ORDER BY [Order Details].OrderID;

 
 

      Terlihat pada kode diatas, beberapa kode SQL yang dicetak tebal. Kode-kode tersebut merupakan kode SQL utama yang menyusun query ini. Kode SELECT digunakan untuk memilih nama-nama field yang hendak ditampilkan. Kode FROM digunakan untuk memilih nama table. Kode INNER JOIN dan ON menandakan bahwa hubungan yang dibuat merupakan hubungan One to Many, dimana field ProductID pada table Product sebagai primary key (one) dan field ProductID pada table Order Details sebagai foreign key (many). Kode ORDER BY digunakan untuk sort data secara ascending, yaitu disort pada field OrderID pada table Order Details.

Perhatikan simbol = yang diberi warna merah. Simbol ini bisa diganti dengan: =, <, >, <=, >=, atau < > (tidak sama dengan).

UNION (Query Gabung)

Terdapat tiga jenis union query yang dapat digunakan, yaitu:

        Union query untuk sorting record dengan record tidak duplikat.

        Union query untuk merubah nama field dengan record tidak duplikat.

        Union query untuk melihat semua record yang digabungkan walaupun duplikat.

Union query untuk sorting record dengan record tidak duplikat

SELECT [CompanyName], [City]

FROM [Suppliers]

 
 

UNION SELECT [CompanyName], [City]

FROM [Customers]

ORDER BY [City];

Terlihat didalam contoh query diatas, sejumlah record yang berisi field CompanyName dan City yang digabungkan antara table Suppliers dan table Customer, dan data tersebut diurutkan (di sort) berdasarkan field City. Record ini tidak mengijinkan data duplikat, artinya jika terdapat record dengan nilai CompanyName dan City yang sama, maka ia akan menghilangkan record duplikat tersebut, sehingga yang ditampilkan hanya satu record saja

Union query untuk merubah nama field dengan record tidak duplikat

SELECT [CompanyName] AS [Supplier/Customer Name], [City]

FROM [Suppliers]

UNION SELECT [CompanyName] AS [Supplier/Customer Name], [City]

FROM [Customers];

Terlihat didalam contoh query diatas, sejumlah record yang berisi field “Supplier/Customer Name” yang merupakan field CompanyName dan City yang digabungkan antara table Suppliers dan table Customer. Record ini tidak mengijinkan data duplikat, artinya jika terdapat record dengan nilai CompanyName dan City yang sama, maka ia akan menghilangkan record duplikat tersebut, sehingga yang ditampilkan hanya satu record saja

Union query untuk melihat semua record yang digabungkan walaupun duplikat

SELECT [CompanyName], [City]

FROM [Suppliers]

UNION ALL SELECT [CompanyName], [City]

FROM [Customers];

Terlihat didalam contoh query diatas, sejumlah record yang berisi field CompanyName dan City yang digabungkan antara table Suppliers dan table Customer. Record ini mengijinkan data duplikat, artinya jika terdapat record dengan nilai CompanyName dan City yang sama, maka ia akan ditampilkan didalam query, sehingga yang ditampilkan adalah semua record yang terdapat pada table-table yang digabungkan.

UPDATE (Query Update)

UPDATE [Copy of Order Details] SET [Copy of Order Details].UnitPrice = 1000

WHERE ((([Copy of Order Details].UnitPrice)=14));

Terlihat pada query ini field UnitPrice dari table “Copy of Order Details” dibawahnya terdapat criteria 14. Dengan demikian, semua order yang UnitPrice $14.00 akan diganti nilainya (diupdate) menjadi $1,000.00. Kendatipun type data UnitPrice ini mempunyai format Currency, namun kita tidak boleh menambahkan symbol currency ini kedalam criteria maupun nilai update yang hendak dimasukkan. Jadi kita tidak boleh menuliskan criteria ini $14.00, tetapi cukup dengan mengetikkan angka 14.

DELETE (Query Delete)

DELETE [Copy of Order Details].Discount

FROM [Copy of Order Details]

WHERE ((([Copy of Order Details].Discount)=0.15));

Terlihat pada query ini field Discount dari table “Copy of Order Details” dibawahnya terdapat criteria 0.15. Dengan demikian, semua order yang discountnya 15% akan dihapus datanya didalam table.

INSERT INTO (Append Query)

INSERT INTO [Copy of Order Details] ( OrderID, ProductID, UnitPrice, Quantity, Discount )

SELECT [Order Details].OrderID, [Order Details].ProductID, [Order Details].UnitPrice, [Order Details].Quantity, [Order Details].Discount

FROM [Order Details]

WHERE ((([Order Details].Discount)=0.15));

Terlihat pada query ini, record didalam table “Order Details” yang memiliki discount sebesar 15% akan ditambahkan kedalam table “Copy of Order Details”

SELECT … INTO (Make Table Query)

SELECT [Order Details].OrderID, [Order Details].ProductID, [Order Details].UnitPrice, [Order Details].Quantity, [Order Details].Discount INTO [Copy of Order Details 2]

FROM [Order Details]

WHERE ((([Order Details].UnitPrice)=14));

Secara tampilan, query ini tidak berbeda dengan jenis select query biasa. Query ini akan membuat table baru dengan nama “Copy of Order Details 2” yang struktur table dan datanya diambil dari table “Order Details”. Data yang ditambahkan dari table “Order Details” hanya yang nilai UnitPrice nya $14.

TRANSFORM (Crosstab Query)

Microsoft Access sebenarnya sudah menyediakan pembuatan crosstab query secara wizard. Namun kelemahannya adalah table atau query yang dapat digunakan sebagai sumber data crosstab tidak dapat berjumlah lebih dari satu. Oleh karena itu, saya menyarankan agar Anda membuat crosstab ini secara design view atau langsung menggunakan kode-kode SQL. Contoh:

TRANSFORM Sum(CCur([Order Details].UnitPrice*[Quantity]*(1-[Discount])/100)*100) AS ProductAmount

SELECT Products.ProductName, Orders.CustomerID, Year([OrderDate]) AS OrderYear

FROM Products INNER JOIN (Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID) ON Products.ProductID = [Order Details].ProductID

WHERE (((Orders.OrderDate) Between #1/1/1997# And #12/31/1997#))

GROUP BY Products.ProductName, Orders.CustomerID, Year([OrderDate])

PIVOT “Qtr ” & DatePart(“q”,[OrderDate],1,0) In (“Qtr 1″,”Qtr 2″,”Qtr 3″,”Qtr 4”);

Terlihat pada query ini field crosstab yang terdiri dari tiga elemen sebagai berikut:

        Row Heading, digunakan untuk membuat judul baris didalam query.

        Column Heading, digunakan untuk membuat judul kolom didalam query.

        Value, digunakan untuk menampilkan suatu kalkulasi nilai yang telah ditentukan.

 
 

Jika Anda telah terbiasa menggunakan PivotTable didalam Microsoft Excel, maka crosstab ini hampir sama dalam hal penggunaan maupun tampilannya dengan PivotTable. Namun PivotTable Excel lebih banyak fasilitasnya dan lebih baik tampilannya.

PARAMETER (Parameter Query)

PARAMETERS
[Tanggal Awal?] DateTime, [Tanggal Akhir?] DateTime;

SELECT DISTINCTROW Employees.Country, Employees.LastName, Employees.FirstName, Orders.ShippedDate, Orders.OrderID, [Order Subtotals].Subtotal AS SaleAmount

FROM Employees INNER JOIN (Orders INNER JOIN [Order Subtotals] ON Orders.OrderID = [Order Subtotals].OrderID) ON Employees.EmployeeID = Orders.EmployeeID

WHERE (((Orders.ShippedDate) Between [Tanggal Awal?] And [Tanggal Akhir?]));

Perhatikanlah kode SQL pada contoh diatas. Terdapat kode SQL sbb:

PARAMETERS
[Tanggal Awal?] DateTime, [Tanggal Akhir?] DateTime;

Parameter diatas dapat juga diset dengan cara klik menu Query Parameters pada mode design view query. Maka akan muncul suatu list box yang dapat diisi dengan parameter-parameter yang Anda inginkan. Bila Anda menjalankan query ini, maka akan muncul dua buah dialog box berturut-turut yang meminta Anda untuk memasukkan tanggal awal dan tanggal akhir. Lihatlah gambar berikut ini.

 
 

  

 
 

Gambar Mengisi parameter query “Tanggal Awal” dan “Tanggal Akhir”

PENTING!

<

p style=”text-align:justify;”>Pada contoh ini (dan contoh-contoh berikutnya bila memang ada) saya memang sengaja meminta Anda untuk membuat query secara langsung menggunakan kode SQL agar Anda terbiasa dengan kode-kode SQL ini. Juga dengan menggunakan kode SQL ini akan mempersingkat saya dalam hal menjelaskan pembuatan query dibandingkan dengan menjelaskan secara langkah demi langkah ketika memasukkan table, query dan field-field kedalam query. Kendatipun demikian, Anda diminta juga untuk mempelajari kembali design view query yang telah dibuat dari kode-kode SQL ini. Salah satu keunggulan mode SQL View adalah, dapat menggunakan berbagai syntak SQL yang mana tidak dapat dibuat secara design view. Karena itu, memahami syntak SQL penting bagi Anda yang hendak belajar Microsoft Access.

Beri Nilai Artikel Ini:

0 thoughts on “Data Manipulation Languange (DML) di Dalam Query Microsoft Access

  • 23/12/2013 at 12:51 am
    Permalink

    master, bisa gak yak tampilan dialog box itu berupa ‘listbox’ sehingga bisa memilih langsung lebih dari dua pilihan . dan listbox nya itu mengacu dari data field yg ada , misal field yg terisi adalah field ‘kategaori’ ada isinya A,B,C,D. klo misal tampilan dialog box berupa list box brrati ada A,B,C,D yg user bisa memilih 1 atau lebih atau semuanya. sebelumnya terimakasih

    Reply

Leave a Reply

Do NOT follow this link or you will be banned from the site!
%d bloggers like this: