Get Inspiration
Rabu, 30 Januari 2013
Modul 6 - MySQL (Sintaks)
Nomor 1
mysql> SHOW
DATABASES;
+--------------------+
| Database |
+--------------------+
|
information_schema |
| bandara |
|
dbperpustakaan |
| mysql |
|
performance_schema |
| pethouse |
| prak1 |
| prak2 |
| smbd |
| test |
+--------------------+
10 rows in set
(0.00 sec)
mysql> CREATE
DATABASE kuliah;
Query OK, 1 row
affected (0.00 sec)
mysql> USE
kuliah;
Database changed
mysql> CREATE
TABLE instruktur(nip char(1) primary key, namains varchar(30) not
null, jurusan
varchar(30) not null, asalkota varchar(30) not null);
Query OK, 0 rows
affected (0.08 sec)
mysql> DESC
instruktur;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| nip | char(1) | NO
| PRI | NULL | |
| namains | varchar(30) | NO |
| NULL | |
| jurusan | varchar(30) | NO |
| NULL | |
| asalkota |
varchar(30) | NO | | NULL
| |
+----------+-------------+------+-----+---------+-------+
4 rows in set
(0.02 sec)
mysql> CREATE
TABLE matakuliah(nomk varchar(6) primary key, namamk varchar(50) n
ot null, sks int
not null);
Query OK, 0 rows
affected (0.09 sec)
mysql> DESC
matakuliah;
+--------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| nomk | varchar(6)
| NO | PRI | NULL |
|
| namamk |
varchar(50) | NO | | NULL
| |
| sks | int(11) | NO
| | NULL |
|
+--------+-------------+------+-----+---------+-------+
3 rows in set
(0.01 sec)
mysql> CREATE
TABLE kuliah(nip char(1) not null references instruktur(nip), nomk
varchar(6) not null references
matakuliah(nomk), ruangan varchar(3) not null, j
mlmhs int not
null);
Query OK, 0 rows
affected (0.09 sec)
mysql> DESC
kuliah;
+---------+------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+---------+------------+------+-----+---------+-------+
| nip | char(1) | NO
| | NULL |
|
| nomk | varchar(6) | NO |
| NULL | |
| ruangan |
varchar(3) | NO | | NULL
| |
| jmlmhs | int(11)
| NO | | NULL
| |
+---------+------------+------+-----+---------+-------+
4 rows in set
(0.00 sec)
mysql> SELECT
* FROM instruktur;
+-----+---------------+---------------+----------+
| nip |
namains | jurusan | asalkota |
+-----+---------------+---------------+----------+
| 1 | Steve Wozniak | Ilmu Komputer |
Bantul |
| 2 | Steve Jobs | Seni Rupa | Solo
|
| 3 | James Gosling | Ilmu Komputer |
Klaten |
| 4 | Bill Gates | Ilmu Komputer | Magelang |
+-----+---------------+---------------+----------+
4 rows in set
(0.00 sec)
mysql> SELECT
* FROM matakuliah;
+--------+--------------------------------+-----+
| nomk | namamk
| sks |
+--------+--------------------------------+-----+
| KOM101 |
Algoritma dan Pemrograman | 3 |
| KOM102 | Basis
Data | 3 |
| KOM201 |
Pemrograman Berorientasi Objek | 3 |
| SR101 | Desain Elementer | 3 |
+--------+--------------------------------+-----+
4 rows in set
(0.00 sec)
mysql> SELECT
* FROM kuliah;
+-----+--------+---------+--------+
| nip |
nomk | ruangan | jmlmhs |
+-----+--------+---------+--------+
| 1 | KOM101 | 101 |
50 |
| 1 | KOM102 | 102 |
35 |
| 2 | SR101
| 101 | 45 |
| 3 | KOM201 | 101 |
55 |
+-----+--------+---------+--------+
4 rows in set
(0.00 sec)
Nomor 2
Nomor a
mysql> SELECT
* FROM instruktur;
+-----+---------------+---------------+----------+
| nip |
namains | jurusan | asalkota |
+-----+---------------+---------------+----------+
| 1 | Steve Wozniak | Ilmu Komputer |
Bantul |
| 2 | Steve Jobs | Seni Rupa | Solo
|
| 3 | James Gosling | Ilmu Komputer |
Klaten |
| 4 | Bill Gates | Ilmu Komputer | Magelang |
+-----+---------------+---------------+----------+
4 rows in set
(0.00 sec)
Nomor b
mysql> SELECT
matakuliah.nomk FROM matakuliah JOIN kuliah ON matakuliah.nomk = k
uliah.nomk WHERE
kuliah.jmlmhs > 40;
+--------+
| nomk |
+--------+
| KOM101 |
| SR101 |
| KOM201 |
+--------+
3 rows in set
(0.06 sec)
Nomor c
mysql> SELECT
matakuliah.nomk, matakuliah.namamk FROM matakuliah JOIN kuliah ON
matakuliah.nomk
= kuliah.nomk WHERE kuliah.jmlmhs > 40;
+--------+--------------------------------+
| nomk | namamk |
+--------+--------------------------------+
| KOM101 |
Algoritma dan Pemrograman |
| KOM201 |
Pemrograman Berorientasi Objek |
| SR101 | Desain Elementer |
+--------+--------------------------------+
3 rows in set
(0.05 sec)
Nomor d
mysql> SELECT
kuliah.nip FROM kuliah WHERE nomk = 'KOM102';
+-----+
| nip |
+-----+
| 1 |
+-----+
1 row in set
(0.00 sec)
Nomor e
mysql> SELECT
kuliah.nip FROM kuliah JOIN matakuliah USING(nomk) WHERE namamk =
'Basis Data';
+-----+
| nip |
+-----+
| 1 |
+-----+
1 row in set
(0.00 sec)
Nomor f
mysql> SELECT
kuliah.nip, instruktur.namains FROM kuliah JOIN matakuliah USING(n
omk) JOIN
instruktur USING(nip) WHERE namamk = 'Basis Data';
+-----+---------------+
| nip |
namains |
+-----+---------------+
| 1 | Steve Wozniak |
+-----+---------------+
1 row in set
(0.05 sec)
Nomor g
mysql> SELECT
matakuliah.namamk, kuliah.ruangan FROM kuliah JOIN matakuliah USIN
G(nomk) JOIN
instruktur USING(nip) WHERE instruktur.namains = 'Steve Jobs';
+------------------+---------+
| namamk | ruangan |
+------------------+---------+
| Desain
Elementer | 101 |
+------------------+---------+
1 row in set
(0.00 sec)
Nomor h
mysql> SELECT
SUM(kuliah.jmlmhs) FROM kuliah JOIN instruktur USING(nip) JOIN mat
akuliah
USING(nomk) WHERE instruktur.namains = 'Steve Wozniak';
+--------------------+
|
SUM(kuliah.jmlmhs) |
+--------------------+
| 85 |
+--------------------+
1 row in set
(0.08 sec)
Nomor i
mysql> SELECT
instruktur.nip, instruktur.namains FROM instruktur JOIN kuliah USI
NG(nip) WHERE
jmlmhs IN (SELECT MAX(jmlmhs) FROM kuliah);
+-----+---------------+
| nip |
namains |
+-----+---------------+
| 3 | James Gosling |
+-----+---------------+
1 row in set
(0.00 sec)
Nomor j
mysql> SELECT
instruktur.nip, instruktur.namains FROM instruktur WHERE nip NOT I
N (SELECT nip
FROM kuliah);
+-----+------------+
| nip |
namains |
+-----+------------+
| 4 | Bill Gates |
+-----+------------+
1 row in set
(0.00 sec)
Nomor 3
Nomor a
mysql> CREATE
VIEW view1 AS SELECT instruktur.nip, instruktur.namains FROM instr
uktur WHERE nip
NOT IN (SELECT nip FROM kuliah);
Query OK, 0 rows
affected (0.11 sec)
mysql> SELECT
* FROM view1;
+-----+------------+
| nip |
namains |
+-----+------------+
| 4 | Bill Gates |
+-----+------------+
1 row in set
(0.04 sec)
Nomor b
mysql> SELECT
kuliah.nip, instruktur.namains, count(nomk) FROM kuliah JOIN instr
uktur USING(nip)
GROUP BY nip;
+-----+---------------+-------------+
| nip |
namains | count(nomk) |
+-----+---------------+-------------+
| 1 | Steve Wozniak | 2 |
| 2 | Steve Jobs |
1 |
| 3 | James Gosling | 1 |
+-----+---------------+-------------+
3 rows in set
(0.00 sec)
Nomor 4
mysql>
DELIMITER //
mysql> CREATE
TRIGGER up_data AFTER UPDATE
-> ON kuliah
-> FOR EACH ROW
-> BEGIN
-> INSERT INTO log
-> VALUES(user(), concat('merubah
ruangan ',NEW.nomk,' dari ruang ',OLD.ruan
gan ,' ke
',NEW.ruangan));
-> END //
Query OK, 0 rows
affected (0.11 sec)
mysql> SELECT
* FROM kuliah;
-> //
+-----+--------+---------+--------+
| nip |
nomk | ruangan | jmlmhs |
+-----+--------+---------+--------+
| 1 | KOM101 | 101 |
50 |
| 1 | KOM102 | 102 |
35 |
| 2 | SR101
| 101 | 45 |
| 3 | KOM201 | 101 |
55 |
+-----+--------+---------+--------+
4 rows in set
(0.00 sec)
mysql> UPDATE
kuliah SET ruangan='102' WHERE nomk = 'KOM101';
-> //
Query OK, 1 row
affected (0.08 sec)
Rows matched:
1 Changed: 1 Warnings: 0
mysql>
DELIMITER ;
mysql> SELECT
* FROM log;
+----------------+----------------------------------------------+
| user_id | deskripsi |
+----------------+----------------------------------------------+
| root@localhost
| merubah ruangan KOM101 dari ruang 101 ke 102 |
+----------------+----------------------------------------------+
1 row in set
(0.00 sec)
Nomor 5
Nomor c
mysql>
DELIMITER //
mysql> CREATE
PROCEDURE showRoom (IN nama varchar(30))
-> BEGIN
-> SELECT matakuliah.namamk,
kuliah.ruangan FROM kuliah JOIN matakuliah USIN
G(nomk) JOIN
instruktur USING(nip) WHERE instruktur.namains LIKE nama;
-> END //
Query OK, 0 rows
affected (0.04 sec)
mysql>
DELIMITER ;
mysql> CALL
showRoom('Steve Jobs');
+------------------+---------+
| namamk | ruangan |
+------------------+---------+
| Desain
Elementer | 101 |
+------------------+---------+
1 row in set
(0.05 sec)
Query OK, 0 rows
affected (0.05 sec)
mysql> CALL
showRoom('Steve Wozniak');
+---------------------------+---------+
| namamk | ruangan |
+---------------------------+---------+
| Algoritma dan
Pemrograman | 102 |
| Basis
Data | 102 |
+---------------------------+---------+
2 rows in set
(0.00 sec)
Query OK, 0 rows
affected (0.00 sec)
Nomor d
mysql>
DELIMITER //
mysql> CREATE
PROCEDURE getSks(IN nama varchar(30))
-> BEGIN
-> SELECT SUM(matakuliah.sks) FROM
kuliah JOIN matakuliah USING(nomk) JOIN i
nstruktur
USING(nip) WHERE instruktur.namains LIKE nama;
-> END //
Query OK, 0 rows
affected (0.00 sec)
mysql> CALL
getSks('Steve Jobs');
-> //
+---------------------+
| SUM(matakuliah.sks)
|
+---------------------+
| 3 |
+---------------------+
1 row in set
(0.00 sec)
Query OK, 0 rows
affected (0.00 sec)
mysql>
DELIMITER ;
mysql> CALL
getSks('Steve Wozniak');
+---------------------+
|
SUM(matakuliah.sks) |
+---------------------+
| 6 |
+---------------------+
1 row in set
(0.00 sec)
Query OK, 0 rows
affected (0.01 sec)
Modul 4 - MySQL
VIEW DAN TRIGGER
View adalah
query tersimpan yang menghasilkan result set ketika dipanggil. View bertindak
sebagai
tabel virtual.
1.
Pembuatan
view
CREATE [OR REPLACE] [<algorithm attributes>] VIEW [database.]<
name> [(<columns>)] AS <SELECT statement> [WITH <LOCAL | CASCADE> <check options>]
mysql>
CREATE VIEW view1 AS
-> SELECT CONCAT(first_name, "
", last_name), city FROM employee;
mysql>
SELECT * FROM view1;
mysql>
CREATE VIEW view2 (name, place) AS
->
SELECT CONCAT(first_name, " ", last_name), city FROM employee;
mysql>
SELECT * FROM view2;
2.
Updatable
View
mysql> UPDATE view2 SET
place = "Canberra "
WHERE place =
"Toronto ";
mysql> select * from
employee where city = 'Canberra ';
mysql> UPDATE view2 SET
place = "Toronto "
WHERE place =
"Canberra ";
3.
Klausa
WITH CHECK OPTION
mysql> CREATE VIEW v1 AS
-> SELECT first_name, salary, city
FROM employee WHERE salary <
3000
-> WITH CHECK OPTION;
mysql> CREATE VIEW v2 AS
SELECT * FROM v1 WHERE salary > 0
WITH LOCAL CHECK OPTION;
mysql> CREATE VIEW v3 AS
SELECT * FROM v1 WHERE salary > 0
WITH CASCADED CHECK OPTION;
mysql> INSERT INTO v2
VALUES ("Doe", 3500, "Indonesia ");
4.
Merubah
View
mysql> ALTER VIEW view1
(name, city) AS
-> SELECT CONCAT(first_name, "
", last_name), city FROM
employee;
5.
Melihat
definisi pembuatan view
mysql> SHOW CREATE VIEW
view1\G
6.
Menghapus
View
DROP VIEW view1;
TRIGGER
Trigger
adalah sebuah objek database yang diasosiasikan dengan sebuah tabel. Trigger
diaktifkan ketika sebuah event terjadi pada tabel yang diasosiasikan. Tabel
yang diasosiasikan dengan trigger haruslah sebuah tabel yang permanen dan bukan
temporary tabel.
1.
Membuat
trigger
CREATE TRIGGER <trigger_name> <trigger_time>
<trigger_event>
ON <table> FOR EACH ROW <trigger_body statements>
2.
Before
Trigger
mysql>
DELIMITER //
mysql>
CREATE TRIGGER before_insert BEFORE INSERT ON employee
->
FOR EACH ROW
->
BEGIN
->
IF NEW.salary IS NULL OR NEW.salary = 0 THEN
->
SET NEW.salary = 1000;
->
ELSE
->
SET NEW.salary = NEW.salary + 100;
->
END IF;
-> END //
mysql>
DELIMITER ;
mysql>
insert into employee(id,first_name, last_name, start_date, end_Date,
salary,
City, Description)
-> values (1,'John', 'Doe',
'19960725', '20060725', 0, 'Canberra ',
'Programmer');
mysql>
DELIMITER &&
mysql>
CREATE TRIGGER before_update BEFORE UPDATE
ON
employee
->
FOR EACH ROW
->
BEGIN
->
UPDATE employee SET salary = salary+(NEW.salary - OLD.salary)
->
WHERE id = NEW.id;
-> END &&
mysql> DELIMITER ;
3.
After
Trigger
mysql>
CREATE TABLE trans_log(
->
user_id VARCHAR(15),
->
description VARCHAR(50)
-> );
mysql>
DELIMITER $$
mysql>
CREATE TRIGGER log_salary AFTER UPDATE
-> ON employee
-> FOR EACH ROW
-> BEGIN
-> INSERT INTO trans_log
->
VALUES (user(), CONCAT('merubah akun ',NEW.id,' dari ',OLD.salary, ' to
',NEW.salary));
-> END $$
mysql> DELIMITER ;
mysql> UPDATE employee SET salary =
salary + 1000;
mysql> SELECT * FROM trans_log;
4.
Melihat
trigger yang sudah dibuat
mysql> SHOW TRIGGERS IN PRAK2\G
5.
Menghapus
Trigger
mysql> DROP TRIGGER before_insert;
Screenshot / lanjutan ada di :
MODUL 5
FUNCTION DAN PROCEDURE
Intro Stored Routine
Stored
routine (function dan procedure) merupakan sekumpulan statement SQL yang dapat
disimpan dalam server. Setelah routine disimpan, client tidak perlu memanggil
statement individual terus menerus, namun cukup dengan memanggil stored
routine.
Function
Sebuah
function dapat digunakan secara langsung dalam statement SELECT, UPDATE, dan
DELETE. Hasil dari function dapat dikembalikan sebagai output. Sebuah function
hanya dapat mengembalikan sebuah nilai saja.
1.
Membuat
function
mysql>
DELIMITER //
mysql>
CREATE FUNCTION full_name( in_first_name VARCHAR(15),
in_last_name
VARCHAR(15))
->
RETURNS VARCHAR(35)
->
BEGIN
->
RETURN CONCAT(in_first_name,' ',in_last_name);
-> END//
mysql> DELIMITER ;
mysql> SELECT full_name(first_name,
last_name) FROM employee;
2.
Melihat
function yang telah dibuat
mysql> SHOW FUNCTION STATUS;
3.
Menghapus
function
mysql> DROP FUNCTION full_name;
Procedure
Procedure
dapat berisi statement SQL (INSERT, UPDATE, DELETE, SELECT) atau operasi lain
yang disimpan dalam database. Sebuah procedure dapat dipanggil menggunakan
statement CALL nama_procedure disertai parameter yang diperlukan.
1.
Membuat
procedure
CREATE PROCEDURE sp_name ([proc_parameter[,...]])
routine_body
mysql>
DELIMITER //
mysql>
CREATE PROCEDURE show_employees()
->
BEGIN
->
SELECT * FROM employee;
-> END //
mysql>
DELIMITER ;
mysql> CALL show_employees();
2. Parameter dalam procedure
proc_parameter:
[ IN | OUT | INOUT ]
param_name type
Parameter IN
mysql>
DELIMITER $$
mysql>
CREATE PROCEDURE getEmployeeByCity (IN cityName
VARCHAR(255))
-> BEGIN
-> SELECT * FROM employee WHERE city LIKE cityName;
-> END $$
mysql> DELIMITER ;
mysql> CALL getEmployeeByCity("Vancouver ");
Parameter OUT
mysql> DELIMITER :)
mysql> CREATE PROCEDURE getNumEmployee (OUT numEmployee
INT)
-> BEGIN
-> SELECT COUNT(*) INTO numEmployee FROM employee;
->
END :)
mysql> DELIMITER ;
mysql> CALL getNumEmployee(@num);
mysql> SELECT @num;
Parameter INOUT
mysql> DELIMITER ^^
mysql> CREATE PROCEDURE increase(INOUT number INT)
-> BEGIN
-> SET number = number + 15;
->
END ^^
mysql> DELIMITER ;
mysql> SET @num = 100;
mysql> CALL increase(@num);
mysql> SELECT @num;
3.
Melihat
procedure yang telah dibuat
mysql> SHOW PROCEDURE STATUS;
4.
Menghapus
procedure
mysql> DROP PROCEDURE
increaseSalary;
Pemrograman di Function dan Procedure
Di
dalam function dan procedure, kita bisa memasukkan logika pemrograman. Ada beberapa karakteristik
pemrograman yang didukung oleh MySQL. Beberapa di antaranya adalah penggunaan variabel,
kendali kondisional, dan perulangan.
1.
Variabel
DECLARE var_name [, var_name] ...
type [DEFAULT
value]
DECLARE total_sale INT
DECLARE x, y INT DEFAULT 0
SET total_sale = 50;
SELECT COUNT(*) INTO numEmployee FROM employee;
mysql>
CREATE FUNCTION addTax(salary FLOAT(8,2))
->
RETURNS FLOAT (8,2)
->
BEGIN
->
DECLARE tax FLOAT DEFAULT 0.05;
->
RETURN salary * (1 - tax);
-> END ^_^
mysql> DELIMITER ;
mysql> SELECT
first_name, addTax(salary) FROM employee;
mysql>
DELIMITER **
mysql>
CREATE PROCEDURE checkScope()
->
BEGIN
->
DECLARE first_name VARCHAR(15) DEFAULT 'bob';
->
SELECT id, first_name FROM employee WHERE first_name =
first_name;
-> END **
mysql>
DELIMITER ;
mysql>
CALL checkScope();
2.
Kendali Kondisional
Kendali IF
IF search_condition THEN statement_list
[ELSEIF
search_condition
THEN statement_list] …
[ELSE
statement_list]
END IF;
mysql>
DELIMITER &&
mysql>
CREATE FUNCTION hideSalary(salary FLOAT(8,2))
-> RETURNS VARCHAR(20)
-> BEGIN
-> DECLARE sal VARCHAR(20);
-> IF salary < 4000 THEN SET sal = 'Low Salary';
-> ELSE SET sal = 'High Salary';
-> END IF;
-> RETURN sal;
-> END &&
mysql>
DELIMITER ;
mysql>
SELECT first_name, last_name, hideSalary(salary)
-> FROM
employee;
Kendali CASE
CASE case_value
WHEN when_value THEN statement_list
[WHEN
when_value THEN statement_list] ...
[ELSE
statement_list]
END CASE
mysql>
DELIMITER ##
mysql>
CREATE FUNCTION calcTax(job VARCHAR (20)))
-> RETURNS FLOAT(3,2)
-> BEGIN
-> DECLARE tax FLOAT(3,2) DEFAULT 0.05;
-> CASE job
-> WHEN 'Manager' THEN SET tax = 0.1;
-> WHEN 'Programmer' THEN set tax = 0.07;
-> WHEN 'Tester' THEN set tax = 0.06;
-> ELSE SET tax = 0.05;
-> END CASE;
-> RETURN tax;
-> END ##
mysql>
delimiter ;
mysql> SELECT first_name, last_name,
calcTax(description) FROM
employee;
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
mysql>
DELIMITER >>
mysql>
CREATE FUNCTION calcTax2(job VARCHAR(20))
-> RETURNS FLOAT(3,2)
-> BEGIN
-> DECLARE tax FLOAT(3,2);
-> CASE
-> WHEN job = 'Manager' THEN SET tax = 0.1;
-> WHEN job = 'Programmer' THEN SET tax = 0.07;
-> WHEN job = 'Tester' THEN SET tax = 0.06;
-> ELSE SET tax = 0.05;
-> END CASE;
-> RETURN tax;
-> END >>
mysql>
DELIMITER ;
mysql> SELECT first_name, last_name,
calcTax2(description) FROM
employee;
3.
Perulangan
Perulangan WHILE
WHILE search_condition DO
statement_list
END WHILE
mysql>
DELIMITER //
mysql>
CREATE PROCEDURE mod12(IN number INT(10))
->
BEGIN
->
WHILE number MOD 12 > 0 DO
->
SET number = number + 1;
->
END WHILE;
->
SELECT number;
-> END //
mysql> CALL mod12(10);
mysql> CALL mod12(24);
Perulangan REPEAT … UNTIL
REPEAT
statement_list
UNTIL search_condition
END REPEAT
mysql>
DELIMITER /.
mysql>
CREATE PROCEDURE repeatDemo(IN number INT(10))
-> BEGIN
-> REPEAT
-> SET number = number +1;
-> UNTIL number MOD 12 = 0
-> END REPEAT;
-> SELECT number;
-> END /.
mysql>
DELIMITER ;
mysql> CALL repeatDemo(10);
Perulangan LOOP
[begin_label:] LOOP
statement_list
END LOOP [end_label]
mysql> DELIMITER /?
mysql> CREATE PROCEDURE iterateDemo(number INT)
-> BEGIN
-> label1: LOOP
-> SET number = number + 1;
-> IF number MOD 12 > 0 THEN
-> ITERATE label1;
-> END IF;
-> LEAVE label1;
-> END LOOP label1;
-> SELECT number;
-> END /?
mysql>
DELIMITER ;
mysql> CALL iterateDemo(10);
mysql> CALL iterateDemo(20);
Langganan:
Postingan (Atom)