data manipulation language

29
Computer Science, University of Brawijaya Putra Pandu Adikara, S.Kom Data Manipulation Language Basis Data 2

Upload: cala

Post on 22-Feb-2016

62 views

Category:

Documents


0 download

DESCRIPTION

Data Manipulation Language. Basis Data 2. DML. Data Manipulation Language. Pada aplikasi database, konsep CRUD: C reate  Insert R ead (Retrieve)  Select U pdate (Edit)  Update D elete  Delete sama seperti konsep pada programming untuk user interface, - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Data Manipulation Language

Computer Science, University of Brawijaya

Putra Pandu Adikara, S.Kom

Data Manipulation LanguageBasis Data 2

Page 2: Data Manipulation Language

DML

Page 3: Data Manipulation Language

Data Manipulation Language

Pada aplikasi database, konsep CRUD: Create Insert Read (Retrieve) Select Update (Edit) Update Delete Delete

sama seperti konsep pada programming untuk user interface, • Misalnya juga untuk user-permission level aplikasi (user-group/role)

Page 4: Data Manipulation Language

Select

SELECT Untuk mendapatkan baris-baris record dari suatu tabel atau

beberapa tabel sekaligus dengan kondisi tertentu

SELECT-INTO digunakan untuk membuat tabel baru hasil dari query Select

select * into ProductTemp from Products

UNION digunakan untuk menggabungkan 2 query dengan definisi kolom yang sama

DISTINCT digunakan untuk mencegah duplikasi sesuai kolom

Page 5: Data Manipulation Language

Select

SELECT dengan kolom kalkulasiUSE AdventureWorks2008R2; GO SELECT p.Name AS ProductName, NonDiscountSales = (OrderQty * UnitPrice), Discounts = ((OrderQty * UnitPrice) * UnitPriceDiscount) FROM Production.Product AS p INNER JOIN Sales.SalesOrderDetail AS sod ON p.ProductID = sod.ProductID ORDER BY ProductName DESC; GO

Page 6: Data Manipulation Language

Select

SELECT dengan subqueryUSE AdventureWorks2008R2; GO SELECT DISTINCT Name FROM Production.Product AS p WHERE EXISTS

(SELECT * FROM Production.ProductModel AS pm WHERE p.ProductModelID = pm.ProductModelID AND pm.Name LIKE 'Long-Sleeve Logo Jersey%');

GO

SELECT DISTINCT p.LastName, p.FirstName FROM Person.Person AS p JOIN HumanResources.Employee AS e ON e.BusinessEntityID = p.BusinessEntityID WHERE 5000.00 IN

(SELECT Bonus FROM Sales.SalesPerson AS sp WHERE e.BusinessEntityID = sp.BusinessEntityID);

GO

Page 7: Data Manipulation Language

Select

SELECT dengan menggunakan ROW_NUMBER (ISO SQL:2003)

SELECT * FROM ( SELECTROW_NUMBER() OVER (ORDER BY ProductID ASC) AS row_number,ProductID,SaleDate,SalePriceFROM SalesHistory

) fooWHERE row_number <= 200

Bisa digunakan sebagai limit

Page 8: Data Manipulation Language

Select

Baca lebih lanjut: http://msdn.microsoft.com/en-us/library/ms187731.aspx

Baca juga tentang JOIN

Page 9: Data Manipulation Language

Insert

Insert Untuk menambah baris pada suatu tabel

Menambahkan data langsung isinya (urut dengan kolomnya) INSERT INTO table_name

VALUES (value1, value2, value3,...)

Menambahkan data dimana isi sesuai kolomnya (bisa tidak urut dengan kolomnya, atau hanya kolom tertentu saja) INSERT INTO table_name (column1, column2,

column3,...)VALUES (value1, value2, value3,...)

Page 10: Data Manipulation Language

Insert

Menambahkan baris pada suatu tabel melalui seleksi

INSERT california_authors (au_id, au_lname, au_fname) SELECT au_id, au_lname, au_fname FROM authors WHERE State = 'CA‘

Baca lebih lanjut lagi:http://msdn.microsoft.com/en-us/library/aa933206(SQL.80).aspx

Page 11: Data Manipulation Language

Delete

Delete Digunakan untuk menghapus record atau himpunan record

(sesuai kondisi yang ditentukan)

