Modul Basis Data
SQL DAN RDBMS
Fitria Claudya Lahinta, SST, MT
Politeknik Negeri Manado
Oktober 2020
BASIS DATA - SQL & RDBMS
1. Pengenalan SQL
Apa itu SQL? SQL adalah Structured Query Language atau Bahasa standar untuk mengakses
dan memanipulasi basis data. Di dalamnya termasuk pembuatan, penghapusan,
pengambilan baris, modifikasi baris dll. SQL menjadi standar ANSI pada 1986 dan ISO pada
1987.
SQL juga merupakan Bahasa standar untuk RDBMS (Relational Database Management
System) seperti pada MySQL, MS Access, Oracle dsb. SQL dapat mengerjakan beberapa
perintah dalam pengolahan basis data diantara lain:
- Dapat menjalankan query dari basis data
- Dapat mengambil data dari basis data
- Dapat memasukkan data pada basis data
- Dapat mengubah data pada basis data
- Dapat menghapus data pada basis data
- Dapat membuat basis data baru
- Dapat membuat tabel pada basis data
- Dapat menyimpan prosedur pada basis data
- Dapat membuat tampilan pada basis data
- Dapat mengatur izin pada tabel, prosedur dan tampilan
Arsitektur SQL secara umum dapat dilihat pada diagram alur di bawah:
Gambar 1.1 Diagram Alur SQL
Diagram alur di atas menjelaskan proses dari SQL mulai dari kueri, masuk ke dalam proses
yang ditambah dengan optimizer dilanjutkan pada proses dalam DBMS engine yang
dilengkapi File Manager dan Transaction Manager akan dilanjutkan pada basis data fisis.
FITRIA CLAUDYA LAHINTA, SST, MT 1
BASIS DATA - SQL & RDBMS
2. Perintah SQL
Standar perintah SQL ada beberapa yaitu CREATE, SELECT, INSERT, UPDATE, DELETE,
DROP. Perintah ini dapat dijabarkan melalui hakekatnya masing-masing:
DDL – DATA DEFINITON LANGUAGE
1. CREATE
Membuat tabel, tampilan, atau apapun yang ada di database.
2. ALTER
Memodifikasi objek basis data, seperti tabel.
3. DROP
Menghapus tabel dan isinya, tampilan atau apapun yang ada di database.
DML – DATA MANIPULATION LANGUAGE
1. SELECT
Mengambil/menampilkan data yang tersimpan pada satu tabel atau lebih.
2. INSERT
Menyimpan data ke dalam tabel.
3. UPDATE
Mengubah data.
4. DELETE
Menghapus data.
DCL – DATA CONTROL LANGUAGE
1. GRANT
Memberi izin kepada user/pengguna basis data.
2. REVOKE
Menolak izin user yang sudah di berikan.
FITRIA CLAUDYA LAHINTA, SST, MT 2
BASIS DATA - SQL & RDBMS
3. SQL – RDBMS – TABLE
Data dalam RDBMS disimpan pada objek basis data bernama Tabel.
TABEL
Tabel merupakan kumpulan dari beberapa data dan mempunyai banyak sekali baris dan
kolom yang merepresentasikan kumpulan data tersebut.
ID Name Address City Postal Country
1 Maria Obere Str. 57 Berlin 12209 Germany
2 Ana Constitución 2222 México D.F. 05021 Mexico
3 Antonio Mataderos 2312 México D.F. 05023 Mexico
4 Thomas 120 Hanover Sq. London WA1 1DP UK
5 Christina Berguvsvägen 8 Luleå S-958 22 Sweden
6 Hanna Forsterstr. 57 Mannheim 68306 Germany
7 Citeaux 24, place Kléber Strasbourg 67000 France
8 Martín C/ Araquil, 67 Madrid 28023 Spain
9 Laurence 12, rue des Bouchers Marseille 13008 France
10 Elizabeth 23 Tsawassen Blvd. Tsawassen T2F 8M4 Canada
FIELD
Tiap-tiap tabel di pecah menjadi entitas yang lebih kecil disebut Fields. Field pada tabel
Customer di atas terdiri dari ID, Name, Address, City, Postal, Country. Field adalah sebuah
kolom pada tabel yang diperuntukkan mempertahankan informasi spesifik dalam setiap
catatan di tabel.
ID Name Address City Postal Country
RECORD/ROW
Record, atau sering disebut dengan baris data adalah entri individu yang ada pada tabel.
Pada tabel di atas ada 10 baris data yang menyimpan informasi per individu.
1 Maria Obere Str. 57 Berlin 12209 Germany
COLUMN
Kolom adalah entitas vertikal pada tabel yang memuat informasi spesifik dari field.
Name
Maria
Ana
Antonio
Thomas
Christina
Hanna
Citeaux
Martín
Laurence
Elizabeth
FITRIA CLAUDYA LAHINTA, SST, MT 3
BASIS DATA - SQL & RDBMS
4. SQL CONSTRAINTS
Constraints adalah aturan yang diterapkan pada kolom data pada tabel. Ini digunakan
untuk membatasi jenis data yang bias masuk ke dalam tabel. Ini memastikan keakuratan
dan keandalan data dalam basis data. Constraints atau Batasan dapat diterapkan pada level
kolom dan tabel, dimana pada level kolom, maka hanya akan diterapkan pada satu kolom,
sedangkan untuk tabel akan diterapkan pada seluruh tabel.
Berikut adalah beberapa contoh constraints pada SQL:
- NOT NULL
Kolom tidak dapat memiliki NULL value. NULL disini merupakan value, kolom yang
berisi NULL mempunyai field dengan value kosong.
- DEFAULT
Memberikan nilai default untuk kolom jika tidak ada yang ditentukan.
- UNIQUE
Memastikan bahwa nilai di tiap kolom berbeda/tidak ada yang sama
- PRIMARY KEY
Secara unik memberikan identitas pada setiap baris/record dalam tabel
- FOREIGN KEY
Secara unik memberikan identitas pada setiap baris/record pada tabel lain
- CHECK CONSTRAINTS
Memastikan bahwa semua nilai pada kolom memenuhi kondisi yang ditetapkan
- INDEX
Digunakan untuk membuat dan mengambil data dari basis data secara cepat.
5. DATA INTEGRITY
Integritas pada data dimaksudkan untuk menjaga basis data agar tetap
- ENTITY
Tidak ada duplikasi baris pada tabel (unique)
- DOMAIN
Menerapkan entri valid untuk kolom tertentu dengan membatasi tipe, format,
atau nilai
- REFERENTIAL
Baris yang digunakan pada data lain tidak dapat dihapus.
- USER-DEFINED
Tambahan – Penerapan normalisasi dalam basis data juga diperlukan untuk efisiensi dan
keandalan dalam pengaksesan basis data. Dengan cara menghapus data-data duplikasi dan
yang tidak perlu(redundant) yang dibagi dalam 3 level normalisasi.
FITRIA CLAUDYA LAHINTA, SST, MT 4
BASIS DATA - SQL & RDBMS
6. DDL SYNTAX
CREATE AND DROP DATABASE
CREATE DATABASE databasename; DROP DATABASE databasename;
contoh contoh
CREATE DATABASE testDB DROP DATABASE testDB
CREATE, ALTER, DROP TABLE
CREATE TABLE table_name ( CREATE TABLE Persons (
column1 datatype, PersonID int,
column2 datatype, LastName varchar(255),
column3 datatype, FirstName varchar(255),
Column4 datatype, Address varchar(255),
.... City varchar(255)
); );
ALTER TABLE table_name ALTER TABLE Customers
ADD column_name datatype; ADD Email varchar(255);
ALTER TABLE table_name ALTER TABLE Customers
MODIFY COLUMN column_name MODIFY COLUMN Email varchar(10);
datatype;
ALTER TABLE table_name ALTER TABLE Customers
DROP COLUMN column_name; DROP COLUMN Email;
DROP TABLE table_name; DROP TABLE Shippers;
TRUNCATE TABLE table_name; TRUNCATE TABLE Shippers;
FITRIA CLAUDYA LAHINTA, SST, MT 5
BASIS DATA - SQL & RDBMS
7. DML SYNTAX
SELECT
SELECT column1, column2, ... SELECT CustomerName,City
FROM table_name; FROM Customers;
SELECT DISTINCT column1, ... SELECT DISTINCT Country
FROM table_name; FROM Customers;
SELECT column1, column2, ... SELECT *
FROM table_name FROM Customers
WHERE condition; WHERE Country='Mexico';
SELECT column1, column2, ... SELECT *
FROM table_name FROM Customers
WHERE condition1 WHERE Country='Germany'
AND condition2 ...; AND City='Berlin';
SELECT column1, column2, ... SELECT *
FROM table_name FROM Customers
WHERE condition1 WHERE City='München'
OR condition2 ...; OR City='Berlin';
SELECT column1, column2, ... SELECT *
FROM table_name FROM Customers
WHERE NOT condition; WHERE NOT Country='Germany';
SELECT column1, column2, ... SELECT *
FROM table_name FROM Customers
ORDER BY column1, column2, ...; ORDER BY Country, CustomerName;
SELECT column1, column2, ... SELECT *
FROM table_name FROM Customers
ORDER BY column1, column2, ORDER BY Country ASC,
... ASC|DESC; CustomerName DESC;
FITRIA CLAUDYA LAHINTA, SST, MT 6
BASIS DATA - SQL & RDBMS
INSERT
INSERT INTO table_name INSERT INTO Customers
(column1, column2, column3, ...) (CustomerName, ContactName,
VALUES Address, City, PostalCode,
(value1, value2, value3, ...); Country)
VALUES
('Cardinal', 'Tom B.
Erichsen', 'Skagen
21', 'Stavanger',
'4006', 'Norway');
INSERT INTO table_name INSERT INTO Customers
VALUES VALUES
(value1, value2, value3, ...); ('Cardinal', 'Tom B.
Erichsen', 'Skagen
21', 'Stavanger',
'4006', 'Norway');
UPDATE
UPDATE table_name UPDATE Customers
SET column1 = value1, SET ContactName = 'Alfred
column2 = value2, ... Schmidt', City= 'Frankfurt'
WHERE condition; WHERE CustomerID = 1;
TRUNCATE TABLE table_name; TRUNCATE TABLE Shippers;
DELETE
DELETE FROM table_name DELETE FROM Customers
WHERE condition; WHERE CustomerName='Alfreds
Futterkiste';
DELETE FROM table_name; DELETE FROM Customers;
FITRIA CLAUDYA LAHINTA, SST, MT 7
BASIS DATA - SQL & RDBMS
8. Data Control Language
FITRIA CLAUDYA LAHINTA, SST, MT 8
BASIS DATA - SQL & RDBMS
9. Constraints
NOT NULL
Secara default, data dapat dimasukkan dengan nilai NULL. Sintaks ini mengharuskan bahwa
entitas pada tabel harus selalu berisi nilai pada saat menggunakan INSERT maupun
UPDATE.
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);
UNIQUE
Perintah UNIQUE memastikan bahwa nilai pada setiap kolom berbeda. Sama dengan
PRIMARY KEY, UNIQUE menjamin keunikan nilai. Sebuah PRIMARY KEY sudah pasti
mempunyai nilai UNIQUE. Satu tabel dapat bernilai UNIQUE semua tapi hanya satu
PRIMARY KEY yang dibolehkan.
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
UNIQUE (ID)
);
ALTER TABLE Persons
ADD UNIQUE (ID);
ALTER TABLE Persons
DROP INDEX UC_Person;
FITRIA CLAUDYA LAHINTA, SST, MT 9
BASIS DATA - SQL & RDBMS
PRIMARY KEY
PRIMARY KEY harus memiliki nilai UNIQUE dan tidak boleh berisi nilai NULL. Satu tabel
hanya dapat memiliki satu PRIMARY KEY; juga PRIMARY KEY dapat berisi satu atau lebih
fields.
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);
ALTER TABLE Persons ALTER TABLE Persons
ADD PRIMARY KEY (ID); ADD CONSTRAINT PK_Person
PRIMARY KEY (ID,LastName);
ALTER TABLE Persons
DROP PRIMARY KEY;
FITRIA CLAUDYA LAHINTA, SST, MT 10
BASIS DATA - SQL & RDBMS
FOREIGN KEY
FOREIGN KEY berfungsi untuk menghubungkan satu tabel dan tabel lainnya. FOREIGN
KEY adalah satu atau satu set field yang mengacu pada PRIMARY KEY di tabel lain.
CREATE TABLE Orders ( CREATE TABLE Orders (
OrderID int NOT NULL, OrderID int NOT NULL,
OrderNumber int NOT NULL, OrderNumber int NOT NULL,
PersonID int, PersonID int,
PRIMARY KEY (OrderID), PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) CONSTRAINT FK_PersonOrder
REFERENCES Persons(PersonID) FOREIGN KEY (PersonID)
); REFERENCES Persons(PersonID)
);
ALTER TABLE Orders ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) ADD CONSTRAINT FK_PersonOrder
REFERENCES Persons(PersonID); FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
FITRIA CLAUDYA LAHINTA, SST, MT 11
BASIS DATA - SQL & RDBMS
CHECK
CHECK digunakan untuk membuat nilai batas. Jika diterapkan di satu kolom, maka nilai
batas hanya akan diterapkan pada kolom tersebut, tapi jika diterapkan pada satu tabel,
maka nilai batas akan diterapkan pada satu tabel.
CREATE TABLE Persons ( CREATE TABLE Persons (
ID int NOT NULL, ID int NOT NULL,
LastName varchar(255) NOT NULL, LastName varchar(255) NOT NULL,
FirstName varchar(255), FirstName varchar(255),
Age int, Age int,
CHECK (Age>=18) City varchar(255),
); CONSTRAINT CHK_Person
CHECK
(Age>=18 AND City='Sandnes')
);
ALTER TABLE Persons ALTER TABLE Persons
ADD CHECK (Age>=18); ADD CONSTRAINT CHK_PersonAge
CHECK
(Age>=18 AND City='Sandnes');
ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;
FITRIA CLAUDYA LAHINTA, SST, MT 12
BASIS DATA - SQL & RDBMS
DEFAULT
DEFAULT akan memberikan nilai default dari sebuah kolom jika tidak ada nilai yang
diberikan pada saat melakukan INSERT.
CREATE TABLE Persons ( CREATE TABLE Orders (
ID int NOT NULL, ID int NOT NULL,
LastName varchar(255) NOT NULL, OrderNumber int NOT NULL,
FirstName varchar(255), OrderDate
Age int, date DEFAULT GETDATE()
City );
varchar(255) DEFAULT 'Sandnes'
);
ALTER TABLE Persons
ALTER City SET DEFAULT 'Sandnes';
ALTER TABLE Persons
ALTER City DROP DEFAULT;
INDEX
INDEX digunakan untuk mengambil data secara cepat dari database. Ini digunakan untuk
percepatan pada penggunaan query.
CREATE INDEX index_name CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ON table_name (column1, column2,
...); ...);
Contoh Contoh
CREATE INDEX idx_lastname CREATE UNIQUE INDEX idx_lastname
ON Persons (LastName); ON Persons (LastName);
Atau Atau
CREATE INDEX idx_pname CREATE UNIQUE INDEX idx_pname
ON Persons (LastName, ON Persons (LastName,
FirstName); FirstName);
ALTER TABLE table_name
DROP INDEX index_name;
FITRIA CLAUDYA LAHINTA, SST, MT 13
BASIS DATA - SQL & RDBMS
FITRIA CLAUDYA LAHINTA, SST, MT 14