Вы находитесь на странице: 1из 17

DDL

DDL merupakan singkatan dari Data Definition Language. Digunakan untuk membuat dan
memodifikasi struktur objek database dalam database.

Contoh-contoh perintah dan penggunaan DDL :

1) CREATE DATABASE : untuk membuat database.


Syntax : CREATE DATABASE nama_db;
Contoh :

a) CREATE DATABASE Perkuliahan;

b) CREATE DATABASE DreamHome

ON (
NAME = 'DreamHome',
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\Data\DreamHome.mdf',
SIZE = 5,
MAXSIZE = 50 MB,
FILEGROWTH = 5
)
LOG ON
(
NAME = 'DreamHomeLog',
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\Data\DreamHome_log.mdf',
SIZE = 5,
MAXSIZE = 25,
FILEGROWTH = 5
)
2) CREATE TABLE : untuk membuat tabel dalam DataBase

Syntax : CREATE TABLE nama_tabel

Contoh :

a) CREATE TABLE [database_name.[owner].]table_name

(
<column name> <data type>
[[DEFAULT <constant expression>]
|[IDENTITY [(seed, increment) [NOT FOR
REPLICATION]]]]
[ROWGUIDCOL]
[COLLATE <collation name>]
[NULL|NOT NULL]
[<column constraints>]
|[column_name AS computed_column_expression]
|[<table_constraint>]
[,...n]
)

b) CREATE TABLE Branch


(
branchNo CHAR(4) NOT NULL,
street VARCHAR(50) NOT NULL,
city VARCHAR(30) NOT NULL,
postcode VARCHAR(10) NOT NULL,
CONSTRAINT bn_pk PRIMARY KEY (branchNo),
CONSTRAINT bn_len CHECK (LEN(branchNo)=4),
CONSTRAINT bn_frmt C H E C K ( b r a n c h N o L I K E ‘ B [ 0-9][0-9][0-9]’ )
)
c) CREATE TABLE Staff
(
staffNo CHAR(4) NOT NULL,
fName VARCHAR(30) NOT NULL,
lName VARCHAR(30) NOT NULL,
position VARCHAR(15) NOT NULL,
sex CHAR(1) NOT NULL DEFAULT 'F',
DOB SMALLDATETIME NOT NULL,
salary SMALLMONEY NOT NULL,
branchNo CHAR(4),
CONSTRAINT sn_pk PRIMARY KEY (staffNo),
CONSTRAINT bn_fk FOREIGN KEY (branchNo) REFERENCES
Branch(branchNo)
ON UPDATE CASCADE
ON DELETE SET NULL,
CONSTRAINT sn_frmt CHECK (staffNo LIKE
'S[ABGL][0-9][ 0-9]'),
CONSTRAINT sx_frmt CHECK (sex LIKE '[MF]'),
CONSTRAINT slry CHECK (salary BETWEEN 6000 AND
40000)
)

d) CREATE TABLE MsMhs


(
NIM VARCHAR(10) PRIMARY KEY,
Nama VARCHAR(50)
)

e) CREATE TABLE MsCustomer


(
CustomerID CHAR(5) PRIMARY KEY NOT NULL,
CustomerName VARCHAR(30) NOT NULL,
Email VARCHAR(30) NOT NULL,
PhoneNumber VARCHAR(12),
DateOfBirth DATETIME,
CONSTRAINT cs001 CHECK(LEN(CustomerID) = 5),
CONSTRAINT cs01 CHECK(CustomerID LIKE 'CR[0-9][0-9][0-9]'),
)

CREATE TABLE MsEmployee


(
EmployeeID CHAR(5) PRIMARY KEY NOT NULL,
EmployeeName VARCHAR(20) NOT NULL,
Address VARCHAR(30) NOT NULL,
Salary NUMERIC(10,2) NOT NULL,
CONSTRAINT cs002 CHECK(LEN(EmployeeID) = 5),
CONSTRAINT cs02 CHECK(EmployeeID LIKE 'EM[0-9][0-9][0-9]'),
)

CREATE TABLE MsMenuType


(
MenuTypeID CHAR(5) PRIMARY KEY NOT NULL,
MenuType VARCHAR(30) NOT NULL,
CONSTRAINT cs003 CHECK(LEN(MenuTypeID) = 5),
CONSTRAINT cs03 CHECK(MenuTypeID LIKE 'MT[0-9][0-9][0-9]'),
)

CREATE TABLE MsMenu


