Anda di halaman 1dari 14

Nama : Devi heriyani Akun APEX

NPM : 1402018069 Workspace : onattt


Kelas : _ E-mail : heriyanidevi23@gmail.com
Password : deviheriyani

TUGAS
DATA DEFINITION LANGUAGE

Soal 1

Diketahui sebuah ERD sebagai berikut:

ERD tersebut ditransformasi ke dalam Physical Design sebagai berikut:

Buatlah DDL untuk kedua tabel tersebut berdasarkan Physical Design!

Jawab:

create table departement(


id NUMBER(2) not null,
nama varchar(30) not null,
constraint id_pk primary key(id)
);

create table pegawai(


id pegawai number(3) not null,
no_ktp number(30) not null,
nama_belakang varchar(30) not null,
id_dept number(2) not null,
constraint pegawai_pk primary key (id_pegawai, no_ktp),
constraint id_dept_fk foreign key (id_dept references)
departement(id)
);

Soal 2

Lalu, terjadi perubahan pada ERD tersebut menjadi:

Physical Design menjadi sebagai berikut:

Ubahlah struktur tabel yang sudah ada dengan ALTER TABLE berdasarkan Physical Design
yang baru!

Jawab:
alter table pegawai drop primary key;
alter table pegawai add constraint id_pegawai_pk primary key
(id_pegawai);
alter table pegawai add constraint no_ktp_uk unique (no_ktp);
alter table pegawai add tanggal_mulai_bekerja date not null;
alter table pegawai add (
id_manager number(3) null,
constraint id_manager_fk foreign key(id_manager)
references pegawai (id_pegawai)
);
TUGAS
DATA MANIPULATION LANGUAGE

A. Persiapan

1. Syntax untuk meng-copy (duplikat) sebuah tabel adalah sebagai berikut:

CREATE TABLE copy_tablename


AS (SELECT * FROM tablename);

Lakukan copy table pegawai yang sudah ada sebelumnya menjadi tabel baru yang
bernama copy_pegawai menggunakan syntax sql command di atas.
Jawab:

create table copy_pegawai as (select * from pegawai);

Lakukan copy table departemen yang sudah ada sebelumnya menjadi tabel baru yang
bernama copy_departemen menggunakan syntax sql command di atas.
Jawab:
create table copy_departemen as (select * from
departemen);

2. Syntax untuk memverifikasi struktur sebuah tabel adalah sebagai berikut:

DESCRIBE tablename;

Lakukan verifikasi struktur tabel pegawai dan copy_pegawai menggunakan syntax sql
command di atas.
Jawab:

describe pegawai;
describe copy_pegawai;

Lakukan verifikasi struktur tabel departemen dan copy_departemen menggunakan


syntax sql command di atas.
Jawab:
describe departemen;
3. Syntax untuk melihat seluruh data dari tabel adalah sebagai berikut:

SELECT * FROM tablename;

Lihat data dari tabel pegawai dan copy_pegawai menggunakan syntax sql command
di atas.
Jawab:

select * from pegawai;


select * from copy_pegawai;

Lihat data dari tabel departemen dan copy_departemen menggunakan syntax sql
command di atas.
Jawab:

select * from departemen;


select * from copy_departemen;
B. INSERT Statement

Diberikan data di tabel Pegawai dan tabel Departemen sebagai berikut:

1. Syntax untuk menambahkan sebuah data ke tabel adalah sebagai berikut:

INSERT INTO tablename (column1, ..., column_n)


VALUES (value1, ..., value_n);

a. Masukkan sebuah data departemen yang memiliki id = 10 ke dalam tabel


departemen.
Jawab:

insert into departemen(id, nama)


values(10, 'Finance');

b. Masukkan sebuah data pegawai yang memiliki id_pegawai = 150 ke dalam


tabel pegawai. (Petunjuk: tanggal_mulai_bekerja diberi nilai SYSDATE)
Jawab:
insert into pegawai(id_pegawai, no_ktp, nama_depan,
nama_belakang, tanggal_mulai_bekerja, id_dept)
values (150, 3175072412770002, 'Teddy', 'Syach',
SYSDATE, 10);

c. Masukkan sebuah data departemen yang memiliki id = 40 ke dalam tabel


departemen.
Jawab:

insert into departemen(id, nama)


values(40, 'sales');
d. Masukkan sebuah data pegawai dengan id_pegawai = 141 ke dalam tabel
pegawai.
Jawab:

insert into pegawai(id_pegawai, no_ktp, nama_depan,


nama_belakang, tanggal_mulai_bekerja, id_dept)
values (141, 3175081207560002, 'Joko', 'Supeno',
SYSDATE, 40);

2. Syntax untuk menambahkan banyak data sekaligus ke tabel adalah sebagai berikut:

INSERT ALL
INTO tablename (column1, ..., column_n)
VALUES (value1, ..., value_n)
INTO tablename (column1, ..., column_n)
VALUES (value1, ..., value_n)
...
SELECT * FROM DUAL;

a. Masukkan sisa data departemen yang belum dimasukkan sekaligus ke dalam


