Anda di halaman 1dari 22

TUGAS SISTEM BASIS DATA

Syntax SQL

Diajukan untuk memenuhi mata kuliah sistem basis data

DOSEN PENGAMPU:

Sarwo Derta, S.Kom, SS, M.Kom

Disusun Oleh:

Siti Nurrahmi : 2522332

PROGRAM STUDI PENDIDIKAN TEKNIK INFORMATIKA


DAN KOMPUTER

FAKULTAS TARBIYAH DAN ILMU KEGURUAN

UNIVERSITAS ISLAM NEGRI SJECH M. DJAMIL DJAMBEK


BUKITTINGGI

TP: 2022/2023
SQL FOREIGN KEY Constraint
(Batasan Kunci Asing SQL)

Batasan Kunci Asing SQL

Batasan FOREIGN KEY digunakan untuk mencegah tindakan yang


akan merusak tautan antar tabel.

KUNCI ASING adalah bidang (atau kumpulan bidang) dalam satu


tabel, yang merujuk ke KUNCI UTAMA di tabel lain.

Tabel dengan kunci asing disebut tabel anak, dan tabel dengan kunci
utama disebut tabel referensi atau induk.

Perhatikan dua tabel berikut ini:

Tabel Orang :

Id Orang Nama Akhir Nama Umur


Pertama

1 Hansen Ola 30

2 Svendson Tove 23

3 Pettersen Kari 20

1
Tabel Pemesanan :

Id Nomor Pemesanan Id Orang


Pemesanan

1 77895 3

2 44678 3

3 22456 2

4 24562 1

Perhatikan bahwa kolom "PersonID" di tabel "Pesanan" mengarah ke


kolom "PersonID" di tabel "Orang".

Kolom "PersonID" di tabel "Orang" adalah PRIMARY KEY di tabel


"Orang".

Kolom "PersonID" di tabel "Pesanan" adalah KUNCI ASING di tabel


"Pesanan".

Batasan FOREIGN KEY mencegah data yang tidak valid dimasukkan


ke dalam kolom kunci asing, karena itu harus menjadi salah satu nilai
yang terkandung dalam tabel induk.

2
KUNCI ASING SQL pada BUAT TABEL
SQL berikut membuat KUNCI ASING pada kolom "PersonID" saat
tabel "Pesanan" dibuat:
MySQL:
BUAT TABEL Pesanan (
OrderID int BUKAN NULL,
OrderNumber int BUKAN NULL,
int PersonID,
KUNCI UTAMA (IDPesanan),
REFERENSI KUNCI ASING (PersonID) Orang (PersonID)
);

Akses SQL Server / Oracle / MS:


