Anda di halaman 1dari 38

Machine Translated by Google

NAMA ANGGOTA : - Aziz Dava Irfan Saputra (21522236)

-Muhammad Cygnus Samudera (21522239)

- Umi Nurul Afifah (21522251)

- Dava Ardian Putra Pratama (21522252)

- Sekar Wijayaning Tyas (21522256)

KELAS : Sistem Manajemen Basis Data – A

RAPAT 7 – QUERY SQL

Tinjau Pertanyaan

7.1 Apa kepanjangan dari DDL? Buat daftar pernyataan SQL DDL.

MENJAWAB:

• BUAT TABEL

• MENGUBAH TABEL

• DROP TABEL

• POTONG TABEL

7.2 Apa kepanjangan dari DML? Buat daftar pernyataan SQL DML.

MENJAWAB:

• MENYISIPKAN

• MEMPERBARUI

• MENGHAPUS

• MENGGABUNGKAN

7.3 Jelaskan arti ungkapan berikut: IDENTITAS (4000, 5).

Kata kunci IDENTITY digunakan untuk mengubah nama kolom, dan digunakan untuk menentukan

kunci pengganti. Parameter angka pertama setelah IDENTITY menentukan nilai awal

untuk kunci pengganti, dan angka kedua menentukan nilai kenaikan untuk masing-masing

catatan tambahan. Ini kolom bernama RelationID dan dimodifikasi oleh IDENTITY (4000,

5) akan menjadi kunci pengganti bernama RelationID dengan nilai awal 4000 (untuk yang pertama

rekam dalam relasi), dan dengan nilai berikut yang ditambah 5: 4000, 4005, 4010,

dll.
Machine Translated by Google

MENJAWAB:

Ketika penugasan mereferensikan Angka-angka dalam buku, mis. Gambar 7-35, Anda perlu melihat

buku untuk contoh. Gambar 7-35 digambarkan pada halaman 357.

Untuk kumpulan Pertanyaan Tinjauan ini, kami akan membuat dan menggunakan database dengan kumpulan tabel yang akan

memungkinkan kita untuk membandingkan variasi dalam pernyataan SQL CREATE TABLE dan SQL INSERT. Itu

tujuan dari pertanyaan-pertanyaan ini adalah untuk mengilustrasikan situasi yang berbeda yang membutuhkan penggunaan khusus dari berbagai

Opsi SQL CREATE TABLE dan SQL INSERT.

Basis data akan diberi nama CH07_RQ_TABLES dan akan berisi enam tabel berikut:

CUSTOMER_01 (EmailAddress, LastName, FirstName)

CUSTOMER_02 (CustomerID, EmailAddress, LastName, FirstName)

CUSTOMER_03 (CustomerID, EmailAddress, LastName, FirstName)

CUSTOMER_04 (CustomerID, EmailAddress, LastName, FirstName)

SALE_01 (SaleID, DateOfSale, EmailAddress, SaleAmount)

SALE_02 (SaleID, DateOfSale, CustomerID, SaleAmount)

EmailAddress adalah kolom teks yang berisi alamat email, dan karena itu bukan pengganti

kunci. CustomerID adalah kunci pengganti yang dimulai dari 1 dan bertambah 1. SaleID adalah pengganti

kunci yang dimulai pada 20150001 dan bertambah 1.

Database CH07_RQ_TABLES memiliki batasan integritas referensial berikut:

EmailAddress di SALE_01 harus ada di EmailAddress di CUSTOMER_01

CustomerID di SALE_02 harus ada di CustomerID di CUSTOMER_04

Hubungan dari SALE_01 ke CUSTOMER_01 adalah N:1, OM.

Hubungan dari SALE_02 ke CUSTOMER_04 adalah N:1, OM.

Karakteristik kolom untuk tabel ini ditunjukkan pada Gambar 7-35 (CUSTOMER_01), 7-

36 (CUSTOMER_02, CUSTOMER_03, dan CUSTOMER_04), 7-37 (SALE_01), dan 7-38

(OBRAL_02).

Data untuk tabel ini ditunjukkan pada Gambar 7-39 (CUSTOMER_01), 7-40

(CUSTOMER_02), 7-41 (CUSTOMER_04), 7-42 (OBRAL_01), dan 7-43 (OBRAL_02).

Gambar 7-35 sampai 7-43 digambarkan, mulai dari halaman 357.


Machine Translated by Google

7.4 Jika Anda menggunakan Microsoft SQL Server, Oracle Database, atau MySQL, buat folder di

folder Dokumen Anda untuk menyimpan dan menyimpan skrip *.sql yang berisi pernyataan SQL

yang harus Anda buat dalam Pertanyaan Tinjauan berikut tentang

Basis data CH07_RQ_TABLES:

• Untuk SQL Server Management Studio, buat folder bernama CH07-RQ

TABLESDatabase di folder Proyek di SQL Server Management Studio Anda

map. 384 BAGIAN 3 Implementasi Database

• Untuk Oracle SQL Developer, buat folder bernama CH07-RQ-TABLES-Database in

folder Pengembang SQL Anda.

• Untuk SQL Workbench, buat folder bernama CH07-RQ-TABLES-Database di

Folder Schemas di folder MySQL Workbench Anda. Jika Anda menggunakan Microsoft

Access 2016, buat folder bernama CH07-Databases di DBP-e15-Access Anda


2016-Folder database.

Menjawab:

7.5 Buat database bernama CH07_RQ_TABLES.


MENJAWAB:

Langkah ini selesai dalam penugasan,

S09_Assignment_ToCreateRQ_TABLES_DBinSSMS.
Machine Translated by Google

7.6 Jika Anda menggunakan Microsoft SQL Server, Oracle Database, atau MySQL, buat dan simpan file

Skrip SQL bernama CH07-RQ-TABLES-Tables-Data-and-Views.sql untuk menyimpan jawabannya

untuk Meninjau Pertanyaan 7.7–7.40. Gunakan komentar skrip SQL (/* dan */ simbol) untuk menulis

jawaban Anda atas Pertanyaan Tinjauan yang memerlukan jawaban tertulis sebagai komentar. Jika Anda

menjalankan Microsoft Access 2016, buat dan simpan file teks Microsoft Notepad bernama

CH07-RQ-TABLES-Tables-Data-and-Views.txt untuk menyimpan jawaban Review

Pertanyaan 7.7–7.40. Setelah Anda menjalankan setiap pernyataan SQL di Microsoft Access 2016, salin

pernyataan SQL Anda ke file ini.

MENJAWAB:

Setiap skrip SQL Pertanyaan Tinjauan perlu disimpan dalam file bernama,

CH_07_RQ_TABLES_Data_and_Views.sql, disimpan di folder Proyek di SQL

folder Studio Manajemen Server.

Anda harus membuat folder Proyek saat Anda membuat Cape_Codd Database

di Bab 2, atau di S09_Assignment_ToCreateRQ_TABLES_DBinSSMS.

Petunjuk tentang cara mendokumentasikan beberapa skrip SQL dalam file yang sama, tersedia di

S09_HowToSaveMultipleSQL_scriptsIntoOneFile.docx, terletak di bawah Sumber Daya

Tautan.

7.7 Tulis dan jalankan pernyataan SQL CREATE TABLE untuk membuat tabel CUSTOMER_01.

MENJAWAB:

7.8 Tulis dan jalankan pernyataan SQL CREATE TABLE untuk membuat tabel CUSTOMER_02.

MENJAWAB:
Machine Translated by Google

7.9 Apakah ada perbedaan yang signifikan antara CUSTOMER_01 dan CUSTOMER_02

tabel? Jika demikian, apakah mereka?

MENJAWAB:

Customer_02 memiliki kunci utama pengganti.

7.10 Tulis dan jalankan pernyataan SQL CREATE TABLE untuk membuat tabel CUSTOMER_03.
MENJAWAB:

7.11 Apakah ada perbedaan yang signifikan antara CUSTOMER_02 dan CUSTOMER_03

tabel? Jika demikian, apakah mereka?

MENJAWAB:

Tidak ada perbedaan kecuali nama.

7.12 Tulis dan jalankan pernyataan SQL CREATE TABLE untuk membuat tabel CUSTOMER_04.
MENJAWAB:
Machine Translated by Google

7.13 Apakah ada perbedaan yang signifikan antara CUSTOMER_03 dan CUSTOMER_04

tabel? Jika demikian, apakah mereka? \

MENJAWAB:

Tidak ada perbedaan kecuali nama.

7.14 Tulis dan jalankan pernyataan SQL CREATE TABLE untuk membuat tabel SALE_01. Catatan

bahwa kunci asing adalah EmailAddress, yang mereferensikan CUSTOMER_01. Alamat email.

Dalam database ini, catatan CUSTOMER_01 dan SALE_01 tidak pernah dihapus, jadi akan ada

tidak ada tindakan integritas referensial ON DELETE. Namun, Anda harus memutuskan caranya

mengimplementasikan tindakan integritas referensial ON UPDATE.

MENJAWAB:

7.15 Dalam Pertanyaan Tinjauan 7.14, bagaimana Anda menerapkan integritas referensial ON UPDATE

tindakan? Mengapa?

MENJAWAB:

Kunci utama PELANGGAN_01 bukan kunci pengganti, dan dapat berubah. Setiap perubahan

untuk primary key di CUSTOMER_01 harus dibuat di SALE_01.


Machine Translated by Google

7.16 Apakah ada perbedaan yang signifikan antara tabel CUSTOMER_01 dan SALE_01?

Jika demikian, apakah mereka?

MENJAWAB:

SALE_01 memiliki kunci utama pengganti dan SALE_01 memiliki kunci asing.

7.17 Bisakah kita membuat tabel SALE_01 sebelum membuat tabel CUSTOMER_01? Jika

tidak, mengapa tidak?

MENJAWAB:

Tidak, karena kami membutuhkan kunci utama EmailAddress di CUSTOMER_01 untuk membuat

kunci asing di SALE_01.