tabel departemen.
Jawab:
insert all
into departemen(id, nama)
values(20,'HRD')
into departemen(id, nama)
values(30,'Marketing')
into departemen(id, nama)
values(40,'Sales')
into departemen(id, nama)
values(50,'IT')
select * from dual;

b. Masukkan sisa data pegawai yang belum dimasukkan sekaligus ke dalam


tabel pegawai.
Jawab:
insert all
insert into pegawai(id_pegawai, no_ktp,
nama_depan, nama_belakang, tanggal_mulai_bekerja,
id_dept)
values (152, 3175071109790001, 'Alex',
'Gareth', SYSDATE, 10)
insert into pegawai(id_pegawai, no_ktp,
nama_depan, nama_belakang, tanggal_mulai_bekerja,
id_dept)
values (149, 3175081207860001, 'Bobby',
'Ronaldo', SYSDATE, 40)
insert into pegawai(id_pegawai, no_ktp,
nama_depan, nama_belakang, tanggal_mulai_bekerja,
id_dept)
values (151, 3175071911750001, 'Mansyur',
SYSDATE, 10)
insert into pegawai(id_pegawai, no_ktp,
nama_depan, nama_belakang, tanggal_mulai_bekerja,
id_dept)
values (148, 3175052112780002, 'Rubi', 'Nuh',
SYSDATE, 40)
select * from dual;
C. UPDATE Statement

Perhatikan perubahan data di dalam tabel yang diberi warna kuning.

Syntax untuk mengubah sebuah data dengan kondisi tertentu di tabel adalah sebagai
berikut:

UPDATE tablename
SET column_name = new_value, ...
WHERE condition;

1. Ubah data dari seorang pegawai yang memiliki nama_depan = Mansyur menjadi
Malik di mana id_pegawai = 151 di dalam tabel pegawai.
Jawab:
update pegawai
set nama_belakang = 'Advertising'
where id_pegawai = 151;

2. Ubah data tanggal_mulai_bekerja = '02-Dec-18' dari seorang pegawai di mana


id_pegawai = 141 di dalam tabel pegawai.
Jawab:
update pegawai
set tanggal_mulai_bekerja = to_date('02-Dec-18', 'DD-
Mon-YY' )
where id_pegawai = 141;

3. Ubah data id_dept = 30 dan id_manager = null dari seorang pegawai di mana
id_pegawai = 152 di dalam tabel pegawai.
Jawab:
4. Ubah data tanggal_mulai_bekerja = '05-Aug-16' dari seorang pegawai di mana
id_pegawai = 150 di dalam tabel pegawai.
Jawab:
update pegawai
set tanggal_mulai_bekerja = to_date('05-Aug-16', 'DD-
Mon-YY')
where id_pegawai = 150;

5. Ubah data dari nama departemen dari Marketing menjadi Advertising di mana id =
30 di dalam tabel departemen.
Jawab:

update departemen
set nama = 'Advertising'
where id = 30;
D. DELETE Statement

Syntax untuk menghapus sebuah data dengan kondisi tertentu di tabel adalah sebagai
berikut:

DELETE FROM tablename


WHERE condition;

1. Hapus data dari tabel departemen di mana ID = 10


Jawab:
delete from departemen
where id = 10;

Apa yang terjadi? Jelaskan!


ORA-02292: integrity constraint (BASDATHERIKA.ID_DEPT_FK) violated
- child record found
ORA-06512: at "SYS.DBMS_SQL", line 1721

1. delete from departemen


2. where id = 10;

Penjelasan:
Data id = 10 di tabel departemen tidak terhapus karena:
 id_departemen = 10 digunakan di tabel pegawai,
 id_departemen di tabel departemen menjadi foreign key di tabel pegawai
yaitu id_dept.

2. Hapus data dari tabel pegawai di mana id_pegawai = 150


Jawab:
delet from pegawai
where id_pegawai = 150;

Apa yang terjadi? Jelaskan!

ORA-00900: invalid SQL statement ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_200100",


line 581 ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658 ORA-06512: at
"SYS.WWV_DBMS_SQL_APEX_200100", line 567 ORA-06512: at
"APEX_200100.WWV_FLOW_DYNAMIC_EXEC", line 2127
3. Hapus data dari tabel pegawai di mana nama_depan = 'Rubi'.
Jawab:
delet from pegawai
where nama_depan = 'Rubi';

Apa yang terjadi? Jelaskan!


ORA-00900: invalid SQL statement

4. Hapus data dari tabel departemen di mana id = 20.


Jawab:
delet from departemen
where id = 20;

Apa yang terjadi? Jelaskan!


ORA-00900: invalid SQL statement ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_200100",
line 581 ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658 ORA-06512: at
"SYS.WWV_DBMS_SQL_APEX_200100", line 567 ORA-06512: at
"APEX_200100.WWV_FLOW_DYNAMIC_EXEC", line 2127

5. Apa perbedaan antara TRUNCATE TABLE Statement dengan DELETE Statement?


Jelaskan!
Jawab:

Trucante table itu salah satu perintah atau statement database MySQL untuk
mengosongkan atau menghapus semua data yg ada di table

Delet itu kategori DML, terus cuman mengapus record berdasarkan where
clusenya, dapat di rollback, tidak dapat mereset sequence

Anda mungkin juga menyukai