BUAT TABEL Pesanan (
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int BUKAN NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

Untuk mengizinkan penamaan batasan FOREIGN KEY, dan untuk


menentukan batasan FOREIGN KEY pada banyak kolom, gunakan
sintaks SQL berikut:
MySQL / SQL Server / Oracle / MS Access:
BUAT TABEL Pesanan (
OrderID int BUKAN NULL,
OrderNumber int BUKAN NULL,
int PersonID,
KUNCI UTAMA (IDPesanan),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENSI Orang(PersonID)
);

KUNCI ASING SQL pada ALTER TABLE


Untuk membuat batasan KUNCI ASING pada kolom "PersonID" saat
tabel "Pesanan" sudah dibuat, gunakan SQL berikut:
MySQL / SQL Server / Oracle / MS Access:
Perintah ALTER TABLE
TAMBAHKAN REFERENSI KUNCI ASING (PersonID) Orang
(PersonID);

3
Untuk mengizinkan penamaan batasan FOREIGN KEY, dan untuk
menentukan batasan FOREIGN KEY pada banyak kolom, gunakan
sintaks SQL berikut:
MySQL / SQL Server / Oracle / MS Access:
Perintah ALTER TABLE
TAMBAHKAN KENDALA FK_PersonOrder
REFERENSI KUNCI ASING (PersonID) Orang (PersonID);

JATUHKAN BATASAN KUNCI ASING


Untuk menghapus batasan KUNCI ASING, gunakan SQL berikut:
MySQL:
Perintah ALTER TABLE
JATUHKAN KUNCI ASING FK_PersonOrder;

Akses SQL Server / Oracle / MS:


Perintah ALTER TABLE
DROP CONSTRAINT FK_PersonOrder;

4
SQL CHECK Constraint
(Batasan Periksa SQL)
Batasan PERIKSA SQL
Kendala CHECK digunakan untuk membatasi rentang nilai yang dapat
ditempatkan dalam kolom.
Jika Anda menentukan batasan CHECK pada kolom, ini hanya akan
mengizinkan nilai tertentu untuk kolom ini.
Jika Anda mendefinisikan batasan CHECK pada tabel, batasan ini
dapat membatasi nilai dalam kolom tertentu berdasarkan nilai pada
kolom lain dalam baris.

PERIKSA SQL pada BUAT TABEL

SQL berikut membuat batasan CHECK pada kolom "Umur" saat tabel
"Orang" dibuat. Batasan CHECK memastikan bahwa usia seseorang
harus 18 tahun atau lebih:

MySQL:

BUAT TABEL Orang (


ID int BUKAN NULL,
Nama Belakang varchar (255) BUKAN NULL,
varchar Nama Depan (255),
usia int,
PERIKSA (Usia>=18)
);

Akses SQL Server / Oracle / MS:

BUAT TABEL Orang (


ID int BUKAN NULL,
Nama Belakang varchar (255) BUKAN NULL,
varchar Nama Depan (255),
Usia int PERIKSA (Umur>=18)
);

5
Untuk mengizinkan penamaan batasan CHECK, dan untuk menentukan
batasan CHECK pada beberapa kolom, gunakan sintaks SQL berikut:

MySQL / SQL Server / Oracle / MS Access:

BUAT TABEL Orang (


ID int BUKAN NULL,
Nama Belakang varchar (255) BUKAN NULL,
varchar Nama Depan (255),
usia int,
Varchar kota (255),
CONSTRAINT CHK_Person CHECK (Umur>=18 DAN
Kota='Sandnes')
);

JATUHKAN Kendala PERIKSA

Untuk menjatuhkan batasan CHECK, gunakan SQL berikut:

Akses SQL Server / Oracle / MS:

ALTER TABLE Orang

DROP CONSTRAINT CHK_PersonAge;

MySQL:

ALTER TABLE Orang

PERIKSA LEPAS CHK_PersonAge;

6
SQL DEFAULT Constraint
(Kendala Default SQL)
SQL Default Constraint (Kendala Default SQL)
Kendala DEFAULT digunakan untuk menetapkan nilai default untuk
kolom.
Nilai default akan ditambahkan ke semua rekaman baru, jika tidak ada
nilai lain yang ditentukan.
Default pada Buat Table SQL
SQL berikut menetapkan nilai DEFAULT untuk kolom "Kota" saat
tabel "Orang" dibuat:
Akses SQL / SQL Server / Oracle / MS saya:
BUAT TABEL Orang (
ID int BUKAN NULL,
Nama Belakang varchar (255) BUKAN NULL,
varchar Nama Depan (255),
usia int,
City varchar(255) DEFAULT 'Sandnes'
);

Batasan DEFAULT juga dapat digunakan untuk menyisipkan nilai


sistem, dengan menggunakan fungsi seperti GETDATE():
BUAT TABEL Pesanan (
ID int BUKAN NULL,
OrderNumber int BUKAN NULL,
TanggalPesanan DEFAULT GETDATE()
);

SQL DEFAULT pada Mengubah Table


Untuk membuat batasan DEFAULT pada kolom "Kota" saat tabel
sudah dibuat, gunakan SQL berikut:
MySQL:
ALTER TABLE Orang
ALTER City SET DEFAULT 'Sandnes';

7
SQL Server:
ALTER TABLE Orang
TAMBAHKAN KENDALA df_City
DEFAULT 'Sandnes' UNTUK Kota;

AKSES MS:
ALTER TABLE Orang
ALTER COLUMN City SET DEFAULT 'Sandnes';

Peramal:
ALTER TABLE Orang
MENGUBAH DEFAULT Kota 'Sandnes';

JATUHKAN Kendala DEFAULT


Untuk menghapus batasan DEFAULT, gunakan SQL berikut:
MySQL:
ALTER TABLE Orang
MENGUBAH DEFAULT DROP Kota;

Akses SQL Server / Oracle / MS:


ALTER TABLE Orang
MENGUBAH DEFAULT DEFAULT KOLOM Kota;

SQL Server:
ALTER TABLE Orang
MENGUBAH DEFAULT DEFAULT KOLOM Kota;

8
SQL CREATE INDEX Statement
(Pernyataan SQL CREATE INDEX)
Pernyataan SQL CREATE INDEX
Pernyataan CREATE INDEX digunakan untuk membuat indeks dalam
tabel.
Indeks digunakan untuk mengambil data dari database lebih cepat
daripada sebaliknya. Pengguna tidak dapat melihat indeks, mereka
hanya digunakan untuk mempercepat pencarian/permintaan.
Catatan: Memperbarui tabel dengan indeks memerlukan waktu lebih
lama daripada memperbarui tabel tanpa indeks (karena indeks juga
memerlukan pembaruan). Jadi, hanya buat indeks pada kolom yang
akan sering dicari.
Sintaks CREATE INDEX
Membuat indeks di atas meja. Nilai duplikat diperbolehkan:
BUAT INDEX index_name
ON table_name (kolom1, kolom2, ...);

BUAT Sintaks INDEKS UNIK


Membuat indeks unik di atas meja. Nilai duplikat tidak diperbolehkan:
BUAT INDEX UNIK index_name
ON table_name (kolom1, kolom2, ...);

Catatan: Sintaks untuk membuat indeks bervariasi di antara database


yang berbeda. Oleh karena itu: Periksa sintaks untuk membuat indeks
di database Anda.

BUAT INDEX Contoh


Pernyataan SQL di bawah membuat indeks bernama "idx_lastname"
pada kolom "LastName" di tabel "Persons":

BUAT INDEX idx_lastname


ON Orang (Nama Belakang);

9
Jika Anda ingin membuat indeks pada kombinasi kolom, Anda dapat
mencantumkan nama kolom di dalam tanda kurung, dipisahkan dengan
koma:
BUAT INDEX idx_pname
ON Orang (Nama Belakang, Nama Depan);

Pernyataan DROP INDEX


Pernyataan Drop Index digunakan untuk menghapus indeks dalam
tabel.
Akses MS:
DROP INDEX nama_indeks PADA nama_tabel;

SQL Server:
DROP INDEX table_name.index_name;

DB2/Oracle:
DROP INDEX index_name;

MySQL:
ALTER TABLE table_name
DROP INDEX index_name;

SQL AUTO INCREMENT Field


(Bidang Peningkatan Otomatis SQL)
Bidang Peningkatan Otomatis SQL
Peningkatan otomatis memungkinkan nomor unik dihasilkan secara
otomatis saat catatan baru dimasukkan ke dalam tabel.
Seringkali ini adalah bidang kunci utama yang ingin dibuat secara
otomatis setiap kali catatan baru dimasukkan.
Sintaks untuk MySQL

10
Pernyataan SQL berikut mendefinisikan kolom "Personid" menjadi
bidang kunci utama peningkatan otomatis dalam tabel "Orang":
BUAT TABEL Orang (
Personid int NOT NULL AUTO_INCREMENT,
Nama Belakang varchar (255) BUKAN NULL,
varchar Nama Depan (255),
usia int,
KUNCI UTAMA (Personid)
);
MySQL menggunakan kata kunci AUTO_INCREMENT untuk
melakukan fitur peningkatan otomatis.

Secara default, nilai awal untuk AUTO_INCREMENT adalah 1, dan


akan bertambah 1 untuk setiap record baru.

Untuk membiarkan urutan AUTO_INCREMENT dimulai dengan nilai


lain, gunakan pernyataan SQL berikut:
ALTER TABLE Orang AUTO_INCREMENT=100;

Untuk memasukkan record baru ke tabel "Persons", kita TIDAK perlu


menentukan nilai untuk kolom "Personid" (nilai unik akan ditambahkan
secara otomatis):
MASUKKAN KE ORANG (Nama Depan, Nama Belakang)
NILAI ('Lars','Monsen');

Pernyataan SQL di atas akan memasukkan catatan baru ke dalam tabel


"Orang". Kolom "Personid" akan diberi nilai unik. Kolom "FirstName"
akan disetel ke "Lars" dan kolom "LastName" akan disetel ke
"Monsen".
Sintaks untuk SQL Server
Pernyataan SQL berikut mendefinisikan kolom "Personid" menjadi
bidang kunci utama peningkatan otomatis dalam tabel "Orang":
BUAT TABEL Orang (
Personid int IDENTITY(1,1) PRIMARY KEY,
Nama Belakang varchar (255) BUKAN NULL,
varchar Nama Depan (255),
Usia int
);

11
MS SQL Server menggunakan kata kunci IDENTITAS untuk
melakukan fitur penambahan otomatis.
Pada contoh di atas, nilai awal untuk IDENTITY adalah 1, dan akan
bertambah 1 untuk setiap record baru.
Tips: Untuk menentukan bahwa kolom "Personid" harus dimulai dari
nilai 10 dan bertambah 5, ubah ke IDENTITY(10,5).
Untuk memasukkan record baru ke tabel "Persons", kita TIDAK perlu
menentukan nilai untuk kolom "Personid" (nilai unik akan ditambahkan
secara otomatis):
MASUKKAN KE ORANG (Nama Depan, Nama Belakang)
NILAI ('Lars','Monsen');

Pernyataan SQL di atas akan memasukkan catatan baru ke dalam tabel


"Orang". Kolom "Personid" akan diberi nilai unik. Kolom "FirstName"
akan disetel ke "Lars" dan kolom "LastName" akan disetel ke
"Monsen".

Sintaks untuk Akses


Pernyataan SQL berikut mendefinisikan kolom "Personid" menjadi
bidang kunci utama peningkatan otomatis dalam tabel "Orang":
BUAT TABEL Orang (
KUNCI UTAMA AUTOINCREMENT Personid,
Nama Belakang varchar (255) BUKAN NULL,
varchar Nama Depan (255),
Usia int
);

MS Access menggunakan kata kunci AUTOINCREMENT untuk


melakukan fitur penambahan otomatis.
Secara default, nilai awal untuk AUTOINCREMENT adalah 1, dan
akan bertambah 1 untuk setiap record baru.
Tips: Untuk menentukan bahwa kolom "Personid" harus dimulai dari
nilai 10 dan bertambah 5, ubah kenaikan otomatis menjadi
AUTOINCREMENT(10,5).

12
Untuk memasukkan record baru ke tabel "Persons", kita TIDAK perlu
menentukan nilai untuk kolom "Personid" (nilai unik akan ditambahkan
secara otomatis):
MASUKKAN KE ORANG (Nama Depan, Nama Belakang)
NILAI ('Lars','Monsen');

Pernyataan SQL di atas akan memasukkan catatan baru ke dalam tabel


"Orang". Kolom "Personid" akan diberi nilai unik. Kolom "FirstName"
akan disetel ke "Lars" dan kolom "LastName" akan disetel ke
"Monsen".

Sintaks untuk Oracle


Di Oracle, kodenya sedikit lebih rumit.
Anda harus membuat bidang penambahan otomatis dengan objek
urutan (objek ini menghasilkan urutan angka).
Gunakan sintaks CREATE SEQUENCE berikut:
BUAT URUTAN seq_person
MINIMAL 1
MULAI DENGAN 1
KENAIKAN 1
CACHE 10;

Kode di atas membuat objek urutan yang disebut seq_person, yang


dimulai dengan 1 dan akan bertambah 1. Ini juga akan meng-cache
hingga 10 nilai untuk kinerja. Opsi cache menentukan berapa banyak
nilai urutan yang akan disimpan dalam memori untuk akses yang lebih
cepat.
Untuk memasukkan record baru ke tabel "Persons", kita harus
menggunakan fungsi nextval (fungsi ini mengambil nilai selanjutnya
dari urutan seq_person):
INSERT INTO Persons (Personid,FirstName,LastName)
NILAI (seq_person.nextval,'Lars','Monsen');

13
Pernyataan SQL di atas akan memasukkan catatan baru ke dalam tabel
"Orang". Kolom "Personid" akan diberi nomor berikutnya dari urutan
seq_person. Kolom "FirstName" akan disetel ke "Lars" dan kolom
"LastName" akan disetel ke "Monsen".

SQL Working With Dates


(SQL Bekerja Dengan Tanggal)
Tanggal SQL
Bagian tersulit saat bekerja dengan tanggal adalah memastikan bahwa
format tanggal yang Anda coba masukkan, cocok dengan format kolom
tanggal di database.
Selama data Anda hanya berisi bagian tanggal, kueri Anda akan
berfungsi seperti yang diharapkan. Namun, jika melibatkan porsi
waktu, itu menjadi lebih rumit.
Tipe Data Tanggal SQL
MySQL hadir dengan tipe data berikut untuk menyimpan tanggal atau
nilai tanggal/waktu dalam database:
 TANGGAL - format YYYY-MM-DD
 TANGGAL WAKTU - format: YYYY-MM-DD HH:MI:SS
 TIMESTAMP - format: YYYY-MM-DD HH:MI:SS
 TAHUN - format YYYY atau YY
SQL Server hadir dengan tipe data berikut untuk menyimpan tanggal
atau nilai tanggal/waktu dalam database:
 TANGGAL - format YYYY-MM-DD
 TANGGAL WAKTU - format: YYYY-MM-DD HH:MI:SS
 SMALLDATETIME - format: YYYY-MM-DD HH:MI:SS

14
 TIMESTAMP - format: nomor unik
Catatan: Jenis tanggal dipilih untuk kolom saat Anda membuat tabel
baru di database Anda!
SQL Bekerja dengan Tanggal
Perhatikan tabel berikut:
Tabel Pesanan

Id Pemesanan Nama Produk Tanggal Pemesanan

1 Geitost 2008-11-11

2 Camembert Pierrot 2008-11-09

3 Mozzarella di Giovanni 2008-11-11

4 Mascarpone Fabioli 2008-10-29

Kami menggunakan pernyataan SELECT berikut:


PILIH * DARI Pesanan MANA OrderDate='2008-11-11'

Hasil-set akan terlihat seperti ini:

15
Id Nama Produk Tanggal Pemesanan
Pemesanan

1 Geitost 2008-11-11

3 Mozzarella di 2008-11-11
Giovanni

Catatan: Dua tanggal dapat dengan mudah dibandingkan jika tidak ada
komponen waktu yang terlibat!

Sekarang, asumsikan tabel "Pesanan" terlihat seperti ini (perhatikan


komponen waktu yang ditambahkan di kolom "TanggalPesanan"):

Id Nama Produk Tanggal


Pemesanan Pemesanan

1 Geitost 2008-11-11 13:23:44

2 Camembert Pierrot 2008-11-09 15:45:21

3 Mozzarella di Giovanni 2008-11-11 11:12:01

16
4 Mascarpone Fabioli 2008-10-29 14:56:59

Jika kita menggunakan pernyataan SELECT yang sama seperti di atas:


PILIH * DARI Pesanan MANA OrderDate='2008-11-11'

kita tidak akan mendapatkan hasil! Ini karena kueri hanya mencari
tanggal tanpa porsi waktu.

Kiat: Agar kueri Anda tetap sederhana dan mudah dikelola, jangan
gunakan komponen waktu di tanggal Anda, kecuali Anda harus
melakukannya!

17
SQL VIEWS

(Tampilan SQL)

Pernyataan SQL CREATE VIEW

Dalam SQL, tampilan adalah tabel virtual berdasarkan kumpulan hasil


dari pernyataan SQL.

Tampilan berisi baris dan kolom, seperti tabel sebenarnya. Bidang


dalam tampilan adalah bidang dari satu atau lebih tabel nyata dalam
database.

Anda bisa menambahkan pernyataan dan fungsi SQL ke tampilan dan


menyajikan data seolah-olah data berasal dari satu tabel tunggal.

Tampilan dibuat dengan pernyataan CREATE VIEW.


Sintaks BUAT LIHAT
BUAT TAMPILAN view_name AS
PILIH kolom1, kolom2, ...
DARI nama_tabel
kondisi WHERE;

Catatan: Tampilan selalu menampilkan data terbaru! Mesin basis data


membuat ulang tampilan, setiap kali pengguna menanyakannya.

Contoh TAMPILAN BUAT SQL

18
SQL berikut membuat tampilan yang menampilkan semua pelanggan
dari Brasil:

Contoh

Dapatkan SQL Server Anda sendiri


BUAT TAMPILAN [Pelanggan Brasil] SEBAGAI
PILIH NamaPelanggan, NamaKontak
DARI Pelanggan
WHERE Negara = 'Brasil';

Kita dapat menanyakan tampilan di atas sebagai berikut:

Contoh
PILIH * DARI [Pelanggan Brasil];

SQL berikut membuat tampilan yang memilih setiap produk di tabel


"Produk" dengan harga lebih tinggi dari harga rata-rata:

Contoh
CREATE VIEW [Produk Di Atas Harga Rata-Rata] AS

PILIH NamaProduk, Harga

DARI Produk

WHERE Price > (PILIH AVG(Harga) DARI Produk);

Kita dapat menanyakan tampilan di atas sebagai berikut:

Contoh
PILIH * DARI [Produk Di Atas Harga Rata-Rata];

SQL Memperbarui Tampilan

Tampilan dapat diperbarui dengan pernyataan CREATE OR


REPLACE VIEW.

19
SQL BUAT ATAU GANTI Sintaks TAMPILAN
BUAT ATAU GANTI LIHAT view_name AS
PILIH kolom1, kolom2, ...
DARI nama_tabel
kondisi WHERE;

SQL berikut menambahkan kolom "Kota" ke tampilan "Pelanggan


Brasil":

Contoh
BUAT ATAU GANTI TAMPILAN [Pelanggan Brasil] AS
PILIH Nama Pelanggan, Nama Kontak, Kota
DARI Pelanggan
WHERE Negara = 'Brasil';

SQL Menjatuhkan Tampilan

Tampilan dihapus dengan pernyataan DROP VIEW.

Sintaks SQL DROP VIEW


DROP VIEW view_name;

SQL berikut menghapus tampilan "Pelanggan Brasil":

Contoh
DROP VIEW [Pelanggan Brasil];

20
21

Anda mungkin juga menyukai