├── admin.sql ├── barang.sql ├── categories.sql ├── customers.sql ├── guestbooks.sql ├── orders.sql ├── products.sql ├── sellers.sql ├── transaction.sql ├── user.sql ├── user1.sql ├── user2.sql ├── wallet.sql └── wishlist.sql /admin.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE admin 2 | ( 3 | id INT NOT NULL AUTO_INCREMENT, 4 | first_name VARCHAR(100) NOT NULL, 5 | last_name VARCHAR(100) NOT NULL, 6 | PRIMARY KEY (id) 7 | ) ENGINE = InnoDB; 8 | 9 | DESCRIBE admin; 10 | 11 | INSERT INTO admin(first_name, last_name) 12 | VALUES ('Eko', 'Khannedy'), 13 | ('Budi', 'Nugraha'), 14 | ('Joko', 'Morro'); 15 | 16 | SELECT * FROM admin ORDER BY id; 17 | 18 | DELETE FROM admin WHERE id = 3; 19 | 20 | INSERT INTO admin(first_name, last_name) 21 | VALUES ('Rully', 'Hidayat'); 22 | 23 | SELECT LAST_INSERT_ID(); -------------------------------------------------------------------------------- /barang.sql: -------------------------------------------------------------------------------- 1 | SHOW ENGINES; 2 | 3 | SHOW TABLES; 4 | 5 | CREATE TABLE barang 6 | ( 7 | id INT NOT NULL, 8 | nama VARCHAR(100) NOT NULL, 9 | harga INT NOT NULL DEFAULT 0, 10 | jumlah INT NOT NULL DEFAULT 0 11 | ) ENGINE = InnoDB; 12 | 13 | DESCRIBE barang; 14 | 15 | SHOW CREATE TABLE barang; 16 | 17 | ALTER TABLE barang 18 | ADD COLUMN deskripsi TEXT; 19 | 20 | ALTER TABLE barang 21 | ADD COLUMN salah TEXT; 22 | 23 | ALTER TABLE barang 24 | DROP COLUMN salah; 25 | 26 | ALTER TABLE barang 27 | MODIFY nama VARCHAR(200) AFTER deskripsi; 28 | 29 | ALTER TABLE barang 30 | MODIFY nama VARCHAR(200) FIRST; 31 | 32 | ALTER TABLE barang 33 | MODIFY id INT NOT NULL; 34 | 35 | ALTER TABLE barang 36 | MODIFY nama VARCHAR(200) NOT NULL; 37 | 38 | SHOW CREATE TABLE barang; 39 | 40 | ALTER TABLE barang 41 | MODIFY jumlah INT NOT NULL DEFAULT 0; 42 | 43 | ALTER TABLE barang 44 | MODIFY harga INT NOT NULL DEFAULT 0; 45 | 46 | ALTER TABLE barang 47 | ADD waktu_dibuat TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; 48 | 49 | INSERT INTO barang (id, nama) 50 | VALUES (1, 'Apel'); 51 | 52 | SELECT * 53 | FROM barang; 54 | 55 | TRUNCATE barang; 56 | 57 | SHOW tables; 58 | 59 | DROP TABLE barang; -------------------------------------------------------------------------------- /categories.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE categories 2 | ( 3 | id VARCHAR(10) NOT NULL, 4 | name VARCHAR(100) NOT NULL, 5 | PRIMARY KEY (id) 6 | ) ENGINE = InnoDB; 7 | 8 | DESCRIBE categories; 9 | 10 | ALTER TABLE products 11 | DROP COLUMN category; 12 | 13 | DESCRIBE products; 14 | 15 | ALTER TABLE products 16 | ADD COLUMN id_category VARCHAR(10); 17 | 18 | ALTER TABLE products 19 | ADD CONSTRAINT fk_products_categories 20 | FOREIGN KEY (id_category) REFERENCES categories (id); 21 | 22 | SHOW CREATE TABLE products; 23 | 24 | SELECT * 25 | FROM products; 26 | 27 | SELECT * 28 | FROM categories; 29 | 30 | INSERT INTO categories(id, name) 31 | VALUES ('C0001', 'Makanan'), 32 | ('C0002', 'Minuman'), 33 | ('C0003', 'Lain-Lain'); 34 | 35 | UPDATE products 36 | SET id_category = 'C0001' 37 | WHERE id IN ('P0001', 'P0002', 'P0003', 'P0004', 'P0005', 'P0006', 'P0013', 'P0014', 'P0015'); 38 | 39 | UPDATE products 40 | SET id_category = 'C0002' 41 | WHERE id IN ('P0007', 'P0008', 'P0009'); 42 | 43 | UPDATE products 44 | SET id_category = 'C0003' 45 | WHERE id IN ('P0010', 'P0011', 'P0012', 'P0016'); 46 | 47 | SELECT products.id, products.name, categories.name 48 | FROM products 49 | JOIN categories ON (categories.id = products.id_category); 50 | 51 | SELECT * 52 | FROM categories; 53 | 54 | INSERT INTO categories(id, name) 55 | VALUES ('C0004', 'Oleh-Oleh'), 56 | ('C0005', 'Gadget'); 57 | 58 | SELECT * 59 | FROM categories 60 | INNER JOIN products ON (products.id_category = categories.id); 61 | 62 | SELECT * 63 | FROM categories 64 | JOIN products ON (products.id_category = categories.id); 65 | 66 | SELECT * 67 | FROM categories 68 | LEFT JOIN products ON (products.id_category = categories.id); 69 | 70 | SELECT * 71 | FROM categories 72 | RIGHT JOIN products ON (products.id_category = categories.id); 73 | 74 | SELECT * 75 | FROM categories 76 | CROSS JOIN products; 77 | 78 | CREATE TABLE numbers 79 | ( 80 | id INT NOT NULL, 81 | PRIMARY KEY (id) 82 | ) ENGINE = InnoDB; 83 | 84 | INSERT INTO numbers(id) 85 | values (1), 86 | (2), 87 | (3), 88 | (4), 89 | (5), 90 | (6), 91 | (7), 92 | (8), 93 | (9), 94 | (10); 95 | 96 | SELECT numbers1.id, numbers2.id, (numbers1.id * numbers2.id) 97 | FROM numbers as numbers1 98 | CROSS JOIN numbers as numbers2 99 | ORDER BY numbers1.id, numbers2.id; -------------------------------------------------------------------------------- /customers.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE customers 2 | ( 3 | id INT NOT NULL AUTO_INCREMENT, 4 | email VARCHAR(100) NOT NULL, 5 | first_name VARCHAR(100) NOT NULL, 6 | last_name VARCHAR(100), 7 | PRIMARY KEY (id), 8 | UNIQUE KEY email_unique (email) 9 | ) ENGINE = InnoDB; 10 | 11 | DESCRIBE customers; 12 | 13 | ALTER TABLE customers 14 | DROP CONSTRAINT email_unique; 15 | 16 | ALTER TABLE customers 17 | ADD CONSTRAINT email_unique UNIQUE (email); 18 | 19 | INSERT INTO customers(email, first_name, last_name) 20 | VALUES ('eko@gmail.com', 'Eko', 'Kurniawan'); 21 | 22 | SELECT * FROM customers; 23 | 24 | INSERT INTO customers(email, first_name, last_name) 25 | VALUES ('kurniawan@gmail.com', 'Eko', 'Kurniawan'); 26 | 27 | DESC customers; -------------------------------------------------------------------------------- /guestbooks.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE guestbooks 2 | ( 3 | id INT NOT NULL AUTO_INCREMENT, 4 | email VARCHAR(100), 5 | title VARCHAR(200), 6 | content TEXT, 7 | PRIMARY KEY (id) 8 | ) ENGINE = InnoDB; 9 | 10 | SELECT * 11 | FROM customers; 12 | 13 | INSERT INTO guestbooks(email, title, content) 14 | VALUES ('guest@gmail.com', 'Hello', 'Hello'), 15 | ('guest2@gmail.com', 'Hello', 'Hello'), 16 | ('guest3@gmail.com', 'Hello', 'Hello'), 17 | ('eko@gmail.com', 'Hello', 'Hello'), 18 | ('eko@gmail.com', 'Hello', 'Hello'), 19 | ('eko@gmail.com', 'Hello', 'Hello'); 20 | 21 | SELECT * 22 | FROM guestbooks; 23 | 24 | SELECT email 25 | FROM customers 26 | UNION 27 | SELECT email 28 | FROM guestbooks; 29 | 30 | SELECT email 31 | FROM customers 32 | UNION ALL 33 | SELECT email 34 | FROM guestbooks; 35 | 36 | SELECT emails.email, COUNT(emails.email) 37 | FROM (SELECT email 38 | FROM customers 39 | UNION ALL 40 | SELECT email 41 | FROM guestbooks) as emails 42 | GROUP BY emails.email; 43 | 44 | SELECT DISTINCT email 45 | FROM customers 46 | WHERE email IN (SELECT DISTINCT email FROM guestbooks); 47 | 48 | SELECT DISTINCT customers.email 49 | FROM customers 50 | INNER JOIN guestbooks ON (guestbooks.email = customers.email); 51 | 52 | SELECT DISTINCT customers.email, guestbooks.email 53 | FROM customers 54 | LEFT JOIN guestbooks ON (customers.email = guestbooks.email) 55 | WHERE guestbooks.email IS NULL; -------------------------------------------------------------------------------- /orders.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE orders 2 | ( 3 | id INT NOT NULL AUTO_INCREMENT, 4 | total INT NOT NULL, 5 | order_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 6 | PRIMARY KEY (id) 7 | ) ENGINE = InnoDB; 8 | 9 | DESCRIBE orders; 10 | 11 | CREATE TABLE orders_detail 12 | ( 13 | id_product VARCHAR(10) NOT NULL, 14 | id_order INT NOT NULL, 15 | price INT NOT NULL, 16 | quantity INT NOT NULL, 17 | PRIMARY KEY (id_product, id_order) 18 | ) ENGINE = InnoDB; 19 | 20 | DESCRIBE orders_detail; 21 | 22 | ALTER TABLE orders_detail 23 | ADD CONSTRAINT fk_orders_detail_product 24 | FOREIGN KEY (id_product) REFERENCES products (id); 25 | 26 | ALTER TABLE orders_detail 27 | ADD CONSTRAINT fk_orders_detail_orders 28 | FOREIGN KEY (id_order) REFERENCES orders (id); 29 | 30 | SHOW CREATE TABLE orders_detail; 31 | 32 | SELECT * 33 | FROM orders; 34 | 35 | INSERT INTO orders(total) 36 | VALUES (50000); 37 | 38 | INSERT INTO orders_detail(id_product, id_order, price, quantity) 39 | VALUES ('P0001', 1, 25000, 1), 40 | ('P0002', 1, 25000, 1); 41 | 42 | INSERT INTO orders_detail(id_product, id_order, price, quantity) 43 | VALUES ('P0003', 2, 25000, 1), 44 | ('P0004', 3, 25000, 1); 45 | 46 | INSERT INTO orders_detail(id_product, id_order, price, quantity) 47 | VALUES ('P0001', 2, 25000, 1), 48 | ('P0003', 3, 25000, 1); 49 | 50 | SELECT * 51 | FROM orders_detail; 52 | 53 | SELECT * 54 | FROM orders 55 | JOIN orders_detail ON (orders_detail.id_order = orders.id) 56 | JOIN products ON (products.id = orders_detail.id_product); 57 | 58 | SELECT orders.id, products.id, products.name, orders_detail.quantity, orders_detail.price 59 | FROM orders 60 | JOIN orders_detail ON (orders_detail.id_order = orders.id) 61 | JOIN products ON (products.id = orders_detail.id_product); -------------------------------------------------------------------------------- /products.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE products 2 | ( 3 | id VARCHAR(10) NOT NULL, 4 | name VARCHAR(100) NOT NULL, 5 | description TEXT, 6 | price INT UNSIGNED NOT NULL, 7 | quantity INT UNSIGNED NOT NULL DEFAULT 0, 8 | created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 9 | ) ENGINE = InnoDB; 10 | 11 | SHOW TABLES; 12 | 13 | DESCRIBE products; 14 | 15 | INSERT INTO products(id, name, price, quantity) 16 | VALUES ('P0001', 'Mie Ayam Original', 15000, 100); 17 | 18 | SELECT * 19 | FROM products; 20 | 21 | INSERT INTO products(id, name, description, price, quantity) 22 | VALUES ('P0002', 'Mie Ayam Bakso', 'Mie Ayam Original + Bakso', 20000, 100); 23 | 24 | INSERT INTO products(id, name, price, quantity) 25 | VALUES ('P0003', 'Mie Ayam Ceker', 20000, 100), 26 | ('P0004', 'Mie Ayam Spesial', 25000, 100), 27 | ('P0005', 'Mie Ayam Yamin', 15000, 100); 28 | 29 | SELECT * 30 | FROM products; 31 | 32 | SELECT id, name, price, quantity 33 | FROM products; 34 | 35 | SELECT name, quantity, id 36 | FROM products; 37 | 38 | ALTER TABLE products 39 | ADD PRIMARY KEY (id); 40 | 41 | DESCRIBE products; 42 | 43 | SHOW CREATE TABLE products; 44 | 45 | INSERT INTO products(id, name, price, quantity) 46 | VALUES ('P0001', 'Mie Ayam Original', 15000, 100); 47 | 48 | SELECT * 49 | FROM products 50 | WHERE quantity = 100; 51 | 52 | SELECT * 53 | FROM products 54 | WHERE price = 15000; 55 | 56 | SELECT * 57 | FROM products 58 | WHERE id = 'P0001'; 59 | 60 | SELECT * 61 | FROM products 62 | WHERE name = 'mie ayam bakso'; 63 | 64 | DESCRIBE products; 65 | 66 | ALTER TABLE products 67 | ADD COLUMN category ENUM ('Makanan', 'Minuman', 'Lain-Lain') 68 | AFTER name; 69 | 70 | SELECT * 71 | FROM products; 72 | 73 | SELECT * 74 | FROM products 75 | WHERE id = 'P0001'; 76 | 77 | UPDATE products 78 | SET category = 'Makanan' 79 | WHERE id = 'P0001'; 80 | 81 | UPDATE products 82 | SET category = 'Makanan', 83 | description = 'Mie Ayam Original + Ceker' 84 | WHERE id = 'P0003'; 85 | 86 | UPDATE products 87 | SET price = price + 5000 88 | WHERE id = 'P0005'; 89 | 90 | INSERT INTO products(id, name, price, quantity) 91 | VALUES ('P0009', 'Mie Ayam Original', 15000, 100); 92 | 93 | DELETE 94 | FROM products 95 | WHERE id = 'P0009'; 96 | 97 | SELECT id AS Kode, 98 | name AS Nama, 99 | category AS Kategori, 100 | price AS Harga, 101 | quantity AS Jumlah 102 | FROM products; 103 | 104 | SELECT p.id AS Kode, 105 | p.name AS Nama, 106 | p.category AS Kategori, 107 | p.price AS Harga, 108 | p.quantity AS Jumlah 109 | FROM products AS p; 110 | 111 | INSERT INTO products(id, category, name, price, quantity) 112 | VALUES ('P0006', 'Makanan', 'Bakso Rusuk', 25000, 200), 113 | ('P0007', 'Minuman', 'Es Jeruk', 10000, 300), 114 | ('P0008', 'Minuman', 'Es Campur', 15000, 500), 115 | ('P0009', 'Minuman', 'Es Teh Manis', 5000, 400), 116 | ('P0010', 'Lain-Lain', 'Kerupuk', 2500, 1000), 117 | ('P0011', 'Lain-Lain', 'Keripik Udang', 10000, 300), 118 | ('P0012', 'Lain-Lain', 'Es Krim', 5000, 200), 119 | ('P0013', 'Makanan', 'Mie Ayam Jamur', 20000, 50), 120 | ('P0014', 'Makanan', 'Bakso Telor', 20000, 150), 121 | ('P0015', 'Makanan', 'Bakso Jando', 25000, 300); 122 | 123 | SELECT * 124 | FROM products 125 | WHERE quantity > 100; 126 | 127 | SELECT * 128 | FROM products 129 | WHERE quantity >= 100; 130 | 131 | SELECT * 132 | FROM products 133 | WHERE category != 'Makanan'; 134 | 135 | SELECT * 136 | FROM products 137 | WHERE category <> 'Minuman'; 138 | 139 | SELECT * 140 | FROM products 141 | WHERE quantity > 100 142 | AND price > 20000; 143 | 144 | SELECT * 145 | FROM products 146 | WHERE category = 'Makanan' 147 | AND price < 20000; 148 | 149 | SELECT * 150 | FROM products 151 | WHERE quantity > 100 152 | OR price > 20000; 153 | 154 | SELECT * 155 | FROM products 156 | WHERE (category = 'Makanan' OR quantity > 500) 157 | AND price > 20000; 158 | 159 | SELECT * 160 | FROM products 161 | WHERE name LIKE '%mie%'; 162 | 163 | SELECT * 164 | FROM products 165 | WHERE name LIKE '%bakso%'; 166 | 167 | SELECT * 168 | FROM products 169 | WHERE name LIKE '%usu%'; 170 | 171 | SELECT * 172 | FROM products 173 | WHERE description IS NULL; 174 | 175 | SELECT * 176 | FROM products 177 | WHERE description IS NOT NULL; 178 | 179 | SELECT * 180 | FROM products 181 | WHERE price BETWEEN 10000 AND 20000; 182 | 183 | SELECT * 184 | FROM products 185 | WHERE price NOT BETWEEN 10000 AND 20000; 186 | 187 | SELECT * 188 | FROM products 189 | WHERE category IN ('Makanan', 'Minuman'); 190 | 191 | SELECT * 192 | FROM products 193 | WHERE category NOT IN ('Makanan', 'Minuman'); 194 | 195 | SELECT id, category, name 196 | FROM products 197 | ORDER BY category; 198 | 199 | SELECT id, category, price, name 200 | FROM products 201 | ORDER BY category ASC, price DESC; 202 | 203 | SELECT * 204 | FROM products 205 | ORDER BY id 206 | LIMIT 5; 207 | 208 | SELECT * 209 | FROM products 210 | ORDER BY id 211 | LIMIT 3; 212 | 213 | SELECT * 214 | FROM products 215 | ORDER BY id 216 | LIMIT 0, 5; 217 | 218 | SELECT * 219 | FROM products 220 | ORDER BY id 221 | LIMIT 5, 5; 222 | 223 | SELECT * 224 | FROM products 225 | ORDER BY id 226 | LIMIT 10, 5; 227 | 228 | SELECT * 229 | FROM products 230 | ORDER BY id 231 | LIMIT 15, 5; 232 | 233 | SELECT DISTINCT category 234 | FROM products; 235 | 236 | SELECT 10, 10, 10 * 10 as Hasil; 237 | 238 | SELECT id, name, price, price DIV 1000 AS 'Price in K' 239 | FROM products; 240 | 241 | SELECT id, COS(price), SIN(price), TAN(price) 242 | FROM products; 243 | 244 | SELECT id, name, price 245 | FROM products 246 | WHERE price DIV 1000 > 15; 247 | 248 | SELECT id, 249 | LOWER(name) as 'Name Lower', 250 | UPPER(name) as 'Name Lower', 251 | LENGTH(name) as 'Name Length' 252 | FROM products; 253 | 254 | SELECT id, 255 | created_at, 256 | EXTRACT(YEAR FROM created_at) as Year, 257 | EXTRACT(MONTH FROM created_at) as Month 258 | FROM products; 259 | 260 | SELECT id, created_at, YEAR(created_at), MONTH(created_at) 261 | FROM products; 262 | 263 | SELECT id, 264 | category, 265 | CASE category 266 | WHEN 'Makanan' THEN 'Enak' 267 | WHEN 'Minuman' THEN 'Segar' 268 | ELSE 'Apa Itu?' 269 | END AS 'Category' 270 | FROM products; 271 | 272 | SELECT id, 273 | price, 274 | IF(price <= 15000, 'Murah', IF(price <= 20000, 'Mahal', 'Mahal Banget')) as 'Mahal?' 275 | FROM products; 276 | 277 | SELECT id, name, IFNULL(description, 'Kosong') 278 | FROM products; 279 | 280 | SELECT COUNT(id) as 'Total Product' 281 | FROM products; 282 | 283 | SELECT MAX(price) as 'Product Termahal' 284 | FROM products; 285 | 286 | SELECT MIN(price) as 'Product Termurah' 287 | FROM products; 288 | 289 | SELECT AVG(price) as 'Rata-Rata Harga' 290 | FROM products; 291 | 292 | SELECT SUM(quantity) AS 'Total Stock' 293 | FROM products; 294 | 295 | SELECT COUNT(id) as 'Total Product', category 296 | FROM products 297 | GROUP BY category; 298 | 299 | SELECT MAX(price) as 'Product Termahal', category 300 | FROM products 301 | GROUP BY category; 302 | 303 | SELECT MIN(price) as 'Product Termurah', category 304 | FROM products 305 | GROUP BY category; 306 | 307 | SELECT AVG(price) as 'Rata-Rata Harga', category 308 | FROM products 309 | GROUP BY category; 310 | 311 | SELECT SUM(quantity) AS 'Total Stock', category 312 | FROM products 313 | GROUP BY category; 314 | 315 | SELECT COUNT(id) as total, 316 | category 317 | FROM products 318 | GROUP BY category 319 | HAVING total > 5; 320 | 321 | SELECT * 322 | FROM products; 323 | 324 | INSERT INTO products(id, name, category, price, quantity) 325 | VALUES ('P0016', 'Permen', 'Lain-Lain', 500, 1000); 326 | 327 | UPDATE products 328 | SET price = 1000 329 | WHERE id = 'P0016'; 330 | 331 | ALTER TABLE products 332 | ADD CONSTRAINT price_check CHECK ( price >= 1000 ); 333 | 334 | SHOW CREATE TABLE products; 335 | 336 | INSERT INTO products(id, name, category, price, quantity) 337 | VALUES ('P0017', 'Permen Lagi', 'Lain-Lain', 500, 1000); 338 | 339 | UPDATE products 340 | SET price = 500 341 | WHERE id = 'P0016'; 342 | 343 | ALTER TABLE products 344 | ADD FULLTEXT product_fulltext (name, description); 345 | 346 | SHOW CREATE TABLE products; 347 | 348 | SELECT * 349 | FROM products 350 | WHERE name LIKE '%ayam%' 351 | OR description LIKE '%ayam%'; 352 | 353 | SELECT * 354 | FROM products 355 | WHERE MATCH(name, description) 356 | AGAINST('ayam' IN NATURAL LANGUAGE MODE); 357 | 358 | SELECT * 359 | FROM products 360 | WHERE MATCH(name, description) 361 | AGAINST('+ayam -bakso' IN BOOLEAN MODE); 362 | 363 | SELECT * 364 | FROM products 365 | WHERE MATCH(name, description) 366 | AGAINST('bakso' WITH QUERY EXPANSION); 367 | 368 | DESC products; 369 | 370 | SELECT * 371 | FROM products; 372 | 373 | INSERT INTO products(id, name, category, price, quantity) 374 | VALUES ('Pxxxx', 'Contoh', 'Lain-Lain', 1000, 1000); 375 | 376 | 377 | INSERT INTO products(id, name, price, quantity) 378 | VALUES ('X0001', 'X Satu', 25000, 200), 379 | ('X0002', 'X Dua', 10000, 300), 380 | ('X0003', 'X Tiga', 15000, 500); 381 | 382 | SELECT * 383 | FROM products 384 | WHERE price > (SELECT AVG(price) FROM products); 385 | 386 | SELECT MAX(price) 387 | FROM products; 388 | 389 | SELECT * 390 | FROM products; 391 | 392 | SELECT MAX(cp.price) 393 | FROM (SELECT price 394 | FROM categories 395 | JOIN products ON (products.id_category = categories.id)) as cp; 396 | 397 | UPDATE products 398 | SET price=1000000 399 | WHERE id = 'X0003'; -------------------------------------------------------------------------------- /sellers.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE sellers 2 | ( 3 | id INT NOT NULL AUTO_INCREMENT, 4 | name VARCHAR(100) NOT NULL, 5 | name2 VARCHAR(100) , 6 | name3 VARCHAR(100) , 7 | email VARCHAR(100) NOT NULL, 8 | PRIMARY KEY (id), 9 | UNIQUE KEY email_unique (email), 10 | INDEX name_index (name), 11 | INDEX name2_index (name2), 12 | INDEX name3_index (name3), 13 | INDEX name1_name2_name3_index (name, name2, name3) 14 | ) ENGINE = InnoDB; 15 | 16 | DROP TABLE sellers; 17 | 18 | DESC sellers; 19 | 20 | SHOW CREATE TABLE sellers; 21 | 22 | SELECT * FROM sellers WHERE name = 'X'; 23 | 24 | SELECT * FROM sellers WHERE name = 'X' AND name2 = 'X'; 25 | 26 | SELECT * FROM sellers WHERE name2 = 'X'; 27 | 28 | SELECT * FROM sellers WHERE name = 'X' AND name2 = 'X' AND name3 = 'X'; 29 | 30 | ALTER TABLE sellers 31 | DROP INDEX name_index; -------------------------------------------------------------------------------- /transaction.sql: -------------------------------------------------------------------------------- 1 | START TRANSACTION; 2 | 3 | INSERT INTO guestbooks (email, title, content) 4 | VALUES ('contoh@gmail.com', 'Contoh', 'Contoh'), 5 | ('contoh2@gmail.com', 'Contoh', 'Contoh'), 6 | ('contoh3@gmail.com', 'Contoh', 'Contoh'); 7 | 8 | SELECT * 9 | FROM guestbooks; 10 | 11 | COMMIT; 12 | 13 | START TRANSACTION; 14 | 15 | DELETE 16 | FROM guestbooks; 17 | 18 | SELECT * 19 | FROM guestbooks; 20 | 21 | ROLLBACK; -------------------------------------------------------------------------------- /user.sql: -------------------------------------------------------------------------------- 1 | CREATE USER 'eko'@'localhost'; 2 | CREATE USER 'khannedy'@'%'; 3 | 4 | DROP USER 'eko'@'localhost'; 5 | DROP USER 'khannedy'@'%'; 6 | 7 | GRANT SELECT ON belajar_mysql.* TO 'eko'@'localhost'; 8 | 9 | GRANT SELECT ON belajar_mysql.* TO 'khannedy'@'%'; 10 | GRANT INSERT, UPDATE, DELETE ON belajar_mysql.* TO 'khannedy'@'%'; 11 | 12 | SHOW GRANTS FOR 'eko'@'localhost'; 13 | SHOW GRANTS FOR 'khannedy'@'%'; 14 | 15 | SET PASSWORD FOR 'eko'@'localhost' = 'rahasia'; 16 | SET PASSWORD FOR 'khannedy'@'%' = 'rahasia'; 17 | 18 | INSERT INTO guestbooks(email, title, content) 19 | VALUES ('contoh@gmail.com', 'Hello', 'Hello'); 20 | 21 | CREATE TABLE contoh 22 | ( 23 | id INT NOT NULL, 24 | PRIMARY KEY (id) 25 | ) ENGINE = InnoDB; -------------------------------------------------------------------------------- /user1.sql: -------------------------------------------------------------------------------- 1 | START TRANSACTION ; 2 | 3 | SELECT * FROM guestbooks; 4 | 5 | UPDATE guestbooks 6 | SET title = 'Diubah Oleh User 1' 7 | WHERE id = 9; 8 | 9 | COMMIT; 10 | 11 | START TRANSACTION ; 12 | 13 | SELECT * FROm products; 14 | 15 | SELECT * FROM products WHERE id = 'P0001' FOR UPDATE; 16 | 17 | UPDATE products 18 | SET quantity = quantity - 10 19 | WHERE id = 'P0001'; 20 | 21 | COMMIT ; 22 | 23 | # DEADLOCK 24 | 25 | START TRANSACTION ; 26 | 27 | SELECT * FROM products WHERE id = 'P0001' FOR UPDATE ; 28 | 29 | SELECT * FROM products WHERE id = 'P0002' FOR UPDATE ; 30 | 31 | # LOCK TABLE READ 32 | 33 | LOCK TABLES products READ; 34 | 35 | UPDATE products 36 | SET quantity = 100 37 | WHERE id = 'P0001'; 38 | 39 | UNLOCK TABLES ; 40 | 41 | # LOCK TABLE WRITE 42 | 43 | LOCK TABLES products WRITE ; 44 | 45 | UPDATE products 46 | SET quantity = 100 47 | WHERE id = 'P0001'; 48 | 49 | SELECT * FROM products; 50 | 51 | UNLOCK TABLES ; 52 | 53 | # LOCK INSTANCE 54 | 55 | LOCK INSTANCE FOR BACKUP; 56 | 57 | UNLOCK INSTANCE; -------------------------------------------------------------------------------- /user2.sql: -------------------------------------------------------------------------------- 1 | START TRANSACTION ; 2 | 3 | SELECT * FROM guestbooks; 4 | 5 | UPDATE guestbooks 6 | SET title = 'Diubah Oleh User 2' 7 | WHERE id = 9; 8 | 9 | COMMIT ; 10 | 11 | START TRANSACTION ; 12 | 13 | SELECT * FROm products; 14 | 15 | SELECT * FROM products WHERE id = 'P0001' FOR UPDATE ; 16 | 17 | UPDATE products 18 | SET quantity = quantity - 10 19 | WHERE id = 'P0001'; 20 | 21 | COMMIT ; 22 | 23 | # DEADLOCK 24 | 25 | START TRANSACTION ; 26 | 27 | SELECT * FROM products WHERE id = 'P0002' FOR UPDATE ; 28 | 29 | SELECT * FROM products WHERE id = 'P0001' FOR UPDATE ; 30 | 31 | # LOCK TABLE READ 32 | 33 | SELECT * FROM products; 34 | 35 | UPDATE products 36 | SET quantity = 100 37 | WHERE id = 'P0001'; 38 | 39 | # LOCK TABLE WRITE 40 | 41 | SELECT * FROM products; 42 | 43 | # LOCK INSTANCE 44 | 45 | ALTER TABLE products 46 | ADD column sample VARCHAR(100); 47 | -------------------------------------------------------------------------------- /wallet.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE wallet 2 | ( 3 | id INT NOT NULL AUTO_INCREMENT, 4 | id_customer INT NOT NULL, 5 | balance INT NOT NULL DEFAULT 0, 6 | PRIMARY KEY (id), 7 | UNIQUE KEY id_customer_unique (id_customer), 8 | FOREIGN KEY fk_wallet_customer (id_customer) REFERENCES customers (id) 9 | ) ENGINE = InnoDB; 10 | 11 | DESCRIBE wallet; 12 | 13 | SELECT * 14 | FROM customers; 15 | 16 | INSERT INTO wallet(id_customer) 17 | VALUES (1), 18 | (3); 19 | 20 | SELECT * 21 | FROM wallet; 22 | 23 | SELECT customers.email, wallet.balance 24 | FROM wallet 25 | JOIN customers ON (wallet.id_customer = customers.id); -------------------------------------------------------------------------------- /wishlist.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE wishlist 2 | ( 3 | id INT NOT NULL AUTO_INCREMENT, 4 | id_product VARCHAR(10) NOT NULL, 5 | description TEXT, 6 | PRIMARY KEY (id), 7 | CONSTRAINT fk_wishlist_product 8 | FOREIGN KEY (id_product) REFERENCES products (id) 9 | ) ENGINE = InnoDB; 10 | 11 | DESCRIBE wishlist; 12 | 13 | SHOW CREATE TABLE wishlist; 14 | 15 | ALTER TABLE wishlist 16 | DROP CONSTRAINT fk_wishlist_product; 17 | 18 | ALTER TABLE wishlist 19 | ADD CONSTRAINT fk_wishlist_product 20 | FOREIGN KEY (id_product) REFERENCES products (id) 21 | ON DELETE CASCADE ON UPDATE CASCADE; 22 | 23 | INSERT INTO wishlist(id_product, description) 24 | VALUES ('P0001', 'Makanan Kesukaan'); 25 | 26 | INSERT INTO wishlist(id_product, description) 27 | VALUES ('SALAH', 'Makanan Kesukaan'); 28 | 29 | SELECT * 30 | FROM wishlist; 31 | 32 | DELETE 33 | FROM products 34 | WHERE id = 'Pxxxx'; 35 | 36 | INSERT INTO wishlist(id_product, description) 37 | VALUES ('Pxxxx', 'Makanan Kesukaan'); 38 | 39 | SELECT * 40 | FROM wishlist 41 | JOIN products ON (wishlist.id_product = products.id); 42 | 43 | SELECT w.id as id_wistlist, 44 | p.id AS id_product, 45 | p.name as product_name, 46 | w.description AS wishlist_description 47 | FROM wishlist AS w 48 | JOIN products AS p ON (w.id_product = p.id); 49 | 50 | DESC wishlist; 51 | 52 | ALTER TABLE wishlist 53 | ADD COLUMN id_customer INT; 54 | 55 | ALTER TABLE wishlist 56 | ADD CONSTRAINT fk_wishlist_customer 57 | FOREIGN KEY (id_customer) REFERENCES customers(id); 58 | 59 | SELECT * FROM customers; 60 | 61 | UPDATE wishlist 62 | SET id_customer = 1 63 | WHERE id = 1; 64 | 65 | SELECT * FROM wishlist; 66 | 67 | SELECT customers.email, products.id, products.name, wishlist.description 68 | FROM wishlist 69 | JOIN products ON (products.id = wishlist.id_product) 70 | JOIN customers ON (customers.id = wishlist.id_customer); --------------------------------------------------------------------------------