-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathKelompok2_query.sql
More file actions
144 lines (122 loc) · 4.78 KB
/
Kelompok2_query.sql
File metadata and controls
144 lines (122 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
-- QUERY KELOMPOK 2 SISTEM BASIS DATA I B
CREATE DATABASE IF NOT EXISTS kel2_db;
USE kel2_db;
--// DDL (DATA DEFINITION LANGUAGE) //--
CREATE TABLE students (
students_id INT NOT NULL AUTO_INCREMENT,
full_name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL,
major VARCHAR(255) NOT NULL,
PRIMARY KEY (student_id)
);
CREATE TABLE courses (
course_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
duration INT NOT NULL,
PRIMARY KEY (course_id)
);
CREATE TABLE schedule (
schedule_id INT NOT NULL AUTO_INCREMENT,
date DATE NOT NULL,
time TIME NOT NULL,
student_id INT NOT NULL,
course_id INT NOT NULL,
PRIMARY KEY (schedule_id),
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
desc schedule;
--// DML (DATA MANIPULATION LANGUAGE) //--
-- Mengisi Matakuliah (Sample)
INSERT INTO courses(NAME, duration)
VALUE ('Pemrograman Web B', 90),
('Praktikum Pemrograman Web B', 120),
('Sistem Basis Data B', 90),
('Praktikum Sistem Basis Data B', 120);
-- Mengisi Record database students berdasarkan anggota Kelompok 2
INSERT INTO students (full_name, address, major)
VALUES ('Muhammad Yusran Hardimas', 'Jl. Kebon Jeruk', 'Sistem Informasi'),
('Muhammad Ikram Hidayat', 'Jl. Mimpi Indah', 'Sistem Informasi'),
('Muhammad Al Fudhail', 'Jl. Di BTP', 'Sistem Informasi'),
('Muchtar Adam Al-Hamid', 'Jl. Tikus', 'Sistem Informasi'),
('Muh Hudri Perdana Hutba', 'Jl. Tamalanrea', 'Sistem Informasi'),
('Herdiangga Pratama', 'Jl. Seribu jalan', 'Sistem Informasi'),
('Muhammad Sofyan Daud Pujas', 'Jl. Air Kuning', 'Sistem Informasi'),
('Jihan Afifah Mirzani', 'Jl. Gigi Beruang', 'Sistem Informasi');
-- Mengisi Record sesuai dengan jadwal yang telah ditentukan (Kasus tanggal dan waktu disamakan)
INSERT INTO schedule (date, time, student_id, course_id)
VALUES ('2020-10-01', '08:00:00', 1, 1),
('2020-10-01', '08:00:00', 2, 1),
('2020-10-01', '08:00:00', 3, 1),
('2020-10-01', '08:00:00', 4, 1),
('2020-10-01', '08:00:00', 5, 1),
('2020-10-01', '08:00:00', 6, 1),
('2020-10-01', '08:00:00', 7, 1),
('2020-10-01', '08:00:00', 8, 1),
('2020-10-01', '08:00:00', 1, 2),
('2020-10-01', '08:00:00', 2, 2),
('2020-10-01', '08:00:00', 3, 2),
('2020-10-01', '08:00:00', 4, 2),
('2020-10-01', '08:00:00', 5, 2),
('2020-10-01', '08:00:00', 6, 2),
('2020-10-01', '08:00:00', 7, 2),
('2020-10-01', '08:00:00', 8, 2),
('2020-10-01', '08:00:00', 1, 3),
('2020-10-01', '08:00:00', 2, 3),
('2020-10-01', '08:00:00', 3, 3),
('2020-10-01', '08:00:00', 4, 3),
('2020-10-01', '08:00:00', 5, 3),
('2020-10-01', '08:00:00', 6, 3),
('2020-10-01', '08:00:00', 7, 3),
('2020-10-01', '08:00:00', 8, 3),
('2020-10-01', '08:00:00', 1, 4),
('2020-10-01', '08:00:00', 2, 4),
('2020-10-01', '08:00:00', 3, 4),
('2020-10-01', '08:00:00', 4, 4),
('2020-10-01', '08:00:00', 5, 4),
('2020-10-01', '08:00:00', 6, 4),
('2020-10-01', '08:00:00', 7, 4),
('2020-10-01', '08:00:00', 8, 4);
-- Mengubah record dalam tabel schedule
UPDATE schedule
SET date = '2020-10-02', time = '16:00:00'
WHERE course_id = 2;
UPDATE schedule
SET date = '2020-10-03', time = '09:30:00'
WHERE course_id = 3;
UPDATE schedule
SET date = '2020-10-04', time = '12:00:00'
WHERE course_id = 4;
-- Mengecek isi tabel-tabelnya
SELECT * FROM students;
SELECT * FROM courses;
SELECT * FROM schedule;
--// DCL (DATA CONTROL LANGUAGE) //--
-- Memberikan hak akses kepada user bernama 'kelompok2'
GRANT ALL PRIVILEGES ON kel2_db.* TO 'kelompok2'@'localhost' IDENTIFIED BY 'kelompok2';
-- Apabila ingin memberikan hanya beberapa akses
GRANT SELECT, INSERT, UPDATE, DELETE ON kel2_db.* TO 'kelompok2'@'localhost' IDENTIFIED BY 'kelompok2';
-- Menghilangkan hak akses pada user tadi
REVOKE ALL PRIVILEGES ON kel2_db.* FROM 'kelompok2'@'localhost';
-- Mengunci Tabel
LOCK TABLES schedule WRITE;
-- Unlock Tabel
UNLOCK TABLES;
--// Normalisasi Data //--
-- 1. Membuat tabel baru
CREATE TABLE schedule_summary (
schedule_id INT NOT NULL AUTO_INCREMENT,
student_name VARCHAR(255) NOT NULL,
course_name VARCHAR(255) NOT NULL,
date DATE NOT NULL,
time TIME NOT NULL,
PRIMARY KEY (schedule_id)
);
-- 2. Memindahkan data dari tabel-tabel sebelumnya
INSERT INTO schedule_summary (student_name, course_name, date, time)
SELECT students.full_name, courses.name, schedule.date, schedule.time
FROM schedule
JOIN students ON schedule.student_id = students.student_id
JOIN courses ON schedule.course_id = courses.course_id;
-- 3. Mengecek isi tabel baru
SELECT * FROM schedule_summary;