7.18 Tulis dan jalankan pernyataan SQL CREATE TABLE untuk membuat tabel SALE_02. Catatan

bahwa kunci asing adalah CustomerID, yang mereferensikan CUSTOMER_04.CustomerID. Di dalam

database ini, catatan PELANGGAN_04 dan SALE_02 tidak pernah dihapus, jadi akan ada

tidak ada tindakan integritas referensial ON DELETE. Namun, Anda harus memutuskan caranya

mengimplementasikan tindakan integritas referensial ON UPDATE.

MENJAWAB:

7.19 Dalam Pertanyaan Tinjauan 7.18, bagaimana Anda menerapkan integritas referensial ON UPDATE

tindakan? Mengapa?

MENJAWAB:
Machine Translated by Google

NO ACTION karena primary key (CustomerID) di CUSTOMER_04 adalah pengganti

kunci dan tidak berubah.

7.20 Apakah ada perbedaan yang signifikan antara tabel SALE_01 dan SALE_02? Jika begitu,

Apakah mereka?

MENJAWAB:

Mereka ditautkan ke tabel yang berbeda. Satu menggunakan CASCADE dan yang lainnya menggunakan NO ACTION.

7.21 Bisakah kita membuat tabel SALE_02 sebelum membuat tabel CUSTOMER_04? Jika

tidak, mengapa tidak?

MENJAWAB:

Tidak, karena kami memerlukan kunci utama CustomerID di CUSTOMER_04 untuk membuat

kunci asing di SALE_02.

7.22 Tulis dan jalankan satu set pernyataan SQL INSERT untuk mengisi tabel CUSTOMER_01.

MENJAWAB:

7.23 Tulis dan jalankan satu set pernyataan SQL INSERT untuk mengisi tabel CUSTOMER_02.

Jangan gunakan perintah INSERT massal.

MENJAWAB:
Machine Translated by Google

7.24 Apakah ada perbedaan yang signifikan antara kumpulan pernyataan SQL INSERT yang digunakan

untuk mengisi tabel CUSTOMER_01 dan CUSTOMER_02? Jika demikian, apakah mereka?

MENJAWAB:

Ya, ada kolom CustomerID di CUSTOMER_02 yang tidak ditentukan di

CUSTOMER_01 karena EmailAddress adalah primary key di CUSTOMER_01.

7.25 Tulis dan jalankan pernyataan SQL INSERT untuk mengisi tabel CUSTOMER_03. Gunakan

perintah INSERT massal dan data dalam tabel CUSTOMER_01 PETUNJUK: Di Oracle

Basis data ini membutuhkan penggunaan kueri bersarang di klausa FROM, yang tidak tercakup di dalamnya

teks. Lihat dokumentasi Oracle Database.

MENJAWAB:
Machine Translated by Google

7.26 Apakah ada perbedaan yang signifikan antara kumpulan pernyataan SQL INSERT yang digunakan

untuk mengisi tabel CUSTOMER_02 dan CUSTOMER_03? Jika demikian, apakah mereka?

Jawab: CUSTOMER_03 tergantung data di CUSTOMER_01. PELANGGAN_02

tergantung pada data di CUSTOMER_02.

7.27 Tulis dan jalankan satu set pernyataan SQL INSERT untuk mengisi baris 1 sampai 3 di dalam

tabel PELANGGAN_04. Perhatikan bahwa pertanyaan ini melibatkan kunci pengganti yang tidak berurutan

nilai-nilai dan didasarkan pada teknik untuk Microsoft SQL Server 2017 di Bab 10A, untuk

Oracle Database di Bab 10B, atau untuk MySQL 5.7 di Bab 10C, tergantung pada

produk DBMS mana yang Anda gunakan.

Menjawab:

SET IDENTITY_INSERT CUSTOMER_04 AKTIF

MASUKKAN KE PELANGGAN_04

(ID Pelanggan, Alamat Email, Nama Belakang, Nama Depan) NILAI (17,

'Robert.Shire@somwhere.com', 'Shire', 'Robert');

MASUKKAN KE PELANGGAN_04

(ID Pelanggan, Alamat Email, Nama Belakang, Nama Depan) NILAI (23,

'Katherine.Goodyear@somwhere.com', 'Goodyear', 'Katherine');

MASUKKAN KE PELANGGAN_04
Machine Translated by Google

(ID Pelanggan, Alamat Email, Nama Belakang, Nama Depan) NILAI (46,

'Chris.Bancrof@somwhere.com', 'Bancrof', 'Chris');

SET IDENTITY_INSERT CUSTOMER_04 MATI

PILIH*DARI PELANGGAN_04

7.28 Apakah ada perbedaan yang signifikan antara kumpulan pernyataan SQL INSERT yang digunakan

untuk mengisi tabel CUSTOMER_02 dan baris 1 sampai 3 dari CUSTOMER_04

meja? Jika demikian, apakah mereka?

Jawaban: CUSTOMER_02 menggunakan kunci pengganti berurutan. CUSTOMER_04 menggunakan non

kunci pengganti berurutan kami menetapkan CustomerID.

7.29 Tulis dan jalankan satu set pernyataan SQL INSERT untuk mengisi baris 4 sampai 6 dalam

tabel PELANGGAN_04. Perhatikan bahwa pertanyaan ini melibatkan nilai kunci pengganti berurutan

dan didasarkan pada teknik untuk Microsoft SQL Server 2017 di Bab 10A, untuk Oracle

Database di Bab 10B, atau untuk MySQL 5.7 di Bab 10C, tergantung yang mana

produk DBMS yang Anda gunakan.

Menjawab:

MASUKKAN KE PELANGGAN_04

(EmailAdres, LastName, FirstName) NILAI ( 'John.Griffith@somwhere.com',

'Griffith', 'John');

MASUKKAN KE PELANGGAN_04

(EmailAdres, LastName, FirstName) NILAI ('Doris.Tierney@somwhere.com',

'Tierney', 'Doris');

MASUKKAN KE PELANGGAN_04

(Alamat email, Nama keluarga, Nama depan) NILAI

('Donna.Anderson@somwhere.com', 'Anderson', 'Donna');

PILIH*DARI PELANGGAN_04

7.30 Apakah ada perbedaan yang signifikan antara kumpulan pernyataan SQL INSERT yang digunakan

untuk mengisi tabel CUSTOMER_02 dan baris 4 sampai 6 dari CUSTOMER_04

meja? Jika demikian, apakah mereka?

Menjawab: Keduanya sama, keduanya menggunakan kunci pengganti sequrmtial.


Machine Translated by Google

7.31 Tulis dan jalankan sekumpulan pernyataan SQL INSERT untuk mengisi tabel SALE_01.

Menjawab:

GUNAKAN CH07_RQ_TABLES

MASUKKAN KE SALE_01

(DateOfSale, EmailAddres, SaleAmount) NILAI ('14-JAN-2015',

'Robert.Shire@Somewhere.com', '234.00');

MASUKKAN KE SALE_01

(DateOfSale, EmailAddres, SaleAmount) NILAI ('14-JAN-2015',

'Chris.Bamcroft@Somewhere.com', '56.50');

MASUKKAN KE SALE_01

(DateOfSale, EmailAddres, SaleAmount) NILAI ('16-JAN-2015',

'Robert.Shire@Somewhere.com', '123.00');

MASUKKAN KE SALE_01

(DateOfSale, EmailAddres, SaleAmount) NILAI ('17-JAN-2015',

'Katherine.Goodyear@Somewhere.com', '34.25');

PILIH*DARI SALE_01

7.32 Apakah ada perbedaan yang signifikan antara kumpulan pernyataan SQL INSERT yang digunakan

untuk mengisi tabel CUSTOMER_01 dan tabel SALE_01? Jika demikian, apakah mereka?

Jawaban: EmailAddress adalah primary key di CUSTOMER_01 dan EmailAddress adalah

kunci asing di SALE_01.

7.33 Bisakah kita mengisi tabel SALE_01 sebelum mengisi tabel CUSTOMER_01

meja? Jika tidak, mengapa tidak?

Jawab: TIDAK, karena kami meminta PK PELANGGAN_04 untuk mengisi SALE_01

7.34 Tulis dan jalankan sekumpulan pernyataan SQL INSERT untuk mengisi tabel SALE_02.

Jawaban: SAYA TIDAK BISA MENDAPATKAN INFORMASI INI UNTUK DIJALANKAN. TIDAK BISA MENEMUKAN

MASALAH.

7.35 Apakah ada perbedaan yang signifikan antara kumpulan pernyataan SQL INSERT yang digunakan

untuk mengisi tabel SALE_01 dan tabel SALE_02? Jika demikian, apakah mereka?

Jawaban: Saya akan mengatakan tidak karena kami perlu membuat CustomerID terlebih dahulu.
Machine Translated by Google

7.36 Bisakah kita mengisi tabel SALE_02 sebelum mengisi tabel CUSTOMER_04

meja? Jika tidak, mengapa tidak?

Jawaban: Saya akan mengatakan tidak karena kami perlu membuat CustomerID terlebih dahulu.

7.37 Tulis dan jalankan pernyataan SQL INSERT untuk menyisipkan record berikut ke dalam

Tabel SALE_02: Apa hasil dari menjalankan pernyataan ini? Mengapa hasil ini terjadi?

Jawaban: SALE_02 tidak akan diisi dengan benar.

7.38 Tulis pernyataan SQL untuk membuat tampilan bernama Customer01DataView berdasarkan

tabel PELANGGAN_01. Dalam tampilan, sertakan nilai EmailAddress, LastName sebagai

Customer LastName, dan FirstName sebagai CustomerFirstName. Jalankan pernyataan ini untuk membuat

tampilan, lalu uji tampilan dengan menulis dan menjalankan SQL SELECT yang sesuai

penyataan.

Menjawab:

BUAT TAMPILAN Customer01DataView AS

PILIH LastName SEBAGAI CustomerLastName, FirstName SEBAGAI CustomerFirstName

DARI PELANGGAN_01;