USE AdventureWorks2008R2; GO DELETE FROM Production.ProductCostHistory WHERE StandardCost > 1000.00; GO

Page 12: Data Manipulation Language

Delete: Subquery

SQL-2003 Standard subquery USE AdventureWorks2008R2; GO DELETE FROM Sales.SalesPersonQuotaHistory WHERE BusinessEntityID IN

(SELECT BusinessEntityID FROM Sales.SalesPerson WHERE SalesYTD > 2500000.00);

GO Transact-SQL extension

USE AdventureWorks2008R2; GO DELETE FROM Sales.SalesPersonQuotaHistory FROM Sales.SalesPersonQuotaHistory AS spqh INNER JOIN Sales.SalesPerson AS sp ON spqh.BusinessEntityID = sp.BusinessEntityID WHERE sp.SalesYTD > 2500000.00; GO

Page 13: Data Manipulation Language

Baca lebih lanjut http://msdn.microsoft.com/en-us/library/ms189835.aspx

Page 14: Data Manipulation Language

Update

Update Digunakan untuk mengubah record atau himpunan record

(sesuai kondisi yang ditentukan)

UPDATE authors SET state = 'PC', city = 'Bay City' WHERE state = 'CA' AND city = 'Oakland'

Page 16: Data Manipulation Language

Constraint

Page 17: Data Manipulation Language

Konsep Dasar Constraint

Entity Integrity memastikan tidak ada entitas yg sama (duplikasi

record/row) dalam satu tabel• Primary Key constraint

Referential Integrity Memastikan record tidak dapat dihapus, apabila digunakan

di tabel lain• Foreign Key constraint

Entity dan Referential Integrity bersamaan membentuk key integrity

Page 18: Data Manipulation Language

Konsep Dasar Constraint

Domain Integrity memastikan isi dari suatu kolom terbatas sesuai tipe,

format, dan rentang yang dimungkinkan• CHECK, UNIQUE, DEFAULT constraint• Contoh:

–Nama produk tidak boleh NULL.–Nama produk harus unik (unique).–Tanggal pemesanan tidak boleh hari esok.–Jumlah pemesanan produk harus lebih dari nol (0).

User-Defined Integrity Digunakan untuk business-rule yang tidak masuk di entity,

domain, referential integrity

Page 19: Data Manipulation Language

Referential Integrity (lanjutan)

Referential Integrity Constraints Mendefinisikan suatu aksi yang dilakukan apabila user

menghapus atau memperbaharui primary key (dalam relationship primary key-foreign key)

Digunakan untuk menjaga konsistensi baris-baris data antara dua tabel yang saling mempunyai relasi

Page 20: Data Manipulation Language

Referential Integrity (lanjutan)

Referential Integrity Constraints NO ACTION

• aksi default bila tidak didefinisikan, bila ada penghapusan/ pengubahan maka akan dibatalkan dan error akan dibangkitkan

CASCADE• Semua baris foreign key akan dihapus sesuai baris primary key yang

dihapus SET NULL

• Semua baris foreign key, nilainya akan berubah menjadi NULL.• Syaratnya kolom foreign key harus memperbolehkan nilai NULL

SET DEFAULT• Semua baris foreign key, nilainya akan berubah menjadi nilai default• Syaratnya kolom foreign key harus mempunyai nilai default

Page 21: Data Manipulation Language

Contoh

CREATE TABLE Products (ProductID TINYINT,ProductDescription VARCHAR(100),CONSTRAINT pk_ProductID PRIMARY KEY (ProductID))

CREATE TABLE SalesHistory (SaleID int IDENTITY(1,1) NOT NULL,ProductID TINYINT,SaleDate datetime NULL,SalePrice money NULL,CONSTRAINT pk_SaleID PRIMARY KEY (SaleID)CONSTRAINT fk_SalesHistoryProductID FOREIGN KEY (ProductID) REFERENCES Products(ProductID) ON DELETE CASCADE ON UPDATE CASCADE)

Page 22: Data Manipulation Language

Contoh

INSERT INTO Products (ProductID, ProductDescription)SELECT 1, 'BigScreen'UNION ALL SELECT 2, 'Computer'UNION ALL SELECT 3, 'PoolTable'GO