(
MenuID CHAR(5) PRIMARY KEY NOT NULL,
MenuTypeID CHAR(5) NOT NULL,
MenuName VARCHAR(30) NOT NULL,
Price NUMERIC(10,2) NOT NULL,
CONSTRAINT cs004 CHECK(LEN(MenuID) = 5),
CONSTRAINT cs04 CHECK(MenuID LIKE 'MN[0-9][0-9][0-9]'),
FOREIGN KEY (MenuTypeID) REFERENCES MsMenuType ON UPDATE
CASCADE ON DELETE CASCADE,
)

CREATE TABLE TrHeaderTransaction


(
TransactionID CHAR(5) PRIMARY KEY NOT NULL,
CustomerID CHAR(5) NOT NULL,
EmployeeID CHAR(5) NOT NULL,
TransactionDate DATETIME NOT NULL,
CONSTRAINT cs005 CHECK(LEN(TransactionID) = 5),
CONSTRAINT cs05 CHECK(TransactionID LIKE 'TR[0-9][0-9][0-9]'),
FOREIGN KEY (CustomerID) REFERENCES MsCustomer ON UPDATE
CASCADE ON DELETE CASCADE,
FOREIGN KEY (EmployeeID) REFERENCES MsEmployee ON UPDATE
CASCADE ON DELETE CASCADE,
)

CREATE TABLE TrDetailTransaction


(
TransactionID CHAR(5) NOT NULL,
MenuID CHAR(5) NOT NULL,
Qty INT NOT NULL,
PRIMARY KEY (TransactionID,MenuID),
FOREIGN KEY (TransactionID) REFERENCES TrHeaderTransaction ON
UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (MenuID) REFERENCES MsMenu ON UPDATE CASCADE
ON DELETE CASCADE,
)
3) CREATE INDEX : untuk membuat index.

Syntax : CREATE [UNIQUE] INDEX nama_index ON nama_tabel (nama_kolom);

Contoh :

a) CREATE INDEX KRSx ON KRS(Kd_mk)

b) CREATE INDEX nm ON Pelajar(Nama);


DROP TABLE Mata_Pelajaran;
CREATE TABLE Mata_Pelajaran(
Kode CHAR(4) PRIMARY KEY,
Nama CHAR(20),
Kelas CHAR(2)
);

4) CREATE VIEW : untuk membuat view.

Syntax : CREATE VIEW view_name [(column1, column2,… )]

AS SELECT statement FROM table_name


[WITH CHECK OPTION];

Contoh :

a) CREATE VIEW MHS AS SELECT * FROM MHS;

b) CREATE VIEW normal_staff AS

SELECT staffNo, fName, lName, position, branchNo


FROM Staff

5) DROP DATABASE : untuk menghapus database

Syntax : Drop database nama_db

Contoh :

a) Drop database Perkuliahan


6) Drop table : untuk menghapus tabel
Syntax : Drop table nama_table
Contoh :

a) Drop table MHS

7) Drop index : untuk menghapus index


Syntax : Drop index nama_index;
Contoh :

a) Drop index KRS

8) Drop view : untuk menghapus view


Syntax : Drop view nama_view;
Contoh :

a) Drop view MHS

9) ALTER DATABASE dapat digunakan untuk mengubah definisi database,


untuk contoh ini akan digunakan untuk mengganti size dari database
Syntax : ALTER <object type> <object name>
Contoh :
a) ALTER DATABASE DreamHome
MODIFY FILE
(NAME = DreamHome,
SIZE = 100MB)
10) Alter table : untuk mengubah table
Syntax : ALTER TABLE nama_table
ADD (nama_kolom_baru type_kolom
[BEFORE nama_kolom])
MODIFY (nama_kolom_lama type_kolom)
DROP (nama_kolom_lama type_kolom);
Contoh :

a) ALTER TABLE MHS ADD (JKEL char(1));

b) ALTER TABLE table_name