7.39 Tulis pernyataan SQL untuk membuat tampilan bernama Customer04DataView berdasarkan

tabel PELANGGAN_04. Dalam tampilan, sertakan nilai ID Pelanggan, Nama Belakang sebagai

CustomerLastName, FirstName sebagai CustomerFirstName, dan EmailAddress dalam urutan tersebut.

Jalankan pernyataan ini untuk membuat tampilan, lalu uji tampilan dengan menulis dan menjalankan

pernyataan SQL SELECT yang sesuai.

Menjawab:

BUAT TAMPILAN Customer04DataView AS

PILIH LastName SEBAGAI CustomerLastName, FirstName SEBAGAI CustomerFirstName

DARI PELANGGAN_04;

7.40 Tulis pernyataan SQL untuk membuat tampilan bernama CustomerSalesView berdasarkan

tabel CUSTOMER_04 dan SALE_02. Dalam tampilan ini, sertakan nilai ID Pelanggan,

LastName sebagai CustomerLastName, FirstName sebagai CustomerFirstName, EmailAddress,

SaleID, DateOfSale, dan SaleAmount dalam urutan itu. Jalankan pernyataan ini untuk membuat tampilan,

lalu uji tampilan dengan menulis dan menjalankan pernyataan SQL SELECT yang sesuai.
Machine Translated by Google

Menjawab:

BUAT TAMPILAN Customer04DataView AS dan Sale02DataView

PILIH LastName SEBAGAI CustomerLastName, FirstName SEBAGAI CustomerFirstName

DARI PELANGGAN_04 dan SALE_02;

7.41 Tulis pernyataan CREATE TABLE untuk tabel DEPARTMENT.

Menjawab:

BUAT DEPARTEMEN TABEL (

Nama departemen Char(35) BUKAN NULL,

Kode Anggaran Char(30) BUKAN NULL,

Nomor kantor Char(15) BUKAN NULL,

Karakter Telepon Char(12) BUKAN NULL,

CONSTRAINT DEPARTMENT_PK PRIMARY KEY(NamaDepartemen)

);

7.42 Tulis pernyataan CREATE TABLE untuk tabel EMPLOYEE. Email diperlukan dan

kunci alternatif, dan nilai default Departemen adalah Sumber Daya Manusia. Riam

pembaruan tetapi bukan penghapusan dari DEPARTEMEN ke KARYAWAN.

Menjawab:

BUAT KARYAWAN TABEL (

EmployeeNumber Int BUKAN NULL AUTO_INCREMENT,

Nama depan Char(25) BUKAN NULL,

Nama keluarga Char(25) BUKAN NULL,

Departemen Char(35) NOT NULL DEFAULT 'Sumber Daya Manusia',

Telepon Karakter(12) BATAL,

Surel VarChar(100) BUKAN NULL UNIK,

CONSTRAINT EMPLOYEE_PK PRIMARY KEY(EmployeeNumber),

CONSTRAINT EMP_DEPART_FK REFERENSI KUNCI ASING (Departemen)

DEPARTMENT(DepartmentName) ON UPDATE CASCADE

);

ALTER TABEL KARYAWAN AUTO_INCREMENT=1;


Machine Translated by Google

7.43 Tulis pernyataan CREATE TABLE untuk tabel PROJECT. Nilai default untuk Max

Jam adalah 100. Pembaruan kaskade tetapi bukan penghapusan dari DEPARTEMEN ke PROYEK

Menjawab:

BUAT PROYEK TABEL (

EmployeeNumber Int BUKAN NULL AUTO_INCREMENT,

Nama Char(50) BUKAN NULL,

Departemen Char(35) BUKAN NULL,

MaxHouse Numerik(8,2) BUKAN NULLDEFAULT 100,

Mulai tanggal TanggalWaktu NULL,

TanggalAkhir TanggalWaktu NULL,

CONSTRAINT PROJECT_PK PRIMARY KEY(ProjectID), CONSTRAINT

PROJ_DEPART_FK LUAR NEGERI REFERENSI KUNCI (Departemen).

DEPARTMENT(DepartmentName) ON UPDATE CASCADE

);

ALTER TABLE PROJECT AUTO_INCREMENT=1000;

7.44 Tulis pernyataan CREATE TABLE untuk tabel ASSIGNMENT. Kaskade saja

penghapusan dari PROYEK menjadi PENUGASAN; jangan mengalirkan penghapusan atau pembaruan

dari KARYAWAN ke TUGAS.

Menjawab:

BUAT TUGAS TABEL (

ID Proyek Int TIDAK NULL,

EmployeeNumber Int TIDAK NULL,

JamBekerja Numerik(6,2) NULL,

Mulai tanggal TanggalWaktu NULL,

TanggalAkhir TanggalWaktu NULL,

CONSTRAINT ASSIGNMENT_PK PRIMARY KEY (ProjectID,

Nomor pekerja),

CONSTRAINT ASSIGN_PROJ_FK REFERENSI KUNCI ASING (ProjectID)

PROYEK (ProjectID)

PADA PEMBARUAN CASCADE

PADA HAPUS CASCADE,


Machine Translated by Google

CONSTRAINT ASSIGN_EMP_FK FOREIGN KEY (EmployeeNumber)

REFERENSI KARYAWAN (EmployeeNumber)

PADA PEMBARUAN CASCADE

PADA HAPUS CASCADE,

);

7.45 Ubah jawaban Anda ke Pertanyaan Tinjauan 7.43 untuk memasukkan batasan bahwa StartDate menjadi

sebelum TanggalAkhir.

Menjawab:

ALTER TABEL KARYAWAN

TAMBAHKAN CONSTRAINT DateValuesCheck CHECK (StartDate < EndDate);

7.46 Tulis pernyataan SQL alternatif yang mengubah jawaban Anda untuk Pertanyaan Tinjauan 7.44 menjadi

jadikan hubungan antara EMPLOYEE dan ASSIGNMENT sebagai hubungan 1:1.

Menjawab:

ALTER TABEL KARYAWAN

TAMBAHKAN CONSTRAINT ASSIGNENT_AK1 UNIQUE(EmployeeNumber);

7.47 Tulis pernyataan ALTER untuk menambahkan kolom Kode Area ke KARYAWAN. Asumsikan bahwa

Kode Area tidak diperlukan.

Menjawab:

ALTER TABEL KARYAWAN

MENAMBAHKAN Kode area Karakter(3) BATAL;

7.48 Tulis pernyataan ALTER untuk menghapus kolom Kode Area dari EMPLOYEE.

Menjawab:

ALTER TABEL KARYAWAN

DROP COLUMN Kode Area;

7.49 Tulis pernyataan ALTER untuk menjadikan OfficePhone sebagai kunci alternatif di EMPLOYEE.

Menjawab:

ALTER TABEL KARYAWAN

TAMBAHKAN BATASAN EMPLOYEE_AK2 UNIQUE(Telepon);


Machine Translated by Google

7.50 Tulis pernyataan ALTER untuk menghilangkan batasan bahwa OfficePhone adalah kunci alternatif

KARYAWAN.

Menjawab:

ALTER TABEL KARYAWAN

DROP CONSTRAINT OfficePhone;

7.51 Tulis pernyataan INSERT untuk menambahkan data yang ditunjukkan pada Gambar 1-29 ke DEPARTMENT

meja. Jalankan pernyataan ini untuk mengisi tabel DEPARTMENT. (Petunjuk: Tulis dan uji

skrip SQL, lalu jalankan skrip. Simpan skrip sebagai WP-Insert DEPARTMENT

Data.sql untuk penggunaan di masa mendatang.)

Jawaban :