DECLARE @i SMALLINTSET @i = 1WHILE (@i <=100)BEGININSERT INTO SalesHistory(ProductID, SaleDate, SalePrice)VALUES(1, DATEADD(mm, @i, '3/11/1919'), DATEPART(ms, GETDATE()) + (@i + 57))INSERT INTO SalesHistory(ProductID, SaleDate, SalePrice)VALUES(2, DATEADD(mm, @i, '3/11/1927'), DATEPART(ms, GETDATE()) + (@i + 13))INSERT INTO SalesHistory(ProductID, SaleDate, SalePrice)VALUES(3, DATEADD(mm, @i, '3/11/1908'), DATEPART(ms, GETDATE()) + (@i + 29))SET @i = @i + 1END

Page 23: Data Manipulation Language

Contoh

Apa yang terjadi bila pada tabel Products, baris dengan ProductID=1 diganti menjadi ProductID=4?

Apa yang terjadi bila pada tabel Products, baris dengan ProductID=4 dihapus?

Bila ON DELETE CASCADE diubah menjadi ON DELETE SET NULL atau SET DEFAULT atau NO ACTION apa yang terjadi?

Page 24: Data Manipulation Language

Domain Integrity: Unique Constraint

Unique constraint menggunakan index untuk memastikan suatu kolom (atau himpunan kolom) tidak mempunyai isi yang sama (terduplikasi) Column constraint

CREATE TABLE Products_2 ( ProductID int PRIMARY KEY, ProductName nvarchar (40) Constraint IX_ProductName UNIQUE )

Table constraint CREATE TABLE Products_2 ( ProductID int PRIMARY KEY, ProductName nvarchar (40), CONSTRAINT IX_ProductName UNIQUE(ProductName) )

Page 25: Data Manipulation Language

Domain Integrity: Unique Constraint

Untuk menambahkan constraint menggunakan alter table:

CREATE TABLE Products_2 ( ProductID int PRIMARY KEY, ProductName nvarchar (40) )

ALTER TABLE Products_2ADD CONSTRAINT IX_ProductName UNIQUE (ProductName)

Contoh error ketika ada pelanggaran constraintServer: Msg 1505, Level 16, State 1, Line 1 CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 2. Most significant primary key is 'Hamburger'. Server: Msg 1750, Level 16, State 1, Line 1 Could not create constraint. See previous errors. The statement has been terminated.

Page 26: Data Manipulation Language

Domain Integrity: Check Constraint

Check Constraint berisi ekspresi yang akan dievaluasi ketika menambah atau mengubah suatu record Jika evaluasi ekspresi bernilai false, maka record tidak akan

disimpan dalam database Membuat check constraint sama seperti dlm membuat klausa

WHERE Dapat menggunakan operator (<,>,<=,>=,<>,=) serta BETWEEN,

IN, LIKE, NULL dan kombinasi AND, OR Terdiri dari dua bagian:

Name nama dari constraint Predicate kondisi aktual yang digunakan dalam

pengecekan

Page 27: Data Manipulation Language

Domain Integrity: Check Constraint

Column constraintCREATE TABLE Products_2 ( ProductID int PRIMARY KEY, UnitPrice money CHECK(UnitPrice > 0 AND UnitPrice < 100) )

Table constraintCREATE TABLE Customers_2 ( CustomerID int, Phone varchar(24), Fax varchar(24), CONSTRAINT CK_PhoneOrFax CHECK(Fax IS NOT NULL OR PHONE IS NOT NULL) )

Page 28: Data Manipulation Language

Batasan Check Constraint

Ada batasan dalam check constraint: Tidak bisa mereferensi/merujuk ke row yang berbeda

dalam satu tabel Tidak bisa mereferensi/merujuk ke kolom pada tabel yang

berbeda

Page 29: Data Manipulation Language

Domain Integrity: Default Constraint

Default constraint digunakan sebagai nilai default pada suatu kolom ketika dalam statement INSERT isi nilainya tidak ditetapkanCREATE TABLE Orders_2 (

OrderID int IDENTITY NOT NULL , EmployeeID int NOT NULL , OrderDate datetime NULL DEFAULT(GETDATE()), Freight money NULL DEFAULT (0) CHECK(Freight >= 0), ShipAddress nvarchar (60) NULL DEFAULT('NO SHIPPING ADDRESS'), EnteredBy nvarchar (60) NOT NULL DEFAULT(SUSER_SNAME())

)

INSERT INTO Orders_2 (EmployeeID, Freight) VALUES(1, NULL) ???