{[ALTER COLUMN <column_name>


{ [<schema of new data type>].<new_data_type>
[(precision [, scale])] max |
<xml schema collection>
[COLLATE <collation_name>]
[NULL|NOT NULL]
|[{ADD|DROP} ROWGUIDCOL] | PERSISTED}]
|ADD
<column name> <data_type>
[[DEFAULT <constant_expression>]
|[IDENTITY [(<seed>, <increment>) [NOT FOR
REPLICATION]]]]
[ROWGUIDCOL]
[COLLATE <collation_name>]
[NULL|NOT NULL]
[<column_constraints>]
|[<column_name> AS <computed_column_expression>]
|ADD
[CONSTRAINT <constraint_name>]
{[{PRIMARY KEY|UNIQUE}
[CLUSTERED|NONCLUSTERED]
{(<column_name>[ ,...n ])}
[WITH FILLFACTOR = <fillfactor>]
[ON {<filegroup> | DEFAULT}]
]
|FOREIGN KEY
[(<column_name>[ ,...n])]
REFERENCES <referenced_table>
[(<referenced_column>[ ,...n])]
[ON DELETE {CASCADE|NO ACTION}]
[ON UPDATE {CASCADE|NO ACTION}]
[NOT FOR REPLICATION]
|DEFAULT <constant_expression>
[FOR <column_name>]
|CHECK [NOT FOR REPLICATION]
(<search_conditions>)
[,...n][ ,...n]
|[WITH CHECK|WITH NOCHECK]
| { ENABLE | DISABLE } TRIGGER
{ ALL | <trigger name> [ ,...n ] }
|DROP
{[CONSTRAINT] <constraint_name>
|COLUMN <column_name>}[ ,...n]
|{CHECK|NOCHECK} CONSTRAINT
{ALL|<constraint_name>[ ,...n]}
|{ENABLE|DISABLE} TRIGGER
{ALL|<trigger_name>[ ,...n]}
| SWITCH [ PARTITION <source partition number
expression> ]
TO [ schema_name. ] target_table
[ PARTITION <target partition number expression> ]
}
DML

DML adalah singkatan dari Data Manipulation Language. Digunakan untuk mengambil, menyimpan,
mengubah, menghapus, menyisipkan dan update data dalam database.

Contoh Penggunaan DML :

1) SELECT : mengambil data dari tabel

Syntax : SELECT <column list>

[FROM <source table(s)>]


[WHERE <restrictive condition>]
[GROUP BY <column name or expression using a column in
the SELECT list>]
[HAVING <restrictive condition based on the GROUP BY
results>]
[ORDER BY <column list>]
[[FOR XML {RAW|AUTO|EXPLICIT|PATH [(<element>)]}[,
XMLDATA][, ELEMENTS][, BINARY
base 64]]
[OPTION (<query hint>, [, ...n])]
Contoh :

a) SELECT fName FROM Staff

b) SELECT fName, lName, telNo

FROM Client
WHERE clientNo = 'CR74'

c) SELECT propertyNo, street, city, rent


FROM PropertyForRent
WHERE rent < 400
d) SELECT propertyNo, street, city, rent, rooms
FROM PropertyForRent
WHERE city = 'Glasgow'
AND rooms BETWEEN 4 AND 5

e) SELECT fName, lName, address


FROM PrivateOwner
WHERE address LIKE '%Glasgow%'

f) SELECT propertyNo, street, rooms, rent


FROM PropertyForRent
WHERE rent < 600
ORDER BY rooms ASC

g) SELECT COUNT(*)
FROM PropertyForRent

h) SELECT MAX(rent)
FROM PropertyForRent

i) SELECT MIN(rent)
FROM PropertyForRent

j) SELECT SUM(rent)
FROM PropertyForRent

k) SELECT AVG(rent)
FROM PropertyForRent
l) SELECT 'Rent Count' = COUNT(rent),
'Rent Max' = MAX(rent),
'Rent Min' = MIN(rent),
'Rent Sum' = SUM(rent),
'Rent AVG' = AVG(rent)
FROM PropertyForRent

m) SELECT sex, 'count' = COUNT(*)


FROM Staff
GROUP BY sex

n) SELECT branchNo, 'count_result' = COUNT(*)


FROM Staff
GROUP BY branchNo
HAVING COUNT(*) < 3

o) SELECT DISTINCT city


FROM Branch

p) SELECT *
FROM Client c INNER JOIN Viewing v
ON c.clientNo = v.clientNo

q) SELECT p.propertyNo, p.rent, p.staffNo, s.staffNo,


s.fName, s.lName

FROM PropertyForRent p LEFT OUTER JOIN Staff s


ON p.staffNo = s.staffNo
r) SELECT p.propertyNo, p.rent, p.staffNo, s.staffNo,
s.fName, s.lName
FROM PropertyForRent p RIGHT OUTER JOIN Staff s
ON p.staffNo = s.staffNo

s) SELECT p.propertyNo, p.rent, p.staffNo, s.staffNo,


s.fName, s.lName
FROM PropertyForRent p FULL OUTER JOIN Staff s
ON p.staffNo = s.staffNo