MASUKKAN KE NILAI DEPARTEMEN('Administrasi', 'BC-100-10', 'BLDG01-

300', '360-285-8100');

MASUKKAN KE NILAI DEPARTEMEN('Legal', 'BC-200-10', 'BLDG01-200', '360-

285-8200');

MASUKKAN KE NILAI DEPARTEMEN('Akuntansi', 'BC-300-10', 'BLDG01-100',

'360-285-8300');

MASUKKAN KE DEPARTEMEN NILAI('Keuangan', 'BC-400-10', 'BLDG01-140',

'360-285-8400');

MASUKKAN KE DEPARTEMEN NILAI('Sumber Daya Manusia', 'BC-500-10',

'BLDG01-180', '360-285-8500');

MASUKKAN KE NILAI DEPARTEMEN('Produksi', 'BC-600-10', 'BLDG02-100',

'360-287-8600');

MASUKKAN KE NILAI DEPARTEMEN('Pemasaran', 'BC-700-10', 'BLDG02-200',

'360-287-8700');

MASUKKAN KE NILAI DEPARTEMEN('InfoSystems', 'BC-800-10', 'BLDG02-270',

'360-287-8800');

7.52 Tulis pernyataan INSERT untuk menambahkan data yang ditunjukkan pada Gambar 1-31 ke tabel EMPLOYEE.

Jalankan pernyataan ini untuk mengisi tabel EMPLOYEE. (Petunjuk: Tulis dan uji SQL

skrip, lalu jalankan skrip. Simpan skrip sebagai WP-Insert-EMPLOYEE-Data. sql untuk

penggunaan masa depan.)

Jawaban :
Machine Translated by Google

MASUKKAN KE NILAI KARYAWAN('Mary', 'Jacob', 'Administrasi', '360-285-

8110', 'Mary.Jacobs@WPC.com');

MASUKKAN KE NILAI KARYAWAN('Rosalie', 'Jackson', 'Administrasi', '360-285-

8120', 'Rosalie.Jackson@WPC.com');

MASUKKAN KE NILAI KARYAWAN('Richard', 'Bandalone', 'Legal', '360-285-8210',

'Richard.Bandalone@WPC.com');

MASUKKAN KE NILAI KARYAWAN('Tom', 'Caruthers', 'Accounting', '360-285-8310',

'Tom.Caruthers@WPC.com');

MASUKKAN KE NILAI KARYAWAN('Heather', 'Jones', 'Akuntansi', '360-285-8320',

'Heather.Jones@WPC.com');

MASUKKAN KE NILAI KARYAWAN('Mary', 'Abernathy', 'Finance', '360-285-8410',

'Mary.Abernathy@WPC.com');

MASUKKAN KE NILAI KARYAWAN('George', 'Smith', 'Sumber Daya Manusia', '360-285-

8510', 'George.Smith@WPC.com');

MASUKKAN KE NILAI KARYAWAN('Tom', 'Jackson', 'Produksi', '360-287-8610',

'Tom.Jackson@WPC.com');

MASUKKAN KE NILAI KARYAWAN('George', 'Jones', 'Produksi', '360-287-8620',

'George.Jones@WPC.com');

MASUKKAN KE NILAI KARYAWAN('Ken', 'Numoto', 'Marketing', '360-287-8710',

'Ken.Mumoto@WPC.com');

MASUKKAN KE KARYAWAN (Nama Depan, Nama Belakang, Departemen, Email)

VALUES('James', 'Nestor', 'InfoSystems', 'James.Nestor@WPC.com');

MASUKKAN KE NILAI KARYAWAN('Rick', 'Brown', 'InfoSystems', '360-287-8820',

'Rick.Brown@WPC.com');

7.53 Tulis pernyataan INSERT untuk menambahkan data yang ditunjukkan pada Gambar 2-44 ke tabel PROJECT.

Jalankan pernyataan ini untuk mengisi tabel PROJECT. (Petunjuk: Tulis dan uji skrip SQL,

dan kemudian jalankan skrip. Simpan skrip sebagai WP-Insert-PROJECT-Data.sql untuk penggunaan di masa mendatang.)

Jawaban :

MASUKKAN KE NILAI PROYEK('2015 Q3 Product Plan', 'Marketing', 135.00, '10-

MEI-15', '15-JUN-15');

MASUKKAN KE NILAI PROYEK('2015 Q3 Portfolio Analysis', 'Finance', 120.00,

'05-JUL-15', '25-JUL-15');
Machine Translated by Google

MASUKKAN KE NILAI PROYEK('Persiapan Pajak Q3 2015', 'Akuntansi', 145.00,

'10-AUG-11', '15-OCT-11');

MASUKKAN KE NILAI PROYEK('2015 Q4 Product Plan', 'Marketing', 150.00, '10-

AUG-15', '15-SEP-15');

MASUKKAN KE PROYEK (Nama, Departemen, MaxHours, StartDate)

VALUES('2015 Q4 Portfolio Analysis', 'Finance', 140.00, '05-OCT-15');

7.54 Tulis pernyataan INSERT untuk menambahkan data yang ditunjukkan pada Gambar 2-46 ke ASSIGNMENT

meja. Jalankan pernyataan ini untuk mengisi tabel ASSIGNMENT. (Petunjuk: Tulis dan uji

skrip SQL, lalu jalankan skrip. Simpan skrip sebagai WP-Insert-ASSIGNMENT

Data.sql untuk penggunaan di masa mendatang.)

Jawaban :

MASUKKAN KE NILAI TUGAS (1000, 1, 30.0);

MASUKKAN KE NILAI TUGAS (1000, 8, 75.0);

MASUKKAN KE NILAI TUGAS (1000, 10, 55.0);

MASUKKAN KE NILAI TUGAS (1100, 4, 40.0);

MASUKKAN KE NILAI TUGAS (1100, 6, 45.0);

MASUKKAN KE NILAI TUGAS (1200, 1, 25.0);

MASUKKAN KE NILAI TUGAS (1200, 2, 20.0);

MASUKKAN KE NILAI TUGAS (1200, 4, 45.0);

MASUKKAN KE NILAI TUGAS (1200, 5, 40.0);

MASUKKAN KE NILAI TUGAS (1300, 1, 35.0);

MASUKKAN KE NILAI TUGAS (1300, 8, 80.0);

MASUKKAN KE NILAI TUGAS (1300, 10, 50.0);

MASUKKAN KE NILAI TUGAS (1400, 4, 15.0);

MASUKKAN KE NILAI TUGAS (1400, 5, 10.0);

MASUKKAN KE NILAI TUGAS (1400, 6, 27.5);

7.55 Mengapa tabel diisi dalam urutan yang ditunjukkan pada Pertanyaan Tinjauan 7.51 sampai
7,54?

Jawaban :

PERBARUI KARYAWAN

ATUR Telepon = '360-287-8810'

DIMANA NomorPegawai = 11;


Machine Translated by Google

7.56 Asumsikan Anda memiliki tabel bernama NEW_EMPLOYEE yang memiliki kolom

Department, Email, FirstName, dan LastName, dalam urutan itu. Tulis pernyataan INSERT

untuk menambahkan semua baris dari tabel NEW_EMPLOYEE ke EMPLOYEE. Jangan mencoba

untuk menjalankan pernyataan ini!

Jawaban :

PERBARUI KARYAWAN

ATUR Telepon = '360-287-8810'

DIMANA NomorPegawai = 11;

7.57 Tulis pernyataan PEMBARUAN untuk mengubah nomor telepon karyawan

KaryawanNomor 11 ke 360-287-8810. Jalankan pernyataan SQL ini.

Jawaban :

PERBARUI KARYAWAN

SET Departemen = 'Keuangan'

DIMANA NomorPegawai = 5;

7.58 Tulis pernyataan PEMBARUAN untuk mengubah departemen karyawan

Nomor Pegawai 5 untuk Keuangan. Jalankan pernyataan SQL ini.


Jawaban :

PERBARUI KARYAWAN

SET Departemen = 'Keuangan'

DIMANA NomorPegawai = 5;

7.59 Tulis pernyataan PEMBARUAN untuk mengubah nomor telepon karyawan

KaryawanNomor 5 hingga 360-287-8420. Jalankan pernyataan SQL ini.


Jawaban :

PERBARUI KARYAWAN

ATUR Telepon = '360-287-8420'

DIMANA NomorPegawai = 5;

7.60 Gabungkan jawaban Anda untuk Pertanyaan Tinjauan 7.58 dan 7.59 menjadi satu pernyataan SQL. Berlari
pernyataan ini.

Jawaban :

PERBARUI KARYAWAN
Machine Translated by Google

SET Departemen = 'Keuangan', Telepon = '360-287-8420'

DIMANA NomorPegawai = 5;

7.61 Tulis pernyataan UPDATE untuk menyetel HoursWorked ke 60 untuk setiap baris

ASSIGNMENT dengan nilai 10 untuk EmployeeNumber. Jalankan pernyataan ini.

Jawaban :

TUGAS PEMBARUAN

SET Jam Bekerja = 60

DIMANA NomorPegawai = 10;

7.62 Asumsikan bahwa Anda memiliki tabel bernama NEW_EMAIL, yang memiliki nilai baru untuk Email

beberapa karyawan. NEW_EMAIL memiliki dua kolom: EmployeeNumber dan NewEmail.

Tulis pernyataan MERGE untuk mengubah nilai Email di EMPLOYEE menjadi yang ada di

tabel NEW_EMAIL. Jangan jalankan pernyataan ini.

7.63 Tulis satu pernyataan DELETE yang akan menghapus semua data untuk proyek '2018 Q3 Production

Plan' dan semua barisnya di ASSIGNMENT. Jangan jalankan pernyataan ini.

Jawaban :

HAPUS DARI PROYEK

WHERE ProjectName = 'Rencana Produk Q3 2015';

7.64 Tulis pernyataan DELETE yang akan menghapus baris untuk karyawan dengan nama belakang

'Smith'. Jangan jalankan pernyataan ini. Apa yang terjadi jika salah satu dari karyawan ini masuk

PENUGASAN?

Jawaban :

HAPUS DARI KARYAWAN

WHERE LastName = 'Smith';

7.65 Apa itu tampilan SQL? Tujuan apa yang disajikan oleh tampilan?

Jawaban :

Tampilan melayani beberapa tujuan dalam SQL:

1. Sederhanakan kueri kompleks: Tampilan dapat digunakan untuk merangkum kueri kompleks yang

bergabung dengan beberapa tabel atau melakukan operasi kompleks lainnya. Dengan membuat tampilan, kita

dapat menyederhanakan kueri dan membuatnya lebih mudah untuk dipahami dan dipelihara.
Machine Translated by Google

2. Sediakan lapisan keamanan: Tampilan dapat digunakan untuk menyediakan lapisan tambahan

keamanan dengan membatasi kolom atau baris yang dapat dilihat oleh pengguna atau peran tertentu.

Dengan membuat tampilan yang hanya menyertakan data yang diperlukan, kami dapat mencegah pengguna

dari mengakses informasi sensitif.

3. Sembunyikan kompleksitas: Tampilan dapat digunakan untuk menyembunyikan kompleksitas yang mendasarinya

skema basis data dari pengguna. Dengan mendefinisikan alias untuk tabel atau kolom, kita bisa

membuat tampilan lebih ramah pengguna dan lebih mudah dipahami.

4. Tingkatkan kinerja: Tampilan dapat digunakan untuk meningkatkan kinerja dengan pra

menghitung kueri atau agregasi yang kompleks. Dengan membuat tampilan yang menghitung

hasil kueri yang kompleks, kita dapat menghindari kebutuhan untuk menjalankan kueri itu setiap saat

diperlukan, yang dapat meningkatkan kinerja.

7.66 Apa batasan pernyataan SELECT yang digunakan dalam tampilan SQL?

Jawaban :

1. Dalam SQL, ada beberapa batasan pada pernyataan SELECT yang dapat digunakan dalam tampilan:

2. Tidak ada klausa ORDER BY: Tampilan tidak dapat menyertakan klausa ORDER BY. Jika perlu

mengurutkan data dalam tampilan, Anda dapat menggunakan klausa ORDER BY dalam pernyataan SELECT itu

menanyakan pandangan.

3. Tidak ada klausa LIMIT: Tampilan tidak dapat menyertakan klausa LIMIT. Jika Anda perlu untuk membatasi

jumlah baris yang dikembalikan oleh tampilan, Anda dapat menggunakan klausa LIMIT dalam pernyataan SELECT

yang menanyakan pandangan.

4. Tidak ada fungsi agregat dengan GROUP BY: Jika tampilan menyertakan fungsi agregat seperti itu

sebagai SUM atau COUNT, itu tidak dapat menyertakan klausa GROUP BY. Sebagai gantinya, Anda dapat menggunakan a

Pernyataan SELECT yang menanyakan tampilan dan menyertakan klausa GROUP BY.

5. Tidak ada subkueri dalam pernyataan SELECT: Tampilan tidak dapat menyertakan subkueri dalam

pernyataan PILIH. Jika Anda perlu menyertakan subkueri dalam tampilan, Anda dapat membuat

pisahkan tampilan untuk subkueri, lalu sertakan tampilan tersebut di tampilan utama.
Machine Translated by Google

6. Tidak ada tampilan referensi sendiri: Tampilan tidak dapat mereferensikan dirinya sendiri atau tampilan lain yang mereferensikan

dia. Ini dikenal sebagai "referensi melingkar" dan dapat menyebabkan kesalahan dalam database.

7.67 Tulis pernyataan SQL untuk membuat tampilan bernama EmployeePhoneView yang menunjukkan

nilai EMPLOYEE.LastName sebagai EmployeeLastName, EMPLOYEE.FirstName sebagai

EmployeeFirstName, dan EMPLOYEE.OfficePhone sebagai EmployeePhone. Jalankan ini

pernyataan untuk membuat tampilan, lalu menguji tampilan dengan menulis dan menjalankan yang sesuai

Pernyataan SQL SELECT.

Jawaban :

Buat Tampilan

BUAT TAMPILAN EmployeePhoneView AS

PILIH Nama Belakang SEBAGAI NamaLastKaryawan,

FirstName SEBAGAI EmployeeFirstName,

Phone AS EmployeePhone

Tampilan Kueri

DARI KARYAWAN;

PILIH *

DARI EmployeePhoneView

ORDER OLEH EmployeeLastName

7.68 Tulis pernyataan SQL untuk membuat tampilan bernama FinanceEmployeePhoneView yang ditampilkan

nilai EMPLOYEE.LastName sebagai EmployeeLastName, EMPLOYEE. Nama depan

sebagai EmployeeFirstName, dan EMPLOYEE.OfficePhone sebagai EmployeePhone for

pegawai yang bekerja di bagian keuangan. Jalankan pernyataan ini untuk membuat tampilan,

lalu uji tampilan dengan menulis dan menjalankan pernyataan SQL SELECT yang sesuai.

Jawaban :

BUAT TAMPILAN FinanceEmployeePhoneView AS

PILIH Nama Belakang AS EmployeeLastName, FirstName AS EmployeeFirstName,

Phone AS EmployeePhone

DARI KARYAWAN

DIMANA Departemen = 'Keuangan';


Machine Translated by Google

PILIH *

DARI FinanceEmployeePhoneView

ORDER OLEH EmployeeLastName;

7.69 Tulis pernyataan SQL untuk membuat tampilan bernama CombinedNameEmployeePhone View

yang menampilkan nilai EMPLOYEE.LastName, EMPLOYEE.FirstName, dan

KARYAWAN.OfficePhone sebagai
Telepon Karyawan Tetapi itu menggabungkan

EMPLOYEE.LastName dan EMPLOYEE.FirstName menjadi satu kolom bernama

EmployeeName yang menampilkan nama depan nama karyawan terlebih dahulu. Jalankan pernyataan ini ke

buat tampilan, lalu uji tampilan dengan menulis dan menjalankan SQL yang sesuai

pernyataan PILIH.

Jawaban :

BUAT TAMPILAN GabunganNamaKaryawanTeleponTampilan AS

SELECT CONCAT(RTRIM(FirstName), ' ', RTRIM(LastName)) AS EmployeeName,

Phone AS EmployeePhone

DARI KARYAWAN;

PILIH *

DARI CombinedNameEmployeePhoneView

ORDER BY EmployeeName;

7.70 Tulis pernyataan SQL untuk membuat tampilan bernama EmployeeProjectAssignmentView itu

menampilkan nilai EMPLOYEE.LastName sebagai EmployeeLastName, EMPLOYEE.

FirstName sebagai EmployeeFirstName, EMPLOYEE.OfficePhone sebagai EmployeePhone, dan

PROJECT.ProjectName sebagai NamaProyek. Jalankan pernyataan ini untuk membuat tampilan, lalu

uji tampilan dengan menulis dan menjalankan pernyataan SQL SELECT yang sesuai.

Jawaban :

BUAT TAMPILAN EmployeeProjectAssignmentView AS

PILIH Nama Belakang AS EmployeeLastName, FirstName AS EmployeeFirstName,

Phone AS EmployeePhone, P.Name AS ProjectName

DARI KARYAWAN SEBAGAI E, TUGAS SEBAGAI A, PROYEK SEBAGAI P

DIMANA E.NomorKaryawan = A.NomorKaryawan

AND A.ProjectID = P.ProjectID;


Machine Translated by Google

PILIH *

DARI EmployeeProjectAssignmentView

ORDER OLEH EmployeeLastName, EmployeeFirstName;

7.71 Tulis pernyataan SQL untuk membuat tampilan bernama Department Employee Project

Tampilan Penugasan yang menampilkan nilai EMPLOYEE.LastName sebagai

EmployeeLastName, EMPLOYEE. FirstName sebagai EmployeeFirstName, EMPLOYEE.

Telepon Kantor sebagai


Telepon Karyawan, DEPARTEMEN.NamaDepartemen,

DEPARTMENT.DepartmentPhone sebagai DepartmentPhone, dan PROJECT.ProjectName

sebagai NamaProyek. Jalankan pernyataan ini untuk membuat tampilan, lalu uji tampilan dengan menulis

dan menjalankan pernyataan SQL SELECT yang sesuai.

Jawaban :

BUAT VIEW DepartmentEmployeeProjectAssignmentView AS

PILIH EMPLOYEE.LastName SEBAGAI EmployeeLastName, EMPLOYEE.FirstName

SEBAGAI EmployeeFirstName, EMPLOYEE.OfficePhone SEBAGAI EmployeePhone,

DEPARTMENT.DepartmentName, DEPARTMENT.DepartmentPhone,

PROYEK.NamaProyek

DARI KARYAWAN

BERGABUNG DENGAN DEPARTEMEN PADA EMPLOYEE.DepartmentID =

DEPARTMENT.DepartmentID

GABUNG PROYEK DI PROJECT.DepartmentID = DEPARTMENT.DepartmentID;

7.72 Tulis pernyataan SQL untuk membuat tampilan bernama ProjectHoursToDateView yang ditampilkan

nilai PROJECT.ProjectID, PROJECT.ProjectName, PROJECT.MaxHours sebagai

ProjectMaxHours, dan jumlah ASSIGNMENT.HoursWorked as

ProjectHoursWorkedToDate. Jalankan pernyataan ini untuk membuat tampilan, lalu uji tampilan

dengan menulis dan menjalankan pernyataan SQL SELECT yang sesuai.

Jawaban :

BUAT TAMPILAN ProjectHoursToDateView AS

PILIH PROJECT.ProjectID, PROJECT.ProjectName, PROJECT.MaxHours sebagai

ProjectMaxHours, SUM(ASSIGNMENT.HoursWorked) as

ProjectHoursWorkedToDate

DARI PROYEK
Machine Translated by Google

LEFT JOIN ASSIGNMENT PADA PROJECT.ProjectID = ASSIGNMENT.ProjectID

GROUP OLEH PROJECT.ProjectID, PROJECT.ProjectName, PROJECT.MaxHours;

7.73 Jelaskan bagaimana tampilan digunakan untuk menyediakan alias untuk tabel. Mengapa ini berguna?

view digunakan untuk menyediakan alias untuk tabel dengan membuat tabel virtual berdasarkan data

dari satu atau lebih tabel fisik. Tampilan dapat dianggap sebagai "tabel virtual" itu

tidak benar-benar menyimpan data apa pun, tetapi menyediakan cara mudah untuk meminta data dari

tabel yang mendasarinya.

Saat kami membuat tampilan, kami dapat menentukan kolom mana dari tabel yang mendasarinya

disertakan dalam tampilan, dan kita juga dapat menentukan alias untuk tabel dan kolom, yang mana

dapat membuat kueri yang dihasilkan lebih mudah dibaca dan dipahami.

Ini berguna karena memungkinkan kita untuk menyederhanakan kueri kompleks dengan mengabstraksikan

struktur tabel yang mendasari dan menyediakan antarmuka yang lebih ramah pengguna untuk kueri

data. Dengan mendefinisikan alias untuk tabel dan kolom, kita dapat membuat lebih banyak kueri SQL

dapat dibaca dan dipelihara, yang dapat menghemat waktu dan mengurangi kesalahan dalam jangka panjang.

Selain itu, tampilan dapat digunakan untuk membatasi akses ke data sensitif dengan menyembunyikan data tertentu

kolom atau baris dari pengguna atau grup tertentu.

7.74 Jelaskan bagaimana tampilan dapat digunakan untuk meningkatkan keamanan data.

Jawaban :

1. Menyembunyikan informasi sensitif: Dengan membuat tampilan yang hanya menyertakan yang diperlukan

kolom dan baris data, kami dapat mencegah pengguna yang tidak sah mengakses sensitif

informasi. Misalnya, kita dapat membuat tampilan yang mengecualikan informasi gaji untuk

karyawan, lalu memberikan akses ke tampilan tersebut kepada pengguna yang tidak perlu melihat data tersebut.

2. Membatasi akses: Tampilan dapat digunakan untuk membatasi akses ke data berdasarkan peran pengguna atau

izin. Misalnya, kami dapat membuat tampilan yang hanya menyertakan data untuk tertentu

departemen atau wilayah, lalu memberikan akses ke tampilan tersebut kepada pengguna yang diizinkan

mengakses departemen atau wilayah tersebut.

3. Menerapkan keamanan tingkat baris: Tampilan dapat digunakan untuk menerapkan keamanan tingkat baris

dengan memfilter data berdasarkan kriteria khusus pengguna. Misalnya, kita bisa membuat tampilan
Machine Translated by Google

yang hanya menampilkan data untuk pengguna yang saat ini masuk, lalu memberikan akses ke tampilan tersebut

kepada pengguna. Ini akan mencegah pengguna lain melihat data milik itu

pengguna.

4. Mengurangi resiko serangan injeksi SQL: Dengan menggunakan tampilan, kita dapat memastikan bahwa pengguna

hanya memiliki akses ke data yang diizinkan untuk diakses, yang dapat mengurangi

risiko serangan injeksi SQL. Ini karena tampilan dapat digunakan untuk membatasi jenis dan

jumlah data yang dapat diakses, yang dapat membatasi potensi kerusakan yang dapat terjadi

disebabkan oleh serangan.

7.75 Jelaskan bagaimana tampilan dapat digunakan untuk menyediakan fungsionalitas pemicu tambahan.

Jawaban :

Tampilan dapat digunakan untuk menyediakan fungsionalitas pemicu tambahan dengan mengizinkan kami untuk menentukan

memicu pada tampilan itu sendiri, bukan pada tabel yang mendasarinya. Ini dapat berguna di

situasi di mana kita perlu menegakkan aturan bisnis yang kompleks atau logika validasi itu

tidak dapat dengan mudah diekspresikan menggunakan pemicu sederhana pada tabel yang mendasarinya.

Misalnya, kita memiliki tampilan yang menggabungkan data dari beberapa tabel, dan kita

ingin menerapkan batasan yang mencegah rekaman apa pun dengan saldo negatif

dimasukkan atau diperbarui. Kita dapat menentukan pemicu "alih-alih" pada tampilan yang berfungsi

pemeriksaan validasi yang diperlukan dan memperbarui tabel yang mendasarinya jika datanya valid. Ini

pemicu akan dieksekusi setiap kali pengguna mencoba memasukkan atau memperbarui data dalam tampilan,

dan akan mencegah data yang tidak valid ditulis ke tabel yang mendasarinya.

Demikian pula, kami dapat menggunakan pemicu pada tampilan untuk menerapkan jenis bisnis kompleks lainnya

aturan, seperti validasi data, audit, atau transformasi data. Dengan mendefinisikan pemicu aktif

tampilan, kita dapat merangkum logika bisnis dan aturan validasi dalam tampilan itu sendiri,

yang dapat menyederhanakan desain tabel yang mendasarinya dan mengurangi kompleksitas

logika aplikasi.

7.76 Berikan contoh tampilan yang dapat diperbarui dengan jelas.

Jawab : contoh view yang bisa diupdate dengan jelas, misalnya di sql view

karena data dalam SQL VIEW asalkan Anda memiliki hak istimewa yang tepat untuk

tabel SQL yang mendasarinya.


Machine Translated by Google

7.77 Berikan contoh tampilan yang jelas tidak dapat diperbarui.

Jawab : Tampilan yang melibatkan fungsi agregasi seperti SUM atau AVG

contoh tampilan yang tidak dapat diperbarui. Sebagai contoh, perhatikan tampilan berikut

definisi:

BUAT LIHAT Ringkasan Penjualan AS

PILIH ProductID, SUM(Quantity) SEBAGAI TotalQuantity

DARI Penjualan

KELOMPOK BERDASARKAN ProductID;

Tampilan ini menghitung jumlah total setiap produk yang terjual dengan menjumlahkan jumlah

nilai dalam tabel Penjualan. Karena ini melibatkan fungsi agregasi, memperbarui file

Tampilan SalesSummary akan membutuhkan pembaruan tabel Penjualan yang mendasarinya, padahal tidak

layak atau diinginkan. Oleh karena itu, tampilan SalesSummary tidak dapat diperbarui.

7.78 Rangkum gagasan umum untuk menentukan apakah suatu tampilan dapat diperbarui.

Jawab :

Gagasan umum untuk menentukan apakah suatu tampilan dapat diperbarui adalah untuk memeriksa apakah tampilan tersebut

memenuhi kriteria tertentu yang ditentukan oleh sistem manajemen basis data. Kriteria ini

biasanya meliputi:

1. Tampilan harus berdasarkan satu tabel.

2. Tampilan tidak boleh berisi fungsi agregat apa pun.

3. Tampilan tidak boleh berisi subkueri apa pun.

4. Tampilan tidak boleh menggunakan kata kunci DISTINCT.

5. Tampilan tidak boleh menggunakan klausa GROUP BY atau HAVING.

6. Tampilan tidak boleh menggunakan operator UNION atau UNION ALL.

7. Tampilan tidak boleh berisi kolom atau ekspresi yang dihitung.

Jika tampilan memenuhi semua kriteria ini, tampilan dianggap dapat diperbarui dan dapat digunakan

memodifikasi data yang mendasarinya dalam tabel. Namun, jika tampilan gagal memenuhi semua ini

kriteria, itu dianggap tidak dapat diperbarui dan berupaya mengubah data melalui tampilan

akan mengakibatkan kesalahan.

7.79 Jika tampilan tidak memiliki item yang diperlukan, tindakan apa pada tampilan yang pasti tidak diperbolehkan?
Machine Translated by Google

Jawab : Jika suatu tampilan tidak memiliki item yang diperlukan, maka tindakan apa pun yang bergantung pada item tersebut

barang yang hilang tidak boleh dibiarkan. Misalnya, jika tampilan tidak memiliki bidang wajib

dalam formulir, maka pengiriman formulir tidak boleh sampai bidang yang wajib diisi

diisi. Demikian pula, jika tampilan tidak memiliki data yang diperlukan dalam kueri basis data, maka

melakukan tindakan apa pun yang bergantung pada data itu tidak boleh diizinkan sampai diperlukan

data tersedia.

Secara umum, setiap tindakan yang akan mengakibatkan kesalahan atau menghasilkan hasil yang salah karena

item wajib yang hilang tidak boleh ditampilkan. Penting untuk memastikan itu

semua item yang diperlukan ada sebelum mengizinkan tindakan apa pun yang bergantung padanya.

7.80 Jelaskan ketidakcocokan paradigma antara SQL dan bahasa pemrograman.

Jawab :

SQL (Structured Query Language) dan bahasa pemrograman dirancang untuk

tujuan yang berbeda dan memiliki paradigma yang berbeda, yang dapat menyebabkan suatu paradigma

ketidakcocokan.

SQL adalah bahasa deklaratif yang digunakan untuk mengambil dan memanipulasi data dari a

basis data relasional. Ini dirancang untuk digunakan dengan set data dan dioptimalkan untuk

kueri yang beroperasi pada kumpulan data yang besar. Permintaan SQL biasanya melibatkan pemilihan,

menggabungkan, memfilter, dan menggabungkan data, dan mesin SQL mencari cara untuk mengeksekusi

kueri secara efisien.

Di sisi lain, bahasa pemrograman seperti Java, Python, dan C++ dirancang

untuk membuat aplikasi perangkat lunak dan melakukan berbagai tugas di luar data

manipulasi. Mereka prosedural atau berorientasi objek dan beroperasi pada data individual

elemen, bukan kumpulan data.

Salah satu perbedaan utama antara SQL dan bahasa pemrograman adalah bahwa SQL adalah

berbasis set, sedangkan bahasa pemrograman biasanya imperatif atau berorientasi objek. Di dalam

SQL, Anda menentukan data apa yang ingin Anda ambil, dan mesin SQL mencari tahu caranya

untuk mengambilnya. Dalam bahasa pemrograman, Anda menentukan langkah-langkah yang dilakukan komputer

harus diambil untuk menyelesaikan suatu tugas.

Perbedaan lainnya adalah SQL dioptimalkan untuk mengakses dan memanipulasi data di a

database relasional, sementara bahasa pemrograman dioptimalkan untuk tujuan umum

tugas komputasi. SQL sering digunakan bersamaan dengan bahasa pemrograman untuk
Machine Translated by Google

mengambil dan memanipulasi data dalam suatu aplikasi, tetapi kedua bahasa tersebut memiliki perbedaan

paradigma dan beroperasi pada berbagai tingkat abstraksi.

Singkatnya, ketidakcocokan paradigma antara SQL dan bahasa pemrograman berasal

dari tujuan dan paradigma desain mereka yang berbeda. Sedangkan kedua bahasa tersebut digunakan untuk menyelesaikan

masalah dunia nyata, mereka beroperasi pada tingkat abstraksi yang berbeda dan dioptimalkan

untuk berbagai jenis tugas.

7.81 Bagaimana ketidaksesuaian jawaban Anda terhadap Pertanyaan Ulasan 7.80 dikoreksi?

Jawab : SQL Cara mengoreksi ketidaksesuaian pada jawaban 7.80 adalah dengan memberikan yang sama

tujuan untuk bahasa pemrograman dan SQL sehingga keduanya beroperasi pada level yang sama

abstraksi dan dioptimalkan untuk berbagai jenis tugas.

7.82 Jelaskan komponen SQL/PSM dari standar SQL. Apa itu PL/SQL dan

T-SQL? Apa yang setara dengan MySQL?

Jawab :

SQL/PSM (SQL Persistent Stored Modules) adalah komponen standar SQL yang

menambahkan konstruksi pemrograman prosedural ke SQL. Hal ini memungkinkan penciptaan disimpan

prosedur dan fungsi yang dapat dipanggil dari dalam pernyataan SQL.

PL/SQL dan T-SQL keduanya ekstensi ke SQL yang menyediakan pemrograman prosedural

kemampuan. PL/SQL adalah bahasa prosedural yang digunakan oleh Oracle, sedangkan T-SQL digunakan

oleh Microsoft SQL Server. Kedua bahasa memungkinkan pembuatan prosedur tersimpan,

fungsi, dan pemicu.

MySQL memiliki ekstensi sendiri ke SQL yang disebut MySQL Stored Procedures and Functions,

yang menyediakan kemampuan pemrograman prosedural yang serupa dengan PL/SQL dan T-SQL. Dia

memungkinkan pembuatan prosedur dan fungsi tersimpan menggunakan bahasa yang mirip dengan

PL/SQL Oracle. MySQL juga mendukung trigger dan event yang dapat digunakan untuk mengeksekusi

pernyataan SQL berdasarkan kondisi tertentu.

7.83 Apa itu fungsi yang ditentukan pengguna?

Jawab : User-defined function (UDF) adalah fungsi yang dibuat oleh pengguna atau

programmer, daripada dibangun ke dalam bahasa pemrograman atau perangkat lunak

aplikasi. Ini memungkinkan pengguna untuk menentukan fungsi mereka sendiri yang dapat melakukan tugas tertentu

atau perhitungan berdasarkan kebutuhan mereka.


Machine Translated by Google

Intinya, fungsi yang ditentukan pengguna mengambil parameter input, melakukan serangkaian operasi

atau perhitungan, lalu mengembalikan nilai atau hasil. Itu bisa dipanggil dari dalam yang lain

bagian dari program atau aplikasi, memungkinkan fungsionalitas untuk digunakan kembali beberapa kali

kali di seluruh basis kode.

Menggunakan basis data WP, buat skrip SQL bernama WP-Create-Function-and-View.

sql untuk menjawab Pertanyaan Tinjauan 7.84 dan 7.85.

7.84 Membuat dan menguji fungsi yang ditentukan pengguna bernama FirstNameFirst yang menggabungkan dua

parameter bernama FirstName dan LastName menjadi nilai gabungan bernama Full

Beri nama dan tampilkan, secara berurutan, Nama Depan, spasi, dan Nama Belakang (PETUNJUK: Steve

dan Smith akan digabungkan untuk membaca Steve Smith)

Jawab :

7.85 Membuat dan menguji sebuah tampilan bernama EmployeeDepartmentDataView yang berisi

nama karyawan digabungkan dengan fungsi yang ditentukan pengguna FirstNameFirst dalam sebuah bidang

bernama EmployeeName, EMPLOYEE.Department, DEPARTMENT.OfficeNumber,

DEPARTMENT.DepartmentPhone, dan EMPLOYEE.OfficePhone menjadi EmployeePhone.

Jalankan pernyataan ini untuk membuat tampilan, lalu uji tampilan dengan menulis dan menjalankan

pernyataan SQL SELECT yang sesuai.

Jawab :

-- Membuat tampilan

BUAT TAMPILAN EmployeeDepartmentDataView AS

PILIH
Machine Translated by Google

FirstNameFirst(EMPLOYEE.FirstName, EMPLOYEE.LastName) AS

Nama karyawan,

KARYAWAN.Departemen,

DEPARTEMEN.NomorKantor,

DEPARTEMEN.Telepon Departemen,

KARYAWAN.OfficePhone SEBAGAI EmployeePhone

DARI

KARYAWAN

BERGABUNG DEPARTEMEN PADA KARYAWAN.Departemen =

DEPARTMENT.DepartmentID;

-- Uji tampilan dengan memilih semua rekaman

PILIH * DARI EmployeeDepartmentDataView;

7.86 Apa itu pemicu?

Jawab :

Pemicu dapat merujuk ke hal yang berbeda tergantung pada konteksnya, tetapi secara umum, artinya

sesuatu yang memicu reaksi atau respons tertentu.

Dalam konteks pemrograman dan basis data, pemicu adalah jenis penyimpanan khusus

prosedur yang secara otomatis dijalankan sebagai respons terhadap peristiwa atau tindakan tertentu, seperti

memasukkan, memperbarui, atau menghapus data dalam tabel database.

7.87 Apa hubungan antara pemicu dan tabel atau tampilan?

Jawab : Dalam konteks database relasional, pemicu adalah tipe penyimpanan khusus

prosedur yang dijalankan secara otomatis sebagai tanggapan atas peristiwa atau perubahan tertentu itu

terjadi dalam tabel atau tampilan.

Pemicu dikaitkan dengan tabel atau tampilan tertentu dan dipicu oleh peristiwa tertentu

seperti operasi INSERT, UPDATE, atau DELETE pada tabel atau tampilan tersebut. Ketika

pemicu dipicu, itu mengeksekusi satu set instruksi atau prosedur yang ditentukan oleh

pemrogram.

Misalnya, pemicu dapat diatur untuk memperbarui tabel secara otomatis saat ada rekaman

dimasukkan ke dalam tabel lain. Atau, pemicu dapat digunakan untuk mencegah tindakan tertentu

dari yang dilakukan pada tabel atau tampilan, seperti menghapus catatan yang ditandai sebagai

"kritis."
Machine Translated by Google

Secara keseluruhan, hubungan antara pemicu dan tabel atau tampilan adalah pemicunya

terkait dengan tabel atau tampilan tertentu dan dipicu oleh peristiwa tertentu yang terjadi pada

tabel atau tampilan itu. Pemicu kemudian mengeksekusi satu set instruksi atau prosedur

tanggapan terhadap peristiwa-peristiwa itu.

7.88 Sebutkan sembilan jenis pemicu yang mungkin?

Jawab :

1. Pemicu Bahasa Manipulasi Data (DML): Pemicu ini diaktifkan

ketika pernyataan bahasa manipulasi data (DML) dijalankan, seperti

MASUKKAN, PERBARUI, atau HAPUS.

2. Pemicu Bahasa Definisi Data (DDL): Pemicu ini diaktifkan saat a

pernyataan data definition language (DDL) dijalankan, seperti CREATE,

ALTER, atau DROP.

3. Pemicu Logon: Pemicu ini diaktifkan saat pengguna masuk ke database.

4. Pemicu Keluar: Pemicu ini diaktifkan saat pengguna keluar dari

basis data.

5. Pemicu Server: Pemicu ini diaktifkan saat peristiwa server terjadi, misalnya

sebagai perubahan konfigurasi server atau penutupan server.

6. Pemicu Basis Data: Pemicu ini diaktifkan saat peristiwa basis data terjadi,

seperti perubahan status basis data atau penghentian basis data.

7. Pemicu Batasan: Pemicu ini diaktifkan saat batasan dilanggar,

seperti batasan kunci asing atau batasan cek.

8. BUKAN Pemicu: Pemicu ini diaktifkan alih-alih tindakan, misalnya

sebagai pernyataan INSERT, UPDATE, atau DELETE.

9. Pemicu Lintas-Database: Pemicu ini diaktifkan ketika suatu peristiwa terjadi

satu database yang mempengaruhi database lain.

7.89 Jelaskan secara umum bagaimana nilai baru dan lama tersedia untuk pemicu?

Jawab : Secara umum, trigger adalah tipe khusus dari stored procedure dalam database

sistem manajemen yang dijalankan secara otomatis sebagai respons terhadap peristiwa tertentu, seperti

saat data berubah (masukkan, perbarui, hapus) pada tabel.

Saat pemicu diaktifkan, pemicu dapat mengakses nilai lama dan baru dari data yang dipicu

acara. Nilai lama mengacu pada data sebelum acara, sedangkan nilai baru merujuk

data setelah kejadian.


Machine Translated by Google

Cara nilai lama dan baru disediakan untuk pemicu bergantung pada spesifiknya

sistem manajemen basis data yang digunakan. Namun, di sebagian besar sistem, lama dan baru

nilai diteruskan ke pemicu sebagai variabel atau parameter.

Misalnya, di MySQL, nilai lama dan baru tersedia untuk memicu melalui

kata kunci "LAMA" dan "BARU", masing-masing. Kata kunci ini dapat digunakan untuk

kolom referensi di baris yang terpengaruh sebelum dan sesudah acara. Dalam Microsoft SQL

Server, nilai lama dan baru dapat diakses menggunakan tabel "dihapus" dan "dimasukkan",

masing-masing, yang berisi baris yang terpengaruh sebelum dan sesudah acara.

Secara umum, ketersediaan nilai lama dan baru memungkinkan pemicu bekerja kompleks

tindakan berdasarkan perubahan data yang memicu peristiwa tersebut. Misalnya, pemicu bisa

perbarui tabel lain berdasarkan nilai baru, atau catat perubahan untuk tujuan audit

berdasarkan nilai-nilai lama.

7.90 Jelaskan empat kegunaan pemicu?

Jawab :

Pemicu adalah objek database yang secara otomatis dieksekusi sebagai respons terhadap spesifik

peristiwa atau perubahan yang terjadi dalam database. Berikut adalah empat penggunaan umum untuk pemicu di a

basis data:

1. Menegakkan aturan bisnis: Pemicu dapat digunakan untuk menegakkan aturan bisnis tertentu

atau kendala pada database. Misalnya, pemicu dapat diatur untuk memeriksanya

nilai yang dimasukkan ke dalam bidang tertentu memenuhi kriteria tertentu, seperti memastikannya

tanggal yang dimasukkan berada dalam rentang tertentu.

2. Menjaga integritas data: Pemicu juga dapat digunakan untuk menjaga integritas data

dalam database dengan memastikan bahwa data diperbarui atau dihapus secara konsisten dan

cara yang benar. Misalnya, pemicu dapat diatur untuk memperbarui a

merekam dalam satu tabel ketika catatan terkait di tabel lain diperbarui.

3. Audit dan pencatatan: Pemicu dapat digunakan untuk mengaudit dan mencatat perubahan yang dilakukan pada a

basis data. Misalnya, pemicu dapat diatur untuk mencatat setiap kali catatan dibuat

disisipkan, diperbarui, atau dihapus dalam tabel tertentu.

4. Replikasi data: Pemicu juga dapat digunakan untuk mereplikasi data antar database.

Misalnya, pemicu dapat diatur untuk menyalin data secara otomatis dari salah satunya
Machine Translated by Google

database ke database lain setiap kali peristiwa tertentu terjadi, seperti ketika a

catatan baru dimasukkan ke dalam tabel.

7.91 Asumsikan bahwa View Ridge Gallery akan mengizinkan sebuah baris untuk dihapus dari WORK jika

karya tidak pernah dijual. Jelaskan secara umum bagaimana menggunakan pemicu untuk mencapainya

penghapusan seperti itu. (PETUNJUK: Periksa transaksi.)

Jawab :

Untuk menggunakan pemicu untuk menyelesaikan penghapusan baris dari tabel WORK di Tampilan

Basis data Galeri Ridge, kita dapat membuat pemicu "SETELAH DELETE" di atas meja. Ini

pemicu akan dijalankan secara otomatis setelah satu baris dihapus dari tabel.

Dalam kode pemicu, kita dapat menyertakan transaksi yang memeriksa apakah yang dihapus berfungsi

pernah dijual. Kita dapat melakukannya dengan menanyakan tabel PENJUALAN untuk melihat apakah ada

setiap catatan penjualan yang mereferensikan pekerjaan yang dihapus. Jika tidak ada catatan penjualan, maka

pemicu dapat memungkinkan penghapusan untuk melanjutkan. Namun, jika ada catatan penjualan, maka

pemicu dapat memutar kembali penghapusan dan memunculkan pesan kesalahan yang menunjukkan bahwa pekerjaan

telah terjual dan tidak dapat dihapus.

Berikut ini beberapa contoh kode yang menunjukkan cara membuat pemicu yang berhasil

ini:

BUAT PEMICU delete_unsold_work

SEBELUM HAPUS PADA KERJA

UNTUK SETIAP BARIS

MULAI

-- periksa apakah karya tersebut telah terjual

MENYATAKAN SOL_count INT;

PILIH HITUNG(*) KE JUMLAH_TERJUAL DARI TRANSAKSI

WHERE TRANSACTION.WORK_ID = OLD.WORK_ID;

-- jika karya belum terjual, izinkan penghapusan

JIKA jumlah_terjual = 0 MAKA

-- jangan lakukan apa pun, penghapusan akan dilanjutkan

KALAU TIDAK

-- meningkatkan kesalahan dan mencegah penghapusan

SINYAL SQLSTATE '45000'

SET MESSAGE_TEXT = 'Tidak dapat menghapus karya yang telah terjual.';

BERAKHIR JIKA;
Machine Translated by Google

AKHIR;

7.92 Asumsikan bahwa Wedgewood Pacific Corporation akan mengizinkan sebuah baris untuk dihapus

KARYAWAN jika karyawan tidak memiliki tugas proyek. Jelaskan secara umum

bagaimana menggunakan pemicu untuk menyelesaikan penghapusan tersebut. (PETUNJUK: Periksa tugas.)

Jawab :

Untuk menyelesaikan penghapusan baris dari tabel EMPLOYEE berdasarkan kondisi

bahwa karyawan tersebut tidak memiliki tugas proyek, Anda dapat menggunakan pemicu berikut ini

jalan:

1. Buat trigger baru pada tabel EMPLOYEE yang diaktifkan sebelum DELETE

operasi.

2. Di trigger, query tabel ASSIGNMENT untuk menentukan apakah employee sedang

dihapus memiliki tugas proyek apa pun. Anda dapat melakukan ini dengan memeriksa apakah ada baris

di tabel ASSIGNMENT yang memiliki ID karyawan yang sama dengan karyawan tersebut

dihapus.

3. Jika karyawan yang dihapus tidak memiliki tugas proyek, izinkan DELETE

operasi berjalan seperti biasa. Jika karyawan yang dihapus memiliki tugas proyek,

menimbulkan kesalahan untuk mencegah terjadinya operasi DELETE.

4. Uji trigger dengan mencoba menghapus satu baris dari tabel EMPLOYEE yang telah ada

tugas proyek dan memverifikasi bahwa kesalahan dimunculkan. Kemudian, coba hapus satu baris dari

tabel EMPLOYEE yang tidak memiliki tugas proyek dan verifikasi penghapusan

berlangsung seperti biasa.

Dengan menggunakan pemicu ini, Anda dapat memastikan bahwa karyawan dengan tugas proyek tidak

secara tidak sengaja terhapus dari tabel EMPLOYEE, sementara masih mengizinkan penghapusan

karyawan yang tidak memiliki tugas proyek.

7.93 Apa itu prosedur tersimpan? Bagaimana mereka berbeda dari pemicu?

Jawab :

Prosedur tersimpan adalah blok kode yang telah ditulis sebelumnya yang dapat disimpan dan dieksekusi pada a

server basis data. Mereka biasanya digunakan untuk merangkum logika kompleks atau sering

melakukan operasi basis data, yang dapat dipanggil dari berbagai aplikasi atau

skrip.

Di sisi lain, pemicu adalah jenis objek basis data yang dijalankan secara otomatis

sebagai respons terhadap peristiwa tertentu, seperti operasi penyisipan, pembaruan, atau penghapusan pada tabel.
Machine Translated by Google

Pemicu dikaitkan dengan tabel tertentu dan dieksekusi kapan pun ditentukan

peristiwa terjadi pada tabel itu.

Perbedaan utama antara prosedur tersimpan dan pemicu adalah prosedur tersimpan

dieksekusi secara eksplisit dengan memanggilnya dari aplikasi atau skrip, sedangkan pemicu

dieksekusi secara implisit sebagai respons terhadap peristiwa tertentu. Prosedur tersimpan juga lebih banyak

fleksibel dalam hal logika yang dapat dikandungnya, sedangkan pemicu biasanya terbatas pada

mengeksekusi serangkaian tindakan tertentu sebagai respons terhadap peristiwa tertentu.

Singkatnya, prosedur dan pemicu tersimpan adalah objek database penting yang bisa

digunakan untuk meningkatkan kinerja dan fungsionalitas aplikasi basis data, tetapi mereka

melayani tujuan yang berbeda dan dieksekusi dengan cara yang berbeda.

7.94 Ringkas bagaimana memanggil stored procedure?

Jawab :

Prosedur tersimpan dan pemicu keduanya adalah objek basis data yang dapat digunakan untuk mengeksekusi

kode dalam menanggapi peristiwa atau kondisi tertentu dalam sistem basis data. Namun, ada

adalah beberapa perbedaan utama di antara mereka:

Prosedur tersimpan:

• Prosedur tersimpan adalah blok kode yang telah dikompilasi dan dapat digunakan kembali yang dapat dipanggil oleh

aplikasi atau objek database lainnya untuk melakukan tugas tertentu.

• Biasanya digunakan untuk mengenkapsulasi SQL yang kompleks atau yang sering dieksekusi

pernyataan, atau untuk menerapkan logika bisnis dalam database.

• Prosedur tersimpan dapat dijalankan sesuai permintaan oleh aplikasi atau pengguna, atau bisa

dijadwalkan untuk berjalan secara otomatis pada interval tertentu.

• Mereka dapat dibuat dan dimodifikasi menggunakan perintah SQL, dan dapat menyertakan

parameter untuk eksekusi yang lebih fleksibel dan dapat disesuaikan.

Pemicu:

• Pemicu adalah tipe khusus dari stored procedure yang dijalankan secara otomatis

sebagai tanggapan atas peristiwa atau perubahan tertentu pada data dalam tabel basis data.

• Mereka dapat digunakan untuk menegakkan aturan bisnis atau kendala integritas data, audit

mengubah data, atau melakukan tindakan otomatis lainnya berdasarkan perubahan data.

• Pemicu diasosiasikan dengan tabel dan kejadian tertentu (seperti insert, update,

atau hapus), dan dieksekusi sebelum atau sesudah peristiwa terjadi.


Machine Translated by Google

• Mereka tidak dapat dijalankan pada permintaan seperti prosedur tersimpan, dan hanya

dipicu oleh peristiwa basis data tertentu.

Singkatnya, prosedur tersimpan adalah blok kode mandiri yang dapat dipanggil sesuai permintaan

atau dijadwalkan untuk dijalankan, sedangkan trigger adalah objek database yang dieksekusi secara otomatis

dalam menanggapi peristiwa tertentu atau perubahan data dalam tabel.

7.95 Ringkas keuntungan utama dari prosedur tersimpan?

Jawab :

Prosedur tersimpan adalah fitur canggih dari sistem manajemen basis data yang memungkinkan

pengembang untuk menulis dan menyimpan kumpulan kode yang dapat dijalankan berulang kali. Beberapa dari

keuntungan utama menggunakan prosedur tersimpan meliputi:

1) Peningkatan Kinerja: Prosedur tersimpan dapat meningkatkan kinerja database dengan

mengurangi lalu lintas jaringan dan menyediakan kode yang telah dikompilasi yang dapat dieksekusi

dengan cepat.

2) Peningkatan Keamanan: Prosedur tersimpan dapat membantu melindungi database Anda dari SQL

serangan injeksi dengan membatasi jumlah data yang dapat diakses oleh pengguna.

3) Pemeliharaan yang Disederhanakan: Karena prosedur tersimpan disimpan dalam database,

mereka dapat dengan mudah dipelihara dan diperbarui tanpa mengubah dasarnya

kode aplikasi.

4) Penggunaan Kembali Kode yang Lebih Baik: Prosedur tersimpan dapat digunakan oleh banyak aplikasi

atau skrip, yang berarti pengembang dapat menghemat waktu dengan menggunakan kembali kode yang telah ada

sudah ditulis.

5) Kontrol Transaksi: Prosedur tersimpan dapat membantu memastikan integritas data dengan

menyediakan kontrol transaksi, yang berarti bahwa beberapa tindakan dapat dikelompokkan

bersama dalam satu transaksi yang dapat dibatalkan jika diperlukan.

Secara keseluruhan, prosedur tersimpan menyediakan alat yang ampuh bagi pengembang untuk meningkatkan basis data

kinerja, meningkatkan keamanan, menyederhanakan pemeliharaan, dan meningkatkan penggunaan kembali kode.

Anda mungkin juga menyukai