Database Server

Terdapat 3 Bagian Penting Program Yang Tersimpan Database Server hearts

1. Prosedur Tersimpan
Sejumlah Perintah Program hearts Kode Dan masukan parameter beberapa, Dan sejumlah hasil temuan ATAU Keluaran. Cara pemanggilannya DENGAN mengeksekusi nāma proscdure tersebut.
2. Disimpan Fungsi 
Fungsi hampir sama DENGAN prosedur yang tersimpan. Fungsi mempunyai sejumlah Penyempitan masukan Dan Hanya mengembalikan Satu output, standar Perintah Yang digunakan menggunakan Perintah standar SQL.
3. Memicu 
Program Suatu Yang akan melakukan respon hearts aktivitas basis data, berkaitan Perintah-Perintah DML (insert, update, delete) operasional pãda tabel. Biasanya digunakan UNTUK otomatisasi ATAU validasi.
Pemrograman Disimpan Prosedure hearts MySQL.
Disimpan prosedur Adalah permasalah Kompleks Yang Cukup dibahas UNTUK, adapun Bagian Penting prosedur pãda disimpan:
Program Kapan akan diabut, parameter Yang dilewatkan akan artikel komersial Yang dikeluarkan, basis data hearts Interaksi, precedure disimpan menciptakan, fungsi fungsi Dan memicu hearts bahasa pemrograman.
Apa Yang Dibutuhkan? 
• MySQL Server
• Teks Editor vi, emacs,
• MySQL Query Browser, SQLyog dll
Prosedur Tersimpan manciptakan
Beberapa Perintah UNTUK MEMBUAT disimpan prosedur:
CREATE PROSEDUR, CREATE FUNCTION, ATAU CREATE TRIGGER
Contoh:
DELIMITER $$
DROP PROSEDUR JIKA ada Kata () $$;
CREATE PROSEDUR Kata ()
BEGIN
SELECT 'AKAKOM';
END $$
DELIMITER;







  • DELIMITER $$ Akhir Dari peritah tubuh (badan / skrip mysql)
  • DROP PROSEDUR JIKA ada Kata () $$; Perintah UNTUK cara menghapus JIKA prosedurnya Sudah PERNAH ADA.
  • CREATE PROSEDUR Kata () mencitapkan Prosedur degan nāma Kata (parameter isi kalau ADA),
  • BEGIN Awal Perintah / blok Perintah Dan END Akhir Perintah
  • SELECT Perintah menapilkan

  • Cara memanggilanya:
    Masukkan password: ****
    Selamat datang di monitor MySQL. Perintah diakhiri dengan; . atau \ g
    koneksi MySQL id adalah 2
    versi Server: 6.0.4-alpha-komunitas-log MySQL Community Server (GPL)
    Ketik 'bantuan'; atau '\ h' untuk membantu. Ketik '\ c' untuk menghapus buffer.
    mysql> penggunaan coba;
    Database berubah
    mysql> HUBUNGI Kata ();
    + --- +
    | AKAKOM |
    + --- +
    | AKAKOM |
    + --- +
    1 row in set (0.00 sec)
    Query OK, 0 rows affected (0.00 sec)
    mysql>
    Variabel
    Variabel dalam Bahasa SQL, fungsinya sama DENGAN bahasa pemrograman paxda umumnya.
    Perintahnya menggunakan MENYATAKAN, Dan UNTUK memberikan Nilai menggunakan Perintah SET.
    Parameter
    Parameter Adalah suatu Nilai yanga akan dilewatkan ATAU dimasukan UNTUK diproses hearts fungsi fungsi ATAU prosedure.
    Contoh
    DELIMITER $$
    CREATE PROSEDUR Demo_Var ()
    BEGIN
    MENYATAKAN x int;
    MENYATAKAN y int;
    SET x = 10;
    SET y = 20;
    PILIH x + y;
    END $$;
    DELIMITER;
    PANGGILAN Demo_var
    Hasil
    + - +
    | x + y |
    + - +
    | 30 |
    + - +
    1 row in set (0.00 sec)
    SEBUAH Prosedur DENGAN mengunakan parameter masukan, akan diproses hearts fungsi fungsi Dan kemudian timapilkan, hasilnya.
    Contoh:
    DELIMITER $$
    CREATE PROSEDUR my_akar (masukan INT)
    BEGIN
    MENYATAKAN hasil temuan FLOAT,
    SET hasil temuan = SQRT (masukan),
    hasil temuan SELECT,
    END $$;
    DELIMITER;
    Cara memanggil prosedur pengajian
    PANGGILAN my_akar (25);
    Hasil Keluaran Astra Honda Motor sebagai berikut:
    mysql> PANGGILAN my_akar (25);
    + --- +
    | hasil temuan |
    + --- +
    | 5 |
    + --- +
    1 baris dalam set (0,03 detik)
    Query OK, 0 rows affected (0.05 sec)
    Prosedure menggunakan parameter masukan Dan Keluaran (INT Dan OUT)
    Contoh:
    DELIMITER $$
    CREATE PROSEDUR my_sqrt (masukan INT, FLOAT OUT nilai_keluar)
    BEGIN
    SET nilai_keluar = SQRT (masukan);
    END $$;
    DELIMITER;
    Cara menjalankan Prosedur ADA doa Tahap
    PANGGILAN my_sqrt (9, @ out_value)
    out_value SELECT

    Memampilkan Keluaran Nilai:
    mysql> PANGGILAN my_akar (25);
    + --- +
    | hasil temuan |
    + --- +
    | 5 |
    + --- +
    1 baris dalam set (0,03 detik)
    Query OK, 0 rows affected (0.05 sec)
    mysql> PANGGILAN my_sqrt (9 @ out_value);
    Query OK, 0 rows affected (0.05 sec)
    mysql> SELECTout_value;
    + ---- +
    |out_value |
    + ---- +
    | 3 |
    + ---- +
    Kondisional
    Perintah kondisional, UNTUK melakukan uji Kondisi terapat Satu masukan Dan doa piliahan Dari Keluaran, Kondisi Benar ATAU asalah. Perintahnya menggunakan IF Ngayogyakarta KASUS.
    DELIMITER $$
    CREATE PROSEDUR Diskon (Pembayaran NUMERIC (10,2), OUT Diskon NUMERIC (8,2))
    BEGIN
    IF (Pembayaran> 100000) THEN
    SET Diskon = Pembayaran * 0,8;
    ELSEIF (Pembayaran> 500000) THEN
    SET Diskon = Pembayaran * 0,9;
    ELSE
    SET Diskon = Pembayaran;
    END IF;
    END $$;
    DELIMITER;
    Cara memanggilnya:
    mysql> PANGGILAN Diskon (100000, @ new_price);
    Query OK, 0 rows affected (0.05 sec)
    mysql> SELECTnew_price;
    + ---- +
    |new_price |
    + ---- +
    | 100.000,00 |
    + ---- +
    1 baris dalam set (0.00 sec)
    Putaran
    Lingkaran Adalah Proses perulangan. Dalam MYSQL ADA 3 jenis lingkaran:
    • loop sederhana menggunakan LOOP Dan END LOOP c
    • loop Yang Disertai Kontrol Kondisi Benar ATAU JIKA shalat Benar lingkaran akan, perintannya menggunakan sementara Dan END WHILE
    Perulangan • Yang menggunakan reapeat Dan, sampai
    Contoh:
    DELIMITER $$
    CREATE PROSEDUR Loop_sederhana ()
    BEGIN
    MENYATAKAN konter INT DEFAULT 0;
    differences LOOP
    SET konter konter = + 1;
    IF konter = 10 THEN
    TINGGALKAN differences;
    END IF;
    SELECT konter;
    END LOOP differences;
    PILIH 'Konter to 10';
    END $$;
    DELIMITER;
    TINGGALKAN UNTUK mangarah to differences label.
    Interaktif DENGAN database
    Disimpan Prosedure JUGA basi melibatkan Data hearts tabel. Ada 4 tipe Bagian Interaksi ANTARA lian:







  • Hasil disimpan prosedur Dari Perintah SQL menghasilkan Nilai balik Satu baris Yang dimasukan to hearts variabel Lokal.
  • Buat "kursor" hasil temuan iterasi, yanng mengasilkan baris Disimpan to Kursor
  • Eksekusi Perintah SQL menghasilkan, with Perintah PANGGILAN progarm akan baris sejumlah menghasilkan.
  • UNTUK Perintah INSERT, UPDATE, DELETE, TIDAK mengasilkan rekor

  • SELECT INTO Menggunakan Variabel Lokal
    Dalam prosedur tersimpan seperti halnya pemroraman biasa, Terdapat variabel Lokal, Yaitu variabel Yang menampung data yang & e. UNTUK mengisikan Nilai variabel tersebut DENGAN Perintah INTO
    Contoh:
    Buatalah tabel JUALAN
    CREATE TABLE JUALAN (char no_tran (5),
    kd_plg char (5),
    tanggal tgl,
    nil_tran int);
    Rekaman Jumlah Harga: Tambahkan
    INSERT INTO JUALAN VALUES ('00001', 'P0001', '2009/07/10', 4000000);
    INSERT INTO JUALAN VALUES ('00002', 'P0001', '2009/07/11', 5000000);
    INSERT INTO NILAI JUALAN ('00003', 'P0002', '2009/07/11', 700000);
    INSERT INTO NILAI JUALAN ('00004', 'P0003', '2009/09/10', 4030000);
    Prosedur Tersimpan Menciptakan
    DELIMITER $$
    DROP PROSEDUR JIKA ada pelanggan_jualan;
    $$
    CREATE PROSEDUR pelanggan_jualan (in_kd_plg char (5))
    BEGIN
    DECLARE Total_jual INT;
    SELECT SUM (nil_tran) KE Total_jual
    DARI JUALAN
    MANA kd_plg = in_kd_plg;
    SELECT concate ('Jangka Waktu Transaksi Pelanggan No,:', in_kd_plg, 'Adalah =', Total_jual);
    END;
    $$
    Penjelasan
    • DELIMITER: Awal skrip
    • DROP PROSEDUR JIKA ada: cara menghapus JIKA prosedure pelanggan_jualan ADA, Jika tidak diabaikan.
    • BEGIN: Awal blok Perintah (Proses)
    • MENYATAKAN Total_jual INT: bagian Deklarasi variabel
    • SUM SELECT (nil_tran) KE Total_jual DARI JUALAN MANA kd_plg = in_kd_plg; : Perintah SQL menpilkan
    • SELECT concate ('Jangka Waktu Transaksi Pelanggan No,:', in_kd_plg, 'Adalah =', Total_jual); : Hasil temuan ditampilkan kelayar DENGAN keterangannya
    • END; Akhir Dari blok Proses
    Melibatkan Tabel

    DELIMITER $$
    DROP PROSEDUR JIKA ADA cari;
    $$
    CREATE PROCEDURE cari (in_no_mhs char (9))
    BEGIN
    no_mhs SELECT, nama, alamat, agama
    DARI MHS
    MANA no_mhs = in_no_mhs;
    END;
    $$
    Kasus Contoh
    
     
    
    Bualah tabel:
    
     
    
    Tabel NILAI
    
     
    
    CREATE TABLE Nilai (no_mhs char (9), kd_mk char (5), char Nilai (1),
    
    kunci utama (no_mhs, kd_mk));
    
     
    
    INSERT INTO NILAI VALUES ('05541001', 'T1001', 'A');
    
    INSERT INTO NILAI VALUES ('05541001', 'P1201', 'C');
    
    INSERT INTO NILAI VALUES ('05541001', 'T1201', 'A');
    
    INSERT INTO NILAI VALUES ('05541001', 'T2202', 'B');
    
    INSERT INTO NILAI VALUES ('05541001', 'T1401', 'B');
    
    INSERT INTO NILAI VALUES ('05541001', 'P2202', 'A');
    
    INSERT INTO NILAI VALUES ('05541001', 'T3201', 'B');
    
     
    
     
    
    INSERT INTO NILAI VALUES ('05541002', 'T1001', 'D');
    
    INSERT INTO NILAI VALUES ('05541002', 'P1201', 'E');
    
    INSERT INTO NILAI VALUES ('05541002', 'T1201', 'C');
    
    INSERT INTO NILAI VALUES ('05541002', 'T2202', 'C');
    
    INSERT INTO NILAI VALUES ('05541002', 'T1401', 'D');
    
    INSERT INTO NILAI VALUES ('05541002', 'P2202', 'B');
    
    INSERT INTO NILAI VALUES ('05541002', 'T3201', 'B');
    
     
    
     
    
    Tabel MKULIAH
    
     
    
    CREATE TABLE mkuliah (kd_mk char (5), char nm_kul (25), SKS int,
    
    kunci primer (kd_mk));
    
     
    
    INSERT INTO NILAI mkuliah ('T10001', 'Bahasa Inggris I', 2);
    
    INSERT INTO mkuliah VALUES ('T10002', 'Bahasa Inggris II', 2);
    
    INSERT INTO NILAI mkuliah ('TI2001', 'Kalkulus I', 3);
    
    INSERT INTO NILAI mkuliah ('T22001', 'Kalkulus II', 3);
    
    INSERT INTO NILAI mkuliah ('TI4001', 'Algoritma dan pemrogaman', 3);
    
    INSERT INTO mkuliah VALUES ('T22002', 'Jaringan Komputer', 3);
    
    INSERT INTO mkuliah VALUES ('T32001', 'Dasar Data', 3);
    
    INSERT INTO NILAI mkuliah ('P12001', 'Prak Web Pemprogaman 1.', 1);
    
    INSERT INTO NILAI mkuliah ('P22001', 'Prak Pemprogaman Web 2.', 1);
    
    INSERT INTO NILAI mkuliah ('P12001', 'Prak Pemprogaman Dasar. ", 1);
    
     
    
     
    
    No_mhs Nilai menapilkan = '05541001'
    
    Nilai.no_mhs SELECT, nilai.kd_mk, mkuliah.nm_kul, nilai.nilai, mkuliah.sks
    
    DARI Nilai, mkuliah
    
    MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001'
    
     
    
    mysql> menggunakan akademik;
    
    Database berubah
    
    mysql> SELECT nilai.no_mhs, nilai.kd_mk, mkuliah.nm_kul, nilai.nilai, mkuliah.sks
    
     -> FROM Nilai, mkuliah
    
     -> MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001';
    
    + ---------- + ------- + ------------------------- + ---- --- + ------ +
    
    | No_mhs | kd_mk | nm_kul | Nilai | sks |
    
    + ---------- + ------- + ------------------------- + ---- --- + ------ +
    
    | 05541001 | P1201 | Prak. Pemprogaman Dasar | C | 1 |
    
    | 05541001 | P2202 | Prak. Pemprogaman Web 2 | A | 1 |
    
    | 05541001 | T1001 | Bahasa Inggris I | A | 2 |
    
    | 05541001 | T2202 | Kalkulus II | B | 3 |
    
    | 05541001 | T3201 | Basis Data | B | 3 |
    
    + ---------- + ------- + ------------------------- + ---- --- + ------ +
    
    5 rows in set (0.00 sec)
    
     
    
    mysql>
    
     
    
    Manampilkan trasnkip DENGAN Catatan Notes Nilai, SKS Dan Jangka Waktu Dan Catatan Notes
    
     
    
    mysql> SELECT nilai.no_mhs, nilai.kd_mk, mkuliah.nm_kul, nilai.nilai, mkuliah.sks
    
     -> KASUS KETIKA nilai.nilai = 'A' THEN mkuliah.sks * 4
    
     -> KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
    
     -> KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
    
     -> KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
    
     -> ELSE 0
    
     -> END Catatan Notes
    
     -> FROM Nilai, mkuliah
    
     -> MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001';
    
    + ---------- + ------- + ------------------------- + ---- --- + ------ + ------- +
    
    | No_mhs | kd_mk | nm_kul | Nilai | sks | Catatan Notes |
    
    + ---------- + ------- + ------------------------- + ---- --- + ------ + ------- +
    
    | 05541001 | P1201 | Prak. Pemprogaman Dasar | C | 1 | 2 |
    
    | 05541001 | P2202 | Prak. Pemprogaman Web 2 | A | 1 | 4 |
    
    | 05541001 | T1001 | Bahasa Inggris I | A | 2 | 8 |
    
    | 05541001 | T2202 | Kalkulus II | B | 3 | 9 |
    
    | 05541001 | T3201 | Basis Data | B | 3 | 9 |
    
    + ---------- + ------- + ------------------------- + ---- --- + ------ + ------- +
    
    5 rows in set (0.00 sec)
    
     
    
    mysql>
    
     
    
    Menghitung IP
    
     
    
    mysql> SELECT nilai.no_mhs, SUM (mkuliah.sks) jum_sks,
    
     -> SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
    
     -> KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
    
     -> KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
    
     -> KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
    
     -> ELSE 0
    
     -> END) sebagai jum_bobot
    
     -> FROM Nilai, mkuliah
    
     -> MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001';
    
    + ---------- + --------- + ----------- +
    
    | No_mhs | jum_sks | jum_bobot |
    
    + ---------- + --------- + ----------- +
    
    | 05541001 | 10 | 32 |
    
    + ---------- + --------- + ----------- +
    
    1 baris dalam set (0.00 sec)
    
     
    
    mysql>
    
     
    
    Ip = jum_bobot / jum_sks
    
     
    
    mysql> SELECT nilai.no_mhs, SUM (mkuliah.sks) jum_sks,
    
     -> SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
    
     -> KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
    
     -> KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
    
     -> KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
    
     -> ELSE 0
    
     -> END) sebagai jum_bobot,
    
     -> SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
    
     -> KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
    
     -> KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
    
     -> KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
    
     -> ELSE 0
    
     -> END) /SUM(mkuliah.sks) sebagai ip
    
     -> FROM Nilai, mkuliah
    
     -> MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001';
    
    + ---------- + --------- + ----------- + -------- +
    
    | No_mhs | jum_sks | jum_bobot | ip |
    
    + ---------- + --------- + ----------- + -------- +
    
    | 05541001 | 10 | 32 | 3,2000 |
    
    + ---------- + --------- + ----------- + -------- +
    
    1 baris dalam set (0.00 sec)
    
     
    
    mysql>
    
     
    
    Prosedur Tersimpan manggunakan
    
     
    
    MENCIPTAKAN Definer = `` @ root` localhost` PROSEDUR `get_transkrip` (in_no_mhs char (9))
    BEGIN
    SELECT nilai.no_mhs, nilai.kd_mk, mkuliah.nm_kul, nilai.nilai, mkuliah.sks,
    KASUS KETIKA nilai.nilai = 'A' THEN mkuliah.sks * 4
    KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
    KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
    KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
    ELSE 0
    END Catatan Notes
    DARI Nilai, mkuliah
    MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = in_no_mhs
    / * Urut semerter * /
    ORDER BY SUBSTR (nilai.kd_mk, 2,1);
    END $$
    DELIMITER;
    MENCIPTAKAN Definer = `` @ root` localhost` PROSEDUR `get_ip` (in_no_mhs char (9))
    BEGIN
    SELECT nilai.no_mhs, SUM (mkuliah.sks) jum_sks,
    SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
    KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
    KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
    KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
    ELSE 0
    END) sebagai jum_bobot,
    SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
    KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
    KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
    KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
    ELSE 0
    END) /SUM(mkuliah.sks) sebagai ip
    DARI Nilai, mkuliah
    MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = in_no_mhs;
    END $$
    DELIMITER;
    Daftar Pustaka 
    Steven Feuerstein, Guy Harrison, 2006, MySQL disimpan prosedur Programming, O'Reilly


    Komentar

    Postingan populer dari blog ini

    Test. .