t) SELECT p.propertyNo, p.rent, p.staffNo, s.staffNo,


s.fName, s.lName
FROM PropertyForRent p FULL OUTER JOIN Staff s
ON p.staffNo = s.staffNo

u) Syntax: UNION
Penggunaan: ‘ UNION SELECT * FROM namatabel
atau: ‘ UNION ALL SELECT * FROM namatabel
atau: ‘ UNION SELECT kolom1,kolom2 FROM namatabel
Proses yang terjadi dalam query:
SELECT * FROM user WHERE id=’1′ UNION SELECT kolom1,kolom2 FROM
namatabel
contoh :
SELECT staffNo AS 'personID',
fName AS 'First Name',
lName AS 'Last Name'
FROM Staff
UNION
SELECT clientNo,
fName,
lName
FROM Client
UNION
SELECT ownerNo,
fName,
lName
FROM PrivateOwner

v) SELECT cLastName AS "Last Name", cFirstName AS "First Name",


cPhone as "Phone", 'Customer' AS "Company"
FROM customers
UNION
SELECT repLName, repFName, repPhone, sCompanyName
FROM suppliers
ORDER BY "Last Name";

2) INSERT : Menyisipkan data ke dalam tabel

Syntax : INSERT INTO TableName

VALUES (value, ...)

Contoh :
a) INSERT INTO Branch
VALUES ('B 002 ', '56 Clover Rd' , ' London ', 'NW 10 6EU ')
INSERT INTO Branch
VALUES ('B 004 ', '32 Manse Rd ', 'Bristol ', 'BS 99 1NZ ')
INSERT INTO Branch
VALUES ('B 003 ', '16 3 Main St ', 'Glasgow ', 'G11 9QX' )
INSERT INTO Branch
VALUES ('B 007 ', '16 Argyll St' , ' Aberdeen' , ' AB2 3SU')
INSERT INTO Branch
VALUES ('B 005 ', '22 Deer Rd', 'London' , 'SW1 4EH')
b) SELECT * FROM authors WHERE au_id = 10
SELECT * FROM authors WHERE au_id BETWEEN 3 AND 10
SELECT * FROM authors WHERE au_id IN (2,4,6)
SELECT COUNT(*) AS jumlah FROM authors
INSERT INTO authors values (99990, 'Hermawan', 1982)
INSERT INTO authors values ('99992', 'Dephe', '1982')
INSERT INTO authors values ('99997', 'Abu Ridwan')
INSERT INTO authors (author, au_id) values ('Dephe', '9994')
UPDATE authors SET author = 'Agus' WHERE author = 'Hermawan'
UPDATE authors SET author = 'Abu Jibril', [year born] = 1940
WHERE author = 'AbuRidwan'
UPDATE authors SET [year born] = 1980
UPDATE authors set [year born] = Null WHERE au_id < 99990
DELETE * FROM authors WHERE author = 'Abu Jibril'
DELETE * FROM authors WHERE au_id >= 99990

c) INSERT INTO MsMhs VALUES('1200123456','Chandra')


INSERT INTO MsMhs VALUES('1200123457','Tono')
INSERT INTO TrKuliah VALUES('KD001','1200123456')
INSERT INTO TrKuliah VALUES('KD002','1200123456')
INSERT INTO TrKuliah VALUES('KD003','1200123457')
INSERT INTO TrKuliah VALUES('KD004','1200123457')

3) UPDATE : Pembaharuan data yang ada dalam tabel

Syntax : UPDATE TableName

SET fieldname...

Contoh :
a) UPDATE Staff
SET Salary = 20000
b) UPDATE Staff
SET Salary = 30000
WHERE position = 'Manager'

c) UPDATE Pelajar
SET No_Induk = ‘00311216’ ,Nama = ‘Wawan’
WHERE No_Induk =’00311210’ and Nama = ‘Hermawan’

4) DELETE : digunakan untuk menghapus row – row dari table , berbeda dengan

DROP yang menghapus objek dari database, jika seluruh isi table di -DELETE
maka table tersebut tetap akan ada, tetapi jika table tersebut di-DROP maka table
tersebut beserta isi– isinya akan dihapus.
Syntax : DELETE FROM
WHERE ;

Contoh :

a) DELETE FROM tablename

b) DELETE FROM Viewing

c) DELETE FROM NILAI

WHERE NPM=”12100748”

AND KDMK=”KK021’;

Вам также может понравиться