Data Manipulation Language

Preview:

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

Citation preview

Computer Science, University of Brawijaya

Putra Pandu Adikara, S.Kom

Data Manipulation LanguageBasis Data 2

DML

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)

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

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

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

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

Select

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

Baca juga tentang JOIN

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,...)

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

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

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

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

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'

Constraint

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

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

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

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

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)

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

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?

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) )

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.

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

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) )

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

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) ???

Recommended