Syntax SQL
DOSEN PENGAMPU:
Disusun Oleh:
TP: 2022/2023
SQL FOREIGN KEY Constraint
(Batasan Kunci Asing SQL)
Tabel dengan kunci asing disebut tabel anak, dan tabel dengan kunci
utama disebut tabel referensi atau induk.
Tabel Orang :
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20
1
Tabel Pemesanan :
1 77895 3
2 44678 3
3 22456 2
4 24562 1
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)
);
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);
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.
SQL berikut membuat batasan CHECK pada kolom "Umur" saat tabel
"Orang" dibuat. Batasan CHECK memastikan bahwa usia seseorang
harus 18 tahun atau lebih:
MySQL:
5
Untuk mengizinkan penamaan batasan CHECK, dan untuk menentukan
batasan CHECK pada beberapa kolom, gunakan sintaks SQL berikut:
MySQL:
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'
);
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';
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, ...);
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);
SQL Server:
DROP INDEX table_name.index_name;
DB2/Oracle:
DROP INDEX index_name;
MySQL:
ALTER TABLE table_name
DROP INDEX index_name;
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.
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');
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');
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".
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
1 Geitost 2008-11-11
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!
16
4 Mascarpone Fabioli 2008-10-29 14:56:59
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)
18
SQL berikut membuat tampilan yang menampilkan semua pelanggan
dari Brasil:
Contoh
Contoh
PILIH * DARI [Pelanggan Brasil];
Contoh
CREATE VIEW [Produk Di Atas Harga Rata-Rata] AS
DARI Produk
Contoh
PILIH * DARI [Produk Di Atas Harga Rata-Rata];
19
SQL BUAT ATAU GANTI Sintaks TAMPILAN
BUAT ATAU GANTI LIHAT view_name AS
PILIH kolom1, kolom2, ...
DARI nama_tabel
kondisi WHERE;
Contoh
BUAT ATAU GANTI TAMPILAN [Pelanggan Brasil] AS
PILIH Nama Pelanggan, Nama Kontak, Kota
DARI Pelanggan
WHERE Negara = 'Brasil';
Contoh
DROP VIEW [Pelanggan Brasil];